예제 #1
0
        public bool PrintOrder(FoodReservation reservation, FoodGoodsOrder foodOrder = null, List <FoodGoodsCart> cartItem = null, Account oper = null)
        {
            Food store = FoodBLL.SingleModel.GetModel(reservation.FoodId);

            if (!store.funJoinModel.reservationPrint)
            {
                return(true);
            }
            List <FoodGoodsOrder> orders = FoodGoodsOrderBLL.SingleModel.GetOrderByReservation(reservation.Id);

            if (orders == null || orders.Count == 0)
            {
                return(false);
            }

            bool printResult = false;
            //打印机列表
            List <FoodPrints> foodPrintList = FoodPrintsBLL.SingleModel.GetList($" foodstoreid = {store.Id} and appId = {store.appId} and state >= 0 ") ?? new List <FoodPrints>();

            if (foodOrder != null && cartItem != null && cartItem.Count > 0)
            {
                printResult = FoodGoodsOrderBLL.SingleModel.PrintOrder(store, foodOrder, cartItem, foodPrintList, oper);
            }
            //else
            //{
            //    foreach (FoodGoodsOrder order in orders)
            //    {
            //        List<FoodGoodsCart> carlist = cartBLL.GetList($" GoodsOrderId={order.Id} and state=1");
            //        printResult = orderBLL.PrintOrder(store, order, carlist, foodPrintList, oper);
            //    }
            //}
            return(printResult);
        }
예제 #2
0
 /// <summary>
 /// 更新为已支付
 /// </summary>
 /// <param name="reservation"></param>
 /// <returns></returns>
 public string UpdateToPay(FoodReservation reservation, FoodGoodsOrder order = null, List <FoodGoodsCart> cartItem = null)
 {
     if (reservation == null || reservation.State != (int)miniAppFoodOrderState.待付款)
     {
         return(string.Empty);
     }
     reservation.State = (int)miniAppFoodOrderState.待接单;
     reservation.Type  = (int)miniAppReserveType.预约支付;
     //打印订单
     PrintOrder(reservation, order, cartItem);
     return(BuildUpdateSql(reservation, "State,Type"));
 }
예제 #3
0
        /// <summary>
        /// 订单退款
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public bool FoodReFundQueue(FoodGoodsOrder item, int oldState)
        {
            item.State        = (int)miniAppFoodOrderState.退款中;
            item.outOrderDate = DateTime.Now;

            //重新加回库存
            if (FoodGoodsOrderBLL.SingleModel.updateStock(item, oldState))
            {
                try
                {
                    //微信退款只在金额大于0的时候去插入申请队列,小于0时直接将状态改为退款成功,并将状态回滚
                    if (item.BuyPrice > 0)
                    {
                        CityMorders order = _cityMordersBLL.GetModel(item.OrderId);
                        if (order == null) //找不到微信订单直接返回退款失败
                        {
                            item.State = (int)miniAppFoodOrderState.退款失败;
                            FoodGoodsOrderBLL.SingleModel.Update(item, "State,outOrderDate,Remark");
                            return(false);
                        }

                        ReFundQueue reModel = new ReFundQueue
                        {
                            minisnsId = -5,
                            money     = item.BuyPrice,
                            orderid   = order.Id,
                            traid     = order.trade_no,
                            addtime   = DateTime.Now,
                            note      = "小程序餐饮订单退款",
                            retype    = 1
                        };
                        base.Add(reModel);
                    }
                    else
                    {
                        item.State = (int)miniAppFoodOrderState.已退款;
                    }

                    FoodGoodsOrderBLL.SingleModel.Update(item, "State,outOrderDate,Remark");
                }
                catch (Exception ex)
                {
                    log4net.LogHelper.WriteInfo(GetType(), $"{ex.Message} xxxxxxxxxxxxxxxx小程序餐饮退款订单插入队列失败 ID={item.Id}");
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }
예제 #4
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));
        }
예제 #5
0
        /// <summary>
        /// 发送预约模板消息
        /// </summary>
        /// <param name="reservation"></param>
        /// <param name="msgState">模板消息状态(接单、退款、取消)</param>
        /// <param name="tmpType">模板消息类型(专业版、餐饮版)</param>
        /// <param name="refundOrder">退款订单(仅退款消息需要)</param>
        /// <param name="refundEntOrder">退款订单(仅退款消息需要)</param>
        /// <returns></returns>
        public bool SendReserveMsg(FoodReservation reservation, SendTemplateMessageTypeEnum msgState, TmpType tmpType, EntGoodsOrder refundEntOrder = null, FoodGoodsOrder refundOrder = null)
        {
            //发送小程序模板消息给用户
            object orderData = TemplateMsg_Miniapp.GetReservationTempMsgData(reservation, msgState, refundOrder: refundOrder, refundEntOrder: refundEntOrder);

            if (orderData == null)
            {
                return(false);
            }
            TemplateMsg_Miniapp.SendTemplateMessage(reservation.UserId, msgState, (int)tmpType, orderData);
            return(true);
        }
예제 #6
0
 /// <summary>
 /// 发送预约(餐饮版)模板消息
 /// </summary>
 /// <param name="reservation"></param>
 /// <param name="msgState">模板消息状态(接单、到店、退款、取消)</param>
 /// <param name="refundOrder">退款订单(仅退款消息需要)</param>
 /// <returns></returns>
 public bool SendReserveFoodMsg(FoodReservation reservation, SendTemplateMessageTypeEnum msgState, FoodGoodsOrder refundOrder = null)
 {
     return(SendReserveMsg(reservation: reservation, msgState: msgState, tmpType: TmpType.小程序餐饮模板, refundOrder: refundOrder));
 }
예제 #7
0
        /// <summary>
        /// 处理餐饮达达配送回调
        /// </summary>
        /// <param name="orderid"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public bool DadaToFoodReturn(int orderid, DadaOrder order, string appid)
        {
            bool           isSuccess     = false;
            string         updatesql     = "state,update_time";
            FoodGoodsOrder foodGoodOrder = FoodGoodsOrderBLL.SingleModel.GetModel(orderid);// and  OrderType ={(int)miniAppFoodOrderType.店内点餐 } ");

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

            string msg = string.Empty;

            switch (order.state)
            {
            case (int)DadaOrderEnum.已取消:
                if (order.state == (int)DadaOrderEnum.已取消)
                {
                    updatesql += ",cancel_from,cancel_reason";
                }

                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.储值支付)
                {
                    var userSaveMoney = SaveMoneySetUserBLL.SingleModel.getModelByUserId(foodGoodOrder.UserId) ?? new SaveMoneySetUser();
                    isSuccess = FoodGoodsOrderBLL.SingleModel.outOrderBySaveMoneyUser(foodGoodOrder, userSaveMoney, foodGoodOrder.State);
                }

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

                #endregion
                return(isSuccess);

            case (int)DadaOrderEnum.待接单:
                foodGoodOrder.State = (int)miniAppFoodOrderState.待接单;
                break;

            case (int)DadaOrderEnum.待取货:
                updatesql          += ",dm_id,dm_name,dm_mobile";
                foodGoodOrder.State = (int)miniAppFoodOrderState.待送餐;
                //object groupData = TemplateMsg_Miniapp.DadaGetTemplateMessageData(order,foodGoodOrder.PayDate,foodGoodOrder.BuyMode,"", SendTemplateMessageTypeEnum.达达配送接单通知);
                #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)DadaOrderEnum.配送中:
                foodGoodOrder.State = (int)miniAppFoodOrderState.待确认送达;
                break;

            case (int)DadaOrderEnum.已完成:
                foodGoodOrder.State = (int)miniAppFoodOrderState.已完成;
                break;

            case (int)DadaOrderEnum.已过期:
            case (int)DadaOrderEnum.系统故障订单发布失败:
            case (int)DadaOrderEnum.妥投异常之物品返回完成:
                foodGoodOrder.State = (int)miniAppFoodOrderState.退款审核中;
                updatesql          += ",cancel_from,cancel_reason";
                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);
        }
예제 #8
0
        /// <summary>
        /// 物流平台对接
        /// </summary>
        /// <param name="rid">权限表ID</param>
        /// <param name="userId">用户ID</param>
        /// <param name="cityName">城市名(达达)</param>
        /// <param name="lat">纬度</param>
        /// <param name="lnt">经度</param>
        /// <param name="distributionType">2:达达,3:蜂鸟</param>
        /// <param name="order">订单</param>
        /// <param name="carsData">购物车</param>
        /// <param name="orderType">TmpType枚举</param>
        /// <returns></returns>
        public string AddDistributionOrder(int rid, int userId, string cityName, string latStr, string lntStr, int distributionType, object order, object carsData, int tempType, int storeId = 0, int fee = 0, int orderType = 0)
        {
            if (distributionType <= 1)
            {
                return("");
            }

            string dugmsg = "";
            DistributionApiModel model = new DistributionApiModel();

            model.aid       = rid;
            model.userid    = userId;
            model.temptype  = tempType;
            model.storeid   = storeId;
            model.fee       = fee;
            model.cityname  = cityName;
            model.ordertype = orderType;
            double lat = 0;

            if (!double.TryParse(latStr, out lat))
            {
                dugmsg = "纬度转换错误";
                return(dugmsg);
            }
            if (lat <= 0)
            {
                dugmsg = "纬度不能小于0";
                return(dugmsg);
            }
            double lnt = 0;

            if (!double.TryParse(lntStr, out lnt))
            {
                dugmsg = "经度转换错误";
                return(dugmsg);
            }
            if (lnt <= 0)
            {
                dugmsg = "经度不能小于0";
                return(dugmsg);
            }
            model.lat = lat;
            model.lnt = lnt;
            List <elegood> fngoods = new List <elegood>();

            try
            {
                //物流数据提取
                switch (tempType)
                {
                case (int)TmpType.小程序餐饮模板:
                    FoodGoodsOrder data = (FoodGoodsOrder)order;
                    model.orderid           = data.Id;
                    model.buyprice          = data.BuyPrice;
                    model.accepterName      = data.AccepterName;
                    model.accepterTelePhone = data.AccepterTelePhone;
                    model.address           = data.Address;
                    model.remark            = data.Message;
                    if (carsData != null)
                    {
                        List <FoodGoodsCart> goodsCar = (List <FoodGoodsCart>)carsData;
                        //商品信息
                        foreach (FoodGoodsCart good in goodsCar)
                        {
                            model.ordercontent += good.goodsMsg.GoodsName + $"({good.Count});";
                        }
                    }
                    dugmsg = "数据提取成功";
                    break;

                case (int)TmpType.智慧餐厅:
                    DishOrder disOrder = (DishOrder)order;
                    model.orderid           = disOrder.id;
                    model.buyprice          = Convert.ToInt32(disOrder.order_amount * 100);
                    model.accepterName      = disOrder.consignee;
                    model.accepterTelePhone = disOrder.mobile;
                    model.address           = disOrder.address;
                    model.remark            = disOrder.post_info;
                    List <DishShoppingCart> dishGoodsCartList = DishShoppingCartBLL.SingleModel.GetCartsByOrderId(disOrder.id);
                    if (dishGoodsCartList != null && dishGoodsCartList.Count > 0)
                    {
                        //商品信息
                        foreach (DishShoppingCart good in dishGoodsCartList)
                        {
                            model.ordercontent += good.goods_name + $"({good.goods_number});";
                        }
                    }

                    dugmsg = "数据提取成功";
                    break;
                }
                //添加物流订单
                switch (distributionType)
                {
                case (int)miniAppOrderGetWay.达达配送:    //生成达达物流订单
                    DadaOrderBLL dadaOrderBLL = new DadaOrderBLL();
                    dugmsg = dadaOrderBLL.AddDadaOrder(model);
                    if (!string.IsNullOrEmpty(dugmsg))
                    {
                        return($"达达订单生成失败:" + dugmsg);
                    }
                    break;

                case (int)miniAppOrderGetWay.蜂鸟配送:    //生成蜂鸟物流订单

                    dugmsg = FNOrderBLL.SingleModel.AddFNOrder(fngoods, model);
                    if (!string.IsNullOrEmpty(dugmsg))
                    {
                        return("蜂鸟订单生成失败:" + dugmsg);
                    }
                    break;

                case (int)miniAppOrderGetWay.快跑者配送:    //生成快跑者物流订单

                    dugmsg = KPZOrderBLL.SingleModel.AddKPZOrder(model);
                    if (!string.IsNullOrEmpty(dugmsg))
                    {
                        return("快跑者订单生成失败:" + dugmsg);
                    }
                    break;

                case (int)miniAppOrderGetWay.UU配送:    //生成uu物流订单

                    dugmsg = UUOrderBLL.SingleModel.AddUUOrder(model);
                    if (!string.IsNullOrEmpty(dugmsg))
                    {
                        return("UU订单生成失败:" + dugmsg);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                dugmsg += "物流数据转化失败:" + ex.Message;
                log4net.LogHelper.WriteInfo(this.GetType(), dugmsg);
                return(dugmsg);
            }

            return(dugmsg);
        }
예제 #9
0
        public ActionResult GetReductionCard()
        {
            Coupons model     = null;
            int     couponsId = Context.GetRequestInt("couponsId", 0);

            if (couponsId <= 0)
            {
                return(Json(new { isok = false, msg = "我钥匙被弄丢了", coupon = model }));
            }
            int orderId = Context.GetRequestInt("orderId", 0);

            if (orderId <= 0)
            {
                return(Json(new { isok = false, msg = "我是不存在的", coupon = model }));
            }

            int  aId        = 0;
            Food store_Food = null;
            int  orderType  = Context.GetRequestInt("orderType", 0);//默认专业版,多门店版

            switch (orderType)
            {
            case 0:    //专业版,多门店版
                EntGoodsOrder orderInfo = EntGoodsOrderBLL.SingleModel.GetModel(orderId);
                if (orderInfo == null)
                {
                    return(Json(new { isok = false, msg = "活动已过期", coupon = model }));
                }
                aId = orderInfo.aId;
                break;

            case 1:    //餐饮
                FoodGoodsOrder orderInfo_Food = FoodGoodsOrderBLL.SingleModel.GetModel(orderId);
                if (orderInfo_Food == null)
                {
                    return(Json(new { isok = false, msg = "活动已过期", coupon = model }));
                }
                store_Food = FoodBLL.SingleModel.GetModel(orderInfo_Food.StoreId);
                if (store_Food == null)
                {
                    return(Json(new { isok = false, msg = "活动已过期_", coupon = model }));
                }

                aId = store_Food.appId;
                break;
            }

            lock (lockgetReductionCard)
            {
                model = CouponsBLL.SingleModel.GetModelByIdAndAppId(couponsId, aId, (int)CouponState.已开启);
                if (model == null)
                {
                    return(Json(new { isok = false, msg = "立减金已消失", coupon = model }));
                }

                List <CouponLog> loglist = CouponLogBLL.SingleModel.GetList($"couponid in ({model.Id}) and state!=4");

                int userId = Context.GetRequestInt("userId", 0);
                if (userId <= 0)
                {
                    return(Json(new { isok = false, msg = "id错误", coupon = model }));
                }
                C_UserInfo user = C_UserInfoBLL.SingleModel.GetModel(userId);
                if (user == null)
                {
                    return(Json(new { isok = false, msg = "用户不存在", coupon = model }));
                }
                DateTime date = DateTime.Now;

                if ((DateTime.Compare(date, model.StartUseTime) > 0 && DateTime.Compare(date, model.EndUseTime) < 0 && model.ValType == 0) || model.ValType != 0)
                {
                    List <CouponLog>  logList  = CouponLogBLL.SingleModel.GetList($" CouponId={model.Id} and fromorderid={orderId} ") ?? new List <CouponLog>();
                    List <C_UserInfo> userList = new List <C_UserInfo>();
                    string            userIds  = string.Join(",", logList.Select(log => log.UserId).ToList());
                    if (logList.Count > 0)
                    {
                        userList           = C_UserInfoBLL.SingleModel.GetList($"id in ( {userIds} )") ?? new List <C_UserInfo>();
                        model.StartUseTime = logList[0].StartUseTime;
                        model.EndUseTime   = logList[0].EndUseTime;
                    }
                    List <CouponLog> userGetList = CouponLogBLL.SingleModel.GetList($"couponId={couponsId} and userid={user.Id}");

                    //已领取完
                    if (userList.Count >= model.SatisfyNum)
                    {
                        C_UserInfo userInfo = userList.Where(u => u.Id == user.Id).FirstOrDefault();
                        return(Json(new { isok = true, coupon = model, userList = userList, userInfo = userInfo }));
                    }


                    //未领取过这份立减金
                    if (logList.Where(log => log.UserId == user.Id).ToList().Count <= 0)
                    {
                        List <CouponLog> temploglist = loglist?.Where(w => w.CouponId == model.Id).ToList();
                        if (temploglist != null && temploglist.Count > 0)
                        {
                            //已领取份数
                            int orderCount = temploglist.GroupBy(g => g.FromOrderId).Count();
                            //库存是否足够
                            model.RemNum = model.CreateNum - orderCount;
                            if (model.RemNum <= 0)
                            {
                                return(Json(new { isok = false, msg = "立减金已放送完毕,请关注下次的立减金优惠哦", coupon = model }));
                            }
                        }
                        //超过领取限制
                        if (userGetList != null && userGetList.Count >= model.LimitReceive && model.LimitReceive > 0)
                        {
                            return(Json(new { isok = false, msg = "你已超过领取限制", coupon = model }));
                        }
                        bool      isok      = false;
                        CouponLog getCoupon = new CouponLog
                        {
                            CouponId     = model.Id,
                            CouponName   = model.CouponName,
                            FromOrderId  = orderId,
                            UserId       = user.Id,
                            State        = 4,
                            StartUseTime = model.StartUseTime,
                            EndUseTime   = model.EndUseTime,
                            AddTime      = DateTime.Now,
                            StoreId      = model.StoreId
                        };
                        getCoupon.Id = Convert.ToInt32(CouponLogBLL.SingleModel.Add(getCoupon));
                        isok         = getCoupon.Id > 0;

                        if (isok)
                        {
                            logList.Add(getCoupon);
                            userList.Add(user);
                        }
                        else
                        {
                            return(Json(new { isok = false, msg = "出了点小问题~", coupon = model }));
                        }
                        //满足条件
                        if (userList.Count == model.SatisfyNum)
                        {
                            if (model.ValType == 1)
                            {
                                model.StartUseTime = Convert.ToDateTime(date.AddDays(1).ToString("yyyy-MM-dd 00:00:00"));
                                model.EndUseTime   = Convert.ToDateTime(date.AddDays(model.ValDay).ToString("yyyy-MM-dd 23:59:59"));
                            }
                            //领券当天有效
                            else if (model.ValType == 2)
                            {
                                model.StartUseTime = Convert.ToDateTime(date.ToString("yyyy-MM-dd 00:00:00"));
                                model.EndUseTime   = Convert.ToDateTime(date.AddDays(model.ValDay - 1).ToString("yyyy-MM-dd 23:59:59"));
                            }
                            foreach (CouponLog log in logList)
                            {
                                log.StartUseTime = model.StartUseTime;
                                log.EndUseTime   = model.EndUseTime;
                                log.State        = 0;
                                CouponLogBLL.SingleModel.Update(log, "State,StartUseTime,EndUseTime");
                            }
                        }
                    }
                    return(Json(new { isok = true, userList = userList, coupon = model, userInfo = user }));
                }
            }

            return(Json(new { isok = false, msg = "立减金Miss", coupon = model }));
        }
예제 #10
0
파일: UUOrderBLL.cs 프로젝트: soon14/vzan
        /// <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);
        }
예제 #11
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));
        }
예제 #12
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);
        }
예제 #13
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(""));
        }