|
@@ -1,9 +1,12 @@
|
|
|
package user
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"encoding/xml"
|
|
|
"eta/eta_mini_ht_api/common/component/cache"
|
|
|
+ "eta/eta_mini_ht_api/common/component/config"
|
|
|
logger "eta/eta_mini_ht_api/common/component/log"
|
|
|
+ "eta/eta_mini_ht_api/common/contants"
|
|
|
"eta/eta_mini_ht_api/common/exception"
|
|
|
authUtils "eta/eta_mini_ht_api/common/utils/auth"
|
|
|
"eta/eta_mini_ht_api/controllers"
|
|
@@ -530,3 +533,112 @@ type Notify struct {
|
|
|
EventKey string `xml:"EventKey"`
|
|
|
Content string `xml:"Content"`
|
|
|
}
|
|
|
+
|
|
|
+type SyncCustomerRiskLevelReq struct {
|
|
|
+ CustInfo CustInfo `json:"custInfo"`
|
|
|
+ RiskInfo RiskInfo `json:"riskInfo"`
|
|
|
+}
|
|
|
+
|
|
|
+type CustInfo struct {
|
|
|
+ MobileTel string `json:"mobile_tel"`
|
|
|
+ ClientName string `json:"client_name"`
|
|
|
+ IdKind string `json:"id_kind"`
|
|
|
+ IdNo string `json:"id_no"`
|
|
|
+}
|
|
|
+
|
|
|
+type RiskInfo struct {
|
|
|
+ CorpBeginDate string `json:"corp_begin_date"`
|
|
|
+ CorpEndDate string `json:"corp_end_date"`
|
|
|
+ UserInvestTerm string `json:"user_invest_term"`
|
|
|
+ UserInvestKind string `json:"user_invest_kind"`
|
|
|
+ CorpRiskLevel string `json:"corp_risk_level"`
|
|
|
+}
|
|
|
+type WebhookRequest struct {
|
|
|
+ Data string `json:"data"`
|
|
|
+ //EncryptKey string `json:"encryptKey"`
|
|
|
+}
|
|
|
+
|
|
|
+// SyncCustomerRiskLevel 风险测评同步接口
|
|
|
+// @Summary 风险测评同步接口
|
|
|
+// @Description 风险测评同步接口
|
|
|
+// @Success 200 {object} controllers.BaseResponse
|
|
|
+// @router /riskLevel [post]
|
|
|
+func (h *UserController) SyncCustomerRiskLevel() {
|
|
|
+ controllers.Wrap(&h.BaseController, func() (result *controllers.WrapData, err error) {
|
|
|
+ result = h.InitWrapData("同步风险等级")
|
|
|
+ htConfig := config.GetConfig(contants.HT).(*config.HTBizConfig)
|
|
|
+
|
|
|
+ webhookRequest := new(WebhookRequest)
|
|
|
+ h.GetPostParams(webhookRequest)
|
|
|
+ privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
|
|
|
+ if err != nil {
|
|
|
+ err = exception.New(exception.SysError)
|
|
|
+ logger.Error("解析私钥失败: %v", err)
|
|
|
+ h.FailedResult("解析私钥失败", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ decodeData, err := authUtils.DecryptWithRSA(privateKey, webhookRequest.Data)
|
|
|
+ if err != nil {
|
|
|
+ err = exception.New(exception.SysError)
|
|
|
+ logger.Error("解密请求体失败: %v", err)
|
|
|
+ h.FailedResult("解密请求体失败", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ syncCustomerRiskLevelReq := new(SyncCustomerRiskLevelReq)
|
|
|
+ err = json.Unmarshal(decodeData, syncCustomerRiskLevelReq)
|
|
|
+ if err != nil {
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ logger.Error("解析请求体失败: %v", err)
|
|
|
+ h.FailedResult("解析请求体失败", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ custInfo := syncCustomerRiskLevelReq.CustInfo
|
|
|
+ riskInfo := syncCustomerRiskLevelReq.RiskInfo
|
|
|
+ if custInfo.ClientName == "" {
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ h.FailedResult("用户名字不能为空", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if custInfo.MobileTel == "" {
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ h.FailedResult("手机号码不能为空", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if custInfo.IdNo == "" {
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ h.FailedResult("身份证号不能为空", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //if !utils.IsValidIDCard(custInfo.IdNo) && !utils.IsValidOldIDCard(custInfo.IdNo) {
|
|
|
+ // err = exception.New(exception.SyncRiskError)
|
|
|
+ // h.FailedResult("身份证号不合法", result)
|
|
|
+ // return
|
|
|
+ //}
|
|
|
+ if riskInfo.CorpRiskLevel == "" {
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ h.FailedResult("风险等级不能为空", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if riskInfo.CorpEndDate == "" {
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ h.FailedResult("风险测评有效结束日期不能为空", result)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = userService.UpdateRiskLevelInfo(userService.RiskLevelInfoDTO{
|
|
|
+ Name: custInfo.ClientName,
|
|
|
+ PhoneNumber: custInfo.MobileTel,
|
|
|
+ RiskLevel: riskInfo.CorpRiskLevel,
|
|
|
+ RiskValidEndDate: riskInfo.CorpEndDate,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ logger.ErrorWithTraceId(h.Ctx, err.Error())
|
|
|
+ h.FailedResult(err.Error(), result)
|
|
|
+ err = exception.New(exception.SyncRiskError)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ logger.InfoWithTraceId(h.Ctx, err.Error())
|
|
|
+ result = h.InitWrapData("同步风险等级成功")
|
|
|
+ h.SuccessResult("success", syncCustomerRiskLevelReq, result)
|
|
|
+ return
|
|
|
+ })
|
|
|
+}
|