/// <summary>
        /// 添加快递查询到数据库
        /// </summary>
        /// <param name="mailNo"></param>
        /// <param name="expSpellName"></param>
        /// <param name="expTextName"></param>
        /// <param name="update"></param>
        /// <param name="updateStr"></param>
        /// <param name="dataList"></param>
        private string InserExpressSearch(string mailNo, string expSpellName, string expTextName, string update, string updateStr, bool flag, int status, string tel, JsonData dataList)
        {
            //是否已经查询
            Models.SysExpressSearch searchModel = FindEntity("{\"MailNo\":\"" + mailNo + "\",\"ExpSpellName\":\"" + expSpellName + "\"}");
            if (searchModel == null)//第一次查询
            {
                //添加查询记录
                searchModel               = new Models.SysExpressSearch();
                searchModel.MailNo        = mailNo;
                searchModel.ExpSpellName  = expSpellName;
                searchModel.ExpTextName   = expTextName;
                searchModel.Tel           = tel;
                searchModel.LastQueryTime = update;
                searchModel.UpdateStr     = updateStr;
                searchModel.Flag          = flag;
                searchModel.Status        = status;

                Insert(searchModel);
            }
            else //修改
            {
                searchModel.Flag          = flag;
                searchModel.Status        = status;
                searchModel.LastQueryTime = update;
                searchModel.UpdateStr     = updateStr;
                UpdateForm(searchModel);
            }
            List <Models.SysExpressSearchInfo> infoList = GetListInfo("{\"MailNo\":\"" + mailNo + "\"}");


            //添加详细信息
            for (int i = 0; i < dataList.Count; i++)
            {
                int x = 0;
                foreach (Models.SysExpressSearchInfo info in infoList)
                {
                    if (info.mailNo == mailNo && info.AddTime == Utils.ObjectToDateTime(dataList[i]["time"]) && info.context == Utils.ObjectToStr(dataList[i]["context"]))
                    {
                        x++;
                        break;
                    }
                }
                if (x == 0)
                {
                    Models.SysExpressSearchInfo infoModel = new Models.SysExpressSearchInfo();
                    infoModel.mailNo             = mailNo;
                    infoModel.AddTime            = Utils.ObjectToDateTime(dataList[i]["time"]);
                    infoModel.context            = Utils.ObjectToStr(dataList[i]["context"]);
                    infoModel.SysExpressSearchId = searchModel.SysExpressSearchId;
                    InsertInfo(infoModel);
                    infoList.Add(infoModel);
                }
                x = 0;
            }
            searchModel.InfoList = infoList;
            return(SearchDataBase(searchModel));
        }
        /// <summary>
        /// 从数据库查询最新的数据
        /// </summary>
        /// <param name="searchModel"></param>
        /// <returns></returns>
        private string SearchDataBase(Models.SysExpressSearch searchModel)
        {
            string stringJson = Json.ToJson(new Models.ResultJson()
            {
                status = 1, msg = "请求成功", info = searchModel
            });

            CacheHelper.Insert("no" + searchModel.MailNo, stringJson, 120);//添加到缓存 过期时间2个小时
            return(stringJson);
        }
 /// <summary>
 /// 新增
 /// </summary>
 public int Insert(Models.SysExpressSearch model)
 {
     return(service.Insert(model));
 }
        /// <summary>
        /// 快递查询
        /// </summary>
        /// <param name="com">快递公司</param>
        /// <param name="nu">订单号</param>
        /// <returns></returns>
        public string ExpInfo(string com, string nu)
        {
            #region 成功/失败数据
            //成功例子
            //{
            //  "showapi_res_code": 0,//showapi平台返回码,0为成功,其他为失败
            //	"showapi_res_error": "",//showapi平台返回的错误信息
            //	"showapi_res_body": {
            //                    "mailNo": "968018776110",//快递单号
            //		"update": 1466926312666,//数据最后查询的时间
            //		"updateStr": "2016-06-26 15:31:52",//数据最后更新的时间
            //		"ret_code": 0,//接口调用是否成功,0为成功,其他为失败
            //		"flag": true,//物流信息是否获取成功
            //		"status": 4,-1 待查询 0 查询异常 1 暂无记录 2 在途中 3 派送中 4 已签收 5 用户拒签 6 疑难件 7 无效单
            // 8 超时单 9 签收失败 10 退回

            //        "tel": "400-889-5543",//快递公司电话
            //		"expSpellName": "shentong",//快递字母简称
            //		"data": [//具体快递路径信息
            //			{
            //				"time": "2016-06-26 12:26",
            //				"context": "已签收,签收人是:【本人】"

            //            },
            //			{
            //				"time": "2016-06-25 15:31",
            //				"context": "【陕西陇县公司】的派件员【西城业务员】正在派件"
            //			},
            //			{
            //				"time": "2016-06-25 14:11",
            //				"context": "快件已到达【陕西陇县公司】"
            //			},
            //			{
            //				"time": "2016-06-25 09:08",
            //				"context": "由【陕西宝鸡公司】发往【陕西陇县公司】"
            //			},
            //			{
            //				"time": "2016-06-24 14:08",
            //				"context": "由【陕西西安中转部】发往【陕西宝鸡公司】"
            //			},
            //			{
            //				"time": "2016-06-22 13:23",
            //				"context": "由【山东临沂公司】发往【陕西西安中转部】"
            //			},
            //			{
            //				"time": "2016-06-21 23:02",
            //				"context": "【江苏常熟公司】正在进行【装袋】扫描"
            //			},
            //			{
            //				"time": "2016-06-21 23:02",
            //				"context": "由【江苏常熟公司】发往【江苏江阴航空部】"
            //			},
            //			{
            //				"time": "2016-06-21 18:30",
            //				"context": "【江苏常熟公司】的收件员【严继东】已收件"
            //			},
            //			{
            //				"time": "2016-06-21 16:41",
            //				"context": "【江苏常熟公司】的收件员【凌明】已收件"
            //			}
            //		],
            //                "possibleExpList": [//当auto查询失败的时候,返回此信息,成功时不返回
            //                                    //用户表示该单号可能属于那些快递物流公司
            //                        {
            //                                 "simpleName": "shunfeng",//快递公司简称
            //                                 "expName": "顺丰速运"
            //                         }
            //                 ],
            //		"expTextName": "申通快递"//快递公司名
            //	}
            //}

            //失败数据
            //{ "showapi_res_code":0,"showapi_res_error":"","showapi_res_body":{ "ret_code":-1,"flag":false,"msg":"未知的快递公司名,请调用快递公司查询或快递公司列表接口"} }
            #endregion

            if (string.IsNullOrWhiteSpace(com))
            {
                return(Json.ToJson(new Models.ResultJson()
                {
                    status = 0, msg = "公司编号不能为空"
                }));
            }
            if (string.IsNullOrWhiteSpace(nu))
            {
                return(Json.ToJson(new Models.ResultJson()
                {
                    status = 0, msg = "快递号不能为空"
                }));
            }

            //判断是否已经被签收
            Models.SysExpressSearch searchModel = FindEntity("{\"MailNo\":\"" + nu + "\",\"ExpSpellName\":\"" + com + "\"}");
            if (searchModel != null && searchModel.Status == 4) //已被签收,返回数据库里的数据
            {
                return(SearchDataBase(searchModel));
            }

            //查询是否有缓存
            object obj = CacheHelper.Get("no" + nu);
            if (obj != null) //有缓存
            {
                return(obj.ToString());
            }
            else //没有缓存
            {
                string result = GetHttpUrl(com, nu); //请求阿里物流接口
                if (result.Contains("showapi_res_code"))
                {
                    JsonData jd       = JsonMapper.ToObject(result);                //字符串转换成json格式
                    int      respCode = Utils.ObjToInt(jd["showapi_res_code"], 1);  //查询结果 0:成功 其他为失败
                    string   respMsg  = Utils.ObjectToStr(jd["showapi_res_error"]); //平台返回的错误信息
                    if (respCode == 0)                                              //成功返回数据
                    {
                        //写入数据库
                        JsonData bodyJD  = jd["showapi_res_body"];                            //body数据
                        int      retCode = Utils.ObjToInt(bodyJD["ret_code"], 1);             //查询结果 0:成功 其他为失败
                        bool     flag    = Utils.StrToBool(bodyJD["flag"].ToString(), false); //物流信息是否获取成功
                        if (retCode == 0 && flag)                                             //接口查询成功
                        {
                            int    status       = Utils.ObjToInt(bodyJD["status"], 1);        //物流信息是否获取成功
                            string mailNo       = Utils.ObjectToStr(bodyJD["mailNo"]);        //快递单号
                            string update       = Utils.ObjectToStr(bodyJD["update"]);        //数据最后查询的时间
                            string updateStr    = Utils.ObjectToStr(bodyJD["updateStr"]);     //数据最后更新的时间
                            string expSpellName = Utils.ObjectToStr(bodyJD["expSpellName"]);  //快递字母简称
                            string expTextName  = Utils.ObjectToStr(bodyJD["expTextName"]);   //快递公司名

                            string tel = string.Empty;
                            if (((IDictionary)bodyJD).Contains("tel"))  //判断tel键是否存在
                            {
                                tel = Utils.ObjectToStr(bodyJD["tel"]); //快递电话
                            }

                            JsonData dataList = bodyJD["data"];//快递单号

                            string newResult = InserExpressSearch(mailNo, expSpellName, expTextName, update, updateStr, flag, status, tel, dataList);
                            return(newResult);
                        }
                        else
                        {
                            string msg = Utils.ObjectToStr(bodyJD["msg"]);//错误信息
                            return(LitJson.JsonMapper.ToJson(new Models.ResultJson()
                            {
                                status = 0, msg = msg
                            }));
                        }
                    }
                    return(Json.ToJson(new Models.ResultJson()
                    {
                        status = 0, msg = "请求失败" + respMsg
                    }));
                }
                return(Json.ToJson(new Models.ResultJson()
                {
                    status = 0, msg = "阿里云快递查询失败:账户余额不足"
                }));
            }
        }
 /// <summary>
 /// 修改
 /// </summary>
 /// <param name="userEntity"></param>
 public int UpdateForm(Models.SysExpressSearch entity)
 {
     return(service.Update(entity));
 }