Пример #1
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity trace = new TraceEntity();

            XmlDocument xmlDoc = XMLString.Withdraw.Clone() as XmlDocument;

            xmlDoc.SelectSingleNode("OrderInfo/OrderNum").InnerText = entity.PolicyNo;
            string req = xmlDoc.OuterXml;
            string ret = "";

            //<?xml version="1.0" encoding="utf-8"?><OrderInfo><Flag>0</Flag><Message>订单不存在,或不是您的订单</Message></OrderInfo>
            try
            {
                ret = ws.CancelOrder(req);
                xmlDoc.LoadXml(ret);
                if (xmlDoc.SelectSingleNode("OrderInfo/Flag").InnerText == "0")
                {
                    Common.LogIt("退保参数:" + req + Environment.NewLine
                                 + "简单保返回:" + ret);
                }
            }
            catch (Exception e)
            {
                Common.LogIt(ws.Url + Environment.NewLine
                             + "退保异常:" + e.Message);
            }

            return(trace);
        }
Пример #2
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity trace = new TraceEntity();

            trace.ErrorMsg = "该产品仅支持退单。";
            return(trace);
        }
Пример #3
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            //agent,sesscode,productno,productname 用户名,密码,产品代码,产品名称
            string[] config     = entity.IOC_Class_Parameters.Split(',');
            t_Case   caseEntity = Case.Get(entity.CaseNo);
            string   rep        = ws.CannelPolicyById(
                DESEncrypt(caseEntity.customerID), config[0], config[1], config[2], entity.PolicyNo, caseEntity.customerID);

            string[] array = rep.Split('|');
            if (array.Length > 1)
            {
                if (array[0] != "1")
                {
                    Common.LogIt(rep);
                    result.ErrorMsg = rep;
                }
            }
            else
            {
                Common.LogIt(rep);
                result.ErrorMsg = rep;
            }

            return(result);
        }
Пример #4
0
        /// <summary>
        /// 退保(空函数,广州分公司在业务上不支持该功能)
        /// </summary>
        /// <param name="policyNo"></param>
        /// <returns></returns>
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            result.ErrorMsg = "该产品仅支持退单。";
            return(result);
        }
Пример #5
0
        /// <summary>
        /// 退保
        /// </summary>
        /// <param name="policyNo"></param>
        /// <returns></returns>
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            result.ErrorMsg = "该产品仅支持退单。";
            return(result);
            //string ret = string.Empty;
            //try
            //{
            //    ret = webService.quitpolicy("hgy02", "hgy02", entity.PolicyNo);

            //    if (string.IsNullOrEmpty(ret))
            //        throw new Exception("WebService返回为空!");
            //    else
            //    {
            //        if (ret.Contains("已经退保"))
            //            return result;
            //        else
            //        {
            //            Common.LogIt("Huayubaoxian 退保:" + ret);
            //            result.ErrorMsg = ret;
            //            return result;
            //        }
            //    }
            //}
            //catch
            //{
            //    Common.LogIt(webService.Url);
            //    throw;
            //}
        }
Пример #6
0
        /// <summary>
        /// 退保
        /// </summary>
        /// <param name="policyNo"></param>
        /// <returns></returns>
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            string[] config = entity.IOC_Class_Parameters.Split(',');
            string   ret    = string.Empty;

            try
            {
                ret = webService.policyCancel(config[0], config[1], entity.PolicyNo);

                if (string.IsNullOrEmpty(ret))
                {
                    throw new Exception("西安奇易policyCancel返回为空!");
                }
            }
            catch
            {
                Common.LogIt(webService.Url);
                throw;
            }

            if (ret.Contains("撤销成功"))
            {
                return(result);
            }
            else
            {
                Common.LogIt("西安奇易policyCancel:" + ret);
                result.ErrorMsg = ret;
                return(result);
            }
        }
Пример #7
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            RevokePolicy[] rp = new RevokePolicy[1];
            rp[0].certNo = entity.PolicyNo;
            string xmlRet = "";

            try
            {
                xmlRet = Withdraw(rp);
            }
            catch
            {
                Common.LogIt(url);
                throw;
            }

            try
            {
                if (string.IsNullOrEmpty(xmlRet))
                {
                    throw new Exception("平安退保返回为空!");
                }

                XmlDocument xd = new XmlDocument();
                xd.LoadXml(xmlRet);
                XmlNodeList nodes = xd.SelectNodes("Values/value");

                if (GetValue(nodes, "processFlag") == "1")
                {
                    return(result);
                }
                else
                {
                    Common.LogIt("平安退保返回:" + xmlRet);
                    string error = GetValue(nodes, "processMessage");
                    if (string.IsNullOrEmpty(error))
                    {
                        result.ErrorMsg = "未知错误";
                    }
                    else
                    {
                        result.ErrorMsg = error;
                    }
                    return(result);
                }
            }
            catch
            {
                if (!string.IsNullOrEmpty(xmlRet))
                {
                    Common.LogIt("平安退保返回:" + xmlRet);
                }
                throw;
            }
        }
Пример #8
0
 public void SubmitForm(WithdrawEntity entity, string keyValue)
 {
     if (!string.IsNullOrEmpty(keyValue))
     {
         entity.Modify(keyValue);
         service.Update(entity);
     }
     else
     {
         entity.Create();
         service.Insert(entity);
     }
 }
Пример #9
0
        /// <summary>
        /// 退保
        /// 注意可能返回该错误:“该保单尚未同步到核心系统,稍后退保”
        /// 永诚方面同步到核心系统的周期大约是5分钟
        /// </summary>
        /// <param name="certNo">保单号</param>
        /// <returns></returns>
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result         = new TraceEntity();
            string      requestString  = GetWithdrawXML(entity.PolicyNo);
            string      responseString = GetResponse(requestString);

            result = ScanWithdrawResult(responseString);

            if (!string.IsNullOrEmpty(result.ErrorMsg))
            {
                Common.LogIt("永城接口 退保:" + responseString);
            }

            return(result);
        }
Пример #10
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity trace = new TraceEntity();

            return(trace);

            #region 邮件退保
            //string mailContent = "邮件内容";
            //string mailTo = config[4];//收件人地址

            //string mailFrom = "*****@*****.**";
            //string smtp = "smtp.gmail.com";
            //int smtpPort = 587;
            //string username = "******";
            //string password = "******";

            //MailMessage msg = new System.Net.Mail.MailMessage();
            //msg.To.Add(mailTo); //收件人

            ////发件人信息
            //msg.From = new MailAddress(mailFrom, "发送人姓名", System.Text.Encoding.UTF8);
            //msg.Subject = "这是测试邮件";   //邮件标题
            //msg.SubjectEncoding = System.Text.Encoding.UTF8;    //标题编码
            //msg.Body = mailContent; //邮件主体
            //msg.BodyEncoding = System.Text.Encoding.UTF8;
            //msg.IsBodyHtml = true;  //是否HTML
            //msg.Priority = MailPriority.High;   //优先级

            //SmtpClient client = new SmtpClient();
            ////设置邮箱账号和密码
            //client.Credentials = new System.Net.NetworkCredential(username, password);
            //client.Port = smtpPort;
            //client.Host = smtp;
            //client.EnableSsl = true;

            //try
            //{
            //    client.Send(msg);
            //}
            //catch (Exception ex)
            //{
            //    trace.ErrorMsg = "发送退保邮件失败(立刻保)!";
            //    trace.Detail = ex.ToString();
            //}
            //return trace;
            #endregion
        }
Пример #11
0
        /// <summary>
        /// 退保代理
        /// </summary>
        /// <param name="policyNo"></param>
        /// <returns></returns>
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            try
            {
                //注入实例
                instance = container.Resolve <IIssuing>(entity.IOC_Class_Alias);
            }
            catch (Exception e)
            {
                Common.LogIt(e.ToString());
                throw;
            }

            result = instance.Withdraw(entity);
            return(result);
        }
Пример #12
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            WithdrawRequest req = new WithdrawRequest();

            string[] config = entity.IOC_Class_Parameters.Split(',');
            req.Username = config[0];
            req.Password = config[1];
            req.PolicyNo = entity.PolicyNo;
            req.CaseNo   = entity.CaseNo;
            string xml = Common.XmlSerialize <WithdrawRequest>(req);
            string ret = ws.Withdraw(xml);

            result = Common.XmlDeserialize <TraceEntity>(ret);

            return(result);
        }
Пример #13
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity result = new TraceEntity();

            string response = "";

            try
            {
                string[] config = entity.IOC_Class_Parameters.Split(',');
                response = ws.CannelPolicyByPolicyNos(entity.PolicyNo, config[0]);
                if (string.IsNullOrEmpty(response))
                {
                    throw new Exception("意时网退保WebService返回为空!");
                }
            }
            catch
            {
                Common.LogIt(ws.Url);
                throw;
            }

            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(response);

                if (xmlDoc.SelectSingleNode("Instony/RetData/Flag").InnerText == "1")
                {
                    return(result);
                }
                else
                {
                    Common.LogIt("退保参数" + entity.PolicyNo + System.Environment.NewLine + "意时网投保返回:" + response);
                    result.ErrorMsg = xmlDoc.SelectSingleNode("Instony/RetData/Message").InnerText;
                    return(result);
                }
            }
            catch
            {
                Common.LogIt("退保参数" + entity.PolicyNo + System.Environment.NewLine + "意时网投保返回:" + response);
                throw;
            }
        }
Пример #14
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            string[]      config = entity.IOC_Class_Parameters.Split(',');
            TraceEntity   result = new TraceEntity();
            StringBuilder sbPost = new StringBuilder();

            sbPost.Append("username="******"&password="******"&recodes=").Append(entity.PolicyNo);
            sbPost.Append("&method=0");

            //string post = System.Web.HttpUtility.UrlEncode(sbPost.ToString());
            byte[] data = Encoding.UTF8.GetBytes(sbPost.ToString());
            string ret  = Common.HttpPost("http://113.11.197.237/byOther/pingan.do", data);

            if (!ret.Contains("success"))
            {
                Common.LogIt(ret);
                result.ErrorMsg = ret;
            }

            return(result);
        }
Пример #15
0
        public TraceEntity Withdraw(WithdrawEntity entity)
        {
            TraceEntity trace = new TraceEntity();

            if (string.IsNullOrEmpty(entity.PolicyNo))
            {
                return(trace);//兼容之前未对接的已出单证(没有正式保单号)
            }
            TransportAccidentForEndorseRequsetDto dto = new TransportAccidentForEndorseRequsetDto();

            dto.policyNo   = entity.PolicyNo;
            dto.functionId = "2";
            TransportAccidentResponseDto ret = null;

            try
            {
                ret = wsCancel.endorPolicy("zgrs", "zgrs", dto);

                if (ret == null)
                {
                    throw new Exception("北京国寿WebService返回为空!");
                }
            }
            catch
            {
                Common.LogIt(wsCancel.Url);
                throw;
            }

            if (!string.IsNullOrEmpty(ret.error))
            {
                Common.LogIt("北京国寿 退保:" + ret.error);
                trace.ErrorMsg = ret.error;
            }

            return(trace);
        }
Пример #16
0
    public static TraceEntity Discard(UserLoginResponse user, string serialNo)
    {
        TraceEntity response = new TraceEntity();

        string  strSqlBak = @"
SELECT caseID, caseNo, customerFlightDate, CertNo,
		b.IsIssuingRequired, c.IOC_Class_Alias, c.IOC_Class_Parameters, WithdrawRatio, caseOwner, ParentPath
  FROM [t_Case] a with(nolock)
  INNER JOIN t_Product b on a.productID = b.productID
  LEFT JOIN t_Interface c on a.interface_id = c.id
  where {0} = '{1}'";
        string  strSql    = string.Format(strSqlBak, "caseNo", serialNo);
        DataSet ds        = SqlHelper.ExecuteDataset(Common.ConnectionString, CommandType.Text, strSql);

        if (ds.Tables[0].Rows.Count == 0)
        {
            strSql = string.Format(strSqlBak, "certNo", serialNo);    //若是第三方调用撤单接口,则传入参数是正式保单号
            ds     = SqlHelper.ExecuteDataset(Common.ConnectionString, CommandType.Text, strSql);

            if (ds.Tables[0].Rows.Count == 0)
            {
                response.ErrorMsg = "单证号不存在!";
                Common.LogIt("单证号不存在" + strSql);
                return(response);
            }
        }

        DataRow dr        = ds.Tables[0].Rows[0];
        string  caseOwner = dr["caseOwner"].ToString();

        if (user.Username.ToUpper() != caseOwner.ToUpper())
        {
            response.ErrorMsg = "单证号不属于该用户!";
            return(response);
        }

        bool isIssuingRequired = Convert.ToBoolean(dr["IsIssuingRequired"]);
        //bool withdrawOnEffDateEnabled = Convert.ToBoolean(dr["WithdrawOnEffDateEnabled"]);//是否可以在生效当日(起飞前)进行退保操作
        DateTime dtFlightDate = Convert.ToDateTime(dr["customerFlightDate"]);
        DateTime dtNow        = DateTime.Now;

        if (user.CountConsumed > 100)
        {
            decimal withdrawRatio = Convert.ToDecimal(dr["WithdrawRatio"]);
            decimal ratio         = (decimal)user.CountWithdrawed / (decimal)user.CountConsumed;
            if (ratio > withdrawRatio)
            {
                response.ErrorMsg = "系统检测到您目前的作废率过高,暂无法作废!";
                return(response);
            }
        }

        if (dtFlightDate < dtNow)
        {
            response.ErrorMsg = "已生效,无法作废!";
            return(response);
        }
        //else if (!withdrawOnEffDateEnabled)
        //{
        //    if (dtFlightDate.Date == dtNow.Date)
        //    {
        //        response.ErrorMsg = "乘机当日零点起已生效,无法作废!";
        //        return response;
        //    }
        //}

        //bool isOk = true;

        string caseNo   = dr["caseNo"].ToString();
        string policyNo = dr["CertNo"].ToString();

        if (isIssuingRequired)
        {
            WithdrawEntity entity = new WithdrawEntity();
            entity.CaseNo               = caseNo;
            entity.PolicyNo             = policyNo;
            entity.IOC_Class_Alias      = dr["IOC_Class_Alias"].ToString();
            entity.IOC_Class_Parameters = dr["IOC_Class_Parameters"].ToString();

            if (!string.IsNullOrEmpty(entity.PolicyNo))
            {
                TraceEntity ret;

                try
                {
                    IAClass.Issuing.IssuingFacade facade = new IAClass.Issuing.IssuingFacade();
                    ret = facade.Withdraw(entity);
                }
                catch (Exception ee)
                {
                    Common.LogIt(ee.ToString());
                    ret.ErrorMsg = ee.Message;
                }
                //若成功退保,则做下标记;若失败,仍然给客户退单
                if (string.IsNullOrEmpty(ret.ErrorMsg))
                {
                    Common.DB.Update(Tables.t_Case)
                    .AddColumn(Tables.t_Case.isWithdrawed, true)
                    .Where(Tables.t_Case.caseNo == caseNo)
                    .Execute();
                }
            }
        }

        //if (isOk)
        {
            int eff = Common.DB.Update(Tables.t_Case)
                      .AddColumn(Tables.t_Case.enabled, false)
                      .AddColumn(Tables.t_Case.dateDiscarded, dtNow)
                      .Where(Tables.t_Case.caseNo == caseNo)
                      .Execute();

            //小郝:作废暂不返还余额(留待线下进行补偿结算)
            //string[] parentArray = dr["ParentPath"].ToString().Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
            //if (parentArray.Length > 1)//形如:/admin/tianzhi/bcaaa/bcaaa0150/
            //{
            //    Common.DB.Update(Tables.t_User)
            //            .AddColumn(Tables.t_User.balance, Tables.t_User.balance + Tables.t_User.price)
            //            .Where(Tables.t_User.username == parentArray[1])
            //            .Execute();
            //}

            //不要求完全精确,无需事务处理
            Common.DB.Update(Tables.t_User)
            .AddColumn(Tables.t_User.CountWithdrawed, Tables.t_User.CountWithdrawed + 1)
            .Where(Tables.t_User.username == user.Username)
            .Execute();
        }

        return(response);
    }
Пример #17
0
 public void Delete(WithdrawEntity entity)
 {
     service.Delete(entity);
 }