Commit ef47f56c authored by liudong1993's avatar liudong1993

销售额统计 + 离线提醒

parent 67b894f5
...@@ -143,5 +143,10 @@ namespace Mall.Model.Entity.User ...@@ -143,5 +143,10 @@ namespace Mall.Model.Entity.User
/// 粉象Vip的有效期 /// 粉象Vip的有效期
/// </summary> /// </summary>
public DateTime? VipExpiryDate { get; set; } public DateTime? VipExpiryDate { get; set; }
/// <summary>
/// 是否开启离线收益提醒 1是 0否
/// </summary>
public int IsOpenOfflineEarnings { get; set; }
} }
} }
...@@ -32,5 +32,10 @@ namespace Mall.Model.Extend.User ...@@ -32,5 +32,10 @@ namespace Mall.Model.Extend.User
/// ids /// ids
/// </summary> /// </summary>
public string VipBuyIds { get; set; } public string VipBuyIds { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public string CreateTimeStr { get; set; }
} }
} }
...@@ -290,7 +290,7 @@ namespace Mall.Module.Miai ...@@ -290,7 +290,7 @@ namespace Mall.Module.Miai
item.ReplyContent = CircleList.Where(x => x.Id == item.SourceId).Select(x => new item.ReplyContent = CircleList.Where(x => x.Id == item.SourceId).Select(x => new
{ {
x.Id, x.Id,
x.Content, Content = StringHelper.FromUnicodeString(x.Content),
x.Files, x.Files,
x.CreateTime, x.CreateTime,
x.CoverPhoto, x.CoverPhoto,
......
...@@ -3539,7 +3539,7 @@ namespace Mall.Module.User ...@@ -3539,7 +3539,7 @@ namespace Mall.Module.User
IsVip, IsVip,
VipExpiryDate = model.VipExpiryDate.HasValue ? model.VipExpiryDate.Value.ToString("yyyy-MM-dd") : "", VipExpiryDate = model.VipExpiryDate.HasValue ? model.VipExpiryDate.Value.ToString("yyyy-MM-dd") : "",
VipBuyCommission, VipBuyCommission,
model.IsOpenOfflineEarnings
} }
}; };
} }
...@@ -4398,6 +4398,138 @@ namespace Mall.Module.User ...@@ -4398,6 +4398,138 @@ namespace Mall.Module.User
return List; return List;
} }
/// <summary>
/// 获取分销中心-销售额统计
/// </summary>
/// <param name="userId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public object GetSellMoneyStatistics(int userId, string startTime, string endTime, AppletUserInfo userInfo)
{
//查询自己销售总额
decimal MySellMoney = goods_OrderRepository.GetMyTotalSellMoney(userInfo.MallBaseId, userId);
//查询下线销售总额
decimal ReSellMoney = goods_OrderRepository.GetMyTotalReferralsMoney(userInfo.MallBaseId, userId);
//查询自己的订单销售额
var myList = goods_OrderRepository.GetMySellMoneyStatistics(userInfo.MallBaseId, userId, startTime, endTime);
//查询自己下线的销售额
var reList = goods_OrderRepository.GetMyReferralsMoneyStatistics(userInfo.MallBaseId, userId, startTime, endTime);
//查询自己下线的vip购买额
decimal VipSellMoney = vip_BuyRepository.GetMyTotalReferralsMoney(userInfo.MallBaseId, userId);
var vipList = vip_BuyRepository.GetMyReferralsMoneyStatistics(userInfo.MallBaseId, userId, startTime, endTime);
//根据日期 获取所有天数
List<string> DateList = new List<string>();
DateTime STime = Convert.ToDateTime(startTime);
DateTime ETime = Convert.ToDateTime(endTime);
while (true) {
DateList.Add(STime.ToString("yyyy-MM-dd"));
STime = STime.AddDays(1);
if (STime > ETime) {
break;
}
}
List<object> Rlist = new List<object>();
foreach (var item in DateList) {
var mymodel = myList.Where(x => x.StartTime == item).FirstOrDefault();
var remodel = reList.Where(x => x.StartTime == item).FirstOrDefault();
var vipmodel = vipList.Where(x => x.CreateTimeStr == item).FirstOrDefault();
Rlist.Add(new
{
Day = item,
MySale = mymodel?.Income ?? 0,
ReSale = (remodel?.Income ?? 0) + (vipmodel?.Money ?? 0),
});
}
return new
{
Total = MySellMoney + ReSellMoney + VipSellMoney,
MySellMoney,
ReSellMoney = ReSellMoney + VipSellMoney,
DayList = Rlist
};
}
/// <summary>
/// 开启/关闭 离线提醒
/// </summary>
/// <param name="state"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetUserOfflineEarnings(int state, AppletUserInfo userInfo)
{
var model = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { UserId = userInfo.UserId, TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId }).FirstOrDefault();
if (model == null)
{
return "分销商不存在";
}
if (model.AuditStatus != Common.Enum.User.DistributorAuditStatusEnum.Audited)
{
return "分销商不存在";
}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Distributor_Info_Extend.IsOpenOfflineEarnings),state==1?1:0}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Distributor_Info_Extend.Id),
FiledValue=model.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = distributor_InfoRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
/// <summary>
/// 获取用户离线收益
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public object GetUserOfflineEarningsInfo(string StartTime, string EndTime, AppletUserInfo userInfo)
{
var model = distributor_InfoRepository.GetList(new RB_Distributor_Info_Extend() { UserId = userInfo.UserId, TenantId = userInfo.TenantId, MallBaseId = userInfo.MallBaseId }).FirstOrDefault();
if (model == null)
{
return new {
State = 2,
Msg = "分销商不存在"
};
}
if (model.AuditStatus != Common.Enum.User.DistributorAuditStatusEnum.Audited)
{
return new
{
State = 2,
Msg = "分销商不存在"
};
}
if (model.IsOpenOfflineEarnings != 1) {
return new
{
State = 2,
Msg = "未开启离线收益提醒"
};
}
//新增订单
int OrderNum = goods_OrderRepository.GetUserNewOrderNum(userInfo.MallBaseId, StartTime, EndTime, userInfo.UserId);
//佣金金额
decimal Money = goods_OrderRepository.GetUserNewOrderCommission(userInfo.MallBaseId, StartTime, EndTime, userInfo.UserId);
//vip相关
int vipNum = vipBuy_CommissionRepository.GetUserNewOrderNum(userInfo.MallBaseId, StartTime, EndTime, userInfo.UserId);
decimal vipMoney = vipBuy_CommissionRepository.GetUserNewOrderCommission(userInfo.MallBaseId, StartTime, EndTime, userInfo.UserId);
return new
{
State = 1,
OrderNum = OrderNum + vipNum,
CommissionMoney = Money + vipMoney
};
}
#endregion #endregion
#region 我的足迹 #region 我的足迹
......
...@@ -807,6 +807,127 @@ WHERE o.TenantId={tenantId} and o.MallBaseId={mallBaseId} and o.OrderStatus = 7 ...@@ -807,6 +807,127 @@ WHERE o.TenantId={tenantId} and o.MallBaseId={mallBaseId} and o.OrderStatus = 7
return Get<RB_Goods_Order_Extend>(sql).ToList(); return Get<RB_Goods_Order_Extend>(sql).ToList();
} }
#region 销售额统计
/// <summary>
/// 获取我的销售额统计
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="userId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Goods_Order_Extend> GetMySellMoneyStatistics(int mallBaseId, int userId, string startTime, string endTime)
{
string sql = $@"SELECT t.CreateDate as StartTime,SUM(t.FreightMoney + t.Final_Price) AS Income FROM (
SELECT o.OrderId,DATE_FORMAT(o.CreateDate,'%y-%m-%d') AS CreateDate,o.FreightMoney,SUM(od.Final_Price) AS Final_Price FROM rb_goods_order o
LEFT JOIN rb_goods_orderdetail od on o.OrderId = od.OrderId
LEFT JOIN rb_goods_orderaftersale oa on od.Id = oa.OrderDetialId and oa.Type=1 and oa.ReOrderStatus =5
WHERE o.MallBaseId ={mallBaseId} and o.OrderStatus in(2,3,4,5,6) and o.Recycled=2 and o.`Status`=0 and o.UserId ={userId} and o.CreateDate >= '{startTime}' AND o.CreateDate <= '{endTime} 23:59:59' AND oa.ReOrderId is NULL
GROUP BY o.OrderId
) t GROUP BY t.CreateDate";
return Get<RB_Goods_Order_Extend>(sql).ToList();
}
/// <summary>
/// 获取我的总销售额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="userId"></param>
/// <returns></returns>
public decimal GetMyTotalSellMoney(int mallBaseId, int userId)
{
string sql = $@"SELECT SUM(t.FreightMoney + t.Final_Price) AS Income FROM (
SELECT o.OrderId,o.FreightMoney,SUM(od.Final_Price) AS Final_Price FROM rb_goods_order o
LEFT JOIN rb_goods_orderdetail od on o.OrderId = od.OrderId
LEFT JOIN rb_goods_orderaftersale oa on od.Id = oa.OrderDetialId and oa.Type=1 and oa.ReOrderStatus =5
WHERE o.MallBaseId ={mallBaseId} and o.OrderStatus in(2,3,4,5,6) and o.Recycled=2 and o.`Status`=0 and o.UserId ={userId} AND oa.ReOrderId is NULL
GROUP BY o.OrderId
) t ";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToDecimal(obj) : 0;
}
/// <summary>
/// 获取我的下线销售额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="userId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Goods_Order_Extend> GetMyReferralsMoneyStatistics(int mallBaseId, int userId, string startTime, string endTime)
{
string sql = $@"SELECT t.CreateDate as StartTime,SUM(t.FreightMoney + t.Final_Price) AS Income FROM (
SELECT o.OrderId,DATE_FORMAT(o.CreateDate,'%y-%m-%d') AS CreateDate,o.FreightMoney,SUM(od.Final_Price) AS Final_Price FROM rb_goods_order o
INNER JOIN rb_goods_orderdetail od on o.OrderId = od.OrderId
INNER JOIN rb_goods_ordercommission oc on od.Id = oc.OrderDetailId
LEFT JOIN rb_goods_orderaftersale oa on od.Id = oa.OrderDetialId and oa.Type=1 and oa.ReOrderStatus =5
WHERE o.MallBaseId ={mallBaseId} and o.OrderStatus in(2,3,4,5,6) and o.Recycled=2 and o.`Status`=0 and oc.UserId = {userId} and o.UserId <> {userId} and o.CreateDate >= '{startTime}' AND o.CreateDate <= '{endTime} 23:59:59' AND oa.ReOrderId is NULL
GROUP BY o.OrderId
) t GROUP BY t.CreateDate";
return Get<RB_Goods_Order_Extend>(sql).ToList();
}
/// <summary>
/// 获取我的下线总销售额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="userId"></param>
/// <returns></returns>
public decimal GetMyTotalReferralsMoney(int mallBaseId, int userId)
{
string sql = $@"SELECT SUM(t.FreightMoney + t.Final_Price) AS Income FROM (
SELECT o.OrderId,o.FreightMoney,SUM(od.Final_Price) AS Final_Price FROM rb_goods_order o
INNER JOIN rb_goods_orderdetail od on o.OrderId = od.OrderId
INNER JOIN rb_goods_ordercommission oc on od.Id = oc.OrderDetailId
LEFT JOIN rb_goods_orderaftersale oa on od.Id = oa.OrderDetialId and oa.Type=1 and oa.ReOrderStatus =5
WHERE o.MallBaseId ={mallBaseId} and o.OrderStatus in(2,3,4,5,6) and o.Recycled=2 and o.`Status`=0 and oc.UserId = {userId} and o.UserId <> {userId} AND oa.ReOrderId is NULL
GROUP BY o.OrderId
) t ";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToDecimal(obj) : 0;
}
/// <summary>
/// 获取时间范围新订单数量
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="userId"></param>
/// <returns></returns>
public int GetUserNewOrderNum(int mallBaseId, string startTime, string endTime, int userId)
{
string sql = $@"SELECT COUNT(0) FROM(
SELECT o.OrderId,SUM(oc.Commission) FROM rb_goods_order o
INNER JOIN rb_goods_ordercommission oc on o.OrderId =oc.OrderId
WHERE o.MallBaseId ={mallBaseId} and o.OrderStatus in(2,3,4,5,6) and o.Recycled=2 and o.`Status`=0
and oc.UserId ={userId} and o.CreateDate >= '{startTime}' AND o.CreateDate <= '{endTime} 23:59:59'
GROUP BY o.OrderId)t";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToInt32(obj) : 0;
}
/// <summary>
/// 获取时间范围新佣金金额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="userId"></param>
/// <returns></returns>
public decimal GetUserNewOrderCommission(int mallBaseId, string startTime, string endTime, int userId)
{
string sql = $@"SELECT SUM(oc.Commission) FROM rb_goods_order o
INNER JOIN rb_goods_ordercommission oc on o.OrderId =oc.OrderId
WHERE o.MallBaseId ={mallBaseId} and o.OrderStatus in(2,3,4,5,6) and o.Recycled=2 and o.`Status`=0
and oc.UserId ={userId} and o.CreateDate >= '{startTime}' AND o.CreateDate <= '{endTime} 23:59:59'";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToDecimal(obj) : 0;
}
#endregion
#region 数据统计-数据概况 #region 数据统计-数据概况
/// <summary> /// <summary>
......
...@@ -121,5 +121,41 @@ where {where} order by v.Id asc"; ...@@ -121,5 +121,41 @@ where {where} order by v.Id asc";
return 0; return 0;
} }
} }
/// <summary>
/// 获取时间范围新增订单数量
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="userId"></param>
/// <returns></returns>
public int GetUserNewOrderNum(int mallBaseId, string startTime, string endTime, int userId)
{
string sql = $@"SELECT COUNT(0) FROM (
SELECT v.Id,SUM(vc.Commission) FROM rb_vip_buy v
INNER JOIN rb_vipbuy_commission vc on v.Id = vc.OrderId
WHERE v.MallBaseId ={mallBaseId} and v.`Status` =0 and v.PayState =1 and vc.UserId ={userId} and v.CreateDate >= '{startTime}' AND v.CreateDate <= '{endTime} 23:59:59'
GROUP BY v.Id ) t";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToInt32(obj) : 0;
}
/// <summary>
/// 获取时间范围新佣金金额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="userId"></param>
/// <returns></returns>
public decimal GetUserNewOrderCommission(int mallBaseId, string startTime, string endTime, int userId)
{
string sql = $@"SELECT SUM(vc.Commission) FROM rb_vip_buy v
INNER JOIN rb_vipbuy_commission vc on v.Id = vc.OrderId
WHERE v.MallBaseId ={mallBaseId} and v.`Status` =0 and v.PayState =1 and vc.UserId ={userId} and v.CreateDate >= '{startTime}' AND v.CreateDate <= '{endTime} 23:59:59'";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToDecimal(obj) : 0;
}
} }
} }
...@@ -143,5 +143,40 @@ WHERE a.{nameof(RB_Vip_Buy_Extend.Status)}=0 "); ...@@ -143,5 +143,40 @@ WHERE a.{nameof(RB_Vip_Buy_Extend.Status)}=0 ");
builder.Append($@" group by a.Id order by a.Id desc"); builder.Append($@" group by a.Id order by a.Id desc");
return GetPage<RB_Vip_Buy_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList(); return GetPage<RB_Vip_Buy_Extend>(pageIndex, pageSize, out rowCount, builder.ToString()).ToList();
} }
/// <summary>
/// 获取自己下线vip销售额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="userId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public List<RB_Vip_Buy_Extend> GetMyReferralsMoneyStatistics(int mallBaseId, int userId, string startTime, string endTime)
{
string sql = $@"SELECT t.CreateDate as CreateTimeStr,SUM(t.Money) AS Money FROM (
SELECT v.Id,DATE_FORMAT(v.CreateDate,'%Y-%d-%m') AS CreateDate,v.Money FROM rb_vip_buy v
INNER JOIN rb_vipbuy_commission vc on v.Id = vc.OrderId
WHERE v.`Status`=0 and v.MallBaseId ={mallBaseId} and v.PayState =1 and vc.UserId ={userId} and v.CreateDate >= '{startTime}' AND v.CreateDate <= '{endTime} 23:59:59'
)t GROUP BY t.CreateDate";
return Get<RB_Vip_Buy_Extend>(sql).ToList();
}
/// <summary>
/// 获取自己下线vip总销售额
/// </summary>
/// <param name="mallBaseId"></param>
/// <param name="userId"></param>
/// <returns></returns>
public decimal GetMyTotalReferralsMoney(int mallBaseId, int userId)
{
string sql = $@"
SELECT SUM(v.Money) as Money FROM rb_vip_buy v
INNER JOIN rb_vipbuy_commission vc on v.Id = vc.OrderId
WHERE v.`Status`=0 and v.MallBaseId ={mallBaseId} and v.PayState =1 and vc.UserId ={userId}";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToDecimal(obj) : 0;
}
} }
} }
...@@ -883,6 +883,111 @@ namespace Mall.WebApi.Controllers.User ...@@ -883,6 +883,111 @@ namespace Mall.WebApi.Controllers.User
return userModule.GetMyUserHierarchicalRelationList(UserId, userInfo.UserId); return userModule.GetMyUserHierarchicalRelationList(UserId, userInfo.UserId);
} }
/// <summary>
/// 获取分销中心销售额统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSellMoneyStatistics()
{
var req = RequestParm;
var userInfo = AppletUserInfo;
JObject parms = JObject.Parse(req.msg.ToString());
int UserId = parms.GetInt("UserId", 0);
string StartTime = parms.GetStringValue("StartTime");
string EndTime = parms.GetStringValue("EndTime");
if (UserId <= 0)
{
return ApiResult.ParamIsNull("请传递用户id");
}
if (string.IsNullOrEmpty(StartTime)) {
return ApiResult.ParamIsNull("请传递开始时间");
}
if (string.IsNullOrEmpty(EndTime)) {
return ApiResult.ParamIsNull("请传递结束时间");
}
try
{
StartTime = Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd");
EndTime = Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
if (Convert.ToDateTime(StartTime) > Convert.ToDateTime(EndTime)) {
return ApiResult.ParamIsNull("开始时间不能大于结束时间");
}
var list = userModule.GetSellMoneyStatistics(UserId, StartTime, EndTime, userInfo);
return ApiResult.Success("", list);
}
/// <summary>
/// 设置用户离线提醒
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetUserOfflineEarnings()
{
var userInfo = AppletUserInfo;
var req = RequestParm;
JObject prams = JObject.Parse(req.msg.ToString());
int State = prams.GetInt("State", 0);// 状态 1开启 2关闭
if (State <= 0)
{
return ApiResult.ParamIsNull();
}
string msg = userModule.SetUserOfflineEarnings(State, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 获取用户离线收益 信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetUserOfflineEarningsInfo()
{
var userInfo = AppletUserInfo;
var req = RequestParm;
JObject prams = JObject.Parse(req.msg.ToString());
string StartTime = prams.GetStringValue("StartTime");
string EndTime = prams.GetStringValue("EndTime");
if (string.IsNullOrEmpty(StartTime))
{
return ApiResult.ParamIsNull("请传递开始时间");
}
if (string.IsNullOrEmpty(EndTime))
{
return ApiResult.ParamIsNull("请传递结束时间");
}
try
{
StartTime = Convert.ToDateTime(StartTime).ToString("yyyy-MM-dd HH:mm:ss");
EndTime = Convert.ToDateTime(EndTime).ToString("yyyy-MM-dd HH:mm:ss");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
if (Convert.ToDateTime(StartTime) > Convert.ToDateTime(EndTime))
{
return ApiResult.ParamIsNull("开始时间不能大于结束时间");
}
var obj = userModule.GetUserOfflineEarningsInfo(StartTime, EndTime, userInfo);
return ApiResult.Success("", obj);
}
#endregion #endregion
#region 会员中心 #region 会员中心
......
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