Przeglądaj źródła

好哒押金队列

lcl 1 dzień temu
rodzic
commit
7fbed82469

+ 109 - 0
Controllers/Admin/Hd/HdDepositRecordController.cs

@@ -0,0 +1,109 @@
+using Vo;
+using Microsoft.AspNetCore.Mvc;
+using Model;
+using Services;
+using Model.Base;
+using Vo.Admin;
+using Mapster;
+using Infrastructure;
+
+
+namespace Controllers.Admin
+{
+    /// <summary>
+    /// HdDepositRecord)Controller
+    /// </summary>
+    // [Route("${Router}$")]
+    // [ApiExplorerSettings(GroupName = "HdDepositRecord")]
+    public class HdDepositRecordController : BaseController
+    {
+        /// <summary>
+        /// api分组接口
+        /// </summary>
+        private readonly IHdDepositRecordService _HdDepositRecordService;
+
+
+        public HdDepositRecordController(IHdDepositRecordService HdDepositRecordService)
+        {
+            _HdDepositRecordService = HdDepositRecordService;
+
+        }
+
+          /// <param name="page">分页参数</param>
+        /// <summary>
+        /// 列表
+        /// </summary>
+        /// <param name="page">分页对象</param>
+        /// <param name="param">参数请求体</param>
+        /// <returns>列表</returns>
+        [HttpGet]
+        [Route("/v1/kxssp/HdDepositRecord/getHdDepositRecordList")]
+        public IActionResult getHdDepositRecordList([FromQuery] PagerInfo page, [FromQuery] HdDepositRecord param)
+        {
+            var response = _HdDepositRecordService.getHdDepositRecordList(page, param);
+            return SUCCESS(response);
+        }
+
+
+        /// <summary>
+        /// 详情
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>详情</returns>
+        [HttpGet]
+        [Route("/v1/kxssp/HdDepositRecord/getHdDepositRecordQuery")]
+        public IActionResult getHdDepositRecordQuery([FromQuery] HdDepositRecord param)
+        {
+            var response = _HdDepositRecordService.getHdDepositRecordQuery(param.id).Adapt<GetHdDepositRecordQueryVo>();
+            return SUCCESS(response);
+        }
+
+
+        /// <summary>
+        /// 添加
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>添加</returns>
+        [HttpPost]
+        [Route("/v1/kxssp/HdDepositRecord/addHdDepositRecord")]
+        public IActionResult addHdDepositRecord([FromBody] HdDepositRecord param)
+        {
+            var modal = param.Adapt<HdDepositRecord>().ToCreate(HttpContext);
+            var response = _HdDepositRecordService.addHdDepositRecord(modal);
+            return SUCCESS(response);
+        }
+
+
+        /// <summary>
+        /// 修改
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>修改</returns>
+        [HttpPut]
+        [Route("/v1/kxssp/HdDepositRecord/updateHdDepositRecord")]
+        public IActionResult updateHdDepositRecord([FromBody] HdDepositRecord param)
+        {
+            var modal = param.Adapt<HdDepositRecord>().ToCreate(HttpContext);
+            var response = _HdDepositRecordService.updateHdDepositRecord(modal);
+            return SUCCESS(response);
+        }
+
+
+        /// <summary>
+        /// 删除
+        /// </summary>
+        /// <param name="id">ID</param>
+        /// <returns>删除</returns>
+        [HttpDelete]
+        [Route("/v1/kxssp/HdDepositRecord/deleteHdDepositRecord/{id}")]
+        public IActionResult deleteHdDepositRecord(long id)
+        {
+            var response = _HdDepositRecordService.deleteHdDepositRecord(id);
+            return SUCCESS(response);
+        }
+
+
+
+
+    }
+}

+ 1 - 0
Extensions/AppServiceExtensions.cs

@@ -31,6 +31,7 @@ namespace Infrastructure
             services.AddTransient<IHdTradeRecordService, HdTradeRecordService>();
             services.AddTransient<IHdUnBindRecordService, HdUnBindRecordService>();
             services.AddTransient<IHdChangeRecordService, HdChangeRecordService>();
+            services.AddTransient<IHdDepositRecordService, HdDepositRecordService>();
         }
 
         private static void Register(IServiceCollection services, string item)

+ 108 - 0
Model/Database/HdDepositRecord.cs

@@ -0,0 +1,108 @@
+using Mapster;
+
+
+namespace Model
+{
+    /// <summary>
+    /// 好哒押金记录 hd_deposit_record
+    /// </summary>
+    [SplitTable(SplitType.Month)]
+    [SugarTable("hd_deposit_record_{year}{month}{day}", "好哒押金记录")]
+    [Tenant("0")]
+    public class HdDepositRecord
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        [SugarColumn(ColumnDescription = "ID", IsPrimaryKey = true, ColumnName = "id")]
+        public long id { get; set; }
+
+
+        /// <summary>
+        /// 绑定/激活日期
+        /// </summary>
+        [SugarColumn(ColumnDescription = "绑定/激活日期", Length = 30, ColumnName = "effective_time")]
+        public string? effectiveTime { get; set; }
+
+
+        /// <summary>
+        /// 设备类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "设备类型", Length = 20, ColumnName = "device_type")]
+        public string? deviceType { get; set; }
+
+
+        /// <summary>
+        /// 商户类型
+        /// </summary>
+        [SugarColumn(ColumnDescription = "商户类型", Length = 30, ColumnName = "channel_kind")]
+        public string? channelKind { get; set; }
+
+
+        /// <summary>
+        /// 新的TUSN编码
+        /// </summary>
+        [SugarColumn(ColumnDescription = "新的TUSN编码", Length = 30, ColumnName = "sn_no")]
+        public string? snNo { get; set; }
+
+
+        /// <summary>
+        /// 押金金额
+        /// </summary>
+        [SugarColumn(ColumnDescription = "押金金额", Length = 20, ColumnName = "deposit_amount")]
+        public string? depositAmount { get; set; }
+
+
+        /// <summary>
+        /// 押金活动编号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "押金活动编号", Length = 20, ColumnName = "activity_id")]
+        public string? activityId { get; set; }
+
+
+        /// <summary>
+        /// 平台商户名称
+        /// </summary>
+        [SugarColumn(ColumnDescription = "平台商户名称", Length = 50, ColumnName = "mcht_nm")]
+        public string? mchtNm { get; set; }
+
+
+        /// <summary>
+        /// 平台商户号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "平台商户号", Length = 50, ColumnName = "mcht_no")]
+        public string? mchtNo { get; set; }
+
+
+        /// <summary>
+        /// 更新时间
+        /// </summary>
+        [SugarColumn(ColumnDescription = "更新时间", ColumnName = "update_time")]
+        public DateTime? updateTime { get; set; }
+
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        [SplitField]
+        [SugarColumn(ColumnDescription = "创建时间", ColumnName = "create_time")]
+        public DateTime? createTime { get; set; }
+
+
+        /// <summary>
+        /// 删除标记
+        /// </summary>
+        [SugarColumn(ColumnDescription = "删除标记", ColumnName = "del_flag")]
+        public int delFlag { get; set; }
+
+
+        /// <summary>
+        /// 版本号
+        /// </summary>
+        [SugarColumn(ColumnDescription = "版本号", ColumnName = "version")]
+        public int version { get; set; }
+
+
+
+    }
+}

+ 66 - 0
Model/Vo/Admin/GetHdDepositRecordListVo.cs

@@ -0,0 +1,66 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 列表
+    /// </summary>
+    public class GetHdDepositRecordListVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public long id { get; set; }
+
+
+        /// <summary>
+        /// 绑定/激活日期
+        /// </summary>
+        public string effectiveTime { get; set; }
+
+
+        /// <summary>
+        /// 设备类型
+        /// </summary>
+        public string deviceType { get; set; }
+
+
+        /// <summary>
+        /// 商户类型
+        /// </summary>
+        public string channelKind { get; set; }
+
+
+        /// <summary>
+        /// 新的TUSN编码
+        /// </summary>
+        public string snNo { get; set; }
+
+
+        /// <summary>
+        /// 押金金额
+        /// </summary>
+        public string depositAmount { get; set; }
+
+
+        /// <summary>
+        /// 押金活动编号
+        /// </summary>
+        public string activityId { get; set; }
+
+
+        /// <summary>
+        /// 平台商户名称
+        /// </summary>
+        public string mchtNm { get; set; }
+
+
+        /// <summary>
+        /// 平台商户号
+        /// </summary>
+        public string mchtNo { get; set; }
+
+
+
+    }
+}

+ 66 - 0
Model/Vo/Admin/GetHdDepositRecordQueryVo.cs

