Browse Source

查询待议价接口

liangku_skuoptimazation
shanji 1 year ago
parent
commit
ea36d8d2f9
  1. 8
      BBWYB.Server.API/Controllers/BaseApiController.cs
  2. 14
      BBWYB.Server.API/Controllers/SkuOptimizationController.cs
  3. 101
      BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs
  4. 2
      BBWYB.Server.Model/Db/Product/Skuoptimizationchildtask.cs
  5. 47
      BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs
  6. 9
      BBWYB.Server.Model/Dto/Request/PageRequest.cs
  7. 8
      BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationChildTaskResponse.cs
  8. 20
      BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs
  9. 14
      BBWYB.Server.Model/MappingProfiles.cs

8
BBWYB.Server.API/Controllers/BaseApiController.cs

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Cors;
using BBWYB.Common.Models;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
@ -18,7 +19,10 @@ namespace BBWYB.Server.API.Controllers
protected string GetUserId()
{
return httpContextAccessor?.HttpContext?.User.Claims.Where(x => x.Type == "userId")?.FirstOrDefault()?.Value;
var userId = httpContextAccessor?.HttpContext?.User.Claims.Where(x => x.Type == "userId")?.FirstOrDefault()?.Value;
if (string.IsNullOrEmpty(userId))
throw new BusinessException("未从token中获取到userId");
return userId;
}
protected string GetToken()

14
BBWYB.Server.API/Controllers/SkuOptimizationController.cs

@ -33,9 +33,19 @@ namespace BBWYB.Server.API.Controllers
public void CompleteOptimization([FromRoute] long taskId)
{
var userId = GetUserId();
if (string.IsNullOrEmpty(userId))
throw new BusinessException("未从token中获取到userId");
skuOptimizationBusiness.CompleteOptimization(taskId, userId);
}
/// <summary>
/// 查询待议价任务列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public ListResponse<SkuOptimizationTaskResponse> GetNoCompletionSkuOptimizationTask([FromBody] PageRequest request)
{
var userId = GetUserId();
return skuOptimizationBusiness.GetNoCompletionSkuOptimizationTask(request, userId);
}
}
}

101
BBWYB.Server.Business/SkuOptimization/SkuOptimizationBusiness.cs

