Ejemplo n.º 1
0
        /// <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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
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(""));
        }