Exemple #1
0
        /// <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 = "退款:操作失败";
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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);
                }
            }
        }
Exemple #5
0
        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);
        }