Commit b15811be authored by liudong1993's avatar liudong1993

电商月度报表导出

parent 3f77dd2c
using VT.FW.DB;
using Mall.Common.Enum.User;
using System;
using System.Collections.Generic;
using System.Text;
namespace Mall.Model.Entity.User
{
/// <summary>
/// 更新下线记录表实体
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_User_ReferralsLog
{
/// <summary>
/// Id
/// </summary>
public int Id
{
get;
set;
}
/// <summary>
/// 用户名称
/// </summary>
public string Content
{
get;
set;
}
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateDate { get; set; }
}
}
......@@ -119,6 +119,19 @@ namespace Mall.Model.Extend.User
/// </summary>
public string OrderBy { get; set; }
/// <summary>
/// 上级名称
/// </summary>
public string PName1 { get; set; }
/// <summary>
/// 再上级名称
/// </summary>
public string PName2 { get; set; }
/// <summary>
/// 再在上级名称
/// </summary>
public string PName3 { get; set; }
#endregion
/// <summary>
......
......@@ -6650,6 +6650,86 @@ namespace Mall.Module.Product
return true;
}
/// <summary>
/// 初始化返佣
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
public string SetOrderCommissionInitialize(int orderId)
{
var demodel = goods_OrderRepository.GetEntity<RB_Goods_Order_Extend>(orderId);
if (demodel == null)
{
return "订单不存在,请核实后再试";
}
int userId = demodel.UserId ?? 0;
var umodel = member_UserRepository.GetEntity(userId);
if (umodel == null)
{
return "用户不存在,请核实后再试";
}
var shopcList = smallShops_CommissionRepository.GetList(new RB_SmallShops_Commission_Extend() { MallBaseId = demodel.MallBaseId, OrderId = demodel.OrderId });
if (shopcList.Any())
{
return "有微店返佣,暂联系管理员处理";
}
var commissionList = goods_OrderCommissionRepository.GetList(new RB_Goods_OrderCommission_Extend() { MallBaseId = demodel.MallBaseId, OrderId = demodel.OrderId });
if (commissionList.Any())
{
if (commissionList.Where(x => x.CommissionState == 2).Any())
{
return "该订单已返佣,无法重置返佣数据";
}
}
else {
return "历史返佣不存在,请联系管理员处理";
}
//删除原返佣记录
goods_OrderCommissionRepository.DeleteBatch(commissionList);
var detList = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { OrderId = orderId });
demodel.DetailList = detList;
string GoodsIds = "";
if (demodel.DetailList.Any())
{
GoodsIds = string.Join(",", demodel.DetailList.Select(x => x.GoodsId));
var gList = goodsRepository.GetList(new RB_Goods_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
var speciPList = goods_SpecificationPriceRepository.GetList(new RB_Goods_SpecificationPrice_Extend() { GoodsIds = GoodsIds, TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId });
foreach (var item in demodel.DetailList)
{
var gmodel = gList.Where(x => x.Id == item.GoodsId).FirstOrDefault();
if (gmodel == null || gmodel.GoodsStatus != 1)
{
return "有商品状态不正确";
}
item.SeparateDistribution = gmodel.SeparateDistribution;
item.SeparateDistributionType = gmodel.SeparateDistributionType;
item.SeparateDistributionMoneyType = gmodel.SeparateDistributionMoneyType;
item.IntegralPresent = gmodel.IntegralPresent;
item.IntegralPresentType = gmodel.IntegralPresentType;
item.CommissionPrice = gmodel.Commission;// 粉象 返佣金额
item.CostMoney = (gmodel.IsCustomSpecification == 2) ? (gmodel.CostPrice ?? 0) : (speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault()?.CostMoney ?? 0);//gmodel.CostPrice ?? 0;
item.PresentFXGrade = gmodel.PresentFXGrade ?? 0;//赠送粉象分销等级
item.PresentFXMonth = gmodel.PresentFXMonth ?? 0;
if (!string.IsNullOrEmpty(item.SpecificationSort))
{
var speciPModel = speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault();
item.CommissionPrice = speciPModel?.Commission ?? 0;
}
}
}
InsertOrderCommission(demodel, umodel, GoodsIds, orderId);
return "";
}
/// <summary>
/// 插入返佣
/// </summary>
......
using System;
using System.Collections.Generic;
using System.Linq;
using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.Model.Entity.User;
using Mall.Model.Extend.Product;
using Mall.Model.Extend.User;
using Mall.Repository.BaseSetUp;
using Mall.Repository.Product;
using Mall.Repository.User;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using VT.FW.DB;
namespace Mall.Module.Product
{
/// <summary>
/// 报表处理层
/// </summary>
public class ReportModule
{
/// <summary>
/// 会员
/// </summary>
private readonly RB_Member_UserRepository member_UserRepository = new RB_Member_UserRepository();
/// <summary>
/// 更新下线数据记录
/// </summary>
private readonly RB_User_ReferralsLogRepository user_ReferralsLogRepository = new RB_User_ReferralsLogRepository();
/// <summary>
/// 获取最近的更新记录
/// </summary>
/// <param name="mallbaseId"></param>
/// <returns></returns>
public RB_User_ReferralsLog GetUserReferralsNew(int mallbaseId)
{
return user_ReferralsLogRepository.GetNewLog(mallbaseId);
}
/// <summary>
/// 初始化内部人员下线
/// </summary>
/// <param name="mallbaseId"></param>
/// <returns></returns>
public string SetInitializeReferrals(int mallbaseId, int empId) {
try
{
//首先清除数据
member_UserRepository.DelUserReferrals();
//执行存储过程
member_UserRepository.UpdateUserReferrals();
//记录日志
user_ReferralsLogRepository.Insert(new RB_User_ReferralsLog()
{
Id = 0,
Content = "更新内部人员下线:" + empId,
CreateBy = empId,
CreateDate = DateTime.Now,
MallBaseId = mallbaseId
});
return "";
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetInitializeReferrals");
return "出错了,请联系管理员";
}
}
/// <summary>
/// 获取下线列表
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="mallbaseId"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetNewReferralsList(string startTime, string endTime, int mallbaseId)
{
return member_UserRepository.GetNewReferralsList(mallbaseId, startTime, endTime);
}
/// <summary>
/// 获取订单佣金排名
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="mallbaseId"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetOrderCommissionList(string startTime, string endTime, int mallbaseId)
{
return member_UserRepository.GetOrderCommissionList(mallbaseId, startTime, endTime);
}
/// <summary>
/// 获取vip购买
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="mallbaseId"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetVipBuyList(string startTime, string endTime, int mallbaseId)
{
return member_UserRepository.GetVipBuyList(mallbaseId, startTime, endTime);
}
/// <summary>
/// 获取新用户列表
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="mallbaseId"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetNewUserList(string startTime, string endTime, int mallbaseId)
{
return member_UserRepository.GetNewUserList(mallbaseId, startTime, endTime);
}
}
}
......@@ -15,6 +15,7 @@ namespace Mall.Repository.User
public partial class RB_Member_UserRepository : BaseRepository<RB_Member_User>
{
#region 基础模块
/// <summary>
/// 分页列表
/// </summary>
......@@ -919,7 +920,7 @@ WHERE u.TenantId={tenantId} and u.MallBaseId={mallBaseId} and u.SuperiorId ={use
return Get<RB_Member_User_Extend>(sql).FirstOrDefault();
}
#endregion
#region 数据统计-分销排行
/// <summary>
......@@ -1096,6 +1097,7 @@ LEFT JOIN (SELECT SuperiorId,COUNT(SuperiorId) as ChildrenNum from rb_member_use
#endregion
#region 其他模块
/// <summary>
/// 获取用户佣金
......@@ -1696,7 +1698,123 @@ FROM RB_Member_User AS a LEFT JOIN rb_miai_baseinfo AS b ON a.Id = b.UserId) as
string sql = $@"select a.*,b.StudentId from RB_Member_User as a LEFT JOIN rb_education_baseinfo as b on a.Id=b.UserId and b.`Status`=0 where {where} order by {orderBy} ";
return Get<RB_Member_User_Extend>( sql).ToList();
}
#endregion
#region 报表查询
/// <summary>
/// 清除用户下线数据
/// </summary>
/// <returns></returns>
public bool DelUserReferrals()
{
string sql = $@"DELETE FROM rb_user_referrals";
return Execute(sql) > 0;
}
/// <summary>
/// 更新下线数据
/// </summary>
public void UpdateUserReferrals()
{
string sql = $@" CALL SetInitializeReferrals()";
Execute(sql);
}
/// <summary>
/// 获取下线列表
/// </summary>
/// <param name="mallbaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetNewReferralsList(int mallbaseId, string startTime, string endTime)
{
string sql = $@"SELECT tt.UserId AS Id,u1.`Name`,tt.Num AS ChildrenNum FROM(
SELECT t.UserId,COUNT(0) AS Num FROM rb_user_referrals t
INNER JOIN rb_member_user u on FIND_IN_SET(u.Id,t.DUserIds)
WHERE u.CreateDate>='{startTime}' AND u.CreateDate <='{endTime} 23:59:59' AND u.MallBaseId ={mallbaseId}
GROUP BY t.UserId
)tt
LEFT JOIN rb_member_user u1 on tt.UserId = u1.Id
ORDER BY tt.Num DESC";
return Get<RB_Member_User_Extend>(sql).ToList();
}
/// <summary>
/// 获取佣金排名
/// </summary>
/// <param name="mallbaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetOrderCommissionList(int mallbaseId, string startTime, string endTime)
{
string sql = $@"SELECT u.Id,u.`Name`,i.TotalCommission AS TotalCommission,
IFNULL(tt.Num,0) + IFNULL(nt.Num,0) AS AllOrderNum,
IFNULL(tt.Income,0) + IFNULL(nt.Income,0) AS Commission
FROM rb_distributor_info i
INNER JOIN rb_member_user u on i.UserId = u.Id
LEFT JOIN(
SELECT t.UserId,COUNT(0) AS Num,SUM(t.Income) AS Income FROM(
SELECT oc.UserId,oc.OrderId,o.Income FROM rb_goods_ordercommission oc
LEFT JOIN rb_goods_order o on oc.OrderId = o.OrderId
WHERE o.OrderStatus <> 7 and o.Recycled=2 and o.`Status`=0 and o.MallBaseId ={mallbaseId} and o.CreateDate >= '{startTime}' AND o.CreateDate <= '{endTime} 23:59:59'
GROUP BY oc.UserId,oc.OrderId)t GROUP BY t.UserId
)tt on tt.UserId = u.Id
LEFT JOIN (
SELECT o.UserId,COUNT(0) AS Num,SUM(o.Income) AS Income FROM rb_goods_order o
LEFT JOIN rb_goods_ordercommission oc ON o.OrderId = oc.OrderId
WHERE o.OrderStatus <> 7 and o.Recycled=2 and o.`Status`=0 and o.MallBaseId ={mallbaseId} and o.CreateDate >= '{startTime}' AND o.CreateDate <= '{endTime} 23:59:59' AND oc.Id is NULL
GROUP BY o.UserId
) nt on nt.UserId = u.Id
WHERE u.SuperiorId BETWEEN 1 AND 20
ORDER BY i.TotalCommission DESC;";
return Get<RB_Member_User_Extend>(sql).ToList();
}
/// <summary>
/// 获取vip购买列表
/// </summary>
/// <param name="mallbaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetVipBuyList(int mallbaseId, string startTime, string endTime)
{
string sql = $@"SELECT u.Id,u.`Name`,1 as AllOrderNum,v.Money AS Income FROM rb_vip_buy v
LEFT JOIN rb_member_user u on v.UserId = u.Id
WHERE v.`Status`=0 AND v.MallBaseId ={mallbaseId} AND v.CreateDate >='{startTime}' AND v.CreateDate <='{endTime} 23:59:59'";
return Get<RB_Member_User_Extend>(sql).ToList();
}
/// <summary>
/// 获取新用户
/// </summary>
/// <param name="mallbaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Member_User_Extend> GetNewUserList(int mallbaseId, string startTime, string endTime)
{
string sql = $@"SELECT tt.UserId as Id,u.`Name`,u1.`Name` as PName1,u2.`Name` as PName2,u3.`Name` as PName3,o2.OrderId as ShopId FROM(
SELECT * FROM (
SELECT UserId,COUNT(0) as Count FROM rb_goods_order o WHERE o.OrderStatus <> 1 and o.OrderStatus <> 7 and o.Recycled=2
and o.`Status`=0 and o.CreateDate >= '{startTime}' AND o.CreateDate < '{endTime} 23:59:59'
GROUP BY UserId)t
WHERE t.Count =1 and (SELECT COUNT(0) AS Count1 FROM rb_goods_order o1 WHERE o1.UserId = t.UserId and o1.OrderStatus <> 1
and o1.OrderStatus <> 7 and o1.Recycled=2 and o1.`Status`=0 and o1.MallBaseId ={mallbaseId} and o1.CreateDate < '{startTime}')=0
)tt
LEFT JOIN rb_member_user u on tt.UserId = u.Id
LEFT JOIN rb_member_user u1 on u.SuperiorId = u1.Id
LEFT JOIN rb_member_user u2 on u1.SuperiorId = u2.Id
LEFT JOIN rb_member_user u3 on u2.SuperiorId = u3.Id
LEFT JOIN rb_goods_order o2 on o2.UserId = tt.UserId
WHERE o2.TenantId = 1 and o2.OrderStatus <> 1 and o2.OrderStatus <> 7 and o2.Recycled=2 and o2.`Status`=0 and o2.MallBaseId ={mallbaseId} and o2.CreateDate <='{endTime} 23:59:59'";
return Get<RB_Member_User_Extend>(sql).ToList();
}
#endregion
#region 订单统计
......@@ -1753,7 +1871,5 @@ GROUP BY u.Id)t";
return obj == null ? 0 : Convert.ToInt32(obj);
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Mall.Model.Entity.User;
using Mall.Model.Extend.User;
using System.Linq;
namespace Mall.Repository.User
{
/// <summary>
/// 更新用户下线日志记录仓储层
/// </summary>
public class RB_User_ReferralsLogRepository : BaseRepository<RB_User_ReferralsLog>
{
/// <summary>
/// 获取最新的记录
/// </summary>
/// <param name="mallBaseId"></param>
/// <returns></returns>
public RB_User_ReferralsLog GetNewLog(int mallBaseId)
{
string sql = $@"SELECT * FROM rb_user_referralslog WHERE MallBaseId ={mallBaseId} ORDER BY Id DESC LIMIT 1";
return Get(sql).FirstOrDefault();
}
}
}
......@@ -3415,6 +3415,27 @@ namespace Mall.WebApi.Controllers.MallBase
}
}
/// <summary>
/// 返佣初始化(后台使用)
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetOrderCommissionInitialize()
{
var req = RequestParm;
JObject parms = JObject.Parse(req.msg.ToString());
int OrderId = parms.GetInt("OrderId", 0);
string msg = orderModule.SetOrderCommissionInitialize(OrderId);
if (msg == "")
{
return ApiResult.Success("");
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
#region 推荐供应商
......
This diff is collapsed.
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