@ -1,4 +1,5 @@
using BBWYB.Common.Log;
using BBWYB.Common.Extensions;
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
@ -23,6 +24,21 @@ namespace BBWYB.Server.Business
this.timeLimitRules = timeLimitRules;
}
private (User user, Userdepartment department) GetYiJiaDepartmentByUserId(string userId)
{
var user = fsqlManager.MDSfsql.Select<User>(userId).ToOne();
if (user == null)
throw new BusinessException("用户不存在");
if (string.IsNullOrEmpty(user.DepartmentId))
throw new BusinessException("该用户没有归属部门");
var department = fsqlManager.MDSfsql.Select<Userdepartment>(user.DepartmentId).ToOne();
if (department == null)
throw new BusinessException("部门不存在");
if (department.ParentDepartmentId != "1760971468360912896")
throw new BusinessException("该用户所在部门不属于议价组");
return (user, department);
}
public Enums.TriggerOptimizationReason? GetOptimizationReason(SpuTotalSaleInfo s)
{
if (s.IsFirstPurchaseCompleted == false)
@ -36,6 +52,11 @@ namespace BBWYB.Server.Business
return null;
}
/// <summary>
/// 良库预警
/// </summary>
/// <param name="request"></param>
/// <exception cref="BusinessException"></exception>
public void LKInventoryAlertNotification(BatchLKInventoryAlertRequest request)
{
nLogManager.Default().Info($"LKInventoryAlertNotification {JsonConvert.SerializeObject(request)}");
@ -203,27 +224,18 @@ namespace BBWYB.Server.Business
#endregion
#region 获取用户和部门信息
var user = fsqlManager.MDSfsql.Select<User>(userId).ToOne();
if (user == null)
throw new BusinessException("用户不存在");
if (string.IsNullOrEmpty(user.DepartmentId))
throw new BusinessException("该用户没有归属部门");
var department = fsqlManager.MDSfsql.Select<Userdepartment>(user.DepartmentId).ToOne();
if (department == null)
throw new BusinessException("部门不存在");
if (department.ParentDepartmentId != "1760971468360912896")
throw new BusinessException("该用户所在部门不属于议价组");
var uInfo = GetYiJiaDepartmentByUserId(userId);
#endregion
#region 验证待议价子任务
var optimazaionChildTaskList = fsql.Select<SkuOptimizationChildTask>()
.Where(sc => sc.OptimizationTaskId == optimazaionTask.Id)
.ToList();
var currentOptimazaionChildTaskList = optimazaionChildTaskList.FirstOrDefault(sc => sc.BelongTeamId == department.Id);
var currentOptimazaionChildTaskList = optimazaionChildTaskList.FirstOrDefault(sc => sc.BelongTeamId == uInfo.department.Id);
if (currentOptimazaionChildTaskList == null)
throw new BusinessException($"未找到议价组{department.DepartmentName}的议价子任务");
throw new BusinessException($"未找到议价组{uInfo.department.DepartmentName}的议价子任务");
if (currentOptimazaionChildTaskList.IsOptimizationCompleted == true)
throw new BusinessException($"{department.DepartmentName}的议价子任务已完成");
throw new BusinessException($"{uInfo.department.DepartmentName}的议价子任务已完成");
currentOptimazaionChildTaskList.IsOptimizationCompleted = true;
#endregion
@ -284,5 +296,66 @@ namespace BBWYB.Server.Business
updateTimeLimitTask?.ExecuteAffrows();
});
}
public ListResponse<SkuOptimizationTaskResponse> GetNoCompletionSkuOptimizationTask(PageRequest request, string userId)
{
var uInfo = GetYiJiaDepartmentByUserId(userId);
var taskList = fsql.Select<SkuOptimizationTask, TimeLimitTask>()
.InnerJoin((t, tt) => t.Id == tt.TaskId)
.Where((t, tt) => t.IsOptimizationCompleted == false)
.OrderByDescending((t, tt) => t.CreateTime)
.Count(out var total)
.Page(request.PageIndex, request.PageSize)
.ToList((t, tt) => new SkuOptimizationTask
{
Id = t.Id,
ShopId = t.ShopId,
BelongShopName = t.BelongShopName,
JDSkuId = t.JDSkuId,
ProductId = t.ProductId,
SkuId = t.SkuId,
PreItemCount = t.PreItemCount,
PrePurchasedAmount = t.PrePurchasedAmount,
SafeWarningRemainingDay = t.SafeWarningRemainingDay,
IsOptimizationCompleted = t.IsOptimizationCompleted,
IsPurchasementCompleted = t.IsPurchasementCompleted,
CreateTime = t.CreateTime,
CompletionTime = t.CompletionTime,
TriggerOptimizationReason = t.TriggerOptimizationReason,
LastOptimizationRatio = t.LastOptimizationRatio,
LastPurchasePrice = t.LastPurchasePrice,
LastOptimizationTime = t.LastOptimizationTime,
TimeLimitTaskId = tt.Id,
TimeLimitTaskBelongTaskId = tt.TaskId,
TimeLimitTaskCompletionTime = tt.CompletionTime,
TimeLimitTaskCreateTme = tt.CreateTme,
TimeLimitTaskExpirationTime = tt.ExpirationTime,
TimeLimitTaskIsTimely = tt.IsTimely,
TimeLimitTaskOrderId = tt.OrderId,
TimeLimitTaskOrderSn = tt.OrderSn,
TimeLimitTaskPayTime = tt.PayTime,
TimeLimitTaskRemark = tt.Remark,
TimeLimitTaskShopId = tt.ShopId,
TimeLimitTaskSkuId = tt.SkuId,
TimeLimitTaskTaskType = tt.TaskType
}).Map<List<SkuOptimizationTaskResponse>>();
List<long> taskIdList = taskList.Select(t => t.Id).ToList();
var childTaskList = fsql.Select<SkuOptimizationChildTask>().Where(ct => taskIdList.Contains(ct.OptimizationTaskId)).ToList<SkuOptimizationChildTaskResponse>();
foreach (var task in taskList)
{
task.ChildTaskList = childTaskList.Where(ct => ct.OptimizationTaskId == task.Id).ToList();
var currentChildTask = task.ChildTaskList.FirstOrDefault(ct => ct.BelongTeamId == uInfo.user.DepartmentId);
task.IsOptimizationCompletedByCurrentTeam = currentChildTask?.IsOptimizationCompleted ?? false;
}
return new ListResponse<SkuOptimizationTaskResponse>()
{
Items = taskList,
TotalCount = total
};
}
}
}

2
BBWYB.Server.Model/Db/Product/Skuoptimizationchildtask.cs

@ -37,7 +37,7 @@ namespace BBWYB.Server.Model.Db
/// 优化任务Id
/// </summary>
[Column(DbType = "bigint")]
public long? OptimizationTaskId { get; set; }
public long OptimizationTaskId { get; set; }
}

47
BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs

