/// <summary> /// 重新退款 /// </summary> /// <param name="item"></param> /// <param name="oldState"></param> /// <param name="BuyMode">默认微信支付</param> /// <returns></returns> public void ReturnOrderAgain(QiyeGoodsOrder order, ref string msg) { if (order.State != (int)QiyeOrderState.退款失败) { msg = "该订单已在退款中"; return; } TransactionModel tranModel = new TransactionModel(); ReFundQueueBLL reFundQueueBLL = new ReFundQueueBLL(); order.State = (int)QiyeOrderState.退款成功; order.RefundTime = DateTime.Now; if (order.BuyMode == (int)miniAppBuyMode.微信支付) { if (order.BuyPrice > 0) { order.State = (int)QiyeOrderState.退款中; ReFundQueue reFundQueue = reFundQueueBLL.GetModelByOrderId(order.OrderId); if (reFundQueue == null) { msg = "退款:退款队列数据不存在"; return; } reFundQueue.state = 0; tranModel.Add(reFundQueueBLL.BuildUpdateSql(reFundQueue, "state")); } } else if (order.BuyMode == (int)miniAppBuyMode.储值支付) { SaveMoneySetUserBLL.SingleModel.ReturnPrice(order.AppId, order.AId, order.UserId, TmpType.企业智推版, order.BuyPrice, order.OrderNum, ref tranModel, ref msg, true); if (msg.Length > 0) { return; } } else { msg = "退款:无效支付类型"; return; } tranModel.Add($"update QiyeGoodsOrder set state={order.State},RefundTime='{order.RefundTime}' where id={order.Id}"); if (!ExecuteTransactionDataCorect(tranModel.sqlArray, tranModel.ParameterArray)) { msg = "退款:操作失败"; } }
/// <summary> /// 微信退款 /// </summary> /// <param name="order"></param> /// <param name="msg"></param> /// <param name="tran"></param> /// <returns></returns> public bool RefundMoney(PinGoodsOrder order, int money, ref string msg, TransactionModel tran = null) { bool istran = tran != null; if (!istran) { tran = new TransactionModel(); } CityMorders cityMorder = new CityMordersBLL().GetModel(order.payNo); if (cityMorder == null) { msg = "退款失败,未找到退款的源微信订单"; return(false); } if (cityMorder.payment_status == 0) //微信订单未支付 { msg = "退款失败,该订单未支付"; return(false); } ReFundQueue reModel = new ReFundQueue { minisnsId = -5, money = money, orderid = cityMorder.Id, traid = cityMorder.trade_no, addtime = DateTime.Now, note = "小程序拼享惠退款", retype = 1 }; tran.Add(new ReFundQueueBLL().BuildAddSql(reModel)); if (!istran) { if (!ExecuteTransactionDataCorect(tran.sqlArray, tran.ParameterArray)) { msg = "加入退款队列失败"; return(false); } } msg = "加入退款队列成功,将在1-7个工作日内响应退款"; return(true); }
/// <summary> /// 退款 /// </summary> /// <param name="item"></param> /// <param name="oldState"></param> /// <param name="BuyMode">默认微信支付</param> /// <returns></returns> public void ReturnOrder(QiyeGoodsOrder order, ref string msg) { TransactionModel tranModel = new TransactionModel(); order.State = (int)QiyeOrderState.退款成功; order.RefundTime = DateTime.Now; if (order.BuyMode == (int)miniAppBuyMode.微信支付) { if (order.BuyPrice > 0) { order.State = (int)QiyeOrderState.退款中; CityMorders citymorder = new CityMordersBLL().GetModel(order.OrderId); if (citymorder == null) { msg = "退款:退款数据繁忙"; return; } //微信支付 ReFundQueue reModel = new ReFundQueue { minisnsId = -5, money = citymorder.payment_free, orderid = citymorder.Id, traid = citymorder.trade_no, addtime = DateTime.Now, note = "企业智推版小程序退款", retype = 1 }; tranModel.Add(new ReFundQueueBLL().BuildAddSql(reModel)); } } else if (order.BuyMode == (int)miniAppBuyMode.储值支付) { SaveMoneySetUserBLL.SingleModel.ReturnPrice(order.AppId, order.AId, order.UserId, TmpType.小未平台子模版, order.BuyPrice, order.OrderNum, ref tranModel, ref msg, true); if (msg.Length > 0) { return; } } else { msg = "退款:无效支付类型"; return; } tranModel.Add($"update QiyeGoodsOrder set state={order.State},RefundTime='{order.RefundTime}' where id={order.Id}"); //订单明细 List <QiyeGoodsCart> cartList = QiyeGoodsCartBLL.SingleModel.GetListByOrderIds($"'{order.Id}'"); if (cartList == null || cartList.Count <= 0) { msg = "退款:找不到订单明细"; return; } //更改库存 UpdateGoodsStock(cartList, ref tranModel, ref msg, true, true); if (msg.Length > 0) { return; } if (!ExecuteTransactionDataCorect(tranModel.sqlArray, tranModel.ParameterArray)) { msg = "退款:操作失败"; } //清除商品缓存 QiyeGoodsBLL.SingleModel.RemoveEntGoodListCache(order.AId); }
/// <summary> /// 砍价退款(照搬后台的) /// </summary> /// <param name="bargainUser"></param> /// <param name="bargain"></param> /// <param name="appId"></param> /// <param name="msg"></param> /// <returns></returns> public bool OutOrder(BargainUser bargainUser, Bargain bargain, string appId, out string msg) { bargainUser.State = 2; bargainUser.outOrderDate = DateTime.Now; if (bargainUser.PayType == (int)miniAppBuyMode.储值支付) { bargainUser.refundFee = bargainUser.CurrentPrice + bargain.GoodsFreight; bargainUser.State = 3; var saveMoneyUser = SaveMoneySetUserBLL.SingleModel.getModelByUserId(appId, bargainUser.UserId); TransactionModel tran = new TransactionModel(); tran.Add(SaveMoneySetUserLogBLL.SingleModel.BuildAddSql(new SaveMoneySetUserLog() { AppId = appId, UserId = bargainUser.UserId, MoneySetUserId = saveMoneyUser.Id, Type = 1, BeforeMoney = saveMoneyUser.AccountMoney, AfterMoney = saveMoneyUser.AccountMoney + bargainUser.refundFee, ChangeMoney = bargainUser.refundFee, ChangeNote = $"小程序砍价购买商品[{bargainUser.BName}]退款,订单号:{bargainUser.OrderId} ", CreateDate = DateTime.Now, State = 1 })); tran.Add($" update SaveMoneySetUser set AccountMoney = AccountMoney + {bargainUser.refundFee} where id = {saveMoneyUser.Id} ; "); string updateBargainUser = BuildUpdateSql(bargainUser, "State,outOrderDate,refundFee"); tran.Add(updateBargainUser); bool isok = BargainBLL.SingleModel.ExecuteTransactionDataCorect(tran.sqlArray); if (isok) { object orderData = TemplateMsg_Miniapp.BargainGetTemplateMessageData(bargainUser, SendTemplateMessageTypeEnum.价订单退款通知, "商家操作退款"); TemplateMsg_Miniapp.SendTemplateMessage(bargainUser, SendTemplateMessageTypeEnum.价订单退款通知, orderData); msg = "退款成功,请查看账户余额!"; } else { msg = "退款异常!";//返回订单信息 } return(isok); } else { bool isok = false; CityMorders order = new CityMordersBLL().GetModel(bargainUser.CityMordersId); if (order == null) { msg = "订单信息有误!"; return(isok); } bargainUser.refundFee = bargainUser.CurrentPrice + bargain.GoodsFreight; if (new BargainUserBLL().Update(bargainUser, "State,outOrderDate,refundFee")) { ReFundQueue reModel = new ReFundQueue { minisnsId = -5, money = bargainUser.refundFee, orderid = order.Id, traid = order.trade_no, addtime = DateTime.Now, note = "小程序砍价订单退款", retype = 1 }; try { int funid = Convert.ToInt32(new ReFundQueueBLL().Add(reModel)); if (funid > 0) { object orderData = TemplateMsg_Miniapp.BargainGetTemplateMessageData(bargainUser, SendTemplateMessageTypeEnum.价订单退款通知, "商家操作退款"); TemplateMsg_Miniapp.SendTemplateMessage(bargainUser, SendTemplateMessageTypeEnum.价订单退款通知, orderData); isok = true; msg = "操作成功,已提交退款申请!"; return(isok); // return Json(new { isok = true, msg = "", obj = funid }); } else { isok = false; msg = "退款异常插入队列小于0!"; return(isok); } } catch (Exception ex) { log4net.LogHelper.WriteInfo(GetType(), $"{ex.Message} xxxxxxxxxxxxxxxx小程序砍价退款订单插入队列失败 ID={order.Id}"); isok = false; msg = "退款异常(插入队列失败)!"; return(isok); } } else { isok = false; msg = "退款异常!"; return(isok); } } }
public bool RefundOne(GroupUser item, ref string msg, int type = 0) { //0:微信支付,1:储值卡支付 int paytype = item.PayType; TransactionModel tranmodel = new MiniApp.TransactionModel(); Groups csg = GroupsBLL.SingleModel.GetModel(item.GroupId); if (csg == null) { msg = "小程序拼团商品不存在啦=" + item.GroupId; item.State = (int)MiniappPayState.已失效; Update(item, "State"); return(false); } GroupSponsor gsinfo = GroupSponsorBLL.SingleModel.GetModel(item.GroupSponsorId); if (gsinfo == null)//&& item.IsGroup == 1) { msg = "小程序拼团团购不存在啦=" + item.GroupSponsorId; item.State = (int)MiniappPayState.已失效; Update(item, "State"); return(false); } if (item.BuyPrice <= 0) { msg = "xxxxxxxxxxxxx小程序拼团价格为0不需要退款=" + item.Id; return(false); } if (item.PayState == (int)MiniappPayState.已退款) { msg = "xxxxxxxxxxxxx小程序拼团状态有误,不能退款=" + item.Id + ",paystate=" + item.PayState + "," + (int)MiniappPayState.已退款; return(false); } item.State = (int)MiniappPayState.已退款; //更新用户订单状态 tranmodel.Add($"update GroupUser set State={item.State} where id={item.Id}"); //判断是否是微信支付 if (paytype == 0) { CityMordersBLL mbll = new CityMordersBLL(); CityMorders order = mbll.GetModel(item.OrderId); if (order == null) { msg = "xxxxxxxxxxxxxxxxxx小程序拼团退款查不到支付订单 ID=" + item.Id; item.State = (int)MiniappPayState.已失效; Update(item, "State"); return(false); } //插入退款队列 ReFundQueue reModel = new ReFundQueue(); reModel.minisnsId = -5; reModel.money = item.BuyPrice; reModel.orderid = item.OrderId; reModel.traid = order.trade_no; reModel.addtime = DateTime.Now; reModel.note = "小程序拼团退款"; reModel.retype = 1; tranmodel.Add(new ReFundQueueBLL().BuildAddSql(reModel)); } else if (paytype == 1) { //储值卡退款 tranmodel.Add(SaveMoneySetUserBLL.SingleModel.GetCommandCarPriceSql(item.AppId, item.ObtainUserId, item.BuyPrice, 1, item.OrderId, item.OrderNo).ToArray()); if (tranmodel.sqlArray.Length <= 0) { msg = "xxxxxxxxxxxxxxxxxx拼团储值卡退款失败,ID=" + item.Id; return(false); } } //是店主手动退款不加库存 --统一,只要是退款就加库存 //if (type == 0) { if (gsinfo.State == 2 && item.IsGroup == 1) { msg = "小程序团购成功,不能退款=" + item.GroupSponsorId; return(false); } //退款成功,更新剩余数量 tranmodel.Add($"update groups set RemainNum ={(csg.RemainNum + item.BuyNum)} where id={csg.Id}"); } if (tranmodel.sqlArray.Length <= 0) { msg = "xxxxxxxxxxxxxxxxxx拼团退款失败,ID=" + item.Id; return(false); } if (!base.ExecuteTransaction(tranmodel.sqlArray, tranmodel.ParameterArray)) { msg = "xxxxxxxxxxxxxxxxxx拼团退款事务执行失败,ID=" + item.Id + "sql:" + string.Join(";", tranmodel.sqlArray); return(false); } XcxAppAccountRelation xcx = XcxAppAccountRelationBLL.SingleModel.GetModelByAppid(item.AppId); if (xcx == null) { log4net.LogHelper.WriteError(GetType(), new Exception($"发送模板消息,参数不足,XcxAppAccountRelation_null:appId = {item.AppId}")); return(true); } //发给用户发货通知 object groupData = TemplateMsg_Miniapp.GroupGetTemplateMessageData("商家操作退款", item, SendTemplateMessageTypeEnum.拼团基础版订单退款通知); TemplateMsg_Miniapp.SendTemplateMessage(item.ObtainUserId, SendTemplateMessageTypeEnum.拼团基础版订单退款通知, xcx.Type, groupData); msg = "xxxxxxxxxxxxxxxxxx拼团退款成功,ID=" + item.Id; return(true); }