|
|
@@ -103,35 +103,98 @@ func BankCard4(req BankCard4Req) (rsp BankCard4Rsp, err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 判断证件号码是否已经在爱签平台存在
|
|
|
- // var getUserReq APIGetUserReq
|
|
|
- // getUserReq.Account = strconv.Itoa(req.UserId)
|
|
|
- getUserReq := APIReq[APIGetUserReq]{
|
|
|
- Data: APIGetUserReq{Account: strconv.Itoa(req.UserId)},
|
|
|
- }
|
|
|
- apiRsp, err := APIPost[APIGetUserReq, []APIGetUserRsp](getUserReq, APIURL_GetUser)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- if apiRsp.Code == CODE_SUCCESS {
|
|
|
- err = errors.New("电子签平台用户编号已存在")
|
|
|
- logger.GetLogger().Error("电子签平台用户编号已存在, apiRsp:", apiRsp)
|
|
|
- return
|
|
|
- }
|
|
|
- getUserReq.Data.Account = ""
|
|
|
+ // 判断目标用户在爱签平台是否已经存在
|
|
|
+ getUserReq := APIReq[APIGetUserReq]{}
|
|
|
if req.Type == 1 {
|
|
|
getUserReq.Data.IdCard = req.Person.IdCardNo
|
|
|
} else {
|
|
|
getUserReq.Data.CreditCode = req.Company.CreditCode
|
|
|
}
|
|
|
- apiRsp, err = APIPost[APIGetUserReq, []APIGetUserRsp](getUserReq, APIURL_GetUser)
|
|
|
+ apiRsp, err := APIPost[APIGetUserReq, []APIGetUserRsp](getUserReq, APIURL_GetUser)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
if apiRsp.Code == CODE_SUCCESS && len(apiRsp.Data) > 0 {
|
|
|
- err = errors.New("电子签平台证件号码已存在")
|
|
|
- logger.GetLogger().Error("电子签平台证件号码已存在, apiRsp:", apiRsp)
|
|
|
- return
|
|
|
+ var has = false
|
|
|
+ var record models.Useresignrecord
|
|
|
+ has, err = db.GetEngine().Where("TEMPLATETYPE = 1 AND RECORDSTATUS = 1 AND USERID = ?", req.UserId).Get(&record)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !has {
|
|
|
+ err = errors.New("无对应实名认证记录信息")
|
|
|
+ logger.GetLogger().Error("无对应实名认证记录信息, userId:", req.UserId)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断四要素是否一致,如果一致则直接调用JAVA实名接口
|
|
|
+ // 注意:爱签接口返回的BankCard为空
|
|
|
+ apiGetUserRsp := apiRsp.Data[0]
|
|
|
+ if req.Type == 1 {
|
|
|
+ // 个人
|
|
|
+ if strconv.Itoa(req.UserId) == apiGetUserRsp.Account &&
|
|
|
+ req.Person.RealName == apiGetUserRsp.Name &&
|
|
|
+ req.Person.Mobile == apiGetUserRsp.Mobile {
|
|
|
+
|
|
|
+ // 更新用户电子签记录-记录实名信息
|
|
|
+ var authinfo []byte
|
|
|
+ if authinfo, err = json.Marshal(req.Person); err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`
|
|
|
+ UPDATE useresignrecord
|
|
|
+ SET RECORDSTATUS = 2,
|
|
|
+ UPDATETIME = SYSDATE,
|
|
|
+ AUTHINFO = '%v'
|
|
|
+ WHERE USERID = %v AND TEMPLATETYPE = 1
|
|
|
+ `, string(authinfo), req.UserId)
|
|
|
+ if _, err = db.GetEngine().Exec(sql); err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用JAVA实名认证接口
|
|
|
+ err = callJavaAuthFunc(&record, req.Type)
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 证件号码已在爱签平台的另外的用户占用
|
|
|
+ err = errors.New("电子签平台证件号码已存在")
|
|
|
+ logger.GetLogger().Error("电子签平台证件号码已存在, apiRsp:", apiRsp)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 企业
|
|
|
+ if strconv.Itoa(req.UserId) == apiGetUserRsp.Account &&
|
|
|
+ req.Company.RealName == apiGetUserRsp.Name &&
|
|
|
+ req.Company.Mobile == apiGetUserRsp.Mobile &&
|
|
|
+ req.Company.CompanyName == apiGetUserRsp.CompanyName &&
|
|
|
+ req.Company.CreditCode == apiGetUserRsp.CreditCode {
|
|
|
+
|
|
|
+ // 更新用户电子签记录-记录实名信息
|
|
|
+ var authinfo []byte
|
|
|
+ if authinfo, err = json.Marshal(req.Company); err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`
|
|
|
+ UPDATE useresignrecord
|
|
|
+ SET RECORDSTATUS = 2,
|
|
|
+ UPDATETIME = SYSDATE,
|
|
|
+ AUTHINFO = '%v'
|
|
|
+ WHERE USERID = %v AND TEMPLATETYPE = 1
|
|
|
+ `, string(authinfo), req.UserId)
|
|
|
+ if _, err = db.GetEngine().Exec(sql); err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用JAVA实名认证接口
|
|
|
+ err = callJavaAuthFunc(&record, req.Type)
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 社会统一信用代码已在爱签平台的另外的用户占用
|
|
|
+ err = errors.New("电子签平台社会统一信用代码已存在")
|
|
|
+ logger.GetLogger().Error("电子签平台社会统一信用代码已存在, apiRsp:", apiRsp)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 从交易库中获取类型为实名认证的电子签信息
|
|
|
@@ -278,6 +341,14 @@ func CaptchaVerify(req CaptchaVerifyReq) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // 调用JAVA实名认证接口
|
|
|
+ err = callJavaAuthFunc(&record, req.Type)
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// callJavaAuthFunc 调用JAVA实名认证接口
|
|
|
+func callJavaAuthFunc(record *models.Useresignrecord, userType int) (err error) {
|
|
|
// 获取临时存储的用户认证信息
|
|
|
cacheMap := make(map[string]interface{})
|
|
|
if err = json.Unmarshal([]byte(record.AUTHINFO), &cacheMap); err != nil {
|
|
|
@@ -286,8 +357,8 @@ func CaptchaVerify(req CaptchaVerifyReq) (err error) {
|
|
|
}
|
|
|
// 调用JAVA实名认证接口
|
|
|
reqParam := make(map[string]interface{})
|
|
|
- if req.Type == 1 { // 个人
|
|
|
- reqParam["userid"] = req.UserId
|
|
|
+ if userType == 1 { // 个人
|
|
|
+ reqParam["userid"] = strconv.Itoa(int(record.USERID))
|
|
|
reqParam["cardnum"] = cacheMap["idCardNo"]
|
|
|
reqParam["username"] = cacheMap["realName"]
|
|
|
reqParam["cardtype"] = 0 // 目前写死证件类型为身份证 - 0
|
|
|
@@ -297,7 +368,7 @@ func CaptchaVerify(req CaptchaVerifyReq) (err error) {
|
|
|
reqParam["bankid"] = cacheMap["bankId"]
|
|
|
reqParam["userinfotype"] = 1 // 1 - 个人
|
|
|
} else {
|
|
|
- reqParam["userid"] = req.UserId
|
|
|
+ reqParam["userid"] = strconv.Itoa(int(record.USERID))
|
|
|
reqParam["customername"] = cacheMap["companyName"]
|
|
|
reqParam["cardtype"] = 4 // 企业统一信用
|
|
|
reqParam["cardfrontphotourl"] = cacheMap["idCardPhoto"]
|
|
|
@@ -353,7 +424,7 @@ func CaptchaVerify(req CaptchaVerifyReq) (err error) {
|
|
|
SET RECORDSTATUS = 3,
|
|
|
UPDATETIME = SYSDATE
|
|
|
WHERE USERID = %v AND TEMPLATETYPE = 1
|
|
|
- `, req.UserId)
|
|
|
+ `, record.USERID)
|
|
|
_, err = db.GetEngine().Exec(sql)
|
|
|
|
|
|
return
|