@ -88,6 +88,53 @@ namespace BBWYB.Server.Model.Db
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? LastPurchasePrice { get; set; } = 0.00M;
#region Extension
#region TimeLimitTask
[Column(IsIgnore = true)]
public long TimeLimitTaskId { get; set; }
[Column(IsIgnore = true)]
public DateTime? TimeLimitTaskCompletionTime { get; set; }
[Column(IsIgnore = true)]
public DateTime? TimeLimitTaskCreateTme { get; set; }
[Column(IsIgnore = true)]
public DateTime? TimeLimitTaskPayTime { get; set; }
[Column(IsIgnore = true)]
public DateTime? TimeLimitTaskExpirationTime { get; set; }
[Column(IsIgnore = true)]
public bool? TimeLimitTaskIsTimely { get; set; }
[Column(IsIgnore = true)]
public string TimeLimitTaskOrderId { get; set; }
[Column(IsIgnore = true)]
public string TimeLimitTaskOrderSn { get; set; }
[Column(IsIgnore = true)]
public long? TimeLimitTaskShopId { get; set; }
[Column(IsIgnore = true)]
public string TimeLimitTaskSkuId { get; set; }
[Column(IsIgnore = true)]
public Enums.TimeLimitTaskType? TimeLimitTaskTaskType { get; set; }
[Column(IsIgnore = true)]
public string TimeLimitTaskRemark { get; set; }
[Column(IsIgnore = true)]
public long TimeLimitTaskBelongTaskId { get; set; }
#endregion
#endregion
}
}

9
BBWYB.Server.Model/Dto/Request/PageRequest.cs

@ -0,0 +1,9 @@
namespace BBWYB.Server.Model.Dto
{
public class PageRequest
{
public int PageIndex { get; set; }
public int PageSize { get; set; }
}
}

8
BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationChildTaskResponse.cs

@ -0,0 +1,8 @@
using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Model.Dto
{
public class SkuOptimizationChildTaskResponse: SkuOptimizationChildTask
{
}
}

20
BBWYB.Server.Model/Dto/Response/Optimization/SkuOptimizationTaskResponse.cs

@ -0,0 +1,20 @@
using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Model.Dto
{
public class SkuOptimizationTaskResponse : SkuOptimizationTask
{
public IList<SkuOptimizationChildTaskResponse> ChildTaskList { get; set; }
/// <summary>
/// 当前用户所属团队是否完成议价子任务
/// </summary>
public bool IsOptimizationCompletedByCurrentTeam { get; set; }
/// <summary>
/// 限时任务
/// </summary>
public TimeLimitTask TimeLimitTask { get; set;; }
}
}

14
BBWYB.Server.Model/MappingProfiles.cs

@ -59,6 +59,20 @@ namespace BBWYB.Server.Model
CreateMap<PurchaseSchemeResponse, HistoryPurchaseScheme>();
CreateMap<PurchaseSchemeProductResponse, HistoryPurchaseSchemeProduct>();
CreateMap<PurchaseSchemeProductSkuResponse, HistoryPurchaseSchemeProductSku>();
CreateMap<SkuOptimizationTask, SkuOptimizationTaskResponse>().ForPath(t => t.TimeLimitTask.Id, opt => opt.MapFrom(f => f.TimeLimitTaskId))
.ForPath(t => t.TimeLimitTask.CompletionTime, opt => opt.MapFrom(f => f.TimeLimitTaskCompletionTime))
.ForPath(t => t.TimeLimitTask.ExpirationTime, opt => opt.MapFrom(f => f.TimeLimitTaskExpirationTime))
.ForPath(t => t.TimeLimitTask.PayTime, opt => opt.MapFrom(f => f.TimeLimitTaskPayTime))
.ForPath(t => t.TimeLimitTask.IsTimely, opt => opt.MapFrom(f => f.TimeLimitTaskIsTimely))
.ForPath(t => t.TimeLimitTask.CreateTme, opt => opt.MapFrom(f => f.TimeLimitTaskCreateTme))
.ForPath(t => t.TimeLimitTask.OrderId, opt => opt.MapFrom(f => f.TimeLimitTaskOrderId))
.ForPath(t => t.TimeLimitTask.OrderSn, opt => opt.MapFrom(f => f.TimeLimitTaskOrderSn))
.ForPath(t => t.TimeLimitTask.Remark, opt => opt.MapFrom(f => f.TimeLimitTaskRemark))
.ForPath(t => t.TimeLimitTask.ShopId, opt => opt.MapFrom(f => f.TimeLimitTaskShopId))
.ForPath(t => t.TimeLimitTask.SkuId, opt => opt.MapFrom(f => f.TimeLimitTaskSkuId))
.ForPath(t => t.TimeLimitTask.TaskId, opt => opt.MapFrom(f => f.TimeLimitTaskBelongTaskId));
}
}
}

Loading…
Cancel
Save