using Core.Web.App_Start; using Core.Web.WebHelper; using CRM.Core.BLL.Application.Order; using CRM.Core.BLL.Base; using CRM.Core.BLL.EventBus.Events; using CRM.Core.BLL.Util; using CRM.Core.BLL.Wx; using CRM.Core.Common.EventBus; using CRM.Core.Common.WebHelper; using CRM.Core.DTO; using CRM.Core.Model.Entity; using CRM.Core.Model.Enum; using Newtonsoft.Json; using System; using System.Text; using System.Web; using System.Web.Mvc; using WX.CRM.Common; using WX.CRM.Common.BlowFish; using System.Linq; namespace Core.Web.Controllers { public class RiskCtrlController : BaseController { private readonly WX_SZZYORDER_BL _order; private readonly BAS_PARAMETER_BL paramter_bl; private readonly WX_ComplianceConfirm_BL _confirm; private readonly Wx_Szzyorder_Audit_Log_BL _auditLog; private readonly Wx_Tran_User_BL _tranUser; private readonly SecurityHelper sHelper; private readonly WX_PRODUCT_BL product_bl; private readonly CACHE_BL _cache; public RiskCtrlController() { _order = new WX_SZZYORDER_BL(); paramter_bl = new BAS_PARAMETER_BL(); _confirm = new WX_ComplianceConfirm_BL(); _auditLog = new Wx_Szzyorder_Audit_Log_BL(); _tranUser = new Wx_Tran_User_BL(); sHelper = new SecurityHelper(); product_bl = new WX_PRODUCT_BL(); _cache = new CACHE_BL(); } [HttpGet] public ActionResult Index() { return View(); } [HttpGet] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表, ToolBarConfig.CONST_Other2, true)] public ActionResult Audit(int orderId) { WX_SZZYORDER model = _order.GetModel(orderId); //==================风控加密测试================ //string url = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_Riske);//风险控制 //long longtime = DateTimeTool.ConvertDateTimeLong(DateTime.Now); //Random rd = new Random(); //int rx = rd.Next(1000, 9999); //var json = new //{ // uid = "qbj105", // cid = "", // t = longtime, // hqrtime = longtime, // rd = rx, // u = "0", // r = "[]" //}; //string varx = HttpUtility.UrlEncode(BlowFish.decode(Utility.ConvertToJSON(json))); //string fkUrl = url + varx;//风控地址 //============================================== //===================合同Url测试=============== //合同生成URL测试 var szzysubproduct = product_bl.GetSubProduct(model.PRODUCTCODE); if (szzysubproduct == null) { return Content("商品已被不存在或删除"); } var url1 = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_ContractSign);//合同地址 var json2 = new { productName = model.SUBPRODUCTNAME, period = string.Format("{0}天", model.OPENDAYS), price = string.Format("{0}元", model.ORDERTYPE == 3 ? szzysubproduct.PRICE.Value.ToString("#0") : model.NEEDPAY.Value.ToString("#0")), //price = szzysubproduct.PRICE, userId = model.SOFTUSERNAME, productLevel = szzysubproduct.PRODUCTLEVEL, productInvestTime = szzysubproduct.PRODUCTINVESTTIME, productInvestType = szzysubproduct.PRODUCTINVESTTYPE, issupplement = 1, orderId = model.SZZYORDERID.ToString(), htid = string.Format("DN{0}", model.SZZYORDERID.ToString()) }; //LogHelper.Info("合同链接参数:" + Utility.ConvertToJSON(json2)); string clientid = SecurityHelper.OrderClientIdKey; string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json2)); string sign = sHelper.signData(clientid, content); var htUrl = url1 + string.Format("?content={0}&sign={1}&clientId={2}&protocolType=", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid); //============================================= //20220419 许总提出记录请求者信息 var viewSource = "千拓后台管理系统"; var pageSource = "Audit:订单列表.风控"; //===================合同Url测试=============== //合同生成URL测试 var url = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf); //风险揭示书 content = sHelper.encyptData(clientid, "R_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string fxjssUrl = string.Format("{0}/{4}-风险揭示书.pdf?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource ); ViewBag.fxjssUrl = fxjssUrl; //投顾服务协议 content = sHelper.encyptData(clientid, "A_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string tgfwxyUrl = string.Format("{0}/{4}-投顾服务协议.pdf?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource ); ViewBag.tgfwxyUrl = tgfwxyUrl; if (!string.IsNullOrEmpty(model.CONTRACTCODE)) { var riskinfoUrl = _cache.GetValue_Parameter("riskinfo"); var htflagUrl = _cache.GetValue_Parameter("htflag"); if (string.IsNullOrEmpty(riskinfoUrl)) { riskinfoUrl = "https://r2.soft.dn8188.com/contract_sign_crm/get_riskinfo"; } var bf = "{\"uid\": \"" + model.SOFTUSERNAME + "\",\"htid\":\"DN" + model.SZZYORDERID.Value.ToString() + "\"}"; var hqr = BlowFish.encode(bf); var para = new { hqr }; var res = Utility.PostAjaxData(riskinfoUrl, para.ToJson(), Encoding.UTF8); var ret1 = JsonHelper.JsonDivertToObj(res); //LogHelper.Info(ret1.ToJson()); if (ret1.ret == 0) { string riskcontent = sHelper.encyptData(clientid, Utility.ConvertToJSON(ret1)); string risksign = sHelper.signData(clientid, riskcontent); ViewBag.RiskContent = HttpUtility.UrlEncode(riskcontent); ViewBag.RiskSign = HttpUtility.UrlEncode(risksign); ViewBag.RiskClientId = clientid; ViewBag.businesstype = ret1.businesstype; if (ret1.businesstype != "smallAmount") { var ret = Utility.GetData(htflagUrl, "htid=" + model.CONTRACTCODE, Encoding.UTF8); var retObj = JsonConvert.DeserializeAnonymousType(ret, new { ret = -1, msg = string.Empty }); if (retObj.ret != -1) { if (retObj.ret == 0) { //产品或服务不适当警示确认书 content = sHelper.encyptData(clientid, "I_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); //var cphfwApi = _cache.GetValue_Parameter("cphfwApi"); string cphfwUrl = string.Format("{0}/{4}-产品或服务不适当警示及投资者确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource); //string cphfwUrl = string.Format("{0}?htid={1}", // cphfwApi, "I_DN" + model.SZZYORDERID.ToString()); ViewBag.cphfwUrl = cphfwUrl; } else if (retObj.ret == 1) { //适当性评估结果确认书 content = sHelper.encyptData(clientid, "S_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string sdxpgUrl = string.Format("{0}/{4}-适当性评估结果确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource); ViewBag.sdxpgUrl = sdxpgUrl; } } } } } //ViewBag.fkUrl = fkUrl;//风控Url ViewBag.htUrl = htUrl;//合同Url return View(model); } [HttpGet] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表, ToolBarConfig.CONST_Other9, true)] public ActionResult AuditNew(int orderId) { WX_SZZYORDER model = _order.GetModel(orderId); ViewBag.authcode = model.authcode; //==================风控加密测试================ //string url = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_Riske);//风险控制 //long longtime = DateTimeTool.ConvertDateTimeLong(DateTime.Now); //Random rd = new Random(); //int rx = rd.Next(1000, 9999); //var json = new //{ // uid = "qbj105", // cid = "", // t = longtime, // hqrtime = longtime, // rd = rx, // u = "0", // r = "[]" //}; //string varx = HttpUtility.UrlEncode(BlowFish.decode(Utility.ConvertToJSON(json))); //string fkUrl = url + varx;//风控地址 //============================================== //===================合同Url测试=============== //合同生成URL测试 var szzysubproduct = product_bl.GetSubProduct(model.PRODUCTCODE); if (szzysubproduct == null) { return Content("商品已被不存在或删除"); } var url1 = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_ContractSignThree);//合同地址 var json2 = new { productName = model.SUBPRODUCTNAME, period = string.Format("{0}天", model.OPENDAYS), price = string.Format("{0}元", model.ORDERTYPE == 3 ? szzysubproduct.PRICE.Value.ToString("#0") : model.NEEDPAY.Value.ToString("#0")), //price = szzysubproduct.PRICE, userId = model.SOFTUSERNAME, productLevel = szzysubproduct.PRODUCTLEVEL, productInvestTime = szzysubproduct.PRODUCTINVESTTIME, productInvestType = szzysubproduct.PRODUCTINVESTTYPE, issupplement = 1, orderId = model.SZZYORDERID.ToString(), htid = string.Format("DN{0}", model.SZZYORDERID.ToString()), }; //LogHelper.Info("合同链接参数:" + Utility.ConvertToJSON(json2)); string clientid = SecurityHelper.OrderClientIdKey; string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json2)); string sign = sHelper.signData(clientid, content); var htUrl = url1 + string.Format("?content={0}&sign={1}&clientId={2}&protocolType=", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid); var timeOutConfig = paramter_bl.GetValue_Parameter(Parameter.ReSingTimeOutConfig);//过期时长(单位小时) if (string.IsNullOrEmpty(timeOutConfig)) { timeOutConfig = "12"; } // 重签地址逻辑 var json3 = new { productName = model.SUBPRODUCTNAME, period = string.Format("{0}天", model.OPENDAYS), price = string.Format("{0}元", model.ORDERTYPE == 3 ? szzysubproduct.PRICE.Value.ToString("#0") : model.NEEDPAY.Value.ToString("#0")), //price = szzysubproduct.PRICE, userId = model.SOFTUSERNAME, productLevel = szzysubproduct.PRODUCTLEVEL, productInvestTime = szzysubproduct.PRODUCTINVESTTIME, productInvestType = szzysubproduct.PRODUCTINVESTTYPE, issupplement = 1, orderId = model.SZZYORDERID.ToString(), htid = string.Format("DN{0}", model.SZZYORDERID.ToString()), reSign = Utility.ConvertDateTimeLong(DateTime.Now.AddHours(Convert.ToInt32(timeOutConfig)))//重签的合同12个小时过期 }; string content3 = sHelper.encyptData(clientid, Utility.ConvertToJSON(json3)); string sign3 = sHelper.signData(clientid, content3); var reSignHtUrl = url1 + string.Format("?content={0}&sign={1}&clientId={2}&protocolType=", HttpUtility.UrlEncode(content3), HttpUtility.UrlEncode(sign3), clientid); ViewBag.reSignHtUrl = reSignHtUrl; //============================================= //20220419 许总提出记录请求者信息 var viewSource = "千拓后台管理系统"; var pageSource = "Audit:订单列表.风控"; //===================合同Url测试=============== //合同生成URL测试 var url = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf); //风险揭示书 content = sHelper.encyptData(clientid, "R_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string fxjssUrl = string.Format("{0}/{4}-风险揭示书.pdf?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource ); ViewBag.fxjssUrl = fxjssUrl; //投顾服务协议 content = sHelper.encyptData(clientid, "A_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string tgfwxyUrl = string.Format("{0}/{4}-投顾服务协议.pdf?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource ); ViewBag.tgfwxyUrl = tgfwxyUrl; if (!string.IsNullOrEmpty(model.CONTRACTCODE)) { var riskinfoUrl = _cache.GetValue_Parameter("riskinfo"); var htflagUrl = _cache.GetValue_Parameter("htflag"); if (string.IsNullOrEmpty(riskinfoUrl)) { riskinfoUrl = "https://r2.soft.dn8188.com/contract_sign_crm/get_riskinfo"; } var bf = "{\"uid\": \"" + model.SOFTUSERNAME + "\",\"htid\":\"DN" + model.SZZYORDERID.Value.ToString() + "\"}"; var hqr = BlowFish.encode(bf); var para = new { hqr }; LogHelper.Info(riskinfoUrl + "||" + para.ToJson()); var res = Utility.PostAjaxData(riskinfoUrl, para.ToJson(), Encoding.UTF8); var ret1 = JsonConvert.DeserializeObject(res); LogHelper.Info(ret1.ToJson()); ViewBag.RiskClientId = clientid; //if (ret1.ret == 0) //{ string riskcontent = sHelper.encyptData(clientid, Utility.ConvertToJSON(ret1)); string risksign = sHelper.signData(clientid, riskcontent); ViewBag.RiskContent = HttpUtility.UrlEncode(riskcontent); ViewBag.RiskSign = HttpUtility.UrlEncode(risksign); var businesstype = "advisor"; if (ret1.ret == 0) { businesstype = ret1.businesstype; } ViewBag.businesstype = businesstype; if (businesstype != "smallAmount") { LogHelper.Info(htflagUrl + "||" + "htid=" + model.CONTRACTCODE); var ret = Utility.GetData(htflagUrl, "htid=" + model.CONTRACTCODE, Encoding.UTF8); var retObj = JsonConvert.DeserializeAnonymousType(ret, new { ret = -1, msg = string.Empty }); if (retObj.ret != -1) { if (retObj.ret == 0) { //var cphfwApi = _cache.GetValue_Parameter("cphfwApi"); //ret = Utility.GetData(cphfwApi, "htid=" + model.CONTRACTCODE, Encoding.UTF8); //var result = JsonConvert.DeserializeAnonymousType(ret, new { ret = -1, msg = string.Empty }); //产品或服务不适当警示确认书 content = sHelper.encyptData(clientid, "I_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string cphfwUrl = string.Format("{0}/{4}-产品或服务风险警示及投资者确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource); ViewBag.cphfwUrl = cphfwUrl; } else if (retObj.ret == 1) { //适当性评估结果确认书 content = sHelper.encyptData(clientid, "S_DN" + model.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); string sdxpgUrl = string.Format("{0}/{4}-适当性匹配意见及投资者确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, model.SUBPRODUCTNAME, Eid, UserName, viewSource, pageSource); ViewBag.sdxpgUrl = sdxpgUrl; } } } //更新成交客户列表 var tranUser = _tranUser.Get(p => p.softusername == model.SOFTUSERNAME); if (tranUser != null && ret1.ret == 0) { tranUser.exptime = string.IsNullOrEmpty(ret1.expTime) ? (DateTime?)null : Convert.ToDateTime(ret1.expTime); tranUser.risklevel = ret1.riskType?.level ?? "3"; tranUser.riskinfo = ret1.ToJson(); tranUser.isc0user = ret1.isC0User; tranUser.isc1_0user = ret1.isC1_0User; _tranUser.Update(tranUser); } if (ret1.ret == 0) { ViewBag.RiskLevel = ret1.riskType?.level ?? "3"; ViewBag.IsC0User = ret1.isC0User; ViewBag.IsC1_0User = ret1.isC1_0User; } //} } //ViewBag.fkUrl = fkUrl;//风控Url ViewBag.htUrl = htUrl;//合同Url ViewBag.eid = Eid; ViewBag.userName = UserName; var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi); ViewBag.webapi = webapi; ViewBag.isHasLookReSign = containRight("RESIGN");//是否含有重签权限 ViewBag.isHasLookRenameSign = containRight("RENAMESIGN");//是否含有重签权限 return View(model); } [HttpPost] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表重新实名, ToolBarConfig.CONST_NotButton, false)] public JsonResult ClearName(int orderId) { var model = _order.Get(p => p.ORDERID == orderId); if (model != null) { var dto = new { uid = model.SOFTUSERNAME }; var url = paramter_bl.GetValue_Parameter("DeleteContractUrl"); if (string.IsNullOrWhiteSpace(url)) { url = "https://r2.soft.dn8188.com/riskevaluate/pc/newcenter/del_risk"; } var json = Utility.ObjectToJson(dto); var para = new SecurityHelper().createSignEncodingStr(json); var retmsg = Utility.PostData(url, para, Encoding.UTF8); var retmessage = JsonHelper.JsonDivertToObj(retmsg); if (retmessage.ret == 0) { return Json(new retMsg { result = true }, JsonRequestBehavior.AllowGet); } else { return Json(new retMsg { result = false, retmsg = "清理错误!" }, JsonRequestBehavior.AllowGet); } } return Json(new retMsg { result = false, retmsg = "找不到这个订单" }, JsonRequestBehavior.AllowGet); } [HttpPost] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表, ToolBarConfig.CONST_Other2, false)] public JsonResult Audit(int orderId, int status, string rejectRemark) { //UserCenter_RiaService_ContractSign var order = _order.Get(p => p.ORDERID == orderId); if (order != null) { var idCard = string.Empty; var name = string.Empty; order.RISKCTRLSTATUS = status; order.rejectremark = rejectRemark; if (status == 2) { try { var bf = "{\"uid\": \"" + order.SOFTUSERNAME + "\"}"; var hqr = BlowFish.encode(bf); var para = new { hqr }; string riskurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_Risk);//封装出来的接口 if (string.IsNullOrEmpty(riskurl)) riskurl = "https://r2.soft.dn8188.com/riskevaluate/h5/get_riskinfo"; var res = Utility.PostAjaxData(riskurl, para.ToJson(), Encoding.UTF8); var ret = JsonHelper.JsonDivertToObj(res); if (ret.ret == 0 || ret.ret == -104) { idCard = ret.idCard; name = ret.name; } } catch (Exception ex) { LogHelper.Error(ex.ToString()); } } if (!string.IsNullOrEmpty(idCard)) { order.idcard = idCard; } if (!string.IsNullOrEmpty(name)) { order.CNAME = name; } //_order.Update(order); _order.Update(order, x => new { x.RISKCTRLSTATUS, x.rejectremark, x.idcard, x.CNAME }); _auditLog.Add(new WX_SZZYORDER_AUDIT_LOG { audit = status == -1 ? 2 : 1, create_time = DateTime.Now, eid = Eid, orderid = orderId, resid = order.RESID, remark = rejectRemark, auditor = UserName }); new OrderService().CanIOpen(order.ORDERID, Eid, UserName); //风控通过了,需要调用开通服务去开通订单了 //if(status == -1) //{ // //驳回的时候,删除电子回访 // _confirm.Delete(p => p.SzzyOrderId == order.SZZYORDERID); //} EventBus.Instance.Publish(new RejectContractEvent(orderId, status, rejectRemark, order.companycode, idCard, name, Eid, UserName)); } return Json(new retMsg { result = true }, JsonRequestBehavior.AllowGet); } [HttpPost] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表, ToolBarConfig.CONST_Other9, false)] public JsonResult ContractAudit(ContractAuditDto dto) { var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:5252"; var url = $"{webapi}/Order/ContractAudit"; var result = Utility.PostAjaxData(url, dto.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); return Json(data, JsonRequestBehavior.AllowGet); } [HttpPost] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表, ToolBarConfig.CONST_Other9, false)] public JsonResult TraceUserAudit(TraceUserAuditDto dto) { var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:5252"; var url = $"{webapi}/api/TraceUser/Audit"; var result = Utility.PostAjaxData(url, dto.ToJson(), Encoding.UTF8); var data = JsonConvert.DeserializeObject(result); return Json(data, JsonRequestBehavior.AllowGet); } [HttpGet] [AuthorizeRedirect(RightsConfig.CONST_合规订单列表, ToolBarConfig.CONST_Other9, false)] public JsonResult ContractUser(int orderId, int eid, string ename) { var webapi = _cache.GetValue_Parameter(Parameter.Hg_Core_WebApi); //webapi = "https://localhost:5252"; var url = $"{webapi}/api/TraceUser/ContractUser"; var para = $"orderId={orderId}&eid={eid}&ename={ename}"; var result = Utility.GetData(url, para, Encoding.UTF8); var data = JsonConvert.DeserializeObject>(result); return Json(data, JsonRequestBehavior.AllowGet); } public class RiskInfoDto { public int ret { get; set; } public string name { get; set; } public string idCard { get; set; } public string answer { get; set; } public Int64 createTime { get; set; } public string key { get; set; } public string style { get; set; } public int index { get; set; } public string version { get; set; } public string expTime { get; set; } public RiskType riskType { get; set; } public int verifyType { get; set; } public int auditStatus { get; set; } public string auditRemark { get; set; } public bool isC0User { get; set; } = false; public bool isC1_0User { get; set; } = false; public string businesstype { get; set; } public int paperId { get; set; } } public class RiskType { public int min { get; set; } public int max { get; set; } public string des { get; set; } public string name { get; set; } public string level { get; set; } } public class DeleteContractRes { public int ret { get; set; } } public class ContractAuditDto { public int OrderId { get; set; } public int Status { get; set; } public string Remark { get; set; } } public class TraceUserAuditDto { public string Uid { get; set; } public int Status { get; set; } public string Remark { get; set; } } public class TraceUserDto { /// /// 资源ID /// public string resId { get; set; } /// /// 优品帐号 /// public string uid { get; set; } /// /// 用户真实姓名 /// public string username { get; set; } /// /// 用户绑定的手机号 /// public string bindmob { get; set; } /// /// 用户身份证件号 /// public string idcardno { get; set; } /// /// 身份证正面 /// public string idcardfront { get; set; } /// /// 身份证反面 /// public string idcardback { get; set; } /// /// 状态:0未审核 1:已审核 -1:未通过 /// public int status { get; set; } /// /// 实名驳回备注 /// public string auditRemark { get; set; } /// /// 审核状态 /// public string statusStr { get; set; } /// /// 验证类型, 1接口验证 2人工审核 /// public int? verifyType { get; set; } /// /// 验证类型 /// public string verifyTypeStr { get; set; } /// /// 合同状态 /// public int? contractStatus { get; set; } /// /// 合同状态 /// public string contractStatusStr { get; set; } /// /// 合同审核备注 /// public string contractRemark { get; set; } /// /// 合规状态 /// public int? riskCtrlStatus { get; set; } /// /// 合规状态 /// public string riskCtrlStatusStr { get; set; } /// /// 合规驳回备注 /// public string rejectRemark { get; set; } /// /// 身份审核类型 /// public int type { get; set; } /// /// 身份审核类型 /// public string typeStr { get; set; } } } }