Ejemplo n.º 1
0
        /*
         * /// <summary>
         * /// 分页获取数据列表
         * /// </summary>
         * public DataSet GetList(int PageSize,int PageIndex,string strWhere)
         * {
         *  SqlParameter[] parameters = {
         *          new SqlParameter("@tblName", SqlDbType.VarChar, 255),
         *          new SqlParameter("@fldName", SqlDbType.VarChar, 255),
         *          new SqlParameter("@PageSize", SqlDbType.Int),
         *          new SqlParameter("@PageIndex", SqlDbType.Int),
         *          new SqlParameter("@IsReCount", SqlDbType.Bit),
         *          new SqlParameter("@OrderType", SqlDbType.Bit),
         *          new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
         *          };
         *  parameters[0].Value = "UpLoadRecord";
         *  parameters[1].Value = "Id";
         *  parameters[2].Value = PageSize;
         *  parameters[3].Value = PageIndex;
         *  parameters[4].Value = 0;
         *  parameters[5].Value = 0;
         *  parameters[6].Value = strWhere;
         *  return DbHelperSQL.RunProcedure("UP_GetRecordByPage",parameters,"ds");
         * }*/

        #endregion  Method

        #region extend method

        #region 获取modelList
        /// <summary>
        /// 获得数据列表
        /// </summary>
        public List <UpLoadRecord> GetModelList(string strWhere)
        {
            List <UpLoadRecord> lstUpload = new List <UpLoadRecord>();

            try
            {
                StringBuilder strSql = new StringBuilder();
                strSql.Append("select Id,PurchaserType,UploadType,LastUpdateTime,LastPolicyId,UploadFilePath,ResponseParams,NotifyResult,CreateTime,RequestParams,IsEnabled,Remark,OperName,CompleteTime,UploadCount,BeforeLastUpdateTime,BeforeLastPolicyId,PolicyType,FailedCount ");
                strSql.Append(" FROM UpLoadRecord ");
                if (strWhere.Trim() != "")
                {
                    strSql.Append(" where " + strWhere);
                }
                strSql.Append(" ORDER BY CreateTime desc ");
                DataSet ds = DbHelperSQL.Query(strSql.ToString());

                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    UpLoadRecord model = new UpLoadRecord();
                    if (ds.Tables[0].Rows[i]["Id"].ToString() != "")
                    {
                        model.Id = long.Parse(ds.Tables[0].Rows[i]["Id"].ToString());
                    }
                    model.PurchaserType  = ds.Tables[0].Rows[i]["PurchaserType"].ToString();
                    model.UploadType     = ds.Tables[0].Rows[i]["UploadType"].ToString();
                    model.LastUpdateTime = ds.Tables[0].Rows[i]["LastUpdateTime"].ToString();
                    model.LastPolicyId   = ds.Tables[0].Rows[i]["LastPolicyId"].ToString();
                    model.UploadFilePath = ds.Tables[0].Rows[i]["UploadFilePath"].ToString();
                    model.ResponseParams = ds.Tables[0].Rows[i]["ResponseParams"].ToString();
                    if (ds.Tables[0].Rows[i]["NotifyResult"].ToString() != "")
                    {
                        model.NotifyResult = int.Parse(ds.Tables[0].Rows[i]["NotifyResult"].ToString());
                    }
                    if (ds.Tables[0].Rows[i]["CreateTime"].ToString() != "")
                    {
                        model.CreateTime = DateTime.Parse(ds.Tables[0].Rows[i]["CreateTime"].ToString());
                    }
                    model.RequestParams = ds.Tables[0].Rows[i]["RequestParams"].ToString();
                    if (ds.Tables[0].Rows[i]["IsEnabled"].ToString() != "")
                    {
                        model.IsEnabled = int.Parse(ds.Tables[0].Rows[i]["IsEnabled"].ToString());
                    }
                    model.Remark   = ds.Tables[0].Rows[i]["Remark"].ToString();
                    model.OperName = ds.Tables[0].Rows[i]["OperName"].ToString();
                    if (ds.Tables[0].Rows[i]["CompleteTime"].ToString() != "")
                    {
                        model.CompleteTime = DateTime.Parse(ds.Tables[0].Rows[i]["CompleteTime"].ToString());
                    }
                    model.UploadCount          = int.Parse(ds.Tables[0].Rows[i]["UploadCount"].ToString());
                    model.BeforeLastUpdateTime = ds.Tables[0].Rows[0]["BeforeLastUpdateTime"].ToString();
                    model.BeforeLastPolicyId   = ds.Tables[0].Rows[0]["BeforeLastPolicyId"].ToString();
                    model.PolicyType           = int.Parse(ds.Tables[0].Rows[i]["PolicyType"].ToString());
                    model.FailedCount          = int.Parse(ds.Tables[0].Rows[i]["FailedCount"].ToString());
                    lstUpload.Add(model);
                }
                return(lstUpload);
            }
            catch (Exception ex)
            {
                return(lstUpload);
            }
        }
        public EmptyResponse UpdateNotify(UpdateNotifyRequest request)
        {
            try
            {
                UpLoadRecordLib       recLib       = new UpLoadRecordLib();
                UploadPolicyRecordLib recPolicyLib = new UploadPolicyRecordLib();
                PolicySyncRecLib      syncLib      = new PolicySyncRecLib();


                request.UpdateStatusId = request.UpdateStatusId.Replace("\"", "").Replace("\\", "");
                UpLoadRecord rec = recLib.GetModel(int.Parse(request.UpdateStatusId));
                if (rec == null)
                {
                    return(new EmptyResponse {
                        ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "未找到此上传的记录!"
                    });
                }
                if (rec.OperName.ToLower() == "system")
                {
                    if ((SuccessStatus)request.NotifyResult == SuccessStatus.Success)
                    {
                        recPolicyLib.BlukyUpdatePolicy(rec.Id.ToString(), true);
                        recLib.Delete(rec.Id);//删除
                    }
                    else
                    {
                        recPolicyLib.BlukyUpdatePolicy(rec.Id.ToString(), false);
                        recLib.Delete(rec.Id);//删除
                    }
                    return(new EmptyResponse {
                        ErrCode = PolicyService.Enums.ResultType.Sucess
                    });
                }


                PurchaserType Purchaser = (PurchaserType)Enum.Parse(typeof(PurchaserType), rec.PurchaserType);
                UploadType    uType     = (UploadType)Enum.Parse(typeof(UploadType), rec.UploadType);

                #region 1.保存文件记录
                if (request.IsSucess)
                {
                    string timeAndId = Convert.ToDateTime(rec.LastUpdateTime).ToString("yyyy-MM-dd HH:mm:ss.fff") + "|" + rec.LastPolicyId.ToString();
                    // CoreHelper.CreateFile(System.Configuration.ConfigurationManager.AppSettings["NotifyErrLogPath"] + "\\" + System.Guid.NewGuid() + ".txt", "读取最后记录"+timeAndId);//创建文件
                    // File.WriteAllText("e://1.txt", timeAndId);
                    string name = uType == UploadType.FullUpload ? rec.PurchaserType + "\\" + rec.PurchaserType + "FullPolicyRecLog" : rec.PurchaserType + "\\" + rec.PurchaserType + "IncrementPolicyRecLog";
                    CoreHelper.SaveLastUpTimeAndId(timeAndId, name);
                    // CoreHelper.CreateFile(System.Configuration.ConfigurationManager.AppSettings["NotifyErrLogPath"] + "\\" + System.Guid.NewGuid() + ".txt", "保存最后记录成功");//创建文件
                }

                #endregion

                #region 2.更新表中记录

                rec.ResponseParams = request.ResponseParams;
                rec.NotifyResult   = (int)request.NotifyResult;
                rec.FailedCount    = request.NotifyResult == SuccessStatus.Failed ? rec.FailedCount + 1 : rec.FailedCount;
                rec.CompleteTime   = DateTime.Now;
                rec.LastUpdateTime = DateTime.Now.ToString("yyyy-MM-dd") + " 0:00:00";
                rec.LastPolicyId   = "0";
                bool r = recLib.Update(rec);
                if (!r)
                {
                    return(new EmptyResponse {
                        ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "更新记录失败!"
                    });
                }
                bool flag = false;
                if (request.NotifyResult == SuccessStatus.Failed || request.NotifyResult == SuccessStatus.Other)
                {
                    flag = false;
                }
                else
                {
                    flag = true;
                }
                recPolicyLib.BlukyUpdatePolicy(rec.Id.ToString(), flag);
                #endregion


                #region 3.批量更新已经上传完成的政策
                if (request.IsSucess)
                {
                    string selectSql  = "";
                    int    totalCount = 0;
                    List <UploadPolicyRecord> lstUploadIds   = recPolicyLib.GetModelList(" UId='" + rec.Id + "'");
                    List <string>             lstAddPolicies = new List <string>();
                    lstUploadIds.ForEach(x =>
                    {
                        lstAddPolicies.Add(x.PolicyId);
                    });
                    //List<string> lstAddPolicies = rec.Remark.Split(',').ToList();
                    if (lstAddPolicies.Count > 0)
                    {
                        bool r2 = syncLib.BlukyUpdatePolicyUploaded(lstAddPolicies);
                        if (!r)
                        {
                            return(new EmptyResponse {
                                ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "批量把政策置为已上传失败!"
                            });
                        }
                    }
                }
                #endregion

                return(new EmptyResponse {
                    ErrCode = PolicyService.Enums.ResultType.Sucess
                });
            }
            catch (Exception ex)
            {
                return(new EmptyResponse {
                    ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = JsonConvert.SerializeObject(ex)
                });
            }
        }
        /// <summary>
        /// 保存回调结果
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SaveNotifyResponse SaveNotify(PolicyNotifyRequest request)
        {
            UpLoadRecordLib       recLib    = new UpLoadRecordLib();
            UploadPolicyRecordLib policyLib = new UploadPolicyRecordLib();


            UpLoadRecord rec = new UpLoadRecord();

            rec.UploadFilePath       = request.FileNamePath;
            rec.LastPolicyId         = request.PolicyRec.LastPolicyId.ToString();
            rec.LastUpdateTime       = request.PolicyRec.LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
            rec.UploadType           = request.UploadType.ToString();
            rec.PurchaserType        = request.Purchaser.ToString();
            rec.ResponseParams       = request.ResponseParams;
            rec.NotifyResult         = request.NotifyResult;
            rec.CreateTime           = DateTime.Now;
            rec.IsEnabled            = 1;
            rec.Remark               = request.Remark;
            rec.RequestParams        = request.RequestParams;
            rec.OperName             = request.OperName;
            rec.UploadCount          = request.UploadCount;
            rec.BeforeLastPolicyId   = request.BeforePolicyRec.LastPolicyId.ToString();
            rec.BeforeLastUpdateTime = request.BeforePolicyRec.LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
            rec.PolicyType           = (int)request.PolicyType;
            long r = recLib.Add(rec);

            if (r <= 0)
            {
                string name = "Qunar\\NotifyQunarPolicyIdsRecLog";
                CoreHelper.SaveLastUpTimeAndId(string.Join(",", request.UploadPolicyIds.ToArray()), name);
                return(new SaveNotifyResponse {
                    ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "保存回调结果失败:保存数据:" + JsonConvert.SerializeObject(rec)
                });
            }

            List <string> lstSql = new List <string>();

            foreach (KeyValuePair <string, string> item in request.UploadPolicyIds)
            {
                UploadPolicyRecord uPolicy = new UploadPolicyRecord();
                uPolicy.CommisionMoney   = request.CommisionMoney;
                uPolicy.CommsionPoint    = request.CommisionPoint;
                uPolicy.Id               = System.Guid.NewGuid();
                uPolicy.UId              = r;
                uPolicy.PolicyId         = item.Key;
                uPolicy.PartenerPolicyId = item.Value;
                uPolicy.CreateTime       = DateTime.Now;
                uPolicy.PolicyType       = request.PolicyType.ToString();
                lstSql.Add(policyLib.Add(uPolicy, false));
            }

            if (lstSql.Count > 0)
            {
                int r2 = DbHelperSQL.ExecuteSqlTran(lstSql);
                if (r2 <= 0)
                {
                    string name = "Qunar\\NotifyQunarPolicyIdsRecLog";
                    CoreHelper.SaveLastUpTimeAndId(DateTime.Now + ":保存上传政策id失败:" + string.Join(",", request.UploadPolicyIds.ToArray()), name);
                    return(new SaveNotifyResponse {
                        ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "保存回调结果失败:保存数据:" + JsonConvert.SerializeObject(rec)
                    });
                }
            }
            return(new SaveNotifyResponse {
                ErrCode = PolicyService.Enums.ResultType.Sucess, ErrMsg = "", UploadStatusId = r.ToString()
            });
        }
        /// <summary>
        /// 查询回调结果
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SearchNotifyResponse SearchNotifyList(SearchNotifyRequest request)
        {
            try
            {
                UpLoadRecordLib        recLib     = new UpLoadRecordLib();
                List <UpLoadRecordDto> notifyList = new List <UpLoadRecordDto>();
                if (!string.IsNullOrEmpty(request.UploadStatusId))
                {
                    UpLoadRecord rec = recLib.GetModel(int.Parse(request.UploadStatusId));
                    if (rec.NotifyResult <= 0)//不成功
                    {
                        return(new SearchNotifyResponse()
                        {
                            ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "未找到任何上传记录"
                        });
                    }
                    notifyList.Add(new UpLoadRecordDto
                    {
                        CompleteTime         = rec.CompleteTime,
                        CreateTime           = rec.CreateTime,
                        Id                   = rec.Id,
                        NotifyResult         = rec.NotifyResult,
                        IsEnabled            = rec.IsEnabled,
                        LastPolicyId         = rec.LastPolicyId,
                        LastUpdateTime       = rec.LastUpdateTime,
                        OperName             = rec.OperName,
                        PurchaserType        = rec.PurchaserType,
                        Remark               = rec.Remark,
                        RequestParams        = rec.RequestParams,
                        ResponseParams       = rec.ResponseParams,
                        UploadFilePath       = rec.UploadFilePath,
                        UploadType           = rec.UploadType,
                        Beforelastpolicyid   = rec.BeforeLastPolicyId,
                        Beforelastupdatetime = rec.BeforeLastUpdateTime,
                        Uploadcount          = rec.UploadCount,
                        Policytype           = rec.PolicyType
                    });
                }
                else
                {
                    string strSql = "";
                    if (request.IsSearchSystem)
                    {
                        strSql = " and OperName='system'";
                    }
                    List <UpLoadRecord> lstRecord = recLib.GetModelList("  CreateTime> '" + DateTime.Now.ToString("yyyy-MM-dd") + " 0:00:00" + "' and IsEnabled=1 " + strSql);
                    lstRecord.ForEach(x =>
                    {
                        notifyList.Add(new UpLoadRecordDto
                        {
                            CompleteTime         = x.CompleteTime,
                            CreateTime           = x.CreateTime,
                            Id                   = x.Id,
                            NotifyResult         = x.NotifyResult,
                            IsEnabled            = x.IsEnabled,
                            LastPolicyId         = x.LastPolicyId,
                            LastUpdateTime       = x.LastUpdateTime,
                            OperName             = x.OperName,
                            PurchaserType        = x.PurchaserType,
                            Remark               = x.Remark,
                            RequestParams        = x.RequestParams,
                            ResponseParams       = x.ResponseParams,
                            UploadFilePath       = x.UploadFilePath,
                            UploadType           = x.UploadType,
                            Beforelastpolicyid   = x.BeforeLastPolicyId,
                            Beforelastupdatetime = x.BeforeLastUpdateTime,
                            Uploadcount          = x.UploadCount,
                            Policytype           = x.PolicyType
                        });
                    });
                }

                return(new SearchNotifyResponse()
                {
                    ErrCode = PolicyService.Enums.ResultType.Sucess, ErrMsg = "", NotifyList = notifyList
                });
            }
            catch (Exception ex)
            {
                return(new SearchNotifyResponse()
                {
                    ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = ex.Message
                });
            }
        }