Commit b890eb68 authored by liudong1993's avatar liudong1993

粉象返佣调整

parent 47f29904
......@@ -94,5 +94,14 @@ namespace Mall.Model.Entity.User
/// 创建时间
/// </summary>
public DateTime CreateDate { get; set; }
/// <summary>
/// 关联订单id
/// </summary>
public int? ReOrderId { get; set; }
/// <summary>
/// 关联订单号
/// </summary>
public string ReOrderNum { get; set; }
}
}
......@@ -207,9 +207,17 @@ namespace Mall.Module.Product
/// </summary>
private readonly RB_Distributor_FXGradeRepository distributor_FXGradeRepository = new RB_Distributor_FXGradeRepository();
/// <summary>
/// 推荐供应商返佣
/// </summary>
private readonly RB_Goods_OrderIntroductionRepository goods_OrderIntroductionRepository = new RB_Goods_OrderIntroductionRepository();
/// <summary>
/// vip购买记录
/// </summary>
private readonly RB_Vip_BuyRepository vip_BuyRepository = new RB_Vip_BuyRepository();
/// <summary>
/// vip购买返佣
/// </summary>
private readonly RB_VipBuy_CommissionRepository vipBuy_CommissionRepository = new RB_VipBuy_CommissionRepository();
#region 购物车
......@@ -1917,7 +1925,7 @@ namespace Mall.Module.Product
};
#endregion
return ApiResult.Success("", Robj);
}
}
/// <summary>
/// 获取结算页面 快递修改后 快递费用
......@@ -3275,6 +3283,10 @@ namespace Mall.Module.Product
var DetailList = demodel.DetailList.Where(x => x.CommissionPrice > 0).ToList();
foreach (var item in DetailList)
{
if ((item.PresentFXGrade ?? 0) > 0) {
//是赠送VIP等级的 暂直接表示 反购买VIP佣金 2020-08-03 ld
continue;
}
//返佣
List<RB_Goods_OrderCommission> gocList = new List<RB_Goods_OrderCommission>();
List<FXOrderCommissionNumModel> fxNumList = new List<FXOrderCommissionNumModel>();
......@@ -5066,6 +5078,79 @@ namespace Mall.Module.Product
return list;
}
/// <summary>
/// 获取推荐分销订单
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Goods_Order_Extend> GetDistributionOrdersPageListForRecommend(int pageIndex, int pageSize, out long count, RB_Goods_Order_Extend demodel)
{
var list = goods_OrderRepository.GetDistributionOrdersPageListForRecommend(pageIndex, pageSize, out count, demodel);
if (list.Any())
{
//查询订单明细
var dlist = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = string.Join(",", list.Select(x => x.OrderId)) });
//查询图片
List<RB_Material_Info_Extend> Mlist = new List<RB_Material_Info_Extend>();
if (dlist.Any())
{
foreach (var item in dlist)
{
item.CoverImagePath = item.CoverImage;
}
}
string areaIds1 = string.Join(",", list.Select(x => x.Province ?? 0).Distinct());
string areaIds2 = string.Join(",", list.Select(x => x.City ?? 0).Distinct());
string areaIds3 = string.Join(",", list.Select(x => x.District ?? 0).Distinct());
string areaIds = "0";
if (!string.IsNullOrEmpty(areaIds1))
{
areaIds += "," + areaIds1;
}
if (!string.IsNullOrEmpty(areaIds2))
{
areaIds += "," + areaIds2;
}
if (!string.IsNullOrEmpty(areaIds3))
{
areaIds += "," + areaIds3;
}
var arealist = destinationRepository.GetDictvalueListForIds(areaIds);
//分销情况
var oclist = goods_OrderIntroductionRepository.GetList(new RB_Goods_OrderIntroduction_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = string.Join(",", list.Select(x => x.OrderId)) });
if (oclist.Any())
{
//获取用户
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", oclist.Select(x => x.UserId).Distinct()) });
//获取分销商
var dislist = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", oclist.Select(x => x.UserId).Distinct()) });
foreach (var item in oclist)
{
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel?.Name ?? "";
item.Mobile = umodel?.Moblie ?? "";
item.Name = dislist.Where(x => x.UserId == item.UserId).FirstOrDefault()?.Name ?? "";
}
}
foreach (var item in list)
{
item.DetailList = dlist.Where(x => x.OrderId == item.OrderId).ToList();
string areaName = (arealist.Where(x => x.ID == item.Province).FirstOrDefault()?.Name ?? "") + " " + (arealist.Where(x => x.ID == item.City).FirstOrDefault()?.Name ?? "") + " " + (arealist.Where(x => x.ID == item.District).FirstOrDefault()?.Name ?? "");
item.ShoppingAddress = areaName + " " + item.ShoppingAddress;
foreach (var qitem in item.DetailList) {
qitem.OrderIntroduction = oclist.Where(x => x.OrderId == item.OrderId && x.OrderDetailId == qitem.Id).FirstOrDefault();
}
}
}
return list;
}
/// <summary>
/// 获取用户分销订单
/// </summary>
......@@ -7155,7 +7240,7 @@ namespace Mall.Module.Product
DetailList = dlist,
OrderNo = orderModel.OrderNo
};
InsertPresentFXGrade(demodel, orderModel.UserId ?? 0, orderModel.OrderId);
//InsertPresentFXGrade(demodel, orderModel.UserId ?? 0, orderModel.OrderId); 2020-08-03 刘东 已在付款时赠送了
}
#endregion
......@@ -7581,6 +7666,27 @@ namespace Mall.Module.Product
}
}
var vipList = vip_BuyRepository.GetVipBuyList(new RB_Vip_Buy_Extend() { TenantId = tenantId, MallBaseId = mallBaseId, ReOrderId = model.OrderId });
List<RB_VipBuy_Commission_Extend> clist = new List<RB_VipBuy_Commission_Extend>();
if (vipList.Any())
{
string vipIds = string.Join(",", vipList.Select(x => x.Id));
clist = vipBuy_CommissionRepository.GetList(new RB_VipBuy_Commission_Extend() { TenantId = tenantId, MallBaseId = mallBaseId, OrderIds = vipIds });
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = tenantId, MallBaseId = mallBaseId });
//获取用户
var ulist = new List<RB_Member_User_Extend>();
if (clist.Any())
{
ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { TenantId = tenantId, MallBaseId = mallBaseId, UserIds = string.Join(",", clist.Select(x => x.UserId).Distinct()) });
foreach (var qitem in clist)
{
var fxmodel = FXList.Where(x => x.Id == qitem.Grade).FirstOrDefault();
qitem.GradeDescription = fxmodel.GradeName;
qitem.UserName = ulist.Where(x => x.Id == qitem.UserId).FirstOrDefault()?.Name ?? "";
}
}
}
return ApiResult.Success("", new
{
model.OrderId,
......@@ -7642,6 +7748,13 @@ namespace Mall.Module.Product
x.Mobile,
x.Commission
}),
VipCommissionInfo = clist.Select(x => new {
x.Id,
x.Grade,
x.GradeDescription,
x.UserName,
x.Commission
}),
DetailList = model.DetailList.Select(x => new
{
x.Id,
......@@ -8651,6 +8764,52 @@ namespace Mall.Module.Product
#endregion
#endregion
#region 推荐供应商返佣
/// <summary>
/// 获取新增账单选择返佣订单
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Goods_OrderDetail_Extend> GetRecommendOrdersCommissionPageList(int pageIndex, int pageSize, out long count, RB_Goods_OrderIntroduction_Extend demodel)
{
List<RB_Goods_OrderDetail_Extend> RList = new List<RB_Goods_OrderDetail_Extend>();
var list = goods_OrderIntroductionRepository.GetPageList(pageIndex, pageSize, out count, demodel);
if (list.Any()) {
//获取订单明细
string DetailIds = string.Join(",", list.Select(x => x.OrderDetailId ?? 0));
var dlist = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderDetailIds = DetailIds });
//获取订单列表
string OrderIds = string.Join(",", list.Select(x => x.OrderId ?? 0));
var olist = goods_OrderRepository.GetOrderList(new RB_Goods_Order_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = OrderIds });
//获取用户
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", list.Select(x => x.UserId).Distinct()) });
//获取分销商
var dislist = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, UserIds = string.Join(",", list.Select(x => x.UserId).Distinct()) });
foreach (var item in list) {
var dmodel = dlist.Where(x => x.Id == item.OrderDetailId).FirstOrDefault();
if (dmodel != null) {
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel?.Name ?? "";
item.Mobile = umodel?.Moblie ?? "";
item.Name = dislist.Where(x => x.UserId == item.UserId).FirstOrDefault()?.Name ?? "";
var omodel = olist.Where(x => x.OrderId == item.OrderId).FirstOrDefault();
dmodel.OrderNo = omodel?.OrderNo ?? "";
dmodel.OrderIntroduction = item;
RList.Add(dmodel);
}
}
}
return RList;
}
#endregion
#region 供应商订单商品信息
/// <summary>
/// 获取订单商品分页列表
......
......@@ -1268,7 +1268,7 @@ namespace Mall.Module.Product
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, UserId = UserId, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (disModel != null)
{
if ((BasicsModel?.IsEnableFXGrade??2) == 1)
if ((BasicsModel?.IsEnableFXGrade??2) == 1 && (model.PresentFXGrade ?? 0) == 0)
{
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = TenantId, MallBaseId = MallBaseId });
if (FXList.Any() && FXList.Where(x => x.IsGuest == 1).Any())
......
......@@ -62,6 +62,10 @@ namespace Mall.Module.User
/// </summary>
private readonly RB_VipBuy_CommissionRepository vipBuy_CommissionRepository = new RB_VipBuy_CommissionRepository();
/// <summary>
/// vip购买记录
/// </summary>
private readonly RB_Vip_BuyRepository vip_BuyRepository = new RB_Vip_BuyRepository();
/// <summary>
/// 粉象vip购买返佣金额
/// </summary>
private readonly RB_Distributor_FXCommissionRepository distributor_FXCommissionRepository = new RB_Distributor_FXCommissionRepository();
......@@ -345,10 +349,12 @@ namespace Mall.Module.User
member_UserRepository.Update(keyValues1, wheres1);
}
//赠送粉象等级(+VIP返佣) ld 2020-08-03
var FXCOrder = oldOrder.RefMapperTo<RB_Goods_Order_Extend>();
FXCOrder.DetailList = orderGoodsList;
System.Threading.Tasks.Task.Run(() => InsertPresentFXGradeCommission(FXCOrder, Out_Trade_No, Transaction_Id, PayWay, oldOrder.UserId ?? 0, oldOrder.OrderId));
//发送订阅消息
string goodsName = orderGoodsList.FirstOrDefault().GoodsName;
if (orderGoodsList.Count > 1)
{
......@@ -370,6 +376,544 @@ namespace Mall.Module.User
return flag;
}
/// <summary>
/// 测试
/// </summary>
/// <param name="OrderId"></param>
public void TestFxGradeCommission(int OrderId) {
var oldOrder = goods_OrderRepository.GetEntity<RB_Goods_Order_Extend>(OrderId);
//获取订单商品
var orderGoodsList = goodsOrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend { TenantId = oldOrder.TenantId, MallBaseId = oldOrder.MallBaseId, OrderId = oldOrder.OrderId });
oldOrder.DetailList = orderGoodsList;
System.Threading.Tasks.Task.Run(() => InsertPresentFXGradeCommission(oldOrder, oldOrder.MerchantsNo, "", Common.Enum.Goods.OrderPayTypeEnum.WeChatPay, oldOrder.UserId ?? 0, oldOrder.OrderId));
}
/// <summary>
/// 赠送粉象等级(并返VIP佣金)
/// </summary>
/// <param name="demodel"></param>
/// <param name="umodel"></param>
/// <param name="OrderId"></param>
private void InsertPresentFXGradeCommission(RB_Goods_Order_Extend demodel,string Out_Trade_No,string Transaction_Id, Common.Enum.Goods.OrderPayTypeEnum PayWay, int UserId, int OrderId)
{
var basicModel = distributor_BasicsRepository.GetList(new RB_Distributor_Basics_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId }).FirstOrDefault();
if ((basicModel?.IsEnableFXGrade ?? 2) == 1)
{
var disModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { UserId = UserId, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (disModel == null)
{
LogHelper.Write("该用户分销商等级不存在,UserId:" + UserId);
}
if (demodel.DetailList.Where(x => x.PresentFXGrade > 0).Any() && disModel != null)
{
var vipblist = vip_BuyRepository.GetVipBuyList(new RB_Vip_Buy_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, ReOrderId = OrderId });
if (vipblist.Any()) {
//已存在返佣记录了
return;
}
var FXList = distributor_FXGradeRepository.GetList(new RB_Distributor_FXGrade_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var VIPModel = FXList.Where(x => x.IsGuest == 3).FirstOrDefault();
List<int> GradeList = new List<int>();//等级列表
int VIPMonths = 0;//vip赠送月份
int VIPBuyNum = 0;//vip购买数量 返佣时 需乘以该数量
foreach (var item in demodel.DetailList)
{
if (item.PresentFXGrade > 0)
{
//有赠送粉象等级
GradeList.Add(item.PresentFXGrade ?? 0);
if (item.PresentFXGrade == (VIPModel?.Id ?? 0))
{
VIPMonths += (item.PresentFXMonth ?? 0) * (item.Number ?? 0);
VIPBuyNum += (item.Number ?? 0);
}
}
}
if (GradeList.Any())
{
//判断等级 取最高级别
int MaxGradeId = 0;
int MaxGrade = 0;
if (GradeList.Distinct().Count() > 1)
{
//说明有两种级别 取最高的
foreach (var item in GradeList.Distinct())
{
var fxmodel = FXList.Where(x => x.Id == item).FirstOrDefault();
MaxGrade = (fxmodel.Grade ?? 0) > MaxGrade ? (fxmodel.Grade ?? 0) : MaxGrade;
}
MaxGradeId = FXList.Where(x => x.Grade == MaxGrade).FirstOrDefault()?.Id ?? 0;
}
else
{
MaxGradeId = GradeList.FirstOrDefault();
var fxmodel = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault();
MaxGrade = (fxmodel.Grade ?? 0) > MaxGrade ? (fxmodel.Grade ?? 0) : MaxGrade;
}
var oldGrade = FXList.Where(x => x.Id == disModel.FXGradeId).FirstOrDefault()?.Grade ?? 0;
try
{
bool UpdateGrade = false;
if (MaxGradeId > 0 && MaxGrade >= oldGrade && MaxGradeId == (VIPModel?.Id ?? 0))
{
UpdateGrade = true;
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//vip
var VipExpiryDate = DateTime.Now.AddMonths(VIPMonths);
if (VIPMonths >= 1)
{
VipExpiryDate = Convert.ToDateTime(VipExpiryDate.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"));
}
if (MaxGrade == oldGrade && disModel.VipExpiryDate.HasValue)
{
if (disModel.VipExpiryDate > DateTime.Now)
{
VipExpiryDate = disModel.VipExpiryDate.Value.AddMonths(VIPMonths);
}
}
Dictionary<string, object> keyValues1 = new Dictionary<string, object>
{
{ nameof(RB_Distributor_Info_Extend.FXGradeId), MaxGradeId },
{ nameof(RB_Distributor_Info_Extend.VipExpiryDate), VipExpiryDate }
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=disModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool gflag = distributor_InfoRepository.Update(keyValues1, wheres1);
if (gflag)
{
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
int vipBuyId = vip_BuyRepository.Insert(new Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = VipExpiryDate,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = Out_Trade_No,
Money = demodel.Income ?? 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = DateTime.Now,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId,
ReOrderId = OrderId,
ReOrderNum = demodel.OrderNo
});
if (vipBuyId > 0)
{
//插入返佣信息
InsertVipBuyCommissionForPresent(UserId, vipBuyId, VIPBuyNum, disModel, FXList);
}
}
}
else if (MaxGradeId > 0 && MaxGrade > oldGrade)
{
UpdateGrade = true;
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//比vip高级
Dictionary<string, object> keyValues1 = new Dictionary<string, object>
{
{ nameof(RB_Distributor_Info_Extend.FXGradeId), MaxGradeId }
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=disModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool gflag = distributor_InfoRepository.Update(keyValues1, wheres1);
if (gflag)
{
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
int vipBuyId = vip_BuyRepository.Insert(new Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = null,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = Out_Trade_No,
Money = demodel.Income ?? 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = DateTime.Now,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId,
ReOrderId = OrderId,
ReOrderNum = demodel.OrderNo
});
if (vipBuyId > 0)
{
//插入返佣信息
InsertVipBuyCommissionForPresent(UserId, vipBuyId, VIPBuyNum, disModel, FXList);
}
}
}
else if(MaxGradeId > 0) {
string MaxGradeName = FXList.Where(x => x.Id == MaxGradeId).FirstOrDefault()?.GradeName ?? "";
//新增vip赠送记录表
Random R1 = new Random();
int Rstr1 = R1.Next(111, 999);
string OrderNo1 = DateTime.Now.ToString("yyyyMMddHHmmssfff") + Rstr1;
int vipBuyId = vip_BuyRepository.Insert(new Model.Entity.User.RB_Vip_Buy()
{
CreateDate = DateTime.Now,
ExpiryDate = null,
GradeId = MaxGradeId,
GradeName = MaxGradeName,
Id = 0,
MallBaseId = demodel.MallBaseId,
MerchantsNo = Out_Trade_No,
Money = demodel.Income ?? 0,
OrderNo = OrderNo1,
PayState = 1,
PayTime = DateTime.Now,
PayWay = 1,
Remark = "下单赠送,订单号:" + demodel.OrderNo + "(" + OrderId + ")",
Status = 0,
TenantId = demodel.TenantId,
UserId = UserId,
ReOrderId = OrderId,
ReOrderNum = demodel.OrderNo
});
if (vipBuyId > 0)
{
//插入返佣信息
InsertVipBuyCommissionForPresent(UserId, vipBuyId, VIPBuyNum, disModel, FXList);
}
}
if (UpdateGrade)
{
FXAutoUpgradeUserDistributorGrade(UserId, demodel.TenantId, demodel.MallBaseId);
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "InsertPresentFXGrade赠送粉象分销等级失败,OrderId:" + OrderId);
}
}
}
}
}
/// <summary>
/// 下单赠送VIP返佣
/// </summary>
/// <param name="BuyUserId"></param>
/// <param name="OrderId">Vip订单id</param>
/// <param name="Out_Trade_No"></param>
/// <param name="Transaction_Id"></param>
/// <param name="PayWay"></param>
/// <param name="VIPBuyNum"></param>
/// <param name="VIPBuyId"></param>
/// <param name="disModel"></param>
/// <param name="FXList"></param>
/// <returns></returns>
public bool InsertVipBuyCommissionForPresent(int BuyUserId, int OrderId, int VIPBuyNum, RB_Distributor_Info_Extend disModel, List<RB_Distributor_FXGrade_Extend> FXList)
{
bool flag = false;
try
{
int TenantId = 0; int MallBaseId = 0;
var uModel = member_UserRepository.GetEntity(BuyUserId);
if (uModel == null)
{
return false;
}
//判断订单状态是否是待支付
var model = vipBuyRepository.GetEntity(OrderId);
if (model == null)
{
return false;
}
TenantId = model.TenantId;
MallBaseId = model.MallBaseId;
var trans = vipBuyRepository.DbTransaction;
//粉象等级列表
var VipModel = FXList.Where(x => x.IsGuest == 3).FirstOrDefault();
if (VipModel == null) { vipBuyRepository.DBSession.Rollback(); return false; }
var PTModel = FXList.Where(x => x.IsGuest == 1).FirstOrDefault();
if (PTModel == null) { vipBuyRepository.DBSession.Rollback(); return false; }
//vip购买返佣金额列表
var FXCList = distributor_FXCommissionRepository.GetFXCommissionList(new RB_Distributor_FXCommission_Extend() { TenantId = TenantId, MallBaseId = MallBaseId });
if (disModel != null)
{
// 2020-08-03 ld 暂屏蔽 所有人都能购买 反VIP
//if (disModel.FXGradeId != VipModel.Id && disModel.FXGradeId != PTModel.Id)
//{
// vipBuyRepository.DBSession.Rollback();
// return false;
//}
//求其上级
var pmodel = member_UserRepository.GetEntity(uModel.SuperiorId);
if (pmodel == null) { vipBuyRepository.DBSession.Rollback(); return false; }
var dispModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { TenantId = TenantId, MallBaseId = MallBaseId, UserId = pmodel.Id, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited }).FirstOrDefault();
if (dispModel != null)
{
var pfxModel = FXList.Where(x => x.Id == dispModel.FXGradeId).FirstOrDefault();
if (pfxModel == null) { vipBuyRepository.DBSession.Rollback(); return false; }
if (pfxModel.Grade < VipModel.Grade)
{
vipBuyRepository.DBSession.Rollback();
return false;//其上级不是vip 直接后面的全部不提
}
//查询出当前用户的所有上级
string UserIds = member_UserRepository.GetMemberParentIdStr(pmodel.Id);
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { UserIds = UserIds, TenantId = TenantId, MallBaseId = MallBaseId });
//查询出用户的所有分销信息
var dlist = distributor_InfoRepository.GetListForSingle(new RB_Distributor_Info_Extend() { UserIds = UserIds, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited, TenantId = TenantId, MallBaseId = MallBaseId });
foreach (var item in dlist)
{
item.Grade = FXList.Where(x => x.Id == item.FXGradeId).FirstOrDefault()?.Grade ?? 0;
}
//返佣
List<RB_VipBuy_Commission> gocList = new List<RB_VipBuy_Commission>();
List<Model.Entity.Product.FXOrderCommissionNumModel> fxNumList = new List<Model.Entity.Product.FXOrderCommissionNumModel>();
int UserId = pmodel.Id;
int Num = 1;
while (UserId > 0)
{
var numodel = ulist.Where(x => x.Id == UserId).FirstOrDefault();
if (numodel == null)
{
UserId = 0;
break;
}
var d2Model = dlist.Where(x => x.UserId == numodel.Id).FirstOrDefault();
if (d2Model == null)
{
UserId = 0;
break;
}
var FXGModel = FXList.Where(x => x.Id == d2Model.FXGradeId).FirstOrDefault();
if (FXGModel == null)
{
UserId = 0;
break;
}
if (!fxNumList.Any())
{
//第一个人 拿直推vip
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == VipModel.Id && x.GradeType == 1).FirstOrDefault();
fxNumList.Add(new Model.Entity.Product.FXOrderCommissionNumModel()
{
GradeId = FXGModel.Id,
Grade = FXGModel.Grade ?? 0,
Money = fxcModel?.CommissionPrice ?? 0,
Sort = Num,
IsSelfBuy = 2
});
gocList.Add(new RB_VipBuy_Commission()
{
Id = 0,
Commission = fxcModel?.CommissionPrice ?? 0,
CreateDate = DateTime.Now,
Grade = FXGModel.Id,
IsRemit = 0,
MallBaseId = MallBaseId,
OrderId = OrderId,
Remark = "下单赠送VIP",
TenantId = TenantId,
Type = 1,
UpdateDate = DateTime.Now,
UserId = UserId
});
Num++;
UserId = numodel.SuperiorId ?? 0;
}
else
{
//后面的拿间接vip 或者其他
int MaxGrade = fxNumList.Max(x => x.Grade);
if (FXGModel.Grade < MaxGrade)
{
//后面的全部不返佣
UserId = 0;
break;
}
int MaxGradeNum = fxNumList.Where(x => x.Grade == FXGModel.Grade).Count();
int MaxGradeId = fxNumList.Where(x => x.Grade == MaxGrade).FirstOrDefault()?.GradeId ?? 0;
if ((FXGModel.SiblingRebatesNum ?? 0) + 1 > MaxGradeNum)
{
decimal DcommionMoney = 0;
if (MaxGradeNum >= 1 && MaxGrade == VipModel.Id)
{
//拿间接vip
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == VipModel.Id && x.GradeType == 2).FirstOrDefault();
DcommionMoney = fxcModel?.CommissionPrice ?? 0;
}
else if (FXGModel.Grade > VipModel.Grade)
{
if (MaxGrade == VipModel.Id)
{
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == MaxGradeId && x.GradeType == 2).FirstOrDefault();
DcommionMoney = fxcModel?.CommissionPrice ?? 0;
}
else
{
var fxcModel = FXCList.Where(x => x.FXGradeId == FXGModel.Id && x.CommissionGradeId == MaxGradeId && x.GradeType == 1).FirstOrDefault();
DcommionMoney = fxcModel?.CommissionPrice ?? 0;
}
}
fxNumList.Add(new Model.Entity.Product.FXOrderCommissionNumModel()
{
GradeId = FXGModel.Id,
Grade = FXGModel.Grade ?? 0,
Money = DcommionMoney,
Sort = Num,
IsSelfBuy = 2
});
gocList.Add(new RB_VipBuy_Commission()
{
Id = 0,
Commission = DcommionMoney,
CreateDate = DateTime.Now,
Grade = FXGModel.Id,
IsRemit = 0,
MallBaseId = MallBaseId,
OrderId = OrderId,
Remark = "下单赠送VIP",
TenantId = TenantId,
Type = 1,
UpdateDate = DateTime.Now,
UserId = UserId
});
Num++;
UserId = numodel.SuperiorId ?? 0;
}
else
{
UserId = 0;
//该等级的已提完了 看是否可以直接找到下一个等级的
var fx2List = dlist.Where(x => x.Grade > MaxGrade).ToList();
if (fx2List.Any())
{
//说明是有下一级的
for (var i = 0; i < ulist.Count; i++)
{
var n1umodel = ulist.Where(x => x.Id == (numodel.SuperiorId ?? 0)).FirstOrDefault();
if (n1umodel == null)
{
UserId = 0;
break;
}
var dis1Model = dlist.Where(x => x.UserId == n1umodel.Id).FirstOrDefault();
var FXG2Model = new RB_Distributor_FXGrade_Extend();
if (dis1Model == null)
{
UserId = 0;
break;
}
FXG2Model = FXList.Where(x => x.Id == dis1Model.FXGradeId).FirstOrDefault();
if (FXG2Model == null)
{
UserId = 0;
break;
}
if (FXG2Model.Grade < MaxGrade)
{
//后面的全部不返佣
UserId = 0;
break;
}
else if (FXG2Model.Grade > MaxGrade)
{
//已找到上级 继续返佣
UserId = n1umodel.Id;
break;
}
}
}
}
}
}
if (gocList.Any())
{
string FUserIds = string.Join(",", gocList.Select(x => x.UserId).Distinct());
//最后再次查询分销商 便于返佣金
var fdlist = distributor_InfoRepository.GetListForSingle(new RB_Distributor_Info_Extend() { UserIds = FUserIds, AuditStatus = Common.Enum.User.DistributorAuditStatusEnum.Audited, TenantId = TenantId, MallBaseId = MallBaseId });
foreach (var qitem in gocList)
{
if (qitem.Commission > 0)
{
qitem.Commission = (qitem.Commission ?? 0) * VIPBuyNum;//乘以购买的份数
flag = vipBuy_CommissionRepository.Insert(qitem, trans) > 0;
if (flag)
{
//分销商增加相应的佣金
var numodel = ulist.Where(x => x.Id == qitem.UserId).FirstOrDefault();
var fmodel = fdlist.Where(x => x.UserId == (numodel?.Id ?? 0)).FirstOrDefault();
if (fmodel != null)
{
//分销商增加佣金
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Info.TotalCommission),(fmodel.TotalCommission??0)+(qitem.Commission??0)},
{ nameof(RB_Distributor_Info.CommissionWithdrawal),(fmodel.CommissionWithdrawal??0)+(qitem.Commission??0)},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info.Id),
FiledValue=fmodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
distributor_InfoRepository.Update(keyValues, wheres, trans);
}
}
}
}
}
}
}
vipBuyRepository.DBSession.Commit();
//购买vip之后 其上级验证 如果满足升级 将自动升级为更高级别的分销商
FXAutoUpgradeUserDistributorGrade(BuyUserId, TenantId, MallBaseId);
return true;
}
catch (Exception ex)
{
LogHelper.Write(ex, "InsertVipBuyCommission2");
vipBuyRepository.DBSession.Rollback();
return false;
}
}
#region VIP购买
/// <summary>
/// 新增vip购买返佣
/// </summary>
......@@ -862,5 +1406,6 @@ namespace Mall.Module.User
return false;
}
}
#endregion
}
}
......@@ -97,6 +97,10 @@ namespace Mall.Module.User
/// </summary>
private readonly RB_Goods_OrderRepository goods_OrderRepository = new RB_Goods_OrderRepository();
/// <summary>
/// 订单明细
/// </summary>
private readonly RB_Goods_OrderDetailRepository goods_OrderDetailRepository = new RB_Goods_OrderDetailRepository();
/// <summary>
/// 足迹
/// </summary>
private readonly RB_Member_FootmarkRepository member_FootmarkRepository = new RB_Member_FootmarkRepository();
......@@ -153,6 +157,22 @@ namespace Mall.Module.User
/// 分销商日志
/// </summary>
private RB_Distributor_LogRepository distributor_LogRepository = new RB_Distributor_LogRepository();
/// <summary>
/// 推荐供应商返佣账单
/// </summary>
private readonly RB_Distributor_BillRepository distributor_BillRepository = new RB_Distributor_BillRepository();
/// <summary>
/// 推荐供应商返佣账单明细
/// </summary>
private readonly RB_Distributor_BillDetailRepository distributor_BillDetailRepository = new RB_Distributor_BillDetailRepository();
/// <summary>
/// 推荐供应商返佣
/// </summary>
private readonly RB_Goods_OrderIntroductionRepository goods_OrderIntroductionRepository = new RB_Goods_OrderIntroductionRepository();
/// <summary>
/// 供应商
/// </summary>
private readonly RB_SupplierRepository supplierRepository = new RB_SupplierRepository();
......@@ -2400,6 +2420,111 @@ namespace Mall.Module.User
return flag;
}
/// <summary>
/// 推荐生成提现单据
/// </summary>
/// <returns></returns>
public bool OrderIncomeFinanceModuleForRecommend(int UserId,int BillId,List<RB_Goods_OrderIntroduction_Extend> list, int TenantId, int MallBaseId)
{
var flag = false;
try
{
decimal Money = list.Sum(x => x.Commission ?? 0);
//查询用户
var umodel = member_UserRepository.GetEntity(UserId);
if (umodel == null) { return false; }
//查询分销商
var DisModel = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { UserId = UserId, TenantId = TenantId, MallBaseId = MallBaseId }).FirstOrDefault();
if (DisModel == null) { return false; }
//先查询规则
var financeConfigurineList = financeConfigurineRepository.GetList(new Model.Extend.Finance.RB_Finance_Configurine_Extend { Type = 4 });
//根据规则中的小程序,查询订单详情信息
if (financeConfigurineList != null && financeConfigurineList.Any())
{
var item = financeConfigurineList.FirstOrDefault();
var detailList = new List<object>();
var OrderNoList = list.Select(x => x.OrderNo).Distinct().ToList();
foreach (var qitem in OrderNoList) {
var NoList = list.Where(x => x.OrderNo == qitem).ToList();
decimal unitmoney = NoList.Sum(x => x.Commission ?? 0);
detailList.Add(new
{
CostTypeId = item.RemitCostTypeId,
Number = 1,
OriginalMoney = unitmoney,
UnitPrice = unitmoney,
Remark = "订单号:" + (qitem == "" ? "暂无" : qitem)
});
}
item.IsPublic = 5;//默认平台虚拟账户
var financeObj = new
{
CreateBy = Config.ExpendDirector,
item.IsPublic,
ClientType = Convert.ToInt32(new ConfigurationBuilder().Add(new JsonConfigurationSource { Path = "appsettings.json" }).Build().GetSection("FinanceSetting")["RemitTypeId"]),
ClientID = Convert.ToInt32(new ConfigurationBuilder().Add(new JsonConfigurationSource { Path = "appsettings.json" }).Build().GetSection("FinanceSetting")["RemitAccountId"]),
item.CurrencyId,
WBMoney = Money,
PayDate = DateTime.Now.ToString("yyyy-MM-dd"),
RB_Branch_Id = Config.ExpendBranchId,
TemplateId = item.WorkFlowId,
OrderSource = 16,
OtherType = 18,
ReFinanceId = BillId,
Remark = "名称:" + umodel.Name + "(" + umodel.Id + ")" + " 姓名:" + DisModel.Name + " 手机:" + DisModel.Mobile + " " + System.DateTime.Now.ToString("yyyy年MM月dd日") + "自动生成财务单据",
detailList,
RB_Depart_Id = Config.ExpendDepartment
};
string sign = EncryptionHelper.AesEncrypt(JsonHelper.Serialize(financeObj), Config.FinanceKey);
var resultInfo = new
{
msg = sign
};
string apiResult = Mall.Common.Plugin.HttpHelper.HttpPost(Config.PaymentFinanceApi, JsonHelper.Serialize(resultInfo), "");
var apir = JsonConvert.DeserializeObject<ApiResult>(apiResult);
if (apir.resultCode == 1)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Bill.FinanceId), Convert.ToInt32(apir.data.ToString())},
{ nameof(RB_Distributor_Bill.Remark), "自动生成财务单据:"+apir.data.ToString()},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Remit.Id),
FiledValue=BillId,
OperatorEnum=OperatorEnum.Equal
}
};
distributor_BillRepository.Update(keyValues, wheres);
}
else
{
//记录自动生成失败,需手动新增财务单据
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Bill.Remark), "自动生成财务单据失败,请手动添加财务单据!"},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Remit.Id),
FiledValue=BillId,
OperatorEnum=OperatorEnum.Equal
}
};
distributor_BillRepository.Update(keyValues, wheres);
}
}
}
catch (Exception ex)
{
LogHelper.Write(ex);
}
return flag;
}
/// <summary>
/// 设置打款备注
/// </summary>
......@@ -3067,7 +3192,7 @@ namespace Mall.Module.User
{
var gmodel = distributor_FXGradeRepository.GetEntity((model.FXGradeId ?? 0));
GradeName = gmodel?.GradeName ?? "默认等级";
if (gmodel.IsGuest == 3)
if ((gmodel?.IsGuest ?? 0) == 3)
{
IsVip = 1;
}
......@@ -5323,6 +5448,228 @@ namespace Mall.Module.User
#endregion
#region 推荐返佣账单
/// <summary>
/// 新增账单
/// </summary>
/// <param name="introductionIdList"></param>
/// <param name="userId"></param>
/// <param name="supplierId"></param>
/// <param name="tenantId"></param>
/// <param name="mallBaseId"></param>
/// <returns></returns>
public bool SetRecommendOrdersBillInfo(List<int> introductionIdList, int userId, int supplierId, int tenantId, int mallBaseId, int empId)
{
var list = goods_OrderIntroductionRepository.GetList(new RB_Goods_OrderIntroduction_Extend() { TenantId = tenantId, MallBaseId = mallBaseId, IntroductionIds = string.Join(",", introductionIdList) });
if (list.Any())
{
if (list.Where(x => x.CommissionState == 1 || x.RemitStatus == 1).Any())
{
return false;
}
string OrderIds = string.Join(",", list.Select(x => x.OrderId ?? 0).Distinct());
var olist = goods_OrderRepository.GetOrderList(new RB_Goods_Order_Extend() { TenantId = tenantId, MallBaseId = mallBaseId, OrderIds = OrderIds });
decimal totalMoney = list.Sum(x => x.Commission ?? 0);
int BillId = distributor_BillRepository.Insert(new Model.Entity.User.RB_Distributor_Bill()
{
BillState = 1,
CreateDate = DateTime.Now,
EmpId = empId,
Id = 0,
MallBaseId = mallBaseId,
Money = totalMoney,
Periods = DateTime.Now.ToString("yyyyMMdd"),
Remark = "",
Status = 0,
SupplierId = supplierId,
TenantId = tenantId,
UpdateDate = DateTime.Now,
UserId = userId
});
if (BillId > 0)
{
//新增账单明细
foreach (var item in list)
{
distributor_BillDetailRepository.Insert(new Model.Entity.User.RB_Distributor_BillDetail()
{
BillId = BillId,
CommissionId = item.Id,
Id = 0,
CreateDate = DateTime.Now,
MallBaseId = mallBaseId,
OrderDetailId = item.OrderDetailId,
OrderId = item.OrderId,
Status = 0,
TenantId = tenantId,
UpdateDate = DateTime.Now
});
//更新返佣订单的佣金打款状态
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Goods_OrderIntroduction_Extend.RemitStatus),1}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Goods_OrderIntroduction_Extend.Id),
FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
goods_OrderIntroductionRepository.Update(keyValues, wheres);
item.OrderNo = olist.Where(x => x.OrderId == item.OrderId).FirstOrDefault()?.OrderNo ?? "";
}
if (tenantId == 1)
{
//新增财务单据
OrderIncomeFinanceModuleForRecommend(userId, BillId, list, tenantId, mallBaseId);
}
return true;
}
return false;
}
else
{
return false;
}
}
/// <summary>
/// 获取账单列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Distributor_Bill_Extend> GetRecommendOrdersBillPageList(int pageIndex, int pageSize, out long count, RB_Distributor_Bill_Extend demodel)
{
var list = distributor_BillRepository.GetPageList(pageIndex, pageSize, out count, demodel);
if (list.Any()) {
//查询用户
string userIds = string.Join(",", list.Select(x => x.UserId ?? 0));
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { UserIds = userIds });
//查询供应商
List<RB_Supplier_Extend> supplierList = new List<RB_Supplier_Extend>();
if (list.Where(x => x.SupplierId > 0).Any()) {
string supplierIds = string.Join(",", list.Where(x => x.SupplierId > 0).Select(x => x.SupplierId));
supplierList = supplierRepository.GetList(new RB_Supplier_Extend() { SupplierIds = supplierIds });
}
foreach (var item in list) {
item.UserName = ulist.Where(x => x.Id == item.UserId).FirstOrDefault()?.Name ?? "";
item.SupplierName = supplierList.Where(x => x.ID == item.SupplierId).FirstOrDefault()?.Name ?? "";
}
}
return list;
}
/// <summary>
/// 获取账单明细列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public object GetRecommendOrdersBillDetailList(RB_Distributor_BillDetail_Extend demodel)
{
var bmodel = distributor_BillRepository.GetEntity(demodel.BillId);
//获取用户 获取供应商
var umodel = member_UserRepository.GetEntity(bmodel?.UserId ?? 0);
var smodel = supplierRepository.GetEntity(bmodel?.SupplierId ?? 0);
List<object> RList = new List<object>();
var list = distributor_BillDetailRepository.GetList(new RB_Distributor_BillDetail_Extend() { BillId = demodel.BillId, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
if (list.Any()) {
//获取订单明细
string DetailIds = string.Join(",", list.Select(x => x.OrderDetailId ?? 0));
var dlist = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderDetailIds = DetailIds });
//获取订单列表
string OrderIds = string.Join(",", list.Select(x => x.OrderId ?? 0));
var olist = goods_OrderRepository.GetOrderList(new RB_Goods_Order_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = OrderIds });
//获取推荐返佣
string IntroductionIds = string.Join(",", list.Select(x => x.CommissionId ?? 0));
var introductionlist = goods_OrderIntroductionRepository.GetList(new RB_Goods_OrderIntroduction_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, IntroductionIds = IntroductionIds });
decimal TotalMoney = introductionlist.Sum(x => x.Commission ?? 0);
foreach (var item in introductionlist)
{
var dmodel = dlist.Where(x => x.Id == item.OrderDetailId).FirstOrDefault();
if (dmodel != null)
{
var omodel = olist.Where(x => x.OrderId == item.OrderId).FirstOrDefault();
dmodel.OrderNo = omodel?.OrderNo ?? "";
var model = new
{
dmodel.OrderId,
dmodel.OrderNo,
dmodel.Id,
dmodel.CoverImage,
dmodel.GoodsName,
SpecificationList = JsonConvert.DeserializeObject<List<string>>(dmodel.Specification),
dmodel.ProductCode,
dmodel.Final_Price,
dmodel.Number,
OrderIntroduction = new
{
IntroductionId = item.Id,
UserName = item.UserName ?? "",
Name = item.Name ?? "",
Commission = item.Commission ?? 0,
CommissionState = item.CommissionState ?? 1,
}
};
RList.Add(model);
}
}
return new
{
TotalMoney,
UserName = umodel.Name,
SupplierName = smodel.Name,
RList
};
}
return new
{
TotalMoney = 0,
UserName = umodel.Name,
SupplierName = smodel.Name,
RList
};
}
/// <summary>
/// 取消账单
/// </summary>
/// <param name="billId"></param>
/// <param name="tenantId"></param>
/// <param name="mallBaseId"></param>
/// <param name="empId"></param>
/// <returns></returns>
public bool CancalRecommendOrdersBill(int billId, int tenantId, int mallBaseId, int empId)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Bill.BillState),3},
{ nameof(RB_Distributor_Bill.EmpId),empId},
{ nameof(RB_Distributor_Bill.UpdateDate),DateTime.Now}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Bill.Id),
FiledValue=billId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = distributor_BillRepository.Update(keyValues, wheres);
if (flag) {
//回滚 订单返佣状态
}
return flag;
}
#endregion
#region 会员购买
/// <summary>
......
......@@ -81,6 +81,10 @@ namespace Mall.Repository.User
{
builder.Append($" AND {nameof(RB_Vip_Buy_Extend.UserId)}={query.UserId}");
}
if (query.ReOrderId > 0)
{
builder.Append($" AND {nameof(RB_Vip_Buy_Extend.ReOrderId)}={query.ReOrderId}");
}
}
return Get<RB_Vip_Buy_Extend>(builder.ToString()).ToList();
}
......@@ -127,6 +131,14 @@ WHERE a.{nameof(RB_Vip_Buy_Extend.Status)}=0 ");
{
builder.Append($" AND a.{nameof(RB_Vip_Buy_Extend.OrderNo)} like '%{query.OrderNo}%'");
}
if (query.ReOrderId > 0)
{
builder.Append($" AND a.{nameof(RB_Vip_Buy_Extend.ReOrderId)}={query.ReOrderId}");
}
if (!string.IsNullOrEmpty(query.ReOrderNum))
{
builder.Append($" AND a.{nameof(RB_Vip_Buy_Extend.ReOrderNum)} like '%{query.ReOrderNum}%'");
}
}
builder.Append($@" group by a.Id order by a.Id desc");
return GetPage<RB_Vip_Buy_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
......
......@@ -1557,7 +1557,7 @@ namespace Mall.WebApi.Controllers.MallBase
/// <summary>
/// 分销订单后台分页列表
/// 推荐分销订单后台分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -1570,7 +1570,7 @@ namespace Mall.WebApi.Controllers.MallBase
demodel.TenantId = parms.TenantId;
demodel.MallBaseId = parms.MallBaseId;
demodel.Recycled = 2;
var list = orderModule.GetDistributionOrdersPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
var list = orderModule.GetDistributionOrdersPageListForRecommend(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
......@@ -1599,7 +1599,15 @@ namespace Mall.WebApi.Controllers.MallBase
SpecificationList = JsonConvert.DeserializeObject<List<string>>(y.Specification),
y.ProductCode,
y.Final_Price,
y.Number
y.Number,
OrderIntroduction = new
{
Id = y.OrderIntroduction?.Id ?? 0,
UserName = y.OrderIntroduction?.UserName ?? "",
Name = y.OrderIntroduction?.Name ?? "",
Commission = y.OrderIntroduction?.Commission ?? 0,
CommissionState = y.OrderIntroduction?.CommissionState ?? 1,
}
}),
x.Consignee,
x.Mobile,
......@@ -1611,19 +1619,6 @@ namespace Mall.WebApi.Controllers.MallBase
PaymentTime = x.PaymentTime.HasValue ? x.PaymentTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
DeliveryTime = x.DeliveryTime.HasValue ? x.DeliveryTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
ReceivingTime = x.ReceivingTime.HasValue ? x.ReceivingTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
x.IsOrderCommission,
OrderCommissionList = x.OrderCommissionList.Select(z => new
{
z.Id,
z.Grade,
z.GradeDescription,
z.UserId,
z.UserName,
z.Mobile,
z.Name,
z.Commission,
z.CommissionState
}),
x.TenantId,
x.MallBaseId,
CreateDate = x.CreateDate.HasValue ? x.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
......@@ -1631,6 +1626,191 @@ namespace Mall.WebApi.Controllers.MallBase
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 获取推荐分销订单导出选项列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetDistributionOrdersExportEnumListForRecommend()
{
var list = EnumHelper.GetEnumList(typeof(DistributionOrdersExportForRecommendEnum));
return ApiResult.Success("", list.Select(x => new
{
Name = x.Key,
Id = Convert.ToInt32(x.Value)
}));
}
/// <summary>
/// 推荐分销订单Excel下载
/// </summary>
[HttpPost]
public FileContentResult GetDistributionOrdersToExcelForRecommend()
{
var parms = RequestParm;
RB_Goods_Order_Extend demodel = JsonConvert.DeserializeObject<RB_Goods_Order_Extend>(parms.msg.ToString());
string ExcelName = "推荐返利订单" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
List<ExcelDataSource> slist = new List<ExcelDataSource>();
if (demodel.ExcelEnumIds == null || !demodel.ExcelEnumIds.Any())
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
var Enumlist = EnumHelper.GetEnumList(typeof(DistributionOrdersExportForRecommendEnum));
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "序号") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER }
}
};
foreach (var item in demodel.ExcelEnumIds)
{
var Name = Enumlist.Where(x => x.Value == item.ToString()).FirstOrDefault().Key ?? "";
header.ExcelRows.Add(new ExcelColumn(value: Name) { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER });
}
slist.Add(header);
try
{
demodel.TenantId = Convert.ToInt32(parms.uid);
demodel.MallBaseId = parms.MallBaseId;
var list = orderModule.GetDistributionOrdersPageListForRecommend(1, 10000, out long count, demodel);
#region 组装数据
int Num = 0;
foreach (var item in list)
{
foreach (var item2 in item.DetailList)
{
Num++;
ExcelDataSource datarow = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:Num.ToString()){ },
},
ColumnHight = 30
};
foreach (var qitem in demodel.ExcelEnumIds)
{
switch (qitem)
{
case 1:
datarow.ExcelRows.Add(new ExcelColumn(value: item.OrderSource.GetEnumName()) { }); break;
case 2:
datarow.ExcelRows.Add(new ExcelColumn(value: item.OrderNo) { }); break;
case 3:
datarow.ExcelRows.Add(new ExcelColumn(value: item.MerchantsNo) { }); break;
case 4:
datarow.ExcelRows.Add(new ExcelColumn(value: item.UserName) { }); break;
case 5:
datarow.ExcelRows.Add(new ExcelColumn(value: item2.GoodsName) { }); break;
case 6:
datarow.ExcelRows.Add(new ExcelColumn(value: item2.Specification) { }); break;
case 7:
datarow.ExcelRows.Add(new ExcelColumn(value: (item2.Number ?? 0).ToString()) { }); break;
case 8:
datarow.ExcelRows.Add(new ExcelColumn(value: item2.ProductCode) { }); break;
case 10:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Consignee) { }); break;
case 11:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Mobile) { }); break;
case 12:
datarow.ExcelRows.Add(new ExcelColumn(value: item.ShoppingAddress) { }); break;
case 13:
datarow.ExcelRows.Add(new ExcelColumn(value: (item2.Original_Price ?? 0).ToString()) { }); break;
case 14:
datarow.ExcelRows.Add(new ExcelColumn(value: (item2.Final_Price ?? 0).ToString()) { }); break;
case 16:
datarow.ExcelRows.Add(new ExcelColumn(value: item.CreateDate.Value.ToString("yyyy-MM-dd HH:mm:ss")) { }); break;
case 17:
datarow.ExcelRows.Add(new ExcelColumn(value: item.OrderStatus.GetEnumName()) { }); break;
case 18:
datarow.ExcelRows.Add(new ExcelColumn(value: item.PaymentWay.GetEnumName()) { }); break;
case 19:
datarow.ExcelRows.Add(new ExcelColumn(value: item.OrderStatus > OrderStatusEnum.NonPayment ? "已付款" : "未付款") { }); break;
case 20:
datarow.ExcelRows.Add(new ExcelColumn(value: item.PaymentTime.HasValue ? item.PaymentTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "") { }); break;
case 21:
datarow.ExcelRows.Add(new ExcelColumn(value: item.Remark) { }); break;
case 22:
datarow.ExcelRows.Add(new ExcelColumn(value: item.BuyerMessage) { }); break;
}
}
if (item2.OrderIntroduction != null)
{
string UserName = $"昵称:{item2.OrderIntroduction.UserName},姓名:{item2.OrderIntroduction.Name},手机号:{item2.OrderIntroduction.Mobile}";
datarow.ExcelRows.Add(new ExcelColumn(value: UserName) { });
datarow.ExcelRows.Add(new ExcelColumn(value: (item2.OrderIntroduction.Commission ?? 0).ToString()) { });
slist.Add(datarow);
}
else
{
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
datarow.ExcelRows.Add(new ExcelColumn(value: "") { });
slist.Add(datarow);
}
}
}
#endregion
var byteData = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData, "application/octet-stream", ExcelName);
}
catch (Exception ex)
{
LogHelper.Write(ex, string.Format("GetFileFromWebApi_requestData: {0}", JsonHelper.Serialize(RequestParm)));
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
}
#endregion
#region 推荐供应商
/// <summary>
/// 推荐分销订单佣金分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetRecommendOrdersCommissionPageList()
{
var parms = RequestParm;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(parms.msg.ToString());
RB_Goods_OrderIntroduction_Extend demodel = JsonConvert.DeserializeObject<RB_Goods_OrderIntroduction_Extend>(parms.msg.ToString());
demodel.TenantId = parms.TenantId;
demodel.MallBaseId = parms.MallBaseId;
if ((demodel.UserId ?? 0) <= 0) {
return ApiResult.Failed("请选择用户id");
}
var list = orderModule.GetRecommendOrdersCommissionPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(y => new
{
y.OrderId,
y.OrderNo,
y.Id,
y.CoverImage,
y.GoodsName,
SpecificationList = JsonConvert.DeserializeObject<List<string>>(y.Specification),
y.ProductCode,
y.Final_Price,
y.Number,
OrderIntroduction = new
{
IntroductionId = y.OrderIntroduction?.Id ?? 0,
UserName = y.OrderIntroduction?.UserName ?? "",
Name = y.OrderIntroduction?.Name ?? "",
Commission = y.OrderIntroduction?.Commission ?? 0,
CommissionState = y.OrderIntroduction?.CommissionState ?? 1,
}
});
return ApiResult.Success("", pagelist);
}
#endregion
#region 售后订单
......
......@@ -2621,7 +2621,7 @@ namespace Mall.WebApi.Controllers.User
if (UserId <= 0)
{
return ApiResult.ParamIsNull();
}
}
var obj = userModule.GetHpUserDistributorInfo(UserId, req.TenantId, req.MallBaseId);
return ApiResult.Success("", obj);
......@@ -2871,9 +2871,136 @@ namespace Mall.WebApi.Controllers.User
#endregion
#region 推荐返佣账单
/// <summary>
/// 获取账单列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetRecommendOrdersBillPageList()
{
var parms = RequestParm;
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(parms.msg.ToString());
RB_Distributor_Bill_Extend demodel = JsonConvert.DeserializeObject<RB_Distributor_Bill_Extend>(parms.msg.ToString());
demodel.TenantId = parms.TenantId;
demodel.MallBaseId = parms.MallBaseId;
var list = userModule.GetRecommendOrdersBillPageList(pagelist.pageIndex, pagelist.pageSize, out long count, demodel);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Id,
x.BillState,
x.Money,
x.Periods,
x.Remark,
x.SupplierId,
x.SupplierName,
x.UserId,
x.UserName,
UpdateDate = x.UpdateDate.HasValue ? x.UpdateDate.Value.ToString("yyyy-MM-dd") : ""
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 新增账单
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetRecommendOrdersBillInfo()
{
var req = RequestParm;
JObject parms = JObject.Parse(req.msg.ToString());
string IntroductionIds = parms.GetStringValue("IntroductionIds");
int UserId = parms.GetInt("UserId", 0);
int SupplierId = parms.GetInt("SupplierId", 0);
if (string.IsNullOrEmpty(IntroductionIds))
{
return ApiResult.ParamIsNull("请选择返佣订单");
}
List<int> IntroductionIdList = JsonConvert.DeserializeObject<List<int>>(IntroductionIds);
if (!IntroductionIdList.Any())
{
return ApiResult.ParamIsNull("请选择返佣订单");
}
if (UserId <= 0)
{
return ApiResult.ParamIsNull("请选择用户");
}
bool flag = userModule.SetRecommendOrdersBillInfo(IntroductionIdList, UserId, SupplierId, req.TenantId, req.MallBaseId, req.EmpId);
if (flag)
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed();
}
}
/// <summary>
/// 账单取消
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult CancalRecommendOrdersBill() {
var req = RequestParm;
var parms = JObject.Parse(req.msg.ToString());
int BillId = parms.GetInt("BillId", 0);
if (BillId <= 0) {
return ApiResult.ParamIsNull();
}
bool flag = userModule.CancalRecommendOrdersBill(BillId, req.TenantId, req.MallBaseId, req.EmpId);
if (flag)
{
return ApiResult.Success();
}
else {
return ApiResult.Failed();
}
}
/// <summary>
/// 获取账单明细
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetRecommendOrdersBillDetailList() {
var parms = RequestParm;
RB_Distributor_BillDetail_Extend demodel = JsonConvert.DeserializeObject<RB_Distributor_BillDetail_Extend>(parms.msg.ToString());
demodel.TenantId = parms.TenantId;
demodel.MallBaseId = parms.MallBaseId;
if ((demodel.BillId ?? 0) <= 0) {
return ApiResult.ParamIsNull("请传递账单id");
}
var Robj = userModule.GetRecommendOrdersBillDetailList(demodel);
return ApiResult.Success("", Robj);
}
#endregion
#region 粉象返佣金额设置
/// <summary>
/// 初始化 赠送粉象vip返佣
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult InitializeFXVIPCommission() {
var req = RequestParm;
JObject parms = JObject.Parse(req.msg.ToString());
int OrderId = parms.GetInt("OrderId", 0);
if (OrderId<=0)
{
return ApiResult.ParamIsNull("请传递参数");
}
new UserCommonModule().TestFxGradeCommission(OrderId);
return ApiResult.Success();
}
/// <summary>
/// 获取粉象分销返佣信息列表
/// </summary>
......
......@@ -169,6 +169,9 @@ namespace Mall.WebApi.Controllers.User
x.Money,
x.GradeName,
x.UserId,
x.Remark,
x.ReOrderId,
x.ReOrderNum,
PayTimeStr = x.PayTime.HasValue ? x.PayTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
CommissionList = x.CommissionList.Select(z => new
{
......@@ -199,12 +202,13 @@ namespace Mall.WebApi.Controllers.User
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value: "序号") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "订单号") { CellWidth = 25, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "购买单号") { CellWidth = 25, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "用户Id") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "用户名称") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "购买金额") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "等级名称") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "购买时间") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "关联订单号") { CellWidth = 25, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "返利级别") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "昵称") { CellWidth = 25, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "佣金") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
......@@ -232,12 +236,13 @@ namespace Mall.WebApi.Controllers.User
ColumnHight = 30
};
datarow.ExcelRows.Add(new ExcelColumn(value: item.OrderNo) { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: item.OrderNo) { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: item.UserId.ToString()) { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: item.UserName) { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: (item.Money).ToString()) { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: item.GradeName) { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: item.PayTime.HasValue ? item.PayTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "") { Rowspan = OCCount });
datarow.ExcelRows.Add(new ExcelColumn(value: item.ReOrderNum ?? "") { Rowspan = OCCount });
bool IsOCFirst = true;
if (item.CommissionList.Any())
......
......@@ -845,7 +845,7 @@ and DATE_FORMAT(b.PaymentTime,'%y-%m-%d')<DATE_FORMAT('{endDate}','%y-%m-%d') A
DetailList = dlist,
OrderNo = orderModel.OrderNo
};
InsertPresentFXGrade(demodel, orderModel.UserId ?? 0, orderModel.OrderId);
//InsertPresentFXGrade(demodel, orderModel.UserId ?? 0, orderModel.OrderId); 2020-08-03 ld 赠送设置为 订单付款后了
}
#endregion
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment