From 18a4451e5b7bf8f7f6a260796acb24adb3b2ccda Mon Sep 17 00:00:00 2001
From: 移动系统liao <liaoxujun@qq.com>
Date: 星期一, 14 十月 2024 15:34:28 +0800
Subject: [PATCH] 修正提现逻辑,实现重新建单支付 API

---
 cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs |   25 ++
 cylsg/EzJob/WeChatJob.cs                                |    7 
 cylsg/cylsg.Application/Transfer/UserTransfer.cs        |  585 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 cylsg/EzInitQ/PayServiceMessageQ.cs                     |   24 +
 4 files changed, 627 insertions(+), 14 deletions(-)

diff --git a/cylsg/EzInitQ/PayServiceMessageQ.cs b/cylsg/EzInitQ/PayServiceMessageQ.cs
index a9194b3..d4e47d4 100644
--- a/cylsg/EzInitQ/PayServiceMessageQ.cs
+++ b/cylsg/EzInitQ/PayServiceMessageQ.cs
@@ -175,7 +175,9 @@
                     retdata.BatchStatus= ret.BatchStatus;
                     retdata.UpDataBy = "寰俊浠樻璇锋眰涔嬪悗";
                      retdata.UpDataTime= DateTime.Now;
-                      await WeChatTransferOrderwork.UpdateAsync(retdata);
+                    retdata.ErrorMsg = ret.ErrorMessage;
+                    retdata.ErrorCode = ret.ErrorCode;
+                    await WeChatTransferOrderwork.UpdateAsync(retdata);
                 }
                 else
                     throw Oops.Oh($"寰俊璇锋眰浠樻澶辫触+++++++++++++{ret.ToString()}+++++++++++msg{msg}");
@@ -228,6 +230,9 @@
                 retdata.BatchStatus = ret.BatchStatus;
                 retdata.UpDataBy = "寰俊浠樻璇锋眰涔嬪悗";
                 retdata.UpDataTime = DateTime.Now;
+                retdata.ErrorMsg = ret.ErrorMessage;
+                retdata.ErrorCode = ret.ErrorCode;              
+      
                 await WeChatTransferOrderwork.UpdateAsync(retdata);
             }
             else
@@ -253,7 +258,7 @@
             _ezCoreNetRedisService = App.GetService<IEzCoreNetRedisService>();
             _wecharPayServicecs = App.GetService<IWecharPayServicecs>();
             _mapper = App.GetService<IMapper>();
-           
+         
 
             var WeChatTransferOrderwork = new BaseRepository<WeChatTransferOrder>();
             var TransferOrder = await WeChatTransferOrderwork.AsQueryable().Includes(x => x.TransferDetailList).Includes(x=>x.user).Where(x => x.Id == msg.toInt()).FirstAsync();
@@ -263,11 +268,7 @@
 
                 return;
             }
-            if (!string.IsNullOrEmpty(TransferOrder.BatchStatus))
-            {
-
-                return;
-            }
+     
             var UserWork = new BaseRepository<UserWorker>();
             var userWk = await UserWork.GetFirstAsync(x => x.UserId == TransferOrder.UserID);
             if (userWk == null)
@@ -286,6 +287,8 @@
             requit.BatchRemark = $"{TransferOrder.user.ItCode}{userWk.name?.Substring(0,2)}{userWk.IdCode}";
 
             var ret = await _wecharPayServicecs.Transfer(requit);
+            
+          
             if (ret.IsSuccessful())
             {
                 var retdata = await WeChatTransferOrderwork.GetByIdAsync(TransferOrder.Id);
@@ -293,8 +296,8 @@
                 retdata.BatchStatus = ret.BatchStatus;
                 retdata.UpDataBy = "鍐嶆寰俊浠樻璇锋眰";
                 retdata.UpDataTime = DateTime.Now;
-                retdata.ErrorMsg = null;
-                retdata.ErrorCode = null;
+                retdata.ErrorMsg = ret.ErrorMessage;
+                retdata.ErrorCode = ret.ErrorCode;
                 await WeChatTransferOrderwork.UpdateAsync(retdata);
             }
             else