@@ -0,0 +1,66 @@
+using Newtonsoft.Json;
+
+namespace Vo.Admin
+{
+    /// <summary>
+    /// 详情
+    /// </summary>
+    public class GetHdDepositRecordQueryVo
+    {
+        /// <summary>
+        /// ID
+        /// </summary>
+        public long id { get; set; }
+
+
+        /// <summary>
+        /// 绑定/激活日期
+        /// </summary>
+        public string effectiveTime { get; set; }
+
+
+        /// <summary>
+        /// 设备类型
+        /// </summary>
+        public string deviceType { get; set; }
+
+
+        /// <summary>
+        /// 商户类型
+        /// </summary>
+        public string channelKind { get; set; }
+
+
+        /// <summary>
+        /// 新的TUSN编码
+        /// </summary>
+        public string snNo { get; set; }
+
+
+        /// <summary>
+        /// 押金金额
+        /// </summary>
+        public string depositAmount { get; set; }
+
+
+        /// <summary>
+        /// 押金活动编号
+        /// </summary>
+        public string activityId { get; set; }
+
+
+        /// <summary>
+        /// 平台商户名称
+        /// </summary>
+        public string mchtNm { get; set; }
+
+
+        /// <summary>
+        /// 平台商户号
+        /// </summary>
+        public string mchtNo { get; set; }
+
+
+
+    }
+}

+ 1 - 0
Program.cs

@@ -109,5 +109,6 @@ app.MapControllers();
 app.Urls.Add("http://*:5049");
 
 HaoDaHelper.Instance.Start(); 
+HaoDaHelper.Instance.StartDeposit(); 
 
 app.Run();

+ 98 - 0
Services/HdDepositRecordService.cs

@@ -0,0 +1,98 @@
+using Attribute;
+using Model;
+using Model.Base;
+using Repository;
+using Service;
+using Microsoft.AspNetCore.Mvc;
+using Vo.Admin;
+
+
+namespace Services
+{
+    /// <summary>
+    /// 好哒押金记录Service业务层处理
+    /// </summary>
+    [AppService(ServiceType = typeof(IHdDepositRecordService), ServiceLifetime = LifeTime.Transient)]
+    public class HdDepositRecordService : BaseService<HdDepositRecord>, IHdDepositRecordService
+    {
+        /// <summary>
+        /// 好哒押金记录-列表
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <param name="page">分页参数</param>
+        /// <returns>列表</returns>
+        public PagedInfo<GetHdDepositRecordListVo> getHdDepositRecordList([FromQuery] PagerInfo page, [FromQuery] HdDepositRecord param)
+        {
+            //拼装查询条件
+            var predicate = Expressionable.Create<HdDepositRecord>();
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.effectiveTime), m => m.effectiveTime.Contains(param.effectiveTime));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.settleType), m => m.settleType.Contains(param.settleType));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.channelKind), m => m.channelKind.Contains(param.channelKind));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.snNo), m => m.snNo.Contains(param.snNo));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.depositAmount), m => m.depositAmount.Contains(param.depositAmount));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.activityId), m => m.activityId.Contains(param.activityId));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.mchtNm), m => m.mchtNm.Contains(param.mchtNm));
+            predicate = predicate.AndIF(!string.IsNullOrEmpty(param.mchtNo), m => m.mchtNo.Contains(param.mchtNo));
+            var response = Queryable()
+                .Where(predicate.ToExpression())
+                .SplitTable(DateTime.Now.AddMonths(-3), DateTime.Now)
+                .OrderByDescending(m => m.id)
+                .ToPage<HdDepositRecord, GetHdDepositRecordListVo>(page);
+            return response;
+        }
+
+
+        /// <summary>
+        /// 好哒押金记录-详情
+        /// </summary>
+        /// <param name="id">ID</param>
+        /// <returns>详情</returns>
+        public HdDepositRecord getHdDepositRecordQuery(long id)
+        {
+            //拼装查询条件
+            var predicate = Expressionable.Create<HdDepositRecord>();
+            predicate = predicate.AndIF(id > 0, m => m.id == id);
+            var response = Queryable()
+                .Where(predicate.ToExpression())
+                .SplitTable(DateTime.Now.AddMonths(-3), DateTime.Now)
+                .First();
+            return response;
+        }
+
+
+        /// <summary>
+        /// 好哒押金记录-添加
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>添加</returns>
+        public long addHdDepositRecord([FromBody] HdDepositRecord param)
+        {
+            return Insertable(param).SplitTable().ExecuteReturnSnowflakeId();
+        }
+
+
+        /// <summary>
+        /// 好哒押金记录-修改
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>修改</returns>
+        public long updateHdDepositRecord([FromBody] HdDepositRecord param)
+        {
+            return Context.Updateable(param).SplitTable().ExecuteCommand();
+        }
+
+
+        /// <summary>
+        /// 好哒押金记录-删除
+        /// </summary>
+        /// <param name="id">ID</param>
+        /// <returns>删除</returns>
+        public long deleteHdDepositRecord(long id)
+        {
+            return Context.Deleteable<HdDepositRecord>(id).SplitTable().ExecuteCommand();
+        }
+
+
+
+    }
+}

