|
|
@@ -7,6 +7,7 @@ import (
|
|
|
"mtp20access/global"
|
|
|
"mtp20access/model/account"
|
|
|
"mtp20access/model/account/request"
|
|
|
+ "mtp20access/model/account/response"
|
|
|
"mtp20access/service/asign"
|
|
|
"strconv"
|
|
|
"time"
|
|
|
@@ -24,6 +25,14 @@ func QueryUserESignRecord(userId int) (rsp []account.Useresignrecord, err error)
|
|
|
|
|
|
// AddUser 添加用户
|
|
|
func AddUser(req request.AddUserReq, userId int) (err error) {
|
|
|
+ // 获取用户电子签记录
|
|
|
+ useresignrecord := new(account.Useresignrecord)
|
|
|
+ has, _ := global.M2A_DB.Where("USERID = ? AND TEMPLATETYPE = 1 AND RECORDSTATUS = 3", userId).Get(useresignrecord)
|
|
|
+ if has {
|
|
|
+ err = errors.New("用户已同步")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
// 调用爱签API-添加个人用户(https://{host}/user/addPersonalUser)
|
|
|
rsp, err := asign.AddPersonalUserBy(
|
|
|
strconv.Itoa(userId),
|
|
|
@@ -55,7 +64,7 @@ func AddUser(req request.AddUserReq, userId int) (err error) {
|
|
|
WHERE USERID = %v
|
|
|
`, string(authinfo), userId)
|
|
|
if _, err = global.M2A_DB.Exec(sql); err != nil {
|
|
|
- global.M2A_LOG.Error("【AddUser】 添加用户电子签记录", zap.Error(err))
|
|
|
+ global.M2A_LOG.Error("【AddUser】 更新用户电子签记录失败", zap.Error(err))
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -63,7 +72,7 @@ func AddUser(req request.AddUserReq, userId int) (err error) {
|
|
|
}
|
|
|
|
|
|
// CreateContractAndAddSigner 上传待签署文件和添加签署方
|
|
|
-func CreateContractAndAddSigner(req request.CreateContractAndAddSignerReq, userId int) (err error) {
|
|
|
+func CreateContractAndAddSigner(req request.CreateContractAndAddSignerReq, userId int) (rsp response.CreateContractAndAddSignerRsp, err error) {
|
|
|
// 获取用户电子签记录
|
|
|
useresignrecord := new(account.Useresignrecord)
|
|
|
has, err := global.M2A_DB.Where("USERID = ? AND TEMPLATENO = ?", userId, req.TemplateNo).Get(useresignrecord)
|
|
|
@@ -79,7 +88,7 @@ func CreateContractAndAddSigner(req request.CreateContractAndAddSignerReq, userI
|
|
|
contractNo := fmt.Sprintf("%d_%s_%v", userId, time.Now().Format("2006-01-02 15:04:05"), useresignrecord.RECORDID)
|
|
|
|
|
|
// 调用爱签API-上传待签署文件(https://{host}/contract/createContract)
|
|
|
- rsp, e := asign.CreateContract(
|
|
|
+ r, e := asign.CreateContract(
|
|
|
contractNo,
|
|
|
useresignrecord.TEMPLATENAME,
|
|
|
useresignrecord.TEMPLATENO,
|
|
|
@@ -88,8 +97,8 @@ func CreateContractAndAddSigner(req request.CreateContractAndAddSignerReq, userI
|
|
|
err = e
|
|
|
return
|
|
|
}
|
|
|
- if rsp.Code != 100000 {
|
|
|
- err = errors.New(strconv.Itoa(rsp.Code))
|
|
|
+ if r.Code != 100000 {
|
|
|
+ err = errors.New(strconv.Itoa(r.Code))
|
|
|
global.M2A_LOG.Error("【CreateContractAndAddSigner】 上传待签署文件接口调用失败", zap.Error(err))
|
|
|
return
|
|
|
}
|
|
|
@@ -108,9 +117,11 @@ func CreateContractAndAddSigner(req request.CreateContractAndAddSignerReq, userI
|
|
|
}
|
|
|
|
|
|
// 判断是否需要添加签署方(获取合同签约地址)
|
|
|
- if useresignrecord.SIGNURL == "" {
|
|
|
+ if useresignrecord.SIGNURL != "" {
|
|
|
+ err = errors.New("合同签署链接已存在")
|
|
|
+ } else {
|
|
|
// 调用爱签API-添加签署方(https://{host}/contract/addSigner)
|
|
|
- rsp, e := asign.AddSigner(
|
|
|
+ r, e := asign.AddSigner(
|
|
|
useresignrecord.CONTRACTNO,
|
|
|
strconv.Itoa(userId),
|
|
|
)
|
|
|
@@ -118,24 +129,26 @@ func CreateContractAndAddSigner(req request.CreateContractAndAddSignerReq, userI
|
|
|
err = e
|
|
|
return
|
|
|
}
|
|
|
- if rsp.Code != 100000 {
|
|
|
- err = errors.New(strconv.Itoa(rsp.Code))
|
|
|
+ if r.Code != 100000 {
|
|
|
+ err = errors.New(strconv.Itoa(r.Code))
|
|
|
global.M2A_LOG.Error("【CreateContractAndAddSigner】 添加签署方接口调用失败", zap.Error(err))
|
|
|
return
|
|
|
}
|
|
|
- if len(rsp.Data.SignUser) > 0 {
|
|
|
- useresignrecord.SIGNURL = rsp.Data.SignUser[0].SignUrl
|
|
|
- }
|
|
|
- // 将返回的合同编号写入数据库
|
|
|
- sql := fmt.Sprintf(`
|
|
|
- UPDATE useresignrecord
|
|
|
- SET SIGNURL = '%v'
|
|
|
- UPDATETIME = SYSDATE
|
|
|
- WHERE RECORDID = %v
|
|
|
- `, useresignrecord.SIGNURL, useresignrecord.RECORDID)
|
|
|
- if _, err = global.M2A_DB.Exec(sql); err != nil {
|
|
|
- global.M2A_LOG.Error("【CreateContractAndAddSigner】 写入合同签署链接失败", zap.Error(err))
|
|
|
- return
|
|
|
+ if len(r.Data.SignUser) > 0 {
|
|
|
+ useresignrecord.SIGNURL = r.Data.SignUser[0].SignUrl
|
|
|
+ // 将返回的合同编号写入数据库
|
|
|
+ sql := fmt.Sprintf(`
|
|
|
+ UPDATE useresignrecord
|
|
|
+ SET SIGNURL = '%v'
|
|
|
+ UPDATETIME = SYSDATE
|
|
|
+ WHERE RECORDID = %v
|
|
|
+ `, useresignrecord.SIGNURL, useresignrecord.RECORDID)
|
|
|
+ if _, err = global.M2A_DB.Exec(sql); err != nil {
|
|
|
+ global.M2A_LOG.Error("【CreateContractAndAddSigner】 写入合同签署链接失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 给客户端返回合同签署地址
|
|
|
+ rsp.SignUrl = useresignrecord.SIGNURL
|
|
|
}
|
|
|
}
|
|
|
|