@@ -307,6 +310,9 @@
                 retdata.UpDataTime = DateTime.Now;
                 await WeChatTransferOrderwork.UpdateAsync(retdata);
                 Log.Error($"WxTransfer寰俊鏀粯澶勭悊 澶辫触锛屼紶閫扞d涓簕msg} 閿欒鍘熷洜:{retdata.ErrorMsg}");
+
+                
+                
                 return;
             }
 
diff --git a/cylsg/EzJob/WeChatJob.cs b/cylsg/EzJob/WeChatJob.cs
index 122144e..3f45ef9 100644
--- a/cylsg/EzJob/WeChatJob.cs
+++ b/cylsg/EzJob/WeChatJob.cs
@@ -33,7 +33,10 @@
             }
 
             var WeChatTransferOrderRs = new BaseRepository<WeChatTransferOrder>();
-            var OderList = await WeChatTransferOrderRs.AsQueryable().Includes(x=>x.TransferDetailList).Where(x => (x.BatchId != null && x.BatchId != "")&&(x.BatchStatus==null|| x.BatchStatus == "ACCEPTED" || x.BatchStatus == "PROCESSING")).ToListAsync();
+            var OderList = await WeChatTransferOrderRs.AsQueryable().Includes(x=>x.TransferDetailList).Where(x => (x.BatchId != null && x.BatchId != "")&&(
+            (x.BatchStatus==null&&x.ErrorCode!= "INVALID_REQUEST") //浠h〃鏀粯鏃剁珛鍗虫姤閿欙紝涓嶄簣鏌ヨ
+            || x.BatchStatus == "ACCEPTED" || x.BatchStatus == "PROCESSING")
+            && x.IsSetOK==false).ToListAsync();
 
             foreach( var o in OderList )
             {
@@ -60,6 +63,8 @@
                             o.FailNum = ret.TransferBatch.FailNumber;
                             o.SuccessNum = ret.TransferBatch.SuccessNumber;
                             o.SuccessAmount= ret.TransferBatch.SuccessAmount;
+                            o.ErrorCode = ret.ErrorCode;
+                            o.ErrorMsg = ret.ErrorCode;
                             foreach (var item in o.TransferDetailList)
                             {
                                 var del =ret.TransferDetailList.Where(x=>x.OutDetailNumber==item.OutDetailNumber).FirstOrDefault();
diff --git a/cylsg/cylsg.Application/Transfer/UserTransfer.cs b/cylsg/cylsg.Application/Transfer/UserTransfer.cs
index cf480f6..137496d 100644
--- a/cylsg/cylsg.Application/Transfer/UserTransfer.cs
+++ b/cylsg/cylsg.Application/Transfer/UserTransfer.cs
@@ -81,7 +81,7 @@
                     }
                     if (string.IsNullOrEmpty(user.WxOpenId))
                     {
-                        throw Oops.Oh($"鐢ㄦ埛寰俊OpenID纭疄");
+                        throw Oops.Oh($"鐢ㄦ埛寰俊纭澶辫触");
                     }
                     var uw = await rs.GetFirstAsync(x => x.UserId == userid);
                     if (uw == null)
@@ -256,7 +256,7 @@
         /// </summary>
         [AllowAnonymous]
         [HttpPost]
-        //[ApiExplorerSettings(IgnoreApi = true)]
+        [ApiExplorerSettings(IgnoreApi = true)]
         public async Task<TransferOderOut> GetTransferOder(SearchTransferOder param)
         {
 
@@ -280,15 +280,19 @@
                     SearchList= SearchList.And(x => x.BatchStatus != lis);
                 }
             }
+            if(param.IsSetOK!=null)
+            {
+                SearchList = SearchList.And(x =>x.IsSetOK==param.IsSetOK);
+            }
             if (param.HasSendOk == false)
                 SearchList= SearchList.And(x => x.FailNum >0||x.BatchStatus!= "FINISHED");
             else
                 //鏈変竴绗斿ぇ浣�0 鐨勮涓哄け璐�
-                SearchList= SearchList.And(x => x.FailNum ==0&&x.BatchStatus== "FINISHED");
+                SearchList= SearchList.And(x => x.FailNum ==0&&x.BatchStatus=="FINISHED");
              var data=await WeChatTransferOrderwork.AsQueryable().Where(SearchList).Select(x=>new WeChatTransferOrder
              {
                BatchRemark= SqlFunc.Subqueryable<UserWorker>().Where(uw=>uw.UserId==x.UserID).Select(uw => uw.name+ uw.IdCode)   
-             }).ToPageListAsync(pageModel.PageIndex, pageModel.PageSize,pageModel.TotalCount);
+             },true).ToPageListAsync(pageModel.PageIndex, pageModel.PageSize,pageModel.TotalCount);
             //var data = await WeChatTransferOrderwork.GetPageListAsync(SearchList, pageModel);
               
             return new TransferOderOut
@@ -328,6 +332,538 @@
 
         }
 
+        /// <summary>
+        /// 閲嶆柊寤哄崟 鏀粯
+        /// </summary>
+        /// <param name="id"> 璁㈠崟ID</param>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpGet]
+        [ApiExplorerSettings(IgnoreApi = true)]
+        public async Task ReSendCreadTransferMoney([FromQuery] string id)
+        {
+
+
+            var itmsRes = new BaseRepository<WeChatTransferOrder>();
+            if (string.IsNullOrEmpty(id))
+                throw Oops.Oh("鍙傛暟閿欒");
+         
+
+          var TOrder =  await itmsRes.GetByIdAsync(id.toInt());
+            if (TOrder == null)
+            {
+                throw Oops.Oh("娌℃湁璁㈠崟闇�瑕佸鐞�");
+            }
+            if(TOrder.IsSetOK ==true)
+            {
+                throw Oops.Oh("宸茬粡澶勭悊涓嶅啀澶勭悊");
+            }
+           if(!(TOrder.ErrorCode== "INVALID_REQUEST"&&TOrder.ErrorMsg== "瀵瑰簲鍗曞彿宸茶秴鍑洪噸璇曟湡,璇锋煡鍗曠‘璁ゅ悗鍐冲畾鏄惁鎹㈠崟璇锋眰"))
+            {
+                //涓嶆弧瓒冲啿娲楁敮浠樿姹�
+                throw Oops.Oh("涓嶆弧瓒抽噸鏂版敮浠樿姹�");
+            }
+                   
+            var rs = new BaseRepository<UserWorker>();
+            var userid = TOrder.UserID;
+            var Money =  (TOrder.FailAmount??0)/100m;
+            if(Money<0.03m)
+            {
+                throw Oops.Oh("澶辫触閲戦涓嶈冻0.3鍏冧笉鑳藉啀娆″彂璧锋敮浠�");
+            }
+
+            if (await _redisService.TryLock(StaticStringDef.TransferMoneyLockKey + userid.ToString(), 300))
+            {
+
+                try
+                {
+                    var UserRs = new BaseRepository<User>();
+                    var user = await UserRs.GetByIdAsync(userid);
+                    if (user == null)
+                    {
+                        throw Oops.Oh($"娌℃湁鎵惧埌鐢ㄦ埛");
+                    }
+                    if (string.IsNullOrEmpty(user.WxOpenId))
+                    {
+                        throw Oops.Oh($"鐢ㄦ埛寰俊OpenID纭");
+                    }
+                    var uw = await rs.GetFirstAsync(x => x.UserId == userid);
+                    if (uw == null)
+                    {
+                        throw Oops.Oh("璇ョ敤鎴锋病鏈夋敹鍏�");
+                    }
+                  
+
+
+                    var totle = _redisService.Get<decimal>(StaticStringDef.TransferMoneyManKey + userid.ToString());
+                    if (totle + Money > 2000)
+                    {
+                        throw Oops.Oh("鎻愮幇閲戦涓嶅彲瓒呭嚭2000");
+                    }
+
+
+
+
+                    var UserTiXianDetailwork = new BaseRepository<UserTiXianDetail>();
+                    var WeChatTransferOrderwork = new BaseRepository<WeChatTransferOrder>();
+                    if ((uw != null) && (((uw.TiXianZonge ?? 0) - (uw.YiTiXianJine ?? 0)) >= Money))
+                    {
+                        //婊¤冻鏉′欢锛屽彂璧锋敮浠�
+                        var TransferOrder = new WeChatTransferOrder
+                        {
+
+                            CreateBy = uw.UserId.ToString(),
+                            CreateTime = DateTime.Now,
+                            //  BatchId = _redisService.Get32sn(),
+                            OutBatchNumber = _redisService.Get32sn(),
+                            Remake = "宸濆嵃宸ヨ祫鏀粯",
+                            TransferDetailList = new List<WeChatTransferItem>(),
+                            UserID = uw.UserId,
+                            RemakeDes = "琛ュ厖鍙戣捣鏀粯" ,
+                            WeChatTransferOrderPrId = TOrder.Id
+
+
+                        };
+                        try
+                        {
+
+                            await UserTiXianDetailwork.AsTenant().BeginTranAsync();
+
+
+
+
+                            var moneylist = Money;
+
+                            var maxPayItem = Convert.ToDecimal(App.Configuration["WechartPay:PayMoneyMax"].toInt()); ;
+                            while ((moneylist > maxPayItem))
+                            {
+                                TransferOrder.TransferDetailList.Add(new WeChatTransferItem
+                                {
+                                    CreateBy = uw.UserId.ToString(),
+                                    CreateTime = TransferOrder.CreateTime,
+                                    IsEn = true,
+                                    OpenId = user.WxOpenId,
+                                    OutDetailNumber = _redisService.Get32sn(),
+
+                                    TransferAmount = (int)maxPayItem * 100,
+                                    TransferRemark = "宸濆嵃宸ヨ祫鏀粯"
+                                  
+                                
+
+                                });;
+
+                                moneylist -= maxPayItem;
+                            }
+                            if (moneylist <= 0.3m)
+                            {
+                                //濡傛灉杩欓噷浣庝簬0.3姣涳紝灏嗙ぞ鍖洪妫�锛岀暀涓嬫澶勭悊
+                                Money -= moneylist;
+                            }
+                            else
+
+                            {
+                                TransferOrder.TransferDetailList.Add(new WeChatTransferItem
+                                {
+                                    CreateBy = uw.UserId.ToString(),
+                                    CreateTime = TransferOrder.CreateTime,
+                                    IsEn = true,
+                                    OpenId = user.WxOpenId,
+                                    OutDetailNumber = _redisService.Get32sn(),
+
+                                    TransferAmount = (int)(moneylist * 100),
+                                    TransferRemark = "宸濆嵃宸ヨ祫鏀粯",
+
+                                });
+                            }
+
+                            TransferOrder.TotalAmount = (int)(Money * 100);
+                            TransferOrder.TotalNum = TransferOrder.TransferDetailList.Count();
+
+                            TransferOrder = await WeChatTransferOrderwork.AsSugarClient().InsertNav(TransferOrder).Include(x => x.TransferDetailList).ExecuteReturnEntityAsync();
+
+                            TOrder.IsSetOK = true;
+                            TOrder.RemakeDes = "宸茬粡閲嶆柊寤虹珛鏀粯璁㈠崟 id="+TransferOrder.Id.ToString();
+                            TOrder.UpDataBy = "閲嶆柊绠�鍗曟敮浠楢PI";
+                            TOrder.UpDataTime= DateTime.Now;
+                            await WeChatTransferOrderwork.UpdateAsync(TOrder);
+
+                            
+
+                            await UserTiXianDetailwork.AsTenant().CommitTranAsync();
+
+                            totle += Money;
+                            //璁剧疆姣忔棩鎻愮幇闄愰
+                            _redisService.Add(StaticStringDef.TransferMoneyManKey + userid.ToString(), totle, 60 * 60 * 24);
+                            //鍙戣捣鏀粯
+                            await InitQMessages.SendMessageAsync(InitQMessages.WxTransfer, TransferOrder.Id.ToString());
+                        }
+                        catch (Exception)
+                        {
+                            await UserTiXianDetailwork.AsTenant().RollbackTranAsync();
+                            throw;
+                        }
+                        // 鍙戣捣鏀粯
+
+
+
+                    }
+                    else
+                    {
+                        throw Oops.Oh("绯荤粺閿欒");
+                    }
+
+                }
+                catch (Exception)
+                {
+
+                    throw;
+                }
+                finally
+                {
+                    await _redisService.TryUnLock(StaticStringDef.TransferMoneyLockKey + userid.ToString());
+                }
+
+
+
+
+
+
+
+
+
+
+
+
+
+            }
+            else
+                throw Oops.Oh("璇蜂笉瑕侀绻侀噸澶嶇敵璇�");
+
+
+
+
+
+        }
+
+        /// <summary>
+        /// 閲嶆柊鍒涘缓鏂扮殑鏀粯鍗�
+        /// </summary>
+        /// <param name="ids"></param>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpPost]
+        [ApiExplorerSettings(IgnoreApi = true)]
+        public async Task<WeChatTransferOrder> CreateTransferOder(CreatTransferOderIN Param)
+        {
+            if(Param.Key!= DateTime.Now.ToString("yyyy-MM-dd:HH")+"CreatTransfer")
+            {
+                //key 閿欒
+                throw Oops.Oh("key閿欒");
+            }
+
+
+              var userbs= new BaseRepository<User>();
+            //鍒ゆ柇鏄惁鏄敤鎴�
+           var user=   await   userbs.GetByIdAsync(Param.UserID);
+            if (user == null)
+                throw Oops.Oh("娌℃湁鐢ㄦ埛");
+            if(Param.Money<=0.3m)
+            {
+                throw Oops.Oh("杞处閲戦蹇呴』澶т綑0.3鍏�");
+            }
+            if (Param.Money >2000)
+            {
+                throw Oops.Oh("涓�澶╄浆璐﹂噾棰濆繀椤诲皬浜�2000");
+            }
+            if (Param.Money > 2000)
+            {
+                throw Oops.Oh("涓�澶╄浆璐﹂噾棰濆繀椤诲皬浜�2000");
+            }
+
+            var totle = _redisService.Get<decimal>(StaticStringDef.TransferMoneyManKey + Param.UserID.ToString());
+            if (totle + Param.Money > 2000)
+            {
+                throw Oops.Oh("涓�澶╄浆璐﹂噾棰濆繀椤诲皬浜�2000");
+            }
+
+            decimal Money = Param.Money;
+
+            //婊¤冻鏉′欢锛屽彂璧锋敮浠�
+            var TransferOrder = new WeChatTransferOrder
+            {
+
+                CreateBy = Param.UserID.ToString(),
+                CreateTime = DateTime.Now,
+                //  BatchId = _redisService.Get32sn(),
+                OutBatchNumber = _redisService.Get32sn(),
+                Remake = "宸濆嵃宸ヨ祫鏀粯",
+                TransferDetailList = new List<WeChatTransferItem>(),
+                UserID = Param.UserID,
+                RemakeDes = Param.Remake,
+         
+                 
+
+
+
+            };
+
+            
+
+            //鏄惁鍏宠仈鏀跺叆閽卞寘琛�
+            if (Param.HasAboutReCome)
+            {
+                var UserTiXianDetailwork = new BaseRepository<UserTiXianDetail>();
+                var WeChatTransferOrderwork = new BaseRepository<WeChatTransferOrder>();
+                var rs = new BaseRepository<UserWorker>();
+                var uw = await rs.GetFirstAsync(x => x.UserId == Param.UserID);
+                if(uw==null)
+                {
+                    throw Oops.Oh("璇ョ敤鎴锋病鏈夊叧鑱旈挶鍖�");
+                }
+                //閿佸畾閽卞寘
+                if (await _redisService.TryLock(StaticStringDef.TransferMoneyLockKey + Param.UserID.ToString(), 300))
+                {
+                    try
+                    {
+                        await UserTiXianDetailwork.AsTenant().BeginTranAsync();
+
+
+
+
+                        var moneylist = Money;
+
+                        var maxPayItem = Convert.ToDecimal(App.Configuration["WechartPay:PayMoneyMax"].toInt()); ;
+                        while ((moneylist > maxPayItem))
+                        {
+                            TransferOrder.TransferDetailList.Add(new WeChatTransferItem
+                            {
+                                CreateBy = Param.UserID.ToString(),
+                                CreateTime = TransferOrder.CreateTime,
+                                IsEn = true,
+                                OpenId = user.WxOpenId,
+                                OutDetailNumber = _redisService.Get32sn(),
+
+                                TransferAmount = (int)maxPayItem * 100,
+                                TransferRemark = "宸濆嵃宸ヨ祫鏀粯",
+
+                            });
+
+                            moneylist -= maxPayItem;
+                        }
+                        if (moneylist <= 0.3m)
+                        {
+                            //濡傛灉杩欓噷浣庝簬0.3姣涳紝灏嗙ぞ鍖洪妫�锛岀暀涓嬫澶勭悊
+                            Money -= moneylist;
+                        }
+                        else
+
+                        {
+                            TransferOrder.TransferDetailList.Add(new WeChatTransferItem
+                            {
+                                CreateBy = Param.UserID.ToString(),
+                                CreateTime = TransferOrder.CreateTime,
+                                IsEn = true,
+                                OpenId = user.WxOpenId,
+                                OutDetailNumber = _redisService.Get32sn(),
+
+                                TransferAmount = (int)(moneylist * 100),
+                                TransferRemark = "宸濆嵃宸ヨ祫鏀粯",
+
+                            });
+                        }
+
+                        TransferOrder.TotalAmount = (int)(Money * 100);
+                        TransferOrder.TotalNum = TransferOrder.TransferDetailList.Count();
+
+                        TransferOrder = await WeChatTransferOrderwork.AsSugarClient().InsertNav(TransferOrder).Include(x => x.TransferDetailList).ExecuteReturnEntityAsync();
+                        await UserTiXianDetailwork.InsertAsync(new UserTiXianDetail
+                        {
+                            CreateBy = Param.UserID.ToString(),
+                            CreateTime = DateTime.Now,
+                            UserId = user.Id,
+                            ZhiChuShouRu = 0,
+                            YiTiXianJine = Money,
+                            WeChatTransferOrderID = TransferOrder.Id,
+                            Remark = "鐢ㄦ埛鎻愮幇"
+
+                        });
+                        //閽卞寘浣欓璋冩暣
+                        uw.YiTiXianJine = (uw.YiTiXianJine ?? 0) + Money;
+                        uw.UpDataBy = uw.UserId.ToString();
+                        uw.UpDataTime = DateTime.Now;
+                        await rs.UpdateAsync(uw);
+
+
+                        await UserTiXianDetailwork.AsTenant().CommitTranAsync();
+
+                        totle += Money;
+                        //璁剧疆姣忔棩鎻愮幇闄愰
+                        _redisService.Add(StaticStringDef.TransferMoneyManKey + Param.UserID.ToString(), totle, 60 * 60 * 24);
+                        //鍙戣捣鏀粯
+                        await InitQMessages.SendMessageAsync(InitQMessages.WxTransfer, TransferOrder.Id.ToString());
+                    }
+                    catch (Exception)
+                    {
+
+                        throw;
+                    }
+                    finally
+                    {
+                        //閲婃斁
+                        await _redisService.TryUnLock(StaticStringDef.TransferMoneyLockKey + Param.UserID.ToString());
+                    }
+
+
+                }
+                else
+                {
+                    throw Oops.Oh("绯荤粺绻佸繖锛岀◢鍚庨噸璇�");
+                }
+
+            }
+            else
+            {
+                //鐩存帴杞处锛屼笉璁″叆閽卞寘璁板綍锛屼富瑕佺敤浜庡鐞嗚秴鏃跺悗鏃犳硶閲嶆柊鏀粯鐨勫崟瀛�
+
+                var UserTiXianDetailwork = new BaseRepository<UserTiXianDetail>();
+                var WeChatTransferOrderwork = new BaseRepository<WeChatTransferOrder>();
+            
+         
+                //閿佸畾閽卞寘
+                if (await _redisService.TryLock(StaticStringDef.TransferMoneyLockKey + Param.UserID.ToString(), 300))
+                {
+                    try
+                    {
+                        await UserTiXianDetailwork.AsTenant().BeginTranAsync();
+
+
+
+
+                        var moneylist = Money;
+
+                        var maxPayItem = Convert.ToDecimal(App.Configuration["WechartPay:PayMoneyMax"].toInt()); ;
+                        while ((moneylist > maxPayItem))
+                        {
+                            TransferOrder.TransferDetailList.Add(new WeChatTransferItem
+                            {
+                                CreateBy = Param.UserID.ToString(),
+                                CreateTime = TransferOrder.CreateTime,
+                                IsEn = true,
+                                OpenId = user.WxOpenId,
+                                OutDetailNumber = _redisService.Get32sn(),
+
+                                TransferAmount = (int)maxPayItem * 100,
+                                TransferRemark = "宸濆嵃宸ヨ祫鏀粯",
+
+                            });
+
+                            moneylist -= maxPayItem;
+                        }
+                        if (moneylist <= 0.3m)
+                        {
+                            //濡傛灉杩欓噷浣庝簬0.3姣涳紝灏嗙ぞ鍖洪妫�锛岀暀涓嬫澶勭悊
+                            Money -= moneylist;
+                        }
+                        else
+
+                        {
+                            TransferOrder.TransferDetailList.Add(new WeChatTransferItem
+                            {
+                                CreateBy = Param.UserID.ToString(),
+                                CreateTime = TransferOrder.CreateTime,
+                                IsEn = true,
+                                OpenId = user.WxOpenId,
+                                OutDetailNumber = _redisService.Get32sn(),
+
+                                TransferAmount = (int)(moneylist * 100),
+                                TransferRemark = "宸濆嵃宸ヨ祫鏀粯",
+
+                            });
+                        }
+
+                        TransferOrder.TotalAmount = (int)(Money * 100);
+                        TransferOrder.TotalNum = TransferOrder.TransferDetailList.Count();
+
+                        TransferOrder = await WeChatTransferOrderwork.AsSugarClient().InsertNav(TransferOrder).Include(x => x.TransferDetailList).ExecuteReturnEntityAsync();
+                     
+                        await UserTiXianDetailwork.AsTenant().CommitTranAsync();
+
+                        totle += Money;
+                        //璁剧疆姣忔棩鎻愮幇闄愰
+                        _redisService.Add(StaticStringDef.TransferMoneyManKey + Param.UserID.ToString(), totle, 60 * 60 * 24);
+                        //鍙戣捣鏀粯
+                        await InitQMessages.SendMessageAsync(InitQMessages.WxTransfer, TransferOrder.Id.ToString());
+                    }
+                    catch (Exception)
+                    {
+
+                        throw;
+                    }
+                    finally
+                    {
+                        //閲婃斁
+                        await _redisService.TryUnLock(StaticStringDef.TransferMoneyLockKey + Param.UserID.ToString());
+                    }
+
+
+                }
+                else
+                {
+                    throw Oops.Oh("绯荤粺绻佸繖锛岀◢鍚庨噸璇�");
+                }
+
+            }
+
+           
+            return TransferOrder;
+
+
+
+
+        }
+        /// <summary>
+        /// 璁剧疆涓哄鐞嗙姸鎬�
+        /// </summary>
+        /// <param name="remak"></param>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpGet]
+        [ApiExplorerSettings(IgnoreApi = true)]
+        public  async Task<bool > SetOk([FromQuery] string remark,[FromQuery] string id)
+        {
+            if(string.IsNullOrEmpty(remark))
+            {
+                throw Oops.Oh("蹇呴』瑕佹湁澶囨敞淇℃伅");
+
+            }
+            if (string.IsNullOrEmpty(id))
+            {
+                throw Oops.Oh("蹇呴』鏈塈D淇℃伅");
+
+            }
+            var WeChatTransferOrderwork = new BaseRepository<WeChatTransferOrder>();
+            var oder= await WeChatTransferOrderwork.GetByIdAsync(id.toInt());
+            if(oder == null)
+            {
+                throw Oops.Oh("娌℃湁鎵惧埌璁㈠崟");
+            }
+
+            if(oder.IsSetOK== true)
+            {
+                throw Oops.Oh("宸茬粡澶勭悊浜�");
+            }
+            oder.IsSetOK = true;
+            oder.RemakeDes = remark;
+            oder.UpDataBy = "API";
+            oder.UpDataTime= DateTime.Now;
+            await WeChatTransferOrderwork.UpdateAsync(oder);
+
+            return true;
+
+
+
+        }
+
 
     }
     /// <summary>
@@ -357,6 +893,11 @@
         /// </summary>
         public int PageSize { get; set; }
 
+        /// <summary>
+        /// 鏄惁鐗规畩澶勭悊姣斿鏀粯澶辫触鍚庡凡缁忓鐞嗕负鍏朵粬鎯呭喌
+        /// </summary>
+        public bool? IsSetOK { get; set; } 
+
     }
 
     public class TransferOderOut
@@ -364,6 +905,42 @@
         public List<WeChatTransferOrder> listdata { get; set; }
         public int TotalCount { get; set; }
     }
+    /// <summary>
+    /// 
+    /// </summary>
+    public class CreatTransferOderIN
+    {
+        /// <summary>
+        ///  鎻愮幇閲戦
+        /// </summary>
+        [Required]
+        public decimal Money { get; set; }
+        /// <summary>
+        /// 鎻愮幇鐢ㄦ埛
+        /// </summary>
+        [Required]
+        public int UserID {  get; set; }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        [Required]
+        public string Remake{ get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔key
+        /// </summary>
+        [Required]
+        public string Key { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍏宠仈鏀剁泭
+        /// </summary>
+        [Required]
+        public Boolean HasAboutReCome {  get; set; }
+
+      
+
+    }
 
 }
diff --git a/cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs b/cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs
index 79e78d8..bec1437 100644
--- a/cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs
+++ b/cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs
@@ -155,6 +155,31 @@
         /// </summary>
         [Navigate(NavigateType.OneToMany,nameof(WeChatTransferItem.WeChatTransferOrderID))]
         public List<WeChatTransferItem> TransferDetailList { get; set; }
+
+        /// <summary>
+        /// 鍐嶆鍙戣捣鏃� 鐨勬弿杩�
+        /// </summary>
+        [SugarColumn(ColumnDescription = "鍏朵粬鎻忚堪", IsNullable = true)]
+        public string? RemakeDes { get; set; }
+        /// <summary>
+        /// 鏄惁閲嶆柊鍙戣捣鏀粯锛屽綋鏀粯澶辫触鍚庯紝瓒呭嚭閲嶆柊鐨勬敮浠樺崟澶辫触鍚庯紝闇�瑕侀噸鏂版洿鎹㈠崟鍙烽噸鏂板彂璧锋柊鐨勬敮浠樿姹傦紝閲嶆柊鍙戣捣鏀粯璇锋眰鍗�
+        /// </summary>
+        [SugarColumn(ColumnDescription = "鏄噸鏂板彂璧风殑鏀粯璁㈠崟", IsNullable = true)]
+        public int? WeChatTransferOrderPrId { get; set; }
+
+
+        /// <summary>
+        /// 閲嶆柊鏀粯璁㈠崟鍒楄〃
+        /// </summary>
+        [Navigate(NavigateType.OneToMany, nameof(WeChatTransferOrderPrId))]
+        public List<WeChatTransferOrder>? AgWeChatTransferOrders { get; set; }
+
+        /// <summary>
+        /// 鏄惁宸茬粡瀹屾垚澶勭悊  榛樿鏈鐞�
+        /// </summary>
+        [SugarColumn(ColumnDescription = "鏄惁宸茬粡瀹屾垚澶勭悊", DefaultValue ="0")]
+        public bool   IsSetOK { get; set; }= false;
+
     }
 
 

--
Gitblit v1.9.1