Exemple #1
0
        public ActionResult UploadApp()
        {
            var formFile     = (FormFile)Request.Form.Files[0];
            var softwareInfo = Request.Form["software"];
            var jObject      = JObject.Parse(softwareInfo);
            var stream       = formFile.OpenReadStream();

            byte[] data;
            using (var memoryStream = new MemoryStream()) {
                stream.CopyTo(memoryStream);
                data = memoryStream.ToArray();
            }

            var file = new AppFile()
            {
                Name = formFile.FileName, MimeType = formFile.ContentType, Data = data
            };
            var app = new App(jObject["version"].ToString(), file, jObject["releaseNotes"].ToString(), DateTime.Now);

            _appService.Add(app);
            return(Ok());
        }
        public async Task AddOrder([FromBody] object model)
        {
            //获取请求报文
            var requestContent = "";

            if (Request.ContentType == "application/octet-stream")
            {
                var bytePacket = (byte[])model;
                requestContent = Encoding.UTF8.GetString(bytePacket);
            }
            else
            {
                if (model == null)
                {
                    model = "";
                }
                requestContent = model.ToString();
            }
            if (string.IsNullOrWhiteSpace(requestContent))
            {
                var log = $"请求类型是{Request.ContentType}的请求要求报文不允许为空,AddOrder添加订单操作终止";
                LogWarn($"{log} 日期:{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
                await WriteAsync(log);

                return;
            }
            LogInfo($"{Request.ContentType}添加订单AddOrder原始请求报文:{requestContent}");

            //解析报文
            var dic = requestContent.UrlFormat();
            var logisticsInterface = dic.ContainsKey("logistics_interface") ? dic["logistics_interface"] : "";
            var dataDigest         = dic.ContainsKey("data_digest") ? dic["data_digest"] : "";

            //签名检查
            if (!AliHandler.CheckRequest(logisticsInterface, dataDigest))
            {
                var log = AliHandler.ErrDetail(2001, "sub");
                LogError($"身份验证失败,订单数据原始报文:{logisticsInterface}\r\n接收到的签名:{dataDigest}");
                await WriteAsync(log);

                return;
            }

            //序列化订单数据
            var    logisticId = "";
            Aorder aorder;

            try
            {
                aorder     = AliHandler.JsonToClass(logisticsInterface);
                logisticId = aorder.logisticID;
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                if (ex.InnerException?.InnerException != null)
                {
                    msg = ex.InnerException.InnerException.Message;
                }
                var log = AliHandler.ErrDetail(logisticId, 3001, "sub");
                LogError($"序列化订单数据失败,原始报文:{logisticsInterface}", msg, ex.StackTrace);
                await WriteAsync(log);

                return;
            }

            //映射提交订单的实体
            LogInfo($"提交订单原始数据:{JsonConvert.SerializeObject(aorder)}");
            var mySqlOrder = AliHandler.CreateMap(aorder, logisticsInterface);

            if (mySqlOrder == null)
            {
                var log = AliHandler.ErrDetail(logisticId, 3001, "sub");
                await WriteAsync(log);

                return;
            }
            if (!string.IsNullOrEmpty(aorder.mailNo))
            {
                //如果运单号为“6”开头则表示电子面单或菜鸟仓配面单,不通过本接口写入数据库
                var sub = aorder.mailNo.Substring(0, 1);
                if (sub == "6")
                {
                    LogInfo($"运单号为“6”开头则表示电子面单或菜鸟仓配面单,不通过本接口写入数据库,提交订单动作终止。运单号:{aorder.mailNo}AL订单号:{aorder.logisticID}");
                    return;
                }
            }

            //提交订单数据进入MySql库
            var hasSuccess = await AppService.Add(mySqlOrder);

            if (!hasSuccess)
            {
                var log = AliHandler.ErrDetail(logisticId, 3001, "sub");
                await WriteAsync(log);

                return;
            }
            var result = AliHandler.ErrDetail(logisticId, 1000, "sub");

            LogInfo($"{result}\r\n运单号:{aorder.mailNo}写入数据库成功!");
            await WriteAsync(result);
        }
        async Task <bool> UpdateSite(T_ORDER dbOrder)
        {
            try
            {
                List <SiteDetail> sd         = null;
                List <MQuerySite> lQuerySite = new List <MQuerySite>();
                MQuerySite        site       = null;
                site            = new MQuerySite();
                site.orderid    = dbOrder.ORDER_NO + "-send";
                site.address    = dbOrder.SENDER_PROVINCE + dbOrder.SENDER_CITY + dbOrder.SENDER_COUNTY + dbOrder.SENDER_ADDRESS;
                site.operSource = "OMS";
                if (!lQuerySite.Contains(site))
                {
                    lQuerySite.Add(site);
                }
                site            = new MQuerySite();
                site.orderid    = dbOrder.ORDER_NO + "-rec";
                site.address    = dbOrder.RECEIVER_PROVINCE + dbOrder.RECEIVER_CITY + dbOrder.RECEIVER_COUNTY + dbOrder.RECEIVER_ADDRESS;
                site.operSource = "OMS";
                if (!lQuerySite.Contains(site))
                {
                    lQuerySite.Add(site);
                }
                sd = AliHandler.GetSite(lQuerySite);
                SiteDetail          resultsite = null;
                T_NAVIGATE_DISTANCE distance;
                bool bdistance = false;//是否插入距离表,如果2端距离都没有则不插入
                if (sd != null && sd.Count > 0)
                {
                    distance          = new T_NAVIGATE_DISTANCE();
                    distance.MAIL_NO  = dbOrder.BILL_NO;
                    distance.ORDER_NO = dbOrder.ORDER_NO;
                    //distance.PICKUP_DISTANCE = "0";
                    //distance.SEND_DISTANCE = "0";
                    resultsite = sd.FirstOrDefault(p => p.orderid == dbOrder.ORDER_NO + "-send");
                    if (resultsite != null)
                    {
                        distance.PICKUP_DISTANCE = resultsite.distance;
                        //distance.PICKUP_DISTANCE = resultsite.distance == null ? "0" : resultsite.distance;
                        if (!string.IsNullOrEmpty(resultsite.bizAreaValue))
                        {
                            if (dbOrder.PICKUP_SITE != resultsite.bizAreaValue && !string.IsNullOrEmpty(distance.PICKUP_DISTANCE))//如果是修改订单,网点可能没做修改
                            {
                                bdistance = true;
                            }
                            dbOrder.PICKUP_SITE = resultsite.bizAreaValue;                             //取件网点编号
                            string sitename = await AppService.QuerySiteName(resultsite.bizAreaValue); //dbHelper.mapper.QueryForObject<string>("T_SITE_INFO.GetName", resultsite.bizAreaValue);

                            if (!string.IsNullOrEmpty(sitename))
                            {
                                if (dbOrder.ORDER_STATUS == 10)
                                {
                                    dbOrder.ORDER_STATUS = 20;
                                }
                                dbOrder.PICKUP_SITECODE      = sitename; //名称
                                dbOrder.ASSIGNED_SITE_CODE   = sitename; //名称
                                dbOrder.PUSH_OUTSYS_STATUS   = 1;
                                dbOrder.PUSH_OUTSYS_FAIL_NUM = 0;
                                dbOrder.ASSIGNSITE_TYPE      = 0;
                            }
                        }
                    }
                    resultsite = sd.FirstOrDefault(p => p.orderid == dbOrder.ORDER_NO + "-rec");
                    if (resultsite != null)
                    {
                        distance.SEND_DISTANCE = resultsite.distance;
                        if (!string.IsNullOrEmpty(resultsite.bizAreaValue))
                        {
                            if (dbOrder.SENDTO_SITE != resultsite.bizAreaValue && !string.IsNullOrEmpty(distance.SEND_DISTANCE))//如果是修改订单,网点可能没做修改
                            {
                                bdistance = true;
                            }
                            dbOrder.SENDTO_SITE = resultsite.bizAreaValue;
                            string sitename = await AppService.QuerySiteName(resultsite.bizAreaValue);//dbHelper.mapper.QueryForObject<string>("T_SITE_INFO.GetName", resultsite.bizAreaValue);

                            if (!string.IsNullOrEmpty(sitename))
                            {
                                dbOrder.SENDTO_SITECODE = sitename;//名称
                            }
                        }
                    }

                    int i = await AppService.UpdateSite(dbOrder);//dbHelper.mapper.Update("T_ORDER.UpdateSite", dbOrder);

                    if (bdistance)
                    {
                        await AppService.Add(distance); //dbHelper.mapper.Insert("T_NAVIGATE_DISTANCE.Insert", distance);
                    }
                }
            }
            catch (Exception e)
            {
                return(false);
            }
            return(true);
        }
Exemple #4
0
 public ActionResult Create(AppDTO appParam)
 {
     _appService.Add(appParam);
     return(Json("Sucess"));
 }