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); }
/// <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")); }
/// <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); }
/// <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)); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
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 })); }
/// <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); }
/// <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)); }
/// <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); }
/// <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("")); }