+ 54 - 0
Services/IService/IHdDepositRecordService.cs

@@ -0,0 +1,54 @@
+using Model;
+using Model.Base;
+using Microsoft.AspNetCore.Mvc;
+using Vo.Admin;
+
+
+namespace Services
+{
+    public interface IHdDepositRecordService : IBaseService<HdDepositRecord>
+    {
+        /// <summary>
+        /// 好哒押金记录-列表
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <param name="page">分页参数</param>
+        /// <returns>列表</returns>
+        PagedInfo<GetHdDepositRecordListVo> getHdDepositRecordList([FromQuery] PagerInfo page, [FromQuery] HdDepositRecord param);
+
+
+        /// <summary>
+        /// 好哒押金记录-详情
+        /// </summary>
+        /// <param name="id">ID</param>
+        /// <returns>详情</returns>
+        HdDepositRecord getHdDepositRecordQuery(long id);
+
+
+        /// <summary>
+        /// 好哒押金记录-添加
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>添加</returns>
+        long addHdDepositRecord([FromBody] HdDepositRecord param);
+
+
+        /// <summary>
+        /// 好哒押金记录-修改
+        /// </summary>
+        /// <param name="param">参数请求体</param>
+        /// <returns>修改</returns>
+        long updateHdDepositRecord([FromBody] HdDepositRecord param);
+
+
+        /// <summary>
+        /// 好哒押金记录-删除
+        /// </summary>
+        /// <param name="id">ID</param>
+        /// <returns>删除</returns>
+        long deleteHdDepositRecord(long id);
+
+
+
+    }
+}

+ 1 - 0
SqlSugar/InitTable.cs

@@ -32,6 +32,7 @@ namespace SqlSugar
             //分表
             db.CodeFirst.SplitTables().InitTables<HdBindRecord>();
             db.CodeFirst.SplitTables().InitTables<HdTradeRecord>();
+            db.CodeFirst.SplitTables().InitTables<HdDepositRecord>();
         }
     }
 }

+ 54 - 0
Task/HaoDaHelper.cs

@@ -88,4 +88,58 @@ public class HaoDaHelper
             Function.WriteLog(DateTime.Now.ToString() + "\n" + ex, "好哒订单入库异常");
         }
     }
+
+
+
+
+
+    public void StartDeposit()
+    {
+        Thread th = new Thread(DoWorksDeposit);
+        th.IsBackground = true;
+        th.Start();
+    }
+
+    public void DoWorksDeposit()
+    {
+        while (true)
+        {
+            string content = RedisServer.Cache.RPop<string>("hd:notice:deposit");
+            if(!string.IsNullOrEmpty(content))
+            {
+                DoQueueDeposit(content);
+            }
+            else
+            {
+                Thread.Sleep(5000);
+            }
+        }
+    }
+
+    public void DoQueueDeposit(string content)
+    {
+        try
+        {
+            string[] dataArray = content.Split(new string[]{ "#cut#" }, StringSplitOptions.None);
+            JsonData header = JsonMapper.ToObject(dataArray[0]);
+            content = dataArray[1];
+            string signstr = header["X-Sign"][0].ToString();
+            SortedList<string, string> dic = Newtonsoft.Json.JsonConvert.DeserializeObject<SortedList<string, string>>(content);
+            string sign = Function.BuildQueryString(dic);
+            bool checkSign = HaoDa.Instance.VerifySign(sign, signstr);
+            if(checkSign)
+            {
+                var item = Newtonsoft.Json.JsonConvert.DeserializeObject<HdDepositRecord>(content);
+                var depositService = App.GetService<IHdDepositRecordService>();
+                depositService.addHdDepositRecord(item);
+                
+                string data = item.snNo + "," + item.mchtNo + "," + item.deviceType + "," + item.effectiveTime + "," + item.depositAmount + ",0," + item.effectiveTime + ",蒲晓敏," + item.mchtNm + "," + item.effectiveTime + "," + item.channelKind + "," + item.activityId;
+                RedisServer.Cache.LPush("ListenDepositDataByOneQueue", data);
+            }
+        }
+        catch (Exception ex)
+        {
+            Function.WriteLog(DateTime.Now.ToString() + "\n" + ex, "好哒订单入库异常");
+        }
+    }
 }