/// <summary> /// 获取餐饮版蜂鸟订单状态 /// </summary> /// <param name="list"></param> /// <param name="rid"></param> /// <returns></returns> public void GetFoodFNOrderState(ref List <FoodAdminGoodsOrder> list, int rid) { if (list == null || list.Count <= 0) { return; } string orderis = string.Join(",", list.Where(w => w.GetWay == (int)miniAppOrderGetWay.达达配送).Select(s => s.Id)); if (!string.IsNullOrEmpty(orderis)) { List <FNOrderRelation> relist = FNOrderRelationBLL.SingleModel.GetListByOrderIds(orderis, (int)TmpType.小程序餐饮模板, rid); if (relist == null || relist.Count <= 0) { return; } string dadaqids = "'" + string.Join("','", relist.Select(s => s.uniqueorderno)) + "'"; if (string.IsNullOrEmpty(dadaqids)) { return; } List <FNOrder> dadaorderlist = GetListByQOderId(dadaqids); if (dadaorderlist == null || dadaorderlist.Count <= 0) { return; } foreach (FoodAdminGoodsOrder orderitem in list) { FNOrderRelation dadarelation = relist.Where(w => w.orderid == orderitem.Id).FirstOrDefault(); if (dadarelation != null) { FNOrder dadaorder = dadaorderlist.Where(w => w.partner_order_code == dadarelation.uniqueorderno).FirstOrDefault(); if (dadaorder != null) { orderitem.State = dadaorder.state; orderitem.DadaOrderStateStr = Enum.GetName(typeof(FNOrderEnum), orderitem.State); orderitem.dadaorderid = dadarelation.uniqueorderno; } } } } }
/// <summary> /// 获取修改蜂鸟订单状态sql /// </summary> /// <param name="orderid">小程序订单表ID</param> /// <param name="rid"></param> /// <param name="ordertype">TmpType枚举</param> /// <param name="tran"></param> /// <returns></returns> public string GetFNOrderUpdateSql(int orderid, int rid, int ordertype, ref TransactionModel tran, bool gettransql = false) { FNOrderRelation model = FNOrderRelationBLL.SingleModel.GetModelOrder(rid, orderid, ordertype); if (model == null) { return("没有找到蜂鸟订单关联数据"); } FNOrder order = GetModelByOrderNo(model.uniqueorderno); if (order == null) { return("蜂鸟订单不存在"); } FNApiReponseModel <object> result = AddOrderToFN(order); if (result == null) { return("蜂鸟新增订单接口异常"); } if (result.code == 200) { order.state = (int)FNOrderEnum.推单中; if (gettransql) { return(base.ExecuteNonQuery($"update fnorder set state={order.state},updatetime=now() where id={order.id}") > 0 ? "" : "修改蜂鸟订单状态出错"); } else { tran.Add($"update fnorder set state={order.state},updatetime=now() where id={order.id}"); } return(""); } return(result.msg); }
/// <summary> /// 生成蜂鸟物流订单 /// </summary> /// <param name="rid">权限表ID</param> /// <param name="userinfo">用户信息</param> /// <param name="orderid">订单ID</param> /// <param name="goodcars">购物车</param> /// <param name="price">订单价格</param> /// <param name="receviename">收货人姓名</param> /// <param name="receviephone">收货人电话</param> /// <param name="address">收货人地址</param> /// <param name="lat">纬度</param> /// <param name="lnt">经度</param> /// <param name="ordertype">看枚举TmpType</param> /// <returns></returns> public string AddFNOrder(List <elegood> fngoods, DistributionApiModel model) { string msg = ""; FNStoreRelation relation = FNStoreRelationBLL.SingleModel.GetModelByRid(model.aid); if (relation != null) { msg = "请先配置蜂鸟门店"; return(msg); } FNStore fnstore = FNStoreBLL.SingleModel.GetModel(relation.fnstoreid); if (fnstore != null) { msg = "没有找到蜂鸟门店信息"; return(msg); } if (fngoods == null || fngoods.Count <= 0) { msg = "商品信息不能为空"; return(msg); } TransactionModel tran = new TransactionModel(); long timestamp = Convert.ToInt64(FNApi.SingleModel.GetTimeStamp()); string callback = FNApi._callbackurl; string orderno = model.userid + DateTime.Now.ToString("yyyyMMddHHmmss"); string storecode = fnstore.chain_store_code; float buyprice = model.buyprice / 100.0f; int goodcount = 0; //收货人信息 FNReceiverInfo reciverifo = new FNReceiverInfo() { receiver_name = model.accepterName, receiver_primary_phone = model.accepterTelePhone, receiver_address = model.address, receiver_longitude = model.lnt, receiver_latitude = model.lat, }; //门店信息 FNStoreInfo storeinfo = new FNStoreInfo() { transport_name = fnstore.chain_store_name, transport_address = fnstore.address, transport_longitude = Convert.ToDouble(fnstore.longitude), transport_latitude = Convert.ToDouble(fnstore.latitude), transport_tel = fnstore.contact_phone, }; //生成订单实体类对象 FNOrder data = new FNOrder(storecode, goodcount, callback, buyprice, timestamp, buyprice, orderno, model.remark, fngoods, reciverifo, storeinfo); tran.Add(base.BuildAddSql(data)); //订单与系统订单关联 FNOrderRelation orderrelation = new FNOrderRelation(); orderrelation.dataid = model.aid; orderrelation.orderid = model.orderid; orderrelation.ordertype = model.temptype; orderrelation.uniqueorderno = orderno; tran.Add(FNOrderRelationBLL.SingleModel.BuildAddSql(orderrelation)); if (!ExecuteTransactionDataCorect(tran.sqlArray, tran.ParameterArray)) { msg = "添加蜂鸟物流出错"; } return(msg); }
/// <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("")); }