diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxOrderTypeOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxOrderTypeOutput.cs
new file mode 100644
index 0000000..d26770c
--- /dev/null
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKhxx/LqKhxxOrderTypeOutput.cs
@@ -0,0 +1,30 @@
+using System;
+
+namespace NCC.Extend.Entitys.Dto.LqKhxx
+{
+ ///
+ /// 客户订单类型输出
+ ///
+ public class LqKhxxOrderTypeOutput
+ {
+ ///
+ /// 客户ID
+ ///
+ public string CustomerId { get; set; }
+
+ ///
+ /// 订单类型 (first_order: 首单, repeat_order: 升单)
+ ///
+ public string OrderType { get; set; }
+
+ ///
+ /// 是否有开单记录
+ ///
+ public bool HasOrderRecord { get; set; }
+
+ ///
+ /// 开单记录数量
+ ///
+ public int OrderCount { get; set; }
+ }
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs
index 9c6ad08..cbbfd13 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbCrInput.cs
@@ -12,56 +12,50 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
/// 拓客编号
///
public string id { get; set; }
-
+
///
/// 拓客时间
///
public DateTime? tksj { get; set; }
-
- ///
- /// 拓客人员
- ///
- public string tkry { get; set; }
-
+
///
/// 顾客姓名
///
public string gkxm { get; set; }
-
+
///
/// 电话号码
///
public string dhhm { get; set; }
-
+
///
/// 购买张数
///
public int? gmzs { get; set; }
-
+
///
/// 支付方式
///
public string zffs { get; set; }
-
+
///
/// 是否加微信
///
public string sfjwx { get; set; }
-
+
///
/// 备注
///
public string bz { get; set; }
-
+
///
- /// 所属门店
+ /// 拓客人员
///
- public string ssmd { get; set; }
-
+ public string tkry { get; set; }
+
///
- /// 所属战队
+ /// 拓客活动id
///
- public string sszd { get; set; }
-
+ public string eventId { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs
index c0f68f9..4337b6c 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs
@@ -160,5 +160,11 @@ namespace NCC.Extend.Entitys.lq_khxx
///
[SugarColumn(ColumnName = "ml")]
public string Ml { get; set; }
+
+ ///
+ /// 添加时间
+ ///
+ [SugarColumn(ColumnName = "F_CreateTime")]
+ public DateTime CreateTime { get; set; } = DateTime.Now;
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
index 68a2683..61b05fd 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
@@ -64,7 +64,13 @@ namespace NCC.Extend.Entitys.lq_tkjlb
public string Bz { get; set; }
///
- /// 所属门店
+ /// 拓客活动id
+ ///
+ [SugarColumn(ColumnName = "F_EventId")]
+ public string EventId { get; set; }
+
+ ///
+ /// 所属组织
///
[SugarColumn(ColumnName = "ssmd")]
public string Ssmd { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqKhxxService.cs b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqKhxxService.cs
index 015a5fa..6694ad6 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqKhxxService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqKhxxService.cs
@@ -1,6 +1,23 @@
-namespace NCC.Extend.Interfaces.LqKhxx
+using System.Threading.Tasks;
+using NCC.Common.Filter;
+using NCC.Extend.Entitys.Dto.LqKhxx;
+
+namespace NCC.Extend.Interfaces.LqKhxx
{
public interface ILqKhxxService
{
+ ///
+ /// 获取线索池客户列表
+ ///
+ ///
查询参数
+ ///
线索池客户列表
+ Task
> GetLeadsPoolList(LqKhxxListQueryInput input);
+
+ ///
+ /// 获取客户订单类型(首单/升单)
+ ///
+ /// 客户ID
+ /// 客户订单类型信息
+ Task GetCustomerOrderType(string customerId);
}
-}
\ No newline at end of file
+}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
index 6c40d4f..fd6f1c3 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
@@ -148,6 +148,12 @@ namespace NCC.Extend.LqKhxx
public async Task Create([FromBody] LqKhxxCrInput input)
{
var userInfo = await _userManager.GetUserInfo();
+ //判断手机号是否存在
+ var user = _db.Queryable().Where(u => u.Sjh == input.sjh).Any();
+ if (user)
+ {
+ throw NCCException.Oh("该会员已存在");
+ }
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
@@ -243,6 +249,131 @@ namespace NCC.Extend.LqKhxx
}
#endregion
+ #region 获取线索池客户列表
+ ///
+ /// 获取线索池客户列表
+ ///
+ /// 查询参数
+ /// 线索池客户列表
+ [HttpGet("leads-pool")]
+ public async Task> GetLeadsPoolList([FromQuery] LqKhxxListQueryInput input)
+ {
+ var sidx = input.sidx == null ? "id" : input.sidx;
+ List queryZjdlsj = input.zjdlsj != null ? input.zjdlsj.Split(',').ToObeject>() : null;
+ DateTime? startZjdlsj = queryZjdlsj != null ? Ext.GetDateTime(queryZjdlsj.First()) : null;
+ DateTime? endZjdlsj = queryZjdlsj != null ? Ext.GetDateTime(queryZjdlsj.Last()) : null;
+ List queryZcsj = input.zcsj != null ? input.zcsj.Split(',').ToObeject>() : null;
+ DateTime? startZcsj = queryZcsj != null ? Ext.GetDateTime(queryZcsj.First()) : null;
+ DateTime? endZcsj = queryZcsj != null ? Ext.GetDateTime(queryZcsj.Last()) : null;
+ List queryYanglsr = input.yanglsr != null ? input.yanglsr.Split(',').ToObeject>() : null;
+ DateTime? startYanglsr = queryYanglsr != null ? Ext.GetDateTime(queryYanglsr.First()) : null;
+ DateTime? endYanglsr = queryYanglsr != null ? Ext.GetDateTime(queryYanglsr.Last()) : null;
+ List queryYinlsr = input.yinlsr != null ? input.yinlsr.Split(',').ToObeject>() : null;
+ DateTime? startYinlsr = queryYinlsr != null ? Ext.GetDateTime(queryYinlsr.First()) : null;
+ DateTime? endYinlsr = queryYinlsr != null ? Ext.GetDateTime(queryYinlsr.Last()) : null;
+
+ var data = await _db.Queryable()
+ .Where(p => p.Khmqgs == "线索池") // 固定查询线索池客户
+ .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
+ .WhereIF(!string.IsNullOrEmpty(input.khmc), p => p.Khmc.Contains(input.khmc))
+ .WhereIF(!string.IsNullOrEmpty(input.sjh), p => p.Sjh.Contains(input.sjh))
+ .WhereIF(!string.IsNullOrEmpty(input.dah), p => p.Dah.Contains(input.dah))
+ .WhereIF(!string.IsNullOrEmpty(input.xb), p => p.Xb.Equals(input.xb))
+ .WhereIF(!string.IsNullOrEmpty(input.gzhzt), p => p.Gzhzt.Equals(input.gzhzt))
+ .WhereIF(!string.IsNullOrEmpty(input.wxnc), p => p.Wxnc.Contains(input.wxnc))
+ .WhereIF(!string.IsNullOrEmpty(input.wxxcxzt), p => p.Wxxcxzt.Equals(input.wxxcxzt))
+ .WhereIF(!string.IsNullOrEmpty(input.khmqgs), p => p.Khmqgs.Equals(input.khmqgs))
+ .WhereIF(!string.IsNullOrEmpty(input.gsmd), p => p.Gsmd.Contains(input.gsmd))
+ .WhereIF(queryZcsj != null, p => p.Zcsj >= new DateTime(startZcsj.ToDate().Year, startZcsj.ToDate().Month, startZcsj.ToDate().Day, 0, 0, 0))
+ .WhereIF(queryZcsj != null, p => p.Zcsj <= new DateTime(endZcsj.ToDate().Year, endZcsj.ToDate().Month, endZcsj.ToDate().Day, 23, 59, 59))
+ .WhereIF(!string.IsNullOrEmpty(input.khlx), p => p.Khlx.Equals(input.khlx))
+ .WhereIF(!string.IsNullOrEmpty(input.khjd), p => p.Khjd.Equals(input.khjd))
+ .WhereIF(!string.IsNullOrEmpty(input.khxf), p => p.Khxf.Contains(input.khxf))
+ .WhereIF(!string.IsNullOrEmpty(input.xfpc), p => p.Xfpc.Equals(input.xfpc))
+ .WhereIF(!string.IsNullOrEmpty(input.tjr), p => p.Tjr.Contains(input.tjr))
+ .WhereIF(!string.IsNullOrEmpty(input.fzgw), p => p.Fzgw.Contains(input.fzgw))
+ .WhereIF(!string.IsNullOrEmpty(input.mrs), p => p.Mrs.Contains(input.mrs))
+ .WhereIF(!string.IsNullOrEmpty(input.jdqd), p => p.Jdqd.Contains(input.jdqd))
+ .WhereIF(!string.IsNullOrEmpty(input.lxdz), p => p.Lxdz.Contains(input.lxdz))
+ .WhereIF(!string.IsNullOrEmpty(input.bz), p => p.Bz.Contains(input.bz))
+ .WhereIF(queryYanglsr != null, p => p.Yanglsr >= new DateTime(startYanglsr.ToDate().Year, startYanglsr.ToDate().Month, startYanglsr.ToDate().Day, 0, 0, 0))
+ .WhereIF(queryYanglsr != null, p => p.Yanglsr <= new DateTime(endYanglsr.ToDate().Year, endYanglsr.ToDate().Month, endYanglsr.ToDate().Day, 23, 59, 59))
+ .WhereIF(queryYinlsr != null, p => p.Yinlsr >= new DateTime(startYinlsr.ToDate().Year, startYinlsr.ToDate().Month, startYinlsr.ToDate().Day, 0, 0, 0))
+ .WhereIF(queryYinlsr != null, p => p.Yinlsr <= new DateTime(endYinlsr.ToDate().Year, endYinlsr.ToDate().Month, endYinlsr.ToDate().Day, 23, 59, 59))
+ .WhereIF(!string.IsNullOrEmpty(input.ml), p => p.Ml.Contains(input.ml))
+ .Select(it => new LqKhxxListOutput
+ {
+ id = it.Id,
+ khmc = it.Khmc,
+ sjh = it.Sjh,
+ dah = it.Dah,
+ xb = it.Xb,
+ gzhzt = it.Gzhzt,
+ wxnc = it.Wxnc,
+ wxxcxzt = it.Wxxcxzt,
+ zjdlsj = it.Zjdlsj,
+ khmqgs = it.Khmqgs,
+ gsmd = it.Gsmd,
+ zcsj = it.Zcsj,
+ khlx = it.Khlx,
+ khjd = it.Khjd,
+ khxf = it.Khxf,
+ xfpc = it.Xfpc,
+ tjr = it.Tjr,
+ fzgw = it.Fzgw,
+ mrs = it.Mrs,
+ jdqd = it.Jdqd,
+ lxdz = it.Lxdz,
+ bz = it.Bz,
+ yanglsr = it.Yanglsr,
+ yinlsr = it.Yinlsr,
+ ml = it.Ml,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(data);
+ }
+ #endregion
+
+ #region 获取客户订单类型
+ ///
+ /// 获取客户订单类型(首单/升单)
+ ///
+ /// 客户ID
+ /// 客户订单类型信息
+ [HttpGet("order-type/{customerId}")]
+ public async Task GetCustomerOrderType(string customerId)
+ {
+ if (string.IsNullOrEmpty(customerId))
+ {
+ throw NCCException.Oh("客户ID不能为空");
+ }
+
+ // 查询客户是否存在
+ var customerExists = await _db.Queryable().Where(c => c.Id == customerId).AnyAsync();
+
+ if (!customerExists)
+ {
+ throw NCCException.Oh("客户不存在");
+ }
+
+ // 查询开单记录数量
+ var orderCount = await _db.Queryable().Where(o => o.Kdhy == customerId).CountAsync();
+
+ var hasOrderRecord = orderCount > 0;
+ var orderType = hasOrderRecord ? "repeat_order" : "first_order";
+
+ return new LqKhxxOrderTypeOutput
+ {
+ CustomerId = customerId,
+ OrderType = orderType,
+ HasOrderRecord = hasOrderRecord,
+ OrderCount = orderCount,
+ };
+ }
+ #endregion
+
#region 导出客户资料
///
/// 导出客户资料
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
index 677b6f4..2e75879 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
@@ -16,6 +16,8 @@ using NCC.DataEncryption;
using NCC.Dependency;
using NCC.DynamicApiController;
using NCC.Extend.Entitys.Dto.LqTkjlb;
+using NCC.Extend.Entitys.lq_eventuser;
+using NCC.Extend.Entitys.lq_khxx;
using NCC.Extend.Entitys.lq_ryzl;
using NCC.Extend.Entitys.lq_tkjlb;
using NCC.Extend.Interfaces.LqTkjlb;
@@ -123,19 +125,41 @@ namespace NCC.Extend.LqTkjlb
public async Task Create([FromBody] LqTkjlbCrInput input)
{
var userInfo = await _userManager.GetUserInfo();
- var entity = input.Adapt();
- entity.Id = YitIdHelper.NextId().ToString();
- string mobile = _db.Queryable().Where(u => u.Id == input.tkry).Select(u => u.MobilePhone).First();
- var ry = _db.Queryable().Where(u => u.Sjh == mobile).First();
- if (ry != null)
+ //通过input.dhhm去查询用户信息
+ var user = _db.Queryable().Where(u => u.Sjh == input.dhhm).Any();
+ if (user)
{
- entity.Ssmd = ry.Dm == null ? "" : ry.Dm;
- entity.Sszd = ry.Zd == null ? "" : ry.Zd;
+ throw NCCException.Oh("该手机号码已存在于会员或线索池中");
}
+ // 使用事务确保数据一致性
+ var result = await _db.Ado.UseTranAsync(async () =>
+ {
+ //通过input.eventId去查询拓客活动信息
+ var eventUserInfo = await _db.Queryable().Where(u => u.EventId == input.eventId && u.UserId == input.tkry).FirstAsync();
+ // 创建拓客记录
+ var entity = input.Adapt();
+ entity.Id = YitIdHelper.NextId().ToString();
+ entity.Sszd = eventUserInfo.TeamName;
+ var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
+ if (!(isOk > 0))
+ throw NCCException.Oh("创建拓客记录失败");
+ // 创建客户信息
+ LqKhxxEntity MemberInfo = new LqKhxxEntity();
+ MemberInfo.Id = YitIdHelper.NextId().ToString();
+ MemberInfo.Khmc = entity.Gkxm;
+ MemberInfo.Sjh = input.dhhm; // 设置手机号
+ MemberInfo.Khmqgs = "线索池";
+ MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss");
+ var memberResult = await _db.Insertable(MemberInfo).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
+ if (!(memberResult > 0))
+ throw NCCException.Oh("创建客户信息失败");
+ return true;
+ });
- var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
- if (!(isOk > 0))
- throw NCCException.Oh(ErrorCode.COM1000);
+ if (!result.IsSuccess)
+ {
+ throw NCCException.Oh($"创建拓客记录失败:{result.ErrorMessage}");
+ }
}
#endregion
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
index 9c1dd9e..132eb52 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqYcsdJsjService.cs
@@ -1,31 +1,31 @@
-using NCC.Common.Core.Manager;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Threading.Tasks;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using NCC.ClayObject;
+using NCC.Common.Configuration;
+using NCC.Common.Core.Manager;
using NCC.Common.Enum;
using NCC.Common.Extension;
using NCC.Common.Filter;
+using NCC.Common.Helper;
+using NCC.Common.Model.NPOI;
+using NCC.DataEncryption;
using NCC.Dependency;
using NCC.DynamicApiController;
-using NCC.FriendlyException;
-using NCC.Extend.Interfaces.LqYcsdJsj;
-using Mapster;
-using Microsoft.AspNetCore.Mvc;
-using SqlSugar;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Threading.Tasks;
-using NCC.Extend.Entitys.lq_ycsd_jsj;
+using NCC.Extend.Entitys.Dto.LqYcsdJsj;
using NCC.Extend.Entitys.lq_jinsanjiao_user;
-using NCC.Extend.Entitys.lq_mdxx;
using NCC.Extend.Entitys.lq_kd_jksyj;
-using NCC.Extend.Entitys.Dto.LqYcsdJsj;
-using Yitter.IdGenerator;
-using NCC.Common.Helper;
+using NCC.Extend.Entitys.lq_mdxx;
+using NCC.Extend.Entitys.lq_ycsd_jsj;
+using NCC.Extend.Interfaces.LqYcsdJsj;
+using NCC.FriendlyException;
using NCC.JsonSerialization;
-using NCC.Common.Model.NPOI;
-using NCC.Common.Configuration;
-using NCC.DataEncryption;
-using NCC.ClayObject;
+using SqlSugar;
+using Yitter.IdGenerator;
namespace NCC.Extend.LqYcsdJsj
{
@@ -43,7 +43,7 @@ namespace NCC.Extend.LqYcsdJsj
///
/// 初始化一个类型的新实例
///
- public LqYcsdJsjService(ISqlSugarRepository lqYcsdJsjRepository,IUserManager userManager)
+ public LqYcsdJsjService(ISqlSugarRepository lqYcsdJsjRepository, IUserManager userManager)
{
_lqYcsdJsjRepository = lqYcsdJsjRepository;
_db = _lqYcsdJsjRepository.Context;
@@ -75,7 +75,8 @@ namespace NCC.Extend.LqYcsdJsj
public async Task GetDetail(string id)
{
var entity = await _db.Queryable().FirstAsync(p => p.Id == id);
- if (entity == null) throw NCCException.Oh(ErrorCode.COM1005);
+ if (entity == null)
+ throw NCCException.Oh(ErrorCode.COM1005);
var output = entity.Adapt();
@@ -90,24 +91,20 @@ namespace NCC.Extend.LqYcsdJsj
userName = x.UserName,
isLeader = x.IsLeader,
sortOrder = x.SortOrder,
- status = x.Status
+ status = x.Status,
})
.ToListAsync();
- return new
- {
- jsj = output,
- members = members
- };
+ return new { jsj = output, members = members };
}
#endregion
#region 获取金三角设定列表
///
- /// 获取金三角设定列表
- ///
- /// 请求参数
- ///
+ /// 获取金三角设定列表
+ ///
+ /// 请求参数
+ ///
[HttpGet("")]
public async Task GetList([FromQuery] LqYcsdJsjListQueryInput input)
{
@@ -122,8 +119,11 @@ namespace NCC.Extend.LqYcsdJsj
id = it.Id,
yf = it.Yf,
md = it.Md,
- jsj = it.Jsj
- }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
+ jsj = it.Jsj,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToPagedListAsync(input.currentPage, input.pageSize);
return PageResult.SqlSugarPageResult(data);
}
#endregion
@@ -143,8 +143,10 @@ namespace NCC.Extend.LqYcsdJsj
id = it.Id,
yf = it.Yf,
md = it.Md,
- jsj = it.Jsj
- }).MergeTable().ToListAsync();
+ jsj = it.Jsj,
+ })
+ .MergeTable()
+ .ToListAsync();
return data;
}
#endregion
@@ -168,15 +170,15 @@ namespace NCC.Extend.LqYcsdJsj
if (jsjUser == null)
{
return null;
- }
+ }
// 查询金三角信息
- var jsj = await _db.Queryable().Where(x => x.Id == jsjUser.JsjId && x.Yf == currentMonth).FirstAsync();
+ var jsj = await _db.Queryable().Where(x => x.Id == jsjUser.JsjId && x.Yf == currentMonth).FirstAsync();
if (jsj == null)
{
return null;
}
// 查询门店信息
- var store = await _db.Queryable() .Where(x => x.Id == jsj.Md).FirstAsync();
+ var store = await _db.Queryable().Where(x => x.Id == jsj.Md).FirstAsync();
return new
{
jsjId = jsj.Id,
@@ -187,7 +189,7 @@ namespace NCC.Extend.LqYcsdJsj
userName = jsjUser.UserName,
isLeader = jsjUser.IsLeader,
status = jsjUser.Status,
- sortOrder = jsjUser.SortOrder
+ sortOrder = jsjUser.SortOrder,
};
}
#endregion
@@ -228,9 +230,7 @@ namespace NCC.Extend.LqYcsdJsj
}
// 验证金三角名称是否已存在
- var existingJsj = await _db.Queryable()
- .Where(x => x.Yf == input.yf && x.Md == input.md && x.Jsj == input.jsj)
- .FirstAsync();
+ var existingJsj = await _db.Queryable().Where(x => x.Yf == input.yf && x.Md == input.md && x.Jsj == input.jsj).FirstAsync();
if (existingJsj != null)
{
throw NCCException.Oh(ErrorCode.COM1000, "该门店该月份已存在同名金三角");
@@ -239,19 +239,18 @@ namespace NCC.Extend.LqYcsdJsj
{
// 开启事务
_db.BeginTran();
- // 1. 创建门店T区(如果不存在)
- await CreateOrUpdateStoreTArea(input.yf, input.md, userInfo.userId);
- // 2. 创建金三角基础信息
+ // 1. 创建金三角基础信息
var entity = input.Adapt();
entity.Id = YitIdHelper.NextId().ToString();
var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1000);
- // 3. 创建金三角成员绑定关系
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1000);
+ // 2 创建金三角成员绑定关系
if (input.members != null && input.members.Count > 0)
{
await CreateJsjMembers(entity.Id, input.members, userInfo.userId);
}
- // 4. 创建站点战队T区(如果金三角不是T区且不是单人)
+ // 3. 创建站点战队T区(如果金三角不是T区且不是单人)
if (!input.jsj.EndsWith("T区") && input.members != null && input.members.Count > 1)
{
await CreateOrUpdateTeamTArea(input.yf, input.jsj, input.md, userInfo.userId);
@@ -270,10 +269,10 @@ namespace NCC.Extend.LqYcsdJsj
#region 获取金三角设定无分页列表
///
- /// 获取金三角设定无分页列表
- ///
- /// 请求参数
- ///
+ /// 获取金三角设定无分页列表
+ ///
+ /// 请求参数
+ ///
[NonAction]
public async Task GetNoPagingList([FromQuery] LqYcsdJsjListQueryInput input)
{
@@ -288,18 +287,21 @@ namespace NCC.Extend.LqYcsdJsj
id = it.Id,
yf = it.Yf,
md = it.Md,
- jsj = it.Jsj
- }).MergeTable().OrderBy(sidx + " " + input.sort).ToListAsync();
+ jsj = it.Jsj,
+ })
+ .MergeTable()
+ .OrderBy(sidx + " " + input.sort)
+ .ToListAsync();
return data;
}
#endregion
#region 导出金三角设定
///
- /// 导出金三角设定
- ///
- /// 请求参数
- ///
+ /// 导出金三角设定
+ ///
+ /// 请求参数
+ ///
[HttpGet("Actions/Export")]
public async Task Export([FromQuery] LqYcsdJsjListQueryInput input)
{
@@ -314,7 +316,8 @@ namespace NCC.Extend.LqYcsdJsj
{
exportData = await this.GetNoPagingList(input);
}
- List paramList = "[{\"value\":\"主键\",\"field\":\"id\"},{\"value\":\"月份\",\"field\":\"yf\"},{\"value\":\"门店\",\"field\":\"md\"},{\"value\":\"金三角\",\"field\":\"jsj\"}]".ToList();
+ List paramList =
+ "[{\"value\":\"主键\",\"field\":\"id\"},{\"value\":\"月份\",\"field\":\"yf\"},{\"value\":\"门店\",\"field\":\"md\"},{\"value\":\"金三角\",\"field\":\"jsj\"}]".ToList();
ExcelConfig excelconfig = new ExcelConfig();
excelconfig.FileName = "金三角设定.xls";
excelconfig.HeadFont = "微软雅黑";
@@ -333,11 +336,7 @@ namespace NCC.Extend.LqYcsdJsj
var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;
ExcelExportHelper.Export(exportData, excelconfig, addPath);
var fileName = _userManager.UserId + "|" + addPath + "|xls";
- var output = new
- {
- name = excelconfig.FileName,
- url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC")
- };
+ var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };
return output;
}
#endregion
@@ -385,10 +384,11 @@ namespace NCC.Extend.LqYcsdJsj
{
var entity = input.Adapt();
var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1001);
}
#endregion
-
+
#region 删除金三角设定
///
/// 删除金三角设定
@@ -400,7 +400,8 @@ namespace NCC.Extend.LqYcsdJsj
var entity = await _db.Queryable().FirstAsync(p => p.Id == id);
_ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);
var isOk = await _db.Deleteable().Where(d => d.Id == id).ExecuteCommandAsync();
- if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1002);
+ if (!(isOk > 0))
+ throw NCCException.Oh(ErrorCode.COM1002);
}
#endregion
@@ -424,20 +425,33 @@ namespace NCC.Extend.LqYcsdJsj
.WhereIF(!string.IsNullOrEmpty(month), (jsj, jksyj, md) => jsj.Yf == month)
.WhereIF(!string.IsNullOrEmpty(jsjId), (jsj, jksyj, md) => jsj.Id == jsjId)
.WhereIF(!string.IsNullOrEmpty(storeId), (jsj, jksyj, md) => jsj.Md == storeId)
- .GroupBy((jsj, jksyj, md) => new { jsj.Id, jsj.Jsj, jsj.Yf, jsj.Md, md.Dm })
- .Select((jsj, jksyj, md) => new
- {
- jsjId = jsj.Id,
- jsjName = jsj.Jsj,
- month = jsj.Yf,
- storeId = jsj.Md,
- storeName = md.Dm,
- totalPerformance = SqlFunc.AggregateSum(SqlFunc.ToDecimal(jksyj.Jksyj)),
- orderCount = SqlFunc.AggregateCount(jksyj.Id),
- avgPerformance = SqlFunc.AggregateAvg(SqlFunc.ToDecimal(jksyj.Jksyj)),
- lastOrderDate = SqlFunc.AggregateMax(jksyj.Yjsj),
- firstOrderDate = SqlFunc.AggregateMin(jksyj.Yjsj)
- })
+ .GroupBy(
+ (jsj, jksyj, md) =>
+ new
+ {
+ jsj.Id,
+ jsj.Jsj,
+ jsj.Yf,
+ jsj.Md,
+ md.Dm,
+ }
+ )
+ .Select(
+ (jsj, jksyj, md) =>
+ new
+ {
+ jsjId = jsj.Id,
+ jsjName = jsj.Jsj,
+ month = jsj.Yf,
+ storeId = jsj.Md,
+ storeName = md.Dm,
+ totalPerformance = SqlFunc.AggregateSum(SqlFunc.ToDecimal(jksyj.Jksyj)),
+ orderCount = SqlFunc.AggregateCount(jksyj.Id),
+ avgPerformance = SqlFunc.AggregateAvg(SqlFunc.ToDecimal(jksyj.Jksyj)),
+ lastOrderDate = SqlFunc.AggregateMax(jksyj.Yjsj),
+ firstOrderDate = SqlFunc.AggregateMin(jksyj.Yjsj),
+ }
+ )
.OrderBy(jsj => jsj.month, OrderByType.Desc)
.OrderBy(jsj => jsj.totalPerformance, OrderByType.Desc);
@@ -465,35 +479,53 @@ namespace NCC.Extend.LqYcsdJsj
.Where((jsj, jksyj, md) => jsj.Yf == month)
.Where((jsj, jksyj, md) => jksyj.Yjsj != null)
.Where((jsj, jksyj, md) => jksyj.Jksyj != null && jksyj.Jksyj != "" && jksyj.Jksyj != "0")
- .GroupBy((jsj, jksyj, md) => new { jsj.Id, jsj.Jsj, jsj.Yf, jsj.Md, md.Dm })
- .Select((jsj, jksyj, md) => new
- {
- jsjId = jsj.Id,
- jsjName = jsj.Jsj,
- month = jsj.Yf,
- storeId = jsj.Md,
- storeName = md.Dm,
- totalPerformance = SqlFunc.AggregateSum(SqlFunc.ToDecimal(jksyj.Jksyj)),
- orderCount = SqlFunc.AggregateCount(jksyj.Id),
- ranking = 0 // 排名将在后续计算
- })
+ .GroupBy(
+ (jsj, jksyj, md) =>
+ new
+ {
+ jsj.Id,
+ jsj.Jsj,
+ jsj.Yf,
+ jsj.Md,
+ md.Dm,
+ }
+ )
+ .Select(
+ (jsj, jksyj, md) =>
+ new
+ {
+ jsjId = jsj.Id,
+ jsjName = jsj.Jsj,
+ month = jsj.Yf,
+ storeId = jsj.Md,
+ storeName = md.Dm,
+ totalPerformance = SqlFunc.AggregateSum(SqlFunc.ToDecimal(jksyj.Jksyj)),
+ orderCount = SqlFunc.AggregateCount(jksyj.Id),
+ ranking = 0, // 排名将在后续计算
+ }
+ )
.OrderBy(jsj => jsj.totalPerformance, OrderByType.Desc)
.Take(topCount);
var result = await query.ToListAsync();
-
+
// 创建包含排名的结果
- var rankedResult = result.Select((item, index) => new
- {
- item.jsjId,
- item.jsjName,
- item.month,
- item.storeId,
- item.storeName,
- item.totalPerformance,
- item.orderCount,
- ranking = index + 1
- }).ToList();
+ var rankedResult = result
+ .Select(
+ (item, index) =>
+ new
+ {
+ item.jsjId,
+ item.jsjName,
+ item.month,
+ item.storeId,
+ item.storeName,
+ item.totalPerformance,
+ item.orderCount,
+ ranking = index + 1,
+ }
+ )
+ .ToList();
return rankedResult;
}
@@ -515,9 +547,7 @@ namespace NCC.Extend.LqYcsdJsj
var tAreaName = $"{storeName}T区";
// 检查该门店该月份是否已有T区
- var existingTArea = await _db.Queryable()
- .Where(x => x.Yf == yf && x.Md == mdId && x.Jsj == tAreaName)
- .FirstAsync();
+ var existingTArea = await _db.Queryable().Where(x => x.Yf == yf && x.Md == mdId && x.Jsj == tAreaName).FirstAsync();
if (existingTArea == null)
{
@@ -527,7 +557,7 @@ namespace NCC.Extend.LqYcsdJsj
Id = YitIdHelper.NextId().ToString(),
Yf = yf,
Md = mdId,
- Jsj = tAreaName
+ Jsj = tAreaName,
};
await _db.Insertable(tAreaEntity).ExecuteCommandAsync();
@@ -547,9 +577,7 @@ namespace NCC.Extend.LqYcsdJsj
var tAreaName = $"{teamName}T区";
// 检查该战队该月份是否已有T区
- var existingTArea = await _db.Queryable()
- .Where(x => x.Yf == yf && x.Md == mdId && x.Jsj == tAreaName)
- .FirstAsync();
+ var existingTArea = await _db.Queryable().Where(x => x.Yf == yf && x.Md == mdId && x.Jsj == tAreaName).FirstAsync();
if (existingTArea == null)
{
@@ -559,7 +587,7 @@ namespace NCC.Extend.LqYcsdJsj
Id = YitIdHelper.NextId().ToString(),
Yf = yf,
Md = mdId,
- Jsj = tAreaName
+ Jsj = tAreaName,
};
await _db.Insertable(tAreaEntity).ExecuteCommandAsync();
@@ -592,7 +620,7 @@ namespace NCC.Extend.LqYcsdJsj
CreatorTime = DateTime.Now,
CreatorUserId = creatorUserId,
DeleteMark = 0,
- Month = DateTime.Now.ToString("yyyyMM")
+ Month = DateTime.Now.ToString("yyyyMM"),
};
memberEntities.Add(memberEntity);
@@ -613,10 +641,7 @@ namespace NCC.Extend.LqYcsdJsj
{
try
{
- var storeName = await _db.Queryable()
- .Where(x => x.Id == mdId)
- .Select(x => x.Dm)
- .FirstAsync();
+ var storeName = await _db.Queryable().Where(x => x.Id == mdId).Select(x => x.Dm).FirstAsync();
return string.IsNullOrEmpty(storeName) ? "未知门店" : storeName;
}
catch