Esempio n. 1
0
        /// <summary>
        /// 储值支付
        /// </summary>
        /// <param name="orderObj"></param>
        /// <param name="order"></param>
        /// <param name="aid"></param>
        /// <param name="saveMoneyUser"></param>
        /// <param name="sbUpdateGoodCartSql"></param>
        /// <param name="reductionCart"></param>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public object PayOrderByChuzhi(object orderObj, int aid, SaveMoneySetUser saveMoneyUser, TransactionModel tran, ref int orderId)
        {
            QiyeGoodsOrder order = (QiyeGoodsOrder)orderObj;
            //储值支付 扣除预存款金额并生成消费记录
            //添加储值日志
            SaveMoneySetUserLog userLog = new SaveMoneySetUserLog()
            {
                AppId          = saveMoneyUser.AppId,
                UserId         = order.UserId,
                MoneySetUserId = saveMoneyUser.Id,
                Type           = -1,
                BeforeMoney    = saveMoneyUser.AccountMoney,
                AfterMoney     = saveMoneyUser.AccountMoney - order.BuyPrice,
                ChangeMoney    = order.BuyPrice,
                ChangeNote     = $" 购买商品,订单号:{order.OrderNum} ",
                CreateDate     = DateTime.Now,
                State          = 1,
                AId            = order.AId,
            };

            tran.Add(Utils.BuildAddSqlS(userLog, "OrderId", "(select LAST_INSERT_ID())", SaveMoneySetUserLogBLL.SingleModel.TableName, SaveMoneySetUserLogBLL.SingleModel.arrProperty));

            //储值扣费
            tran.Add($" update SaveMoneySetUser set AccountMoney = AccountMoney - {order.BuyPrice} where id =  {saveMoneyUser.Id} ; ");

            if (!ExecuteTransactionDataCorect(tran.sqlArray, tran.ParameterArray))
            {
                log4net.LogHelper.WriteInfo(this.GetType(), "储值支付:操作失败" + Newtonsoft.Json.JsonConvert.SerializeObject(tran));
                return("");
            }

            QiyeStore store = QiyeStoreBLL.SingleModel.GetModel(order.StoreId);

            if (store != null)
            {
                //清除商品缓存
                QiyeGoodsBLL.SingleModel.RemoveEntGoodListCache(store.Aid);
            }
            orderId = 1;

            order = GetModelByOrderNum(order.OrderNum);
            if (order == null)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), "储值支付:生成订单失败");
                return("");
            }

            //发送支付成功通知给用户
            object orderData = TemplateMsg_Miniapp.QiyeGetTemplateMessageData(order, SendTemplateMessageTypeEnum.企业智推版订单支付成功通知);

            TemplateMsg_Miniapp.SendTemplateMessage(order.UserId, SendTemplateMessageTypeEnum.企业智推版订单支付成功通知, TmpType.企业智推版, orderData);

            //发送支付成功公众号通知给商家
            TemplateMsg_Gzh.SendQiyePaySuccessTemplateMessage(order);

            return(new { postdata = order.OrderNum, orderid = 0, dbOrder = order.Id });
        }
Esempio n. 2
0
        /// <summary>
        /// 餐饮储值支付 退款
        /// </summary>
        /// <param name="dbOrder"></param>
        /// <param name="saveMoneyUser"></param>
        /// <returns></returns>
        public bool FoodSaveMoneyReFundQueue(FoodGoodsOrder dbOrder, SaveMoneySetUser saveMoneyUser, int oldState)
        {
            if (saveMoneyUser == null || saveMoneyUser.Id <= 0)
            {
                return(false);
            }

            //回退库存
            if (!FoodGoodsOrderBLL.SingleModel.updateStock(dbOrder, oldState))
            {
                return(false);
            }

            TransactionModel tran = new TransactionModel();

            tran.Add(SaveMoneySetUserLogBLL.SingleModel.BuildAddSql(new SaveMoneySetUserLog()
            {
                AppId          = saveMoneyUser.AppId,
                UserId         = dbOrder.UserId,
                MoneySetUserId = saveMoneyUser.Id,
                Type           = 1,
                BeforeMoney    = saveMoneyUser.AccountMoney,
                AfterMoney     = saveMoneyUser.AccountMoney + dbOrder.BuyPrice,
                ChangeMoney    = dbOrder.BuyPrice,
                ChangeNote     = $" 购买商品,订单号:{dbOrder.OrderNum} ",
                CreateDate     = DateTime.Now,
                State          = 1
            }));
            saveMoneyUser.AccountMoney += dbOrder.BuyPrice;
            tran.Add($" update SaveMoneySetUser set AccountMoney = AccountMoney + {dbOrder.BuyPrice} where id =  {saveMoneyUser.Id} ; ");
            tran.Add($" update foodgoodsorder set state = {(int)miniAppFoodOrderState.已退款 },outOrderDate = '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',Remark = @Remark where Id = {dbOrder.Id} and state <> {(int)miniAppFoodOrderState.已退款 } ; ", new MySqlParameter[] { new MySqlParameter("@Remark", dbOrder.Remark) });//防止重复退款

            //记录订单退款日志
            tran.Add(FoodGoodsOrderLogBLL.SingleModel.BuildAddSql(new FoodGoodsOrderLog()
            {
                GoodsOrderId = dbOrder.Id, UserId = dbOrder.UserId.ToString(), LogInfo = $" 订单储值支付,退款成功:{dbOrder.BuyPrice * 0.01} 元 ", CreateDate = DateTime.Now
            }));
            return(ExecuteTransaction(tran.sqlArray, tran.ParameterArray));
        }
Esempio n. 3
0
        /// <summary>
        /// 创建预约付费订单
        /// </summary>
        /// <param name="aid">小程序aid</param>
        /// <param name="uid">userId</param>
        /// <param name="remark">预约商品信息Json字符串 EntFormRemark</param>
        /// <returns></returns>
        public EntGoodsOrder CreateOrder(int aid, int userId, Store store, string remark, int buyMode, out string msg)
        {
            EntGoodsOrder order = null;

            try
            {
                EntFormRemark formRemark = JsonConvert.DeserializeObject <EntFormRemark>(remark);
                EntGoods      goods      = EntGoodsBLL.SingleModel.GetModel(formRemark.goods.id);
                if (goods == null)
                {
                    msg = "订单生成失败:商品信息不存在";
                    return(order);
                }
                //商品标价
                int originalPrice = originalPrice = Convert.ToInt32(!string.IsNullOrWhiteSpace(formRemark.attrSpacStr) ? goods.GASDetailList.First(x => x.id.Equals(formRemark.attrSpacStr)).originalPrice * 100 : goods.originalPrice * 100);
                //商品未打折价格
                int price = Convert.ToInt32(!string.IsNullOrWhiteSpace(formRemark.attrSpacStr) ? goods.GASDetailList.First(x => x.id.Equals(formRemark.attrSpacStr)).price * 100 : goods.price * 100);
                //清单
                EntGoodsCart goodsCar = new EntGoodsCart
                {
                    NotDiscountPrice = price,
                    originalPrice    = originalPrice,
                    GoodName         = goods.name,
                    FoodGoodsId      = goods.id,
                    SpecIds          = formRemark.attrSpacStr,
                    Count            = formRemark.count,
                    Price            = price,
                    SpecInfo         = formRemark.SpecInfo,
                    SpecImg          = formRemark.SpecImg,//规格图片
                    UserId           = userId,
                    CreateDate       = DateTime.Now,
                    State            = 0,
                    GoToBuy          = 1,
                    aId  = aid,
                    type = (int)EntGoodCartType.预约表单
                };
                goodsCar.Id = Convert.ToInt32(EntGoodsCartBLL.SingleModel.Add(goodsCar));
                if (goodsCar.Id <= 0)
                {
                    msg = "订单生成失败:购物车添加失败";
                    return(order);
                }
                C_UserInfo userInfo = C_UserInfoBLL.SingleModel.GetModel(userId);
                if (userInfo == null)
                {
                    msg = "订单生成失败:用户信息不存在";
                    return(order);
                }
                XcxAppAccountRelation xcxAppAccount = XcxAppAccountRelationBLL.SingleModel.GetModel(aid);
                if (xcxAppAccount == null)
                {
                    msg = "订单生成失败:小程序信息不存在";
                    return(order);
                }
                int buyPrice = 0;
                if (store.funJoinModel.YuyuePayType == 0)//固定金额付费
                {
                    buyPrice = store.funJoinModel.YuyuePayCount * 100 * goodsCar.Count;
                }
                else
                {
                    double priceData = goodsCar.Price * goodsCar.Count * store.funJoinModel.YuyuePayCount * 0.01;
                    buyPrice = Convert.ToInt32(Math.Ceiling(priceData));
                }
                order = new EntGoodsOrder()
                {
                    BuyPrice   = buyPrice,
                    GoodsGuid  = goodsCar.FoodGoodsId.ToString(),
                    UserId     = userInfo.Id,
                    CreateDate = DateTime.Now,
                    OrderType  = (int)EntOrderType.预约付费订单,
                    QtyCount   = goodsCar.Count,
                    aId        = aid,
                    BuyMode    = buyMode,
                };
                order.Id = Convert.ToInt32(EntGoodsOrderBLL.SingleModel.Add(order));
                if (order.Id <= 0)
                {
                    msg = "订单生成失败:生成失败";
                    return(null);
                }
                //将订单id添加到清单
                goodsCar.GoodsOrderId = order.Id;
                goodsCar.State        = 1;
                EntGoodsCartBLL.SingleModel.Update(goodsCar, "state,goodsorderid");

                //生成对外订单号
                string outTradeNo = order.Id.ToString();
                if (outTradeNo.Length >= 3)
                {
                    outTradeNo = outTradeNo.Substring(outTradeNo.Length - 3, 3);
                }
                else
                {
                    outTradeNo.PadLeft(3, '0');
                }
                outTradeNo     = $"{DateTime.Now.ToString("yyyyMMddHHmm")}{outTradeNo}";
                order.OrderNum = outTradeNo;
                if (order.BuyMode == (int)miniAppBuyMode.微信支付)
                {
                    CityMordersBLL cityMordersBLL = new CityMordersBLL();
                    //创建微信订单
                    CityMorders cityMorders = cityMordersBLL.CreateCityMorder((int)ArticleTypeEnum.EntSubscribeFormPay, (int)ArticleTypeEnum.EntSubscribeFormPay, order.BuyPrice, 99, aid, userInfo.Id, userInfo.NickName, order.Id, xcxAppAccount.AppId, xcxAppAccount.Title);
                    if (cityMorders == null)
                    {
                        msg = "订单生成失败:生成微信订单失败";
                        return(null);
                    }
                    order.OrderId = cityMorders.Id;
                    if (!EntGoodsOrderBLL.SingleModel.Update(order, "orderid,OrderNum"))
                    {
                        msg = "订单生成失败:微信支付错误";
                        return(null);
                    }
                    msg = string.Empty;
                    return(order);
                }
                else if (order.BuyMode == (int)miniAppBuyMode.储值支付)
                {
                    SaveMoneySetUser saveMoneyUser = SaveMoneySetUserBLL.SingleModel.getModelByUserId(xcxAppAccount.AppId, userInfo.Id);
                    if (saveMoneyUser == null || saveMoneyUser.AccountMoney < order.BuyPrice)
                    {
                        msg = "订单生成失败:预存款余额不足";
                        return(null);
                    }
                    if (!SaveMoneySetUserBLL.SingleModel.paySubscribeFromOrderBySaveMoneyUser(order, saveMoneyUser))
                    {
                        msg = "订单生成失败:储值支付失败";
                        return(null);
                    }
                    msg = string.Empty;
                    return(order);
                }
                else
                {
                    msg = "订单生成失败:支付方式错误";
                    return(null);
                }
            }
            catch
            {
                msg = "订单生成失败:remark error";
                return(order);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 砍价退款(照搬后台的)
        /// </summary>
        /// <param name="bargainUser"></param>
        /// <param name="bargain"></param>
        /// <param name="appId"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public bool BargainReFundQueue(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;
                SaveMoneySetUser 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 = BargainUserBLL.SingleModel.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 = _cityMordersBLL.GetModel(bargainUser.CityMordersId);
                if (order == null)
                {
                    msg = "订单信息有误!";
                    return(isok);
                }
                bargainUser.refundFee = bargainUser.CurrentPrice + bargain.GoodsFreight;
                if (BargainUserBLL.SingleModel.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(base.Add(reModel));
                        if (funid > 0)
                        {
                            object orderData = TemplateMsg_Miniapp.BargainGetTemplateMessageData(bargainUser, SendTemplateMessageTypeEnum.价订单退款通知, "商家操作退款");
                            TemplateMsg_Miniapp.SendTemplateMessage(bargainUser, SendTemplateMessageTypeEnum.价订单退款通知, orderData);
                            isok = true;
                            msg  = "操作成功,已提交退款申请!";
                            return(isok);
                        }
                        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);
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        ///  订单退款
        /// </summary>
        /// <param name="item"></param>
        /// <param name="oldState"></param>
        /// <param name="BuyMode">默认微信支付</param>
        /// <param name="isPartOut">是否部分退款</param>
        /// <returns></returns>
        public bool EntReFundQueue(EntGoodsOrder item, int oldState, int BuyMode = (int)miniAppBuyMode.微信支付, int?newState = null, bool isPartOut = false)
        {
            //重新加回库存
            if (EntGoodsOrderBLL.SingleModel.updateStock(item, oldState))
            {
                int money = isPartOut ? item.refundFee : item.BuyPrice;//兼容多版本,目前只有专业版订单有部分退款
                item.refundFee = money;
                if (BuyMode == (int)miniAppBuyMode.微信支付)
                {
                    try
                    {
                        item.outOrderDate = DateTime.Now;
                        if (item.BuyPrice == 0)  //金额为0时,回滚库存后,默认退款成功
                        {
                            item.State = (int)MiniAppEntOrderState.退款成功;
                        }
                        else
                        {
                            CityMorders order = _cityMordersBLL.GetModel(item.OrderId);
                            item.State = (int)MiniAppEntOrderState.退款中;
                            if (newState.HasValue)
                            {
                                item.State = newState.Value;
                            }
                            if (order == null)
                            {
                                item.State = (int)MiniAppEntOrderState.退款失败;
                                EntGoodsOrderBLL.SingleModel.Update(item, "State,outOrderDate,Remark,refundFee");
                                return(false);
                            }
                            //微信支付
                            ReFundQueue reModel = new ReFundQueue
                            {
                                minisnsId = -5,
                                money     = item.refundFee,
                                orderid   = order.Id,
                                traid     = order.trade_no,
                                addtime   = DateTime.Now,
                                note      = "小程序行业版退款",
                                retype    = 1
                            };
                            base.Add(reModel);
                        }
                        bool isSuccess = EntGoodsOrderBLL.SingleModel.Update(item, "State,outOrderDate,Remark,refundFee");
                        if (isSuccess)
                        {
                            //发给用户退款通知
                            object orderData = TemplateMsg_Miniapp.EnterpriseGetTemplateMessageData(item, SendTemplateMessageTypeEnum.专业版订单退款通知, "商家操作退款");
                            TemplateMsg_Miniapp.SendTemplateMessage(item.UserId, SendTemplateMessageTypeEnum.专业版订单退款通知, TmpType.小程序专业模板, orderData);
                        }
                    }
                    catch (Exception ex)
                    {
                        log4net.LogHelper.WriteInfo(GetType(), $"{ex.Message} xxxxxxxxxxxxxxxx小程序餐饮退款订单插入队列失败 ID={item.Id}");
                    }
                }
                else
                {
                    XcxAppAccountRelation r = XcxAppAccountRelationBLL.SingleModel.GetModel(item.aId);
                    if (r == null)
                    {
                        return(false);
                    }

                    SaveMoneySetUser saveMoneyUser = SaveMoneySetUserBLL.SingleModel.getModelByUserId(r.AppId, item.UserId);
                    TransactionModel tran          = new TransactionModel();
                    tran.Add(SaveMoneySetUserLogBLL.SingleModel.BuildAddSql(new SaveMoneySetUserLog()
                    {
                        AppId          = r.AppId,
                        UserId         = item.UserId,
                        MoneySetUserId = saveMoneyUser.Id,
                        Type           = 1,
                        BeforeMoney    = saveMoneyUser.AccountMoney,
                        AfterMoney     = saveMoneyUser.AccountMoney + item.refundFee,
                        ChangeMoney    = item.refundFee,
                        ChangeNote     = $"专业版购买商品退款,订单号:{item.OrderNum} ",
                        CreateDate     = DateTime.Now,
                        State          = 1
                    }));

                    item.State = (int)MiniAppEntOrderState.退款成功;
                    if (newState.HasValue)
                    {
                        item.State = newState.Value;
                    }
                    tran.Add($" update SaveMoneySetUser set AccountMoney = AccountMoney + {item.refundFee} where id =  {saveMoneyUser.Id} ; ");
                    tran.Add($" update EntGoodsOrder set State = {item.State },outOrderDate = '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}',Remark = @Remark where Id = {item.Id} and state <> {item.State} ; ",
                             new MySqlParameter[] { new MySqlParameter("@Remark", item.Remark) });//防止重复退款

                    //记录订单储值支付退款日志
                    tran.Add(EntGoodsOrderLogBLL.SingleModel.BuildAddSql(new EntGoodsOrderLog()
                    {
                        GoodsOrderId = item.Id, UserId = item.UserId, LogInfo = $" 储值支付订单退款成功:{item.refundFee * 0.01} 元 ", CreateDate = DateTime.Now
                    }));
                    bool isSuccess = ExecuteTransaction(tran.sqlArray, tran.ParameterArray);

                    if (isSuccess)
                    {
                        //发给用户退款通知
                        object orderData = TemplateMsg_Miniapp.EnterpriseGetTemplateMessageData(item, SendTemplateMessageTypeEnum.专业版订单退款通知, "商家操作退款");
                        TemplateMsg_Miniapp.SendTemplateMessage(item.UserId, SendTemplateMessageTypeEnum.专业版订单退款通知, TmpType.小程序专业模板, orderData);
                    }
                    return(isSuccess);
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }
Esempio n. 6
0
        /// <summary>
        /// 足浴版退款
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="orderInfo"></param>
        /// <returns></returns>
        public bool ZYReFundQueue(string appId, EntGoodsOrder orderInfo, ServiceTime serviceTime)
        {
            bool result = false;

            if (orderInfo == null || orderInfo.Id <= 0)
            {
                return(result);
            }
            orderInfo.outOrderDate = DateTime.Now;
            if (orderInfo.BuyMode == (int)miniAppBuyMode.储值支付)
            {
                var saveMoneyUser = new SaveMoneySetUser();
                saveMoneyUser = SaveMoneySetUserBLL.SingleModel.getModelByUserId(appId, orderInfo.UserId);
                if (saveMoneyUser == null || saveMoneyUser.Id <= 0)
                {
                    return(result);
                }

                TransactionModel tran = new TransactionModel();
                tran.Add(SaveMoneySetUserLogBLL.SingleModel.BuildAddSql(new SaveMoneySetUserLog()
                {
                    AppId          = saveMoneyUser.AppId,
                    UserId         = orderInfo.UserId,
                    MoneySetUserId = saveMoneyUser.Id,
                    Type           = 1,
                    BeforeMoney    = saveMoneyUser.AccountMoney,
                    AfterMoney     = saveMoneyUser.AccountMoney + orderInfo.BuyPrice,
                    ChangeMoney    = orderInfo.BuyPrice,
                    ChangeNote     = $" 购买商品,订单号:{orderInfo.OrderNum} ",
                    CreateDate     = DateTime.Now,
                    State          = 1
                }));
                saveMoneyUser.AccountMoney += orderInfo.BuyPrice;
                tran.Add($" update SaveMoneySetUser set AccountMoney = AccountMoney + {orderInfo.BuyPrice} where id =  {saveMoneyUser.Id} ; ");
                tran.Add($" update EntGoodsOrder set state = {(int)MiniAppEntOrderState.退款成功 },outOrderDate = '{orderInfo.outOrderDate.ToString("yyyy-MM-dd HH:mm:ss")}',Remark = @Remark where Id = {orderInfo.Id} and state <> {(int)MiniAppEntOrderState.退款成功 } ; ", new MySqlParameter[] { new MySqlParameter("@Remark", orderInfo.Remark) });//防止重复退款
                if (serviceTime != null)
                {
                    tran.Add($"update servicetime set time='{serviceTime.time}' where id={serviceTime.Id}");//取消已预订的技师服务时间
                }
                //记录订单退款日志
                tran.Add(EntGoodsOrderLogBLL.SingleModel.BuildAddSql(new EntGoodsOrderLog()
                {
                    GoodsOrderId = orderInfo.Id, UserId = orderInfo.UserId, LogInfo = $" 订单储值支付,退款成功:{orderInfo.BuyPrice * 0.01} 元 ", CreateDate = DateTime.Now
                }));
                result = ExecuteTransaction(tran.sqlArray, tran.ParameterArray);
                if (result)
                {
                    object objData = TemplateMsg_Miniapp.FootbathGetTemplateMessageData(orderInfo, SendTemplateMessageTypeEnum.足浴退款通知);
                    TemplateMsg_Miniapp.SendTemplateMessage(orderInfo.UserId, SendTemplateMessageTypeEnum.足浴退款通知, TmpType.小程序足浴模板, objData);
                }
                return(result);
            }

            if (orderInfo.BuyMode == (int)miniAppBuyMode.微信支付)
            {
                CityMorders order = new CityMordersBLL().GetModel(orderInfo.OrderId);
                orderInfo.State = (int)MiniAppEntOrderState.退款中;

                if (order == null)
                {
                    orderInfo.State = (int)MiniAppEntOrderState.退款失败;
                    EntGoodsOrderBLL.SingleModel.Update(orderInfo, "State,outOrderDate,Remark");
                    return(result);
                }

                //微信支付
                ReFundQueue reModel = new ReFundQueue
                {
                    minisnsId = -5,
                    money     = orderInfo.BuyPrice,
                    orderid   = order.Id,
                    traid     = order.trade_no,
                    addtime   = DateTime.Now,
                    note      = "小程序足浴版退款",
                    retype    = 1
                };
                try
                {
                    base.Add(reModel);
                    result = EntGoodsOrderBLL.SingleModel.Update(orderInfo, "State,outOrderDate");
                    return(result);
                }
                catch (Exception ex)
                {
                    log4net.LogHelper.WriteInfo(GetType(), $"{ex.Message} xxxxxxxxxxxxxxxx小程序足浴退款订单插入队列失败 ID={orderInfo.Id}");
                }
            }
            return(result);
        }
Esempio n. 7
0
        /// <summary>
        /// 处理餐饮UU配送回调
        /// </summary>
        /// <param name="orderid"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public bool UUToFoodReturn(UUOrder order)
        {
            bool           isSuccess     = false;
            string         updatesql     = "State";
            FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel(order.OrderId);// and  OrderType ={(int)miniAppFoodOrderType.店内点餐 } ");

            if (foodGoodOrder == null)
            {
                LogHelper.WriteInfo(this.GetType(), "UU配送:找不到餐饮订单");
                return(isSuccess);
            }

            string msg = string.Empty;

            switch (order.State)
            {
            case (int)UUOrderEnum.订单取消:
                isSuccess = base.Update(order, updatesql);
                if (!isSuccess)
                {
                    LogHelper.WriteInfo(this.GetType(), "UU配送:修改系统订单状态出错," + JsonConvert.SerializeObject(order));
                    return(isSuccess);
                }

                //退款接口 abel
                //判断是否是取消订单,取消订单则要执行退款
                if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.微信支付)
                {
                    isSuccess = FoodGoodsOrderBLL.SingleModel.outOrder(foodGoodOrder, foodGoodOrder.State);
                }
                else if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.储值支付)
                {
                    SaveMoneySetUser userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                    isSuccess = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                }

                #region 餐饮退款成功通知 模板消息
                if (isSuccess)
                {
                    object postData2 = FoodGoodsOrderBLL.SingleModel.getTemplateMessageData(foodGoodOrder.Id, SendTemplateMessageTypeEnum.餐饮退款成功通知);
                    TemplateMsg_Miniapp.SendTemplateMessage(foodGoodOrder.UserId, SendTemplateMessageTypeEnum.餐饮退款成功通知, (int)TmpType.小程序餐饮模板, postData2);
                }

                #endregion
                return(isSuccess);

            case (int)UUOrderEnum.单成功:
            case (int)UUOrderEnum.跑男抢单:
            case (int)UUOrderEnum.已到达:
            case (int)UUOrderEnum.已取件:
                updatesql          += ",driver_name,driver_mobile,driver_jobnum";
                foodGoodOrder.State = (int)miniAppFoodOrderState.待送餐;
                if (order.State == (int)UUOrderEnum.已取件)
                {
                    foodGoodOrder.State = (int)miniAppFoodOrderState.待确认送达;
                    #region 发送餐饮订单配送通知 模板消息
                    C_UserInfo userinfo = C_UserInfoBLL.SingleModel.GetModel(foodGoodOrder.UserId) ?? new C_UserInfo();
                    object     postData = FoodGoodsOrderBLL.SingleModel.getTemplateMessageData(foodGoodOrder.Id, SendTemplateMessageTypeEnum.餐饮订单配送通知);
                    TemplateMsg_Miniapp.SendTemplateMessage(userinfo.Id, SendTemplateMessageTypeEnum.餐饮订单配送通知, (int)TmpType.小程序餐饮模板, postData);
                    #endregion
                }
                break;

            case (int)UUOrderEnum.到达目的地:
                foodGoodOrder.State = (int)miniAppFoodOrderState.待确认送达;
                break;

            case (int)UUOrderEnum.收件人已收货:
                foodGoodOrder.State = (int)miniAppFoodOrderState.已完成;
                break;
            }
            isSuccess = base.Update(order, updatesql);
            if (!isSuccess)
            {
                LogHelper.WriteInfo(this.GetType(), "UU配送:修改系统订单状态出错," + JsonConvert.SerializeObject(order));
                return(isSuccess);
            }
            isSuccess = FoodGoodsOrderBLL.SingleModel.Update(foodGoodOrder, "State");

            return(isSuccess);
        }
Esempio n. 8
0
        /// <summary>
        /// 取消订单
        /// </summary>
        /// <returns></returns>
        public ActionResult CancelFNOrder()
        {
            string orderid       = Context.GetRequest("orderid", string.Empty);
            string orderno       = Context.GetRequest("orderno", string.Empty);
            int    cancelcode    = Context.GetRequestInt("cancel_reason_id", 0);
            string cancel_reason = Context.GetRequest("cancel_reason", string.Empty);

            object data = new FNCancelOrderRequestModel()
            {
                partner_order_code       = orderno,
                order_cancel_reason_code = 2,
                order_cancel_code        = cancelcode,
                order_cancel_description = cancel_reason,
                order_cancel_time        = Convert.ToInt64(FNApi.SingleModel.GetTimeStamp()),
            };
            string url    = FNApi._cancelorderapi;
            string result = FNApi.SingleModel.UseFNApi(data, url);

            if (string.IsNullOrEmpty(result))
            {
                return(Json(new { isok = false, msg = "取消订单失败" }, JsonRequestBehavior.AllowGet));
            }

            FNApiReponseModel <object> reposemodel = JsonConvert.DeserializeObject <FNApiReponseModel <object> >(result);

            if (reposemodel == null || reposemodel.code != 200)
            {
                return(Json(new { isok = false, msg = reposemodel == null ?"接口异常":reposemodel.msg }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                FNOrder order = FNOrderBLL.SingleModel.GetModelByOrderNo(orderno);
                if (order == null)
                {
                    return(Json(new { isok = false, msg = "找不到蜂鸟订单" }, JsonRequestBehavior.AllowGet));
                }

                order.state      = (int)FNOrderEnum.已取消;
                order.updatetime = DateTime.Now;
                order.order_cancel_reason_code = 2;
                order.order_cancel_code        = cancelcode;
                order.order_cancel_description = cancel_reason;
                order.order_cancel_time        = FNApi.SingleModel.GetTimeStamp().ToString();
                bool success = FNOrderBLL.SingleModel.Update(order, "state,updatetime,order_cancel_reason_code,order_cancel_code,order_cancel_description,order_cancel_time");

                if (!success)
                {
                    return(Json(new { isok = false, msg = "修改蜂鸟订单状态失败" }, JsonRequestBehavior.AllowGet));
                }

                FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel($" Id = {orderid} ");
                if (foodGoodOrder == null)
                {
                    return(Json(new { isok = false, msg = "蜂鸟配送:找不到订单" }, JsonRequestBehavior.AllowGet));
                }
                //退款接口 abel
                if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.微信支付)
                {
                    success = FoodGoodsOrderBLL.SingleModel.outOrder(foodGoodOrder, foodGoodOrder.State);
                }
                else if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.储值支付)
                {
                    SaveMoneySetUser userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                    success = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                }
            }

            return(Json(new { isok = true, msg = result }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 9
0
        /// <summary>
        /// 处理餐饮快跑者配送回调
        /// </summary>
        /// <param name="orderid"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public bool KPZToFoodReturn(KPZOrder order)
        {
            bool           isSuccess     = false;
            string         updatesql     = "status";
            FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel(order.OrderId);// and  OrderType ={(int)miniAppFoodOrderType.店内点餐 } ");

            if (foodGoodOrder == null)
            {
                LogHelper.WriteInfo(this.GetType(), "快跑者配送:找不到餐饮订单");
                return(isSuccess);
            }

            string msg = string.Empty;

            switch (order.status)
            {
            case (int)KPZOrderEnum.已撤销:
                isSuccess = base.Update(order, updatesql);
                if (!isSuccess)
                {
                    LogHelper.WriteInfo(this.GetType(), "快跑者配送:修改系统订单状态出错," + JsonConvert.SerializeObject(order));
                    return(isSuccess);
                }

                //退款接口 abel
                //判断是否是取消订单,取消订单则要执行退款
                if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.微信支付)
                {
                    isSuccess = FoodGoodsOrderBLL.SingleModel.outOrder(foodGoodOrder, foodGoodOrder.State);
                }
                else if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.储值支付)
                {
                    SaveMoneySetUser userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                    isSuccess = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                }

                #region 餐饮退款成功通知 模板消息
                if (isSuccess)
                {
                    object postData2 = FoodGoodsOrderBLL.SingleModel.getTemplateMessageData(foodGoodOrder.Id, SendTemplateMessageTypeEnum.餐饮退款成功通知);
                    TemplateMsg_Miniapp.SendTemplateMessage(foodGoodOrder.UserId, SendTemplateMessageTypeEnum.餐饮退款成功通知, (int)TmpType.小程序餐饮模板, postData2);
                }

                #endregion
                return(isSuccess);

            case (int)KPZOrderEnum.待发单:
            case (int)KPZOrderEnum.待抢单:
            case (int)KPZOrderEnum.待接单:
                foodGoodOrder.State = (int)miniAppFoodOrderState.待接单;
                break;

            case (int)KPZOrderEnum.取单中:
                updatesql          += ",courier,tel";
                foodGoodOrder.State = (int)miniAppFoodOrderState.待送餐;
                #region 发送餐饮订单配送通知 模板消息
                C_UserInfo userinfo = C_UserInfoBLL.SingleModel.GetModel(foodGoodOrder.UserId) ?? new C_UserInfo();
                object     postData = FoodGoodsOrderBLL.SingleModel.getTemplateMessageData(foodGoodOrder.Id, SendTemplateMessageTypeEnum.餐饮订单配送通知);
                TemplateMsg_Miniapp.SendTemplateMessage(userinfo.Id, SendTemplateMessageTypeEnum.餐饮订单配送通知, (int)TmpType.小程序餐饮模板, postData);
                #endregion
                break;

            case (int)KPZOrderEnum.送单中:
                foodGoodOrder.State = (int)miniAppFoodOrderState.待确认送达;
                break;

            case (int)KPZOrderEnum.已送达:
                foodGoodOrder.State = (int)miniAppFoodOrderState.已完成;
                break;
            }
            isSuccess = base.Update(order, updatesql);
            if (!isSuccess)
            {
                LogHelper.WriteInfo(this.GetType(), "快跑者配送:修改系统订单状态出错," + JsonConvert.SerializeObject(order));
                return(isSuccess);
            }
            isSuccess = FoodGoodsOrderBLL.SingleModel.Update(foodGoodOrder, "State");

            return(isSuccess);
        }
Esempio n. 10
0
        /// <summary>
        /// 蜂鸟订单状态改变回调接口
        /// </summary>
        /// <param name="returnModel"></param>
        /// <returns></returns>
        public ActionResult FNnotis(FNApiReponseModel <string> returnModel)
        {
            if (returnModel == null || returnModel.data == null || returnModel.data.Length == 0)
            {
                LogHelper.WriteInfo(this.GetType(), "蜂鸟回调请求参数为空");
                return(Content(""));
            }

            string datajson             = HttpUtility.UrlDecode(returnModel.data);
            FNAccepterOrderModel data   = JsonConvert.DeserializeObject <FNAccepterOrderModel>(datajson);
            string urlencodedata        = returnModel.data;
            DistributionApiConfig model = DistributionApiConfigBLL.SingleModel.GetModelByRedis(FNApi._fnapi_appid);
            string signature            = FNApi.SingleModel.GetSign(model.access_token, urlencodedata, returnModel.salt);

            if (returnModel.signature != signature || data == null)
            {
                LogHelper.WriteInfo(this.GetType(), "蜂鸟配送回调签名错误json:" + JsonConvert.SerializeObject(returnModel) + ",解码后:" + datajson);
                return(Content(""));
            }

            FNOrder order = FNOrderBLL.SingleModel.GetModelByOrderNo(data.partner_order_code);

            if (order == null)
            {
                log4net.LogHelper.WriteInfo(this.GetType(), $"蜂鸟订单回调:找不到订单【{data.partner_order_code}】");
                return(Content(""));
            }

            order.state                = data.order_status;
            order.updatetime           = DateTime.Now;
            order.carrier_driver_name  = data.carrier_driver_name;
            order.carrier_driver_phone = data.carrier_driver_phone;
            order.description          = data.description;
            bool updatebool = FNOrderBLL.SingleModel.Update(order, "state,updatetime,carrier_driver_name,carrier_driver_phone,description");

            if (updatebool && data.order_status == (int)FNOrderEnum.异常)
            {
                FNOrderRelation orelationmodel = FNOrderRelationBLL.SingleModel.GetModelUOrderNo(order.partner_order_code);
                if (orelationmodel == null)
                {
                    log4net.LogHelper.WriteInfo(this.GetType(), "蜂鸟配送取消订单回调发起退款出错:找不到关联该订单的数据");
                    return(Content("success"));
                }

                bool isSuccess = false;
                switch (orelationmodel.ordertype)
                {
                case (int)TmpType.小程序餐饮模板:
                    FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel($" Id = {orelationmodel.orderid} ");    // and  OrderType ={(int)miniAppFoodOrderType.店内点餐 } ");
                    if (foodGoodOrder == null)
                    {
                        LogHelper.WriteInfo(this.GetType(), "蜂鸟配送:找不到订单");
                        return(Content("success"));
                    }
                    //退款接口 abel
                    if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.微信支付)
                    {
                        isSuccess = FoodGoodsOrderBLL.SingleModel.outOrder(foodGoodOrder, foodGoodOrder.State);
                    }
                    else if (foodGoodOrder.BuyMode == (int)miniAppBuyMode.储值支付)
                    {
                        SaveMoneySetUser userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                        isSuccess = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                    }
                    break;

                case (int)TmpType.小程序专业模板:
                    EntGoodsOrder entorder = EntGoodsOrderBLL.SingleModel.GetModel(orelationmodel.orderid);
                    if (entorder == null)
                    {
                        LogHelper.WriteInfo(this.GetType(), "蜂鸟配送取消订单回调发起退款出错:找不到小程序订单数据");
                        return(Content("success"));
                    }

                    isSuccess = EntGoodsOrderBLL.SingleModel.outOrder(entorder, entorder.State, entorder.BuyMode);
                    if (!isSuccess)
                    {
                        LogHelper.WriteInfo(this.GetType(), "蜂鸟配送取消订单回调发起退款出错:执行退款服务出错");
                        return(Content("success"));
                    }

                    EntGoodsOrderLogBLL.SingleModel.AddLog(entorder.Id, 0, $"蜂鸟:将订单状态改为:{Enum.GetName(typeof(MiniAppEntOrderState), entorder.State)}");
                    break;
                }
            }

            return(Content(""));
        }
Esempio n. 11
0
        public ActionResult addSaveMoneySet(string appid, string openid, int saveMoneySetId)
        {
            if (string.IsNullOrEmpty(appid))
            {
                return(Json(new { isok = false, msg = "获取失败(appid不能为空)" }, JsonRequestBehavior.AllowGet));
            }

            XcxAppAccountRelation r = _xcxAppAccountRelationBLL.GetModel($"AppId='{appid}'");

            if (r == null)
            {
                return(Json(new { isok = false, msg = "获取失败(还未进行授权)" }, JsonRequestBehavior.AllowGet));
            }
            var minisnsId = 0;
            //获取当前小程序模板类型
            var typeSql = $" select type from xcxtemplate where id = {r.TId} ";
            var temp    = Convert.ToInt32(SqlMySql.ExecuteScalar(_xcxAppAccountRelationBLL.connName, CommandType.Text, typeSql, null));

            if (temp == (int)TmpType.小程序电商模板 || temp == (int)TmpType.小程序电商模板测试)
            {
                var store = StoreBLL.SingleModel.GetModelByRid(r.Id) ?? new Store();
                minisnsId = store.Id;
                try
                {
                    store.funJoinModel = JsonConvert.DeserializeObject <StoreConfigModel>(store.configJson);
                }
                catch (Exception)
                {
                    store.funJoinModel = new StoreConfigModel();
                }
                if (!store.funJoinModel.canSaveMoneyFunction)
                {
                    return(Json(new { isok = false, msg = "商家未开启储值优惠功能" }, JsonRequestBehavior.AllowGet));
                }
            }
            else if (temp == (int)TmpType.小程序餐饮模板)
            {
                var food = FoodBLL.SingleModel.GetModel($" appId = {r.Id} ") ?? new Food();
                minisnsId = food.Id;
                if (!food.funJoinModel.canSaveMoneyFunction)
                {
                    return(Json(new { isok = false, msg = "商家未开启储值优惠功能" }, JsonRequestBehavior.AllowGet));
                }
            }

            var model = SaveMoneySetBLL.SingleModel.GetModel(saveMoneySetId, r.AppId);

            if (model == null || model.State != 1)//要是上架状态的储值项目
            {
                return(Json(new { isok = false, msg = "找不到储值项目" }, JsonRequestBehavior.AllowGet));
            }
            var userInfo = C_UserInfoBLL.SingleModel.GetModelByAppId_OpenId(appid, openid);

            if (userInfo == null)
            {
                return(Json(new { isok = -1, msg = "用户不存在" }, JsonRequestBehavior.AllowGet));
            }
            if (model == null || model.State != 1)//要是上架状态的储值项目
            {
                return(Json(new { isok = false, msg = "找不到储值项目" }, JsonRequestBehavior.AllowGet));
            }
            var user = SaveMoneySetUserBLL.SingleModel.getModelByUserId(r.AppId, userInfo.Id);

            if (user == null)
            {
                //用户储值账户,若无则开通一个
                user = new SaveMoneySetUser()
                {
                    AppId        = r.AppId,
                    UserId       = userInfo.Id,
                    AccountMoney = 0,
                    CreateDate   = DateTime.Now
                };
                user.Id = Convert.ToInt32(SaveMoneySetUserBLL.SingleModel.Add(user));
                if (user.Id <= 0)
                {
                    return(Json(new { isok = -1, msg = "开通储值账户失败,请重试" }, JsonRequestBehavior.AllowGet));
                }
            }
            //充值记录
            var newLog = new SaveMoneySetUserLog()
            {
                AppId          = r.AppId,
                UserId         = userInfo.Id,
                MoneySetUserId = user.Id,
                Type           = 0,
                BeforeMoney    = user.AccountMoney,
                AfterMoney     = user.AccountMoney + model.AmountMoney,
                ChangeMoney    = model.AmountMoney,
                ChangeNote     = model.SetName,
                CreateDate     = DateTime.Now,
                State          = 0,
                GiveMoney      = model.GiveMoney
            };

            //付款后才去累计预充值金额
            //user.AccountMoney += model.AmountMoney;
            //_miniappsavemoneysetuserBll.Update(user, "AccountMoney");
            newLog.Id = Convert.ToInt32(SaveMoneySetUserLogBLL.SingleModel.Add(newLog));
            //小程序信息
            var xcxconfig = OpenAuthorizerConfigBLL.SingleModel.GetModel($" appid = '{r.AppId}' ");

            #region cityMorder
            string no = WxPayApi.GenerateOutTradeNo();

            CityMorders citymorderModel = new CityMorders
            {
                OrderType      = (int)ArticleTypeEnum.MiniappSaveMoneySet,
                ActionType     = (int)ArticleTypeEnum.MiniappSaveMoneySet,
                Addtime        = DateTime.Now,
                payment_free   = model.JoinMoney,
                trade_no       = no,
                Percent        = 99,//不收取服务费
                userip         = WebHelper.GetIP(),
                FuserId        = userInfo.Id,
                Fusername      = userInfo.NickName,
                orderno        = no,
                payment_status = 0,
                Status         = 0,
                Articleid      = 0,
                CommentId      = 0,
                MinisnsId      = minisnsId, //r.Id,//模板权限表Id
                TuserId        = newLog.Id, //充值记录的ID
                ShowNote       = $" {xcxconfig?.nick_name} 储值项目[{model.SetName}]购买商品支付{(model.JoinMoney * 0.01).ToString("0.00")}元",
                CitySubId      = 0,         //无分销,默认为0
                PayRate        = 1,
                buy_num        = 0,         //无
                appid          = appid,
            };
            var orderid = Convert.ToInt32(_cityMordersBLL.Add(citymorderModel));
            if (orderid <= 0)
            {
                return(Json(new { isok = false, msg = "生成订单失败!" }, JsonRequestBehavior.AllowGet));
            }
            newLog.OrderId = orderid;
            SaveMoneySetUserLogBLL.SingleModel.Update(newLog, "OrderId");
            #endregion

            return(Json(new { isok = true, msg = "获取成功!", orderid = newLog.OrderId }, JsonRequestBehavior.AllowGet));
        }