Commit 431210f9 authored by liudong1993's avatar liudong1993

1

parent 868d39d8
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Mall.Model.Entity.User
{
/// <summary>
/// 管理提醒日志表实体
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Message_Notice
{
/// <summary>
/// Id
/// </summary>
public int Id
{
get;
set;
}
/// <summary>
/// 来源id (订单Id/售后订单Id)
/// </summary>
public int SourceId
{
get;
set;
}
/// <summary>
/// 来源类型 1下单 2退款 3售后
/// </summary>
public int Type
{
get;
set;
}
/// <summary>
/// 是否已看 1是 2否
/// </summary>
public int IsLook
{
get;
set;
}
/// <summary>
/// 用户ID
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 相关订单号/售后单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 商户号
/// </summary>
public int TenantId
{
get;
set;
}
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId
{
get;
set;
}
/// <summary>
/// CreateDate
/// </summary>
public DateTime CreateDate
{
get;
set;
}
}
}
......@@ -17,6 +17,12 @@ namespace Mall.Model.Extend.Product
/// 订单明细ids
/// </summary>
public string OrderDetailIds { get; set; }
/// <summary>
/// 售后订单ids
/// </summary>
public string AfterSaleIds { get; set; }
/// <summary>
/// 订单号
/// </summary>
......
using VT.FW.DB;
using System;
using System.Collections.Generic;
using System.Text;
using Mall.Model.Entity.User;
using Mall.Common.Enum.MiAi;
namespace Mall.Model.Extend.User
{
/// <summary>
/// 管理提醒日志表扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Message_Notice_Extend : RB_Message_Notice
{
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 商品名称
/// </summary>
public string GoodsName { get; set; }
/// <summary>
/// 商品封面图
/// </summary>
public string GoodsCoverImage { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 新订单类型
/// </summary>
public string OrderTypeName { get; set; }
}
}
......@@ -363,6 +363,10 @@ namespace Mall.Module.Product
/// 不可开发票提现信息记录表
///</summary>
private readonly RB_OrderGoods_LogRepository orderGoodsLogRepository = new RB_OrderGoods_LogRepository();
/// <summary>
/// 管理端通知
/// </summary>
private readonly RB_Message_NoticeRepository message_NoticeRepository = new RB_Message_NoticeRepository();
/// <summary>
......@@ -8435,7 +8439,22 @@ namespace Mall.Module.Product
Common.Plugin.LogHelper.Write(ex, "CancelAppletGoodsOrderInfo");
}
}
if (type == 2) {
#region 管理端通知
message_NoticeRepository.Insert(new RB_Message_Notice()
{
Id = 0,
CreateDate = DateTime.Now,
IsLook = 2,
MallBaseId = mallBaseId,
OrderNo = omodel.OrderNo,
SourceId = omodel.OrderId,
TenantId = tenantId,
Type = 2,
UserId = userId
});
#endregion
}
}
goods_OrderRepository.DBSession.Commit();
return flag;
......@@ -8492,6 +8511,20 @@ namespace Mall.Module.Product
CreateDate = DateTime.Now,
MallBaseId = demodel.MallBaseId
});
#region 管理端通知
message_NoticeRepository.Insert(new RB_Message_Notice()
{
Id = 0,
CreateDate = DateTime.Now,
IsLook = 2,
MallBaseId = demodel.MallBaseId,
OrderNo = demodel.ReOrderNo,
SourceId = Id,
TenantId = demodel.TenantId,
Type = 3,
UserId = demodel.UserId ?? 0
});
#endregion
return true;
}
return false;
......
using Mall.Model.Extend.User;
using Mall.Common.Plugin;
using Mall.Model.Extend.Product;
using Mall.Model.Extend.User;
using Mall.Repository.Product;
using Mall.Repository.User;
using System;
using System.Collections.Generic;
using System.Linq;
using VT.FW.DB;
namespace Mall.Module.User
......@@ -14,6 +19,19 @@ namespace Mall.Module.User
/// 用户管理
/// </summary>
private readonly RB_Member_UserRepository member_UserRepository = new RB_Member_UserRepository();
/// <summary>
/// 管理消息提醒
/// </summary>
private readonly RB_Message_NoticeRepository message_NoticeRepository = new RB_Message_NoticeRepository();
/// <summary>
/// 订单商品
/// </summary>
private readonly RB_Goods_OrderDetailRepository goods_OrderDetailRepository = new RB_Goods_OrderDetailRepository();
/// <summary>
/// 售后订单
/// </summary>
private readonly RB_Goods_OrderAfterSaleRepository goods_OrderAfterSaleRepository = new RB_Goods_OrderAfterSaleRepository();
/// <summary>
/// 根据用户Id更新用户头像和名称
......@@ -30,8 +48,6 @@ namespace Mall.Module.User
return member_UserRepository.Update(fileds, new WhereHelper(nameof(RB_Member_User_Extend.Id), extModel.Id));
}
public bool SetMemberUserPhoneNum(RB_Member_User_Extend extModel)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
......@@ -40,5 +56,131 @@ namespace Mall.Module.User
};
return member_UserRepository.Update(fileds, new WhereHelper(nameof(RB_Member_User_Extend.Id), extModel.Id));
}
#region 小程序管理端-消息提醒
/// <summary>
/// 获取消息提醒分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Message_Notice_Extend> GetAdminMessageNoticePageList(int pageIndex, int pageSize, out long count, RB_Message_Notice_Extend demodel)
{
var list = message_NoticeRepository.GetPageList(pageIndex, pageSize, out count, demodel);
if (list.Any()) {
string userIds = string.Join(",", list.Select(x => x.UserId).Distinct());
var ulist = member_UserRepository.GetList(new RB_Member_User_Extend() { MallBaseId = demodel.MallBaseId, UserIds = userIds });
List<RB_Goods_OrderDetail_Extend> odlist = new List<RB_Goods_OrderDetail_Extend>();
if (demodel.Type == 1 || demodel.Type == 2)
{
//下单 取消订单退款
//查询订单 + 订单商品
string orderIds = string.Join(",", list.Select(x => x.SourceId));
odlist = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderIds = orderIds });
foreach (var item in list) {
var od2list = odlist.Where(x => x.OrderId == item.SourceId).ToList();
item.GoodsName = (od2list.FirstOrDefault()?.GoodsName ?? "") + (od2list.Count() > 1 ? ("等" + od2list.Count() + "件商品") : "");
item.GoodsCoverImage = od2list.FirstOrDefault()?.CoverImage ?? "";
if (item.Type == 1)
{
item.OrderTypeName = od2list.FirstOrDefault()?.OrderType.GetEnumName();
}
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel?.Name ?? "";
}
}
else if (demodel.Type == 3) {
//售后 查询售后订单
string orderIds = string.Join(",", list.Select(x => x.SourceId));
var aslist = goods_OrderAfterSaleRepository.GetList(new RB_Goods_OrderAfterSale_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, AfterSaleIds = orderIds });
if (aslist.Any()) {
string odIds = string.Join(",", aslist.Select(x => x.OrderDetialId));
var od3list = goods_OrderDetailRepository.GetOrderDetailList(new RB_Goods_OrderDetail_Extend() { TenantId = demodel.TenantId, MallBaseId = demodel.MallBaseId, OrderDetailIds = odIds });
foreach (var item in list)
{
var asmodel = aslist.Where(x => x.ReOrderId == item.SourceId).FirstOrDefault();
var odmodel = od3list.Where(x => x.Id == (asmodel?.OrderDetialId ?? 0)).FirstOrDefault();
item.GoodsName = odmodel?.GoodsName ?? "";
item.GoodsCoverImage = odmodel?.CoverImage ?? "";
var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault();
item.UserName = umodel?.Name ?? "";
}
}
}
}
return list;
}
/// <summary>
/// 获取管理端信息数量
/// </summary>
/// <param name="tenantId"></param>
/// <param name="mallBaseId"></param>
/// <returns></returns>
public object GetAdminMessageNoticeNum(int tenantId, int mallBaseId)
{
var list = message_NoticeRepository.GetAdminMessageNoticeNum(tenantId, mallBaseId);
return new
{
OrderNum = list.Where(x => x.Type == 1).FirstOrDefault()?.IsLook ?? 0,
CancelNum = list.Where(x => x.Type == 2).FirstOrDefault()?.IsLook ?? 0,
AfterSaleNum = list.Where(x => x.Type == 3).FirstOrDefault()?.IsLook ?? 0,
TotalNum = list.Sum(x => x.IsLook)
};
}
/// <summary>
/// 设置消息已读
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetAdminMessageLook(RB_Message_Notice_Extend demodel)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Message_Notice_Extend.IsLook), 1}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Message_Notice_Extend.TenantId),
FiledValue = demodel.TenantId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper(){
FiledName = nameof(RB_Message_Notice_Extend.MallBaseId),
FiledValue = demodel.MallBaseId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper(){
FiledName = nameof(RB_Message_Notice_Extend.IsLook),
FiledValue = 2,
OperatorEnum= OperatorEnum.Equal
}
};
if (demodel.Id > 0)
{
//修改单条数据已读
wheres.Add(new WhereHelper()
{
FiledName = nameof(RB_Message_Notice_Extend.Id),
FiledValue = demodel.Id,
OperatorEnum = OperatorEnum.Equal
});
}
else if (demodel.Type > 0) {
//根据类型修改
wheres.Add(new WhereHelper()
{
FiledName = nameof(RB_Message_Notice_Extend.Type),
FiledValue = demodel.Type,
OperatorEnum = OperatorEnum.Equal
});
}
bool flag = message_NoticeRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
}
}
......@@ -136,6 +136,11 @@ namespace Mall.Module.User
/// 会员购买仓储层
/// </summary>
private readonly RB_Member_BuyRepository memberBuyRepository = new RB_Member_BuyRepository();
/// <summary>
/// 管理通知
/// </summary>
private readonly RB_Message_NoticeRepository message_NoticeRepository = new RB_Message_NoticeRepository();
//private Repository.MarketingCenter.RB_DiscountCouponRepository discountCouponRepository = new Repository.MarketingCenter.RB_DiscountCouponRepository();
//private Repository.User.RB_Member_CouponRepository memberCouponRepository = new Repository.User.RB_Member_CouponRepository();
......@@ -681,7 +686,20 @@ namespace Mall.Module.User
}
}
#region 管理端通知
message_NoticeRepository.Insert(new RB_Message_Notice()
{
Id = 0,
CreateDate = DateTime.Now,
IsLook = 2,
MallBaseId = umodel.MallBaseId,
OrderNo = oldOrder.OrderNo,
SourceId = oldOrder.OrderId,
TenantId = umodel.TenantId,
Type = 1,
UserId = umodel.Id
});
#endregion
}
return flag;
}
......
......@@ -169,6 +169,10 @@ INNER JOIN rb_member_user mu on mu.Id=oas.UserId
{
where += $" and oas.{nameof(RB_Goods_OrderAfterSale.UserId)}={dmodel.UserId}";
}
if (!string.IsNullOrEmpty(dmodel.AfterSaleIds))
{
where += $" and oas.{nameof(RB_Goods_OrderAfterSale.ReOrderId)} in({dmodel.AfterSaleIds})";
}
if (dmodel.OrderId > 0)
{
where += $" and oas.{nameof(RB_Goods_OrderAfterSale.OrderId)}={dmodel.OrderId}";
......
using Mall.Model.Entity.User;
using Mall.Model.Extend.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mall.Repository.User
{
/// <summary>
/// 管理提醒日志仓储层
/// </summary>
public class RB_Message_NoticeRepository : BaseRepository<RB_Message_Notice>
{
/// <summary>
/// 获取分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Message_Notice_Extend> GetPageList(int pageIndex, int pageSize, out long rowsCount, RB_Message_Notice_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Message_Notice AS A
WHERE 1=1
");
if (query != null)
{
if (query.TenantId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.TenantId), query.TenantId);
}
if (query.MallBaseId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.MallBaseId), query.MallBaseId);
}
if (query.Type > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.Type), query.Type);
}
if (query.IsLook > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.IsLook), query.IsLook);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(@" AND A.{0} >='{1}' ", nameof(RB_Message_Notice_Extend.CreateDate), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(@" AND A.{0} <='{1} 23:59:59' ", nameof(RB_Message_Notice_Extend.CreateDate), query.EndTime);
}
}
builder.AppendFormat(" order by Id desc");
return GetPage<RB_Message_Notice_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Message_Notice_Extend> GetList(RB_Message_Notice_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Message_Notice AS A
WHERE 1=1
");
if (query != null)
{
if (query.TenantId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.TenantId), query.TenantId);
}
if (query.MallBaseId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.MallBaseId), query.MallBaseId);
}
if (query.Type > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.Type), query.Type);
}
if (query.IsLook > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Message_Notice_Extend.IsLook), query.IsLook);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
builder.AppendFormat(@" AND A.{0} >='{1}' ", nameof(RB_Message_Notice_Extend.CreateDate), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
builder.AppendFormat(@" AND A.{0} <='{1} 23:59:59' ", nameof(RB_Message_Notice_Extend.CreateDate), query.EndTime);
}
}
return Get<RB_Message_Notice_Extend>(builder.ToString()).ToList();
}
/// <summary>
/// 获取未查看的各类型消息数量
/// </summary>
/// <param name="tenantId"></param>
/// <param name="mallBaseId"></param>
/// <returns></returns>
public List<RB_Message_Notice_Extend> GetAdminMessageNoticeNum(int tenantId, int mallBaseId)
{
string sql = $@"SELECT Type,COUNT(0) as IsLook FROM rb_message_notice where TenantId ={tenantId} and MallBaseId ={mallBaseId} and IsLook =2 GROUP BY Type";
return Get<RB_Message_Notice_Extend>(sql).ToList();
}
}
}
......@@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
using Dnc.Api.Throttle;
using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.Model.Extend.User;
using Mall.Module.User;
using Mall.WebApi.Filter;
......@@ -12,6 +13,7 @@ using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Mall.WebApi.Controllers.User
{
......@@ -22,6 +24,8 @@ namespace Mall.WebApi.Controllers.User
public class MemberUserController : BaseController
{
private MemberUserModule MemberUserModule = new MemberUserModule();
[AllowAnonymous] [RateValve(Policy = Policy.Ip, Limit = 10, Duration = 60)]
/// <summary>
/// 用户登录
......@@ -54,5 +58,77 @@ namespace Mall.WebApi.Controllers.User
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#region 小程序管理端-消息提醒
/// <summary>
/// 获取管理端消息分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAdminMessageNoticePageList() {
var parms = base.RequestParm;
var pmodel = JsonHelper.DeserializeObject<ResultPageModel>(parms.msg.ToString());
RB_Message_Notice_Extend demodel = JsonHelper.DeserializeObject<RB_Message_Notice_Extend>(parms.msg.ToString());
if (demodel.Type <= 0) {
return ApiResult.ParamIsNull("请选择查询类型");
}
demodel.TenantId = Convert.ToInt32(parms.uid);
demodel.MallBaseId = parms.MallBaseId;
var list = MemberUserModule.GetAdminMessageNoticePageList(pmodel.pageIndex, pmodel.pageSize, out long count, demodel);
pmodel.count = Convert.ToInt32(count);
pmodel.pageData = list.Select(x => new
{
x.Id,
x.SourceId,
x.OrderNo,
x.Type,
x.IsLook,
x.UserId,
x.UserName,
CreateDate = x.CreateDate.ToString("yyyy-MM-dd HH:mm"),
x.GoodsName,
x.GoodsCoverImage,
x.OrderTypeName
});
return ApiResult.Success("", pmodel);
}
/// <summary>
/// 获取管理端消息通知数量
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAdminMessageNoticeNum() {
var parms = base.RequestParm;
int TenantId = Convert.ToInt32(parms.uid);
int MallBaseId = parms.MallBaseId;
var Rmsg = MemberUserModule.GetAdminMessageNoticeNum(TenantId, MallBaseId);
return ApiResult.Success("", Rmsg);
}
/// <summary>
/// 设置管理端消息查看
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetAdminMessageLook() {
var parms = base.RequestParm;
RB_Message_Notice_Extend demodel = JsonHelper.DeserializeObject<RB_Message_Notice_Extend>(parms.msg.ToString());
demodel.TenantId = Convert.ToInt32(parms.uid);
demodel.MallBaseId = parms.MallBaseId;
string msg = MemberUserModule.SetAdminMessageLook(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
}
}
\ No newline at end of file
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