| | |
| | | using cylsg.Core; |
| | | using cylsg.Model.TransferOrder; |
| | | using cylsg.Model.UserModel; |
| | | using cylsg.Model.utilityViewModel; |
| | | using cylsg.utility; |
| | | using cylsg.utility.Extend; |
| | | using Cylsg.Filter; |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using TencentCloud.Ame.V20190916.Models; |
| | | using TencentCloud.Domain.V20180808.Models; |
| | | using static SKIT.FlurlHttpClient.Wechat.Api.Models.ChannelsLeadsGetLeadsInfoByComponentIdResponse.Types; |
| | | |
| | | namespace cylsg.Application.Transfer |
| | |
| | | } |
| | | if (string.IsNullOrEmpty(user.WxOpenId)) |
| | | { |
| | | throw Oops.Oh($"用户微信OpenID确实"); |
| | | throw Oops.Oh($"用户微信确认失败"); |
| | | } |
| | | var uw = await rs.GetFirstAsync(x => x.UserId == userid); |
| | | if (uw == null) |
| | |
| | | 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.BatchId == null); |
| | | SearchList= SearchList.And(x =>( x.FailNum >0||x.BatchStatus!= "FINISHED")||(x.BatchStatus==null&&x.ErrorCode== "NOT_ENOUGH")||x.FailAmount>0); //NOT_ENOUGH 是账户没有钱 |
| | | else |
| | | SearchList= SearchList.And(x => x.BatchId != null); |
| | | var data = await WeChatTransferOrderwork.GetPageListAsync(SearchList, pageModel); |
| | | //有一笔大余0 的视为失败 |
| | | 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) |
| | | },true).ToPageListAsync(pageModel.PageIndex, pageModel.PageSize,pageModel.TotalCount); |
| | | //var data = await WeChatTransferOrderwork.GetPageListAsync(SearchList, pageModel); |
| | | |
| | | return new TransferOderOut |
| | | { |
| | |
| | | |
| | | } |
| | | |
| | | /// <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== "对应单号已超出重试期,请查单确认后决定是否换单请求")|| (TOrder.ErrorCode == "NOT_ENOUGH")||(TOrder.FailAmount>0))) |
| | | { |
| | | //不满足冲洗支付要求 |
| | | throw Oops.Oh("不满足重新支付要求"); |
| | | } |
| | | |
| | | var rs = new BaseRepository<UserWorker>(); |
| | | var userid = TOrder.UserID; |
| | | decimal Money = 0; |
| | | |
| | | if (TOrder.FailAmount==null) |
| | | { |
| | | decimal overTotal = 0; |
| | | if (TOrder.BatchId == null) |
| | | { |
| | | overTotal = 0;//没有支付单,证明没有支付 |
| | | } |
| | | else |
| | | overTotal = (TOrder.SuccessAmount??0)/100m; |
| | | |
| | | |
| | | //这个是没有创建提交单 按原价重新支付 |
| | | Money = ((TOrder.TotalAmount??0)/100m)-overTotal; |
| | | |
| | | } |
| | | else |
| | | 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) && Money<= (uw.TiXianZonge ?? 0)) |
| | | { |
| | | //满足条件,发起支付 这里不判断支付金额大鱼可提现余额 |
| | | 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 = "重新简单支付API"; |
| | | 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("必须有ID信息"); |
| | | |
| | | } |
| | | 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> |
| | | /// 获取列表详情 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | [AllowAnonymous] |
| | | public async Task<RetPageData<WeChatTransferOrder>> GetTransferOrder(SSPageByWhereOrder Param) |
| | | { |
| | | if (Param.Page == null) |
| | | throw Oops.Oh("参数错误"); |
| | | |
| | | Expression<Func<WeChatTransferOrder, bool>> where = null; |
| | | |
| | | |
| | | if (!string.IsNullOrEmpty( Param.Where as string)) |
| | | { |
| | | //where = CommonHelper.FormatWhereExpression<WeChatTransferOrder>(Param.Where); |
| | | where = CommonHelper.FormatWhereExpression<WeChatTransferOrder>(Param.Where as string); |
| | | |
| | | } |
| | | Expression<Func<WeChatTransferOrder, object>> order = null; |
| | | if (Param.Order?.Name!=null) |
| | | { |
| | | order = CommonHelper.FormatPropertyExpression<WeChatTransferOrder>(Param.Order.Name); |
| | | |
| | | } |
| | | RefAsync<int> title = 0; |
| | | var BR = new BaseRepository<WeChatTransferOrder>(); |
| | | var data= await BR.AsQueryable().Includes(x=>x.user,u=>u.Worek).Select(x=>new WeChatTransferOrder |
| | | { |
| | | UserIDCode= x.user.Worek.IdCode, |
| | | UserName=x.user.Worek.name, |
| | | TotalAmount=x.TotalAmount, |
| | | TotalNum=x.TotalNum, |
| | | BatchId=x.BatchId, |
| | | SuccessNum=x.SuccessNum, |
| | | OutBatchNumber=x.OutBatchNumber, |
| | | BatchName = x.BatchName, |
| | | BatchStatus=x.BatchStatus, |
| | | UserID= x.UserID, |
| | | UpDataTime=x.UpDataTime, |
| | | YiTiXianGz=x.user.Worek.YiTiXianJine, |
| | | ZhongGz=x.user.Worek.TiXianZonge, |
| | | ItCode=x.user.ItCode, |
| | | SuccessAmount= x.SuccessAmount, |
| | | FailAmount=x.FailAmount |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }).MergeTable().WhereIF(where != null, where).OrderByIF(order!=null,order,Param.Order?.Des?? OrderByType.Asc).ToPageListAsync(Param.Page.PageIndex,Param.Page.PageSize, title); |
| | | |
| | | |
| | | |
| | | Param.Page.TotalCount = title; |
| | | |
| | | return new RetPageData<WeChatTransferOrder>() |
| | | { |
| | | data= data, |
| | | Page=Param.Page, |
| | | }; |
| | | ; } |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// |
| | | /// 收索 |
| | | /// </summary> |
| | | public class SearchTransferOder |
| | | { |
| | |
| | | /// </summary> |
| | | public int PageSize { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否特殊处理比如支付失败后已经处理为其他情况 |
| | | /// </summary> |
| | | public bool? IsSetOK { get; set; } |
| | | |
| | | } |
| | | |
| | | public class TransferOderOut |
| | |
| | | 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; } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |