diff --git a/api/service/UserCaCert.go b/api/service/UserCaCert.go index b673e7c..996f7d0 100644 --- a/api/service/UserCaCert.go +++ b/api/service/UserCaCert.go @@ -188,7 +188,15 @@ func (r *UserCaCertService) AddHospitalCloudCert(tx *gorm.DB) (bool, error) { maps["type"] = 2 userCaCert, _ := userCaCertDao.GetUserCaCert(maps) if userCaCert != nil { - return false, errors.New("医院存在正常使用的云证书,请注销后重新申请") + if time.Time(userCaCert.CertExpireTime).IsZero() { + return false, errors.New("医院云证书过期时间错误") + } + + now := time.Now() + certExpireTime := time.Time(userCaCert.CertExpireTime) + if now.Before(certExpireTime) { + return false, errors.New("医院云证书还未过期") + } } // 申请云证书 @@ -214,25 +222,45 @@ func (r *UserCaCertService) AddHospitalCloudCert(tx *gorm.DB) (bool, error) { return false, errors.New(err.Error()) } - // 新增ca监管证书表 - userCaCert = &model.UserCaCert{ - UserId: &userId, - IsSystem: 1, - IsLatest: 1, - Type: 2, - CertBase64: cloudCertResponse.CertBase64, - CertChainP7: cloudCertResponse.CertP7, - CertSerialNumber: cloudCertResponse.CertSerialnumber, - CaPin: fmt.Sprintf("%d", userId), - IsSignConfig: 0, - SignConfig: "", - CertApplicationTime: model.LocalTime(time.Now()), - CertExpireTime: model.LocalTime(time.Now().AddDate(0, 0, 180)), // 180天以后的时间 + // 到期时间-测试:180,正式:365 + CertExpireTime := model.LocalTime(time.Now().AddDate(0, 0, 180)) + if config.C.Env == "prod" { + CertExpireTime = model.LocalTime(time.Now().AddDate(0, 0, 365)) } - userCaCert, err = userCaCertDao.AddUserCaCert(tx, userCaCert) - if err != nil || userCaCert == nil { - return false, errors.New(err.Error()) + if userCaCert == nil { + // 新增ca监管证书表 + userCaCert = &model.UserCaCert{ + UserId: &userId, + IsSystem: 1, + IsLatest: 1, + Type: 2, + CertBase64: cloudCertResponse.CertBase64, + CertChainP7: cloudCertResponse.CertP7, + CertSerialNumber: cloudCertResponse.CertSerialnumber, + CaPin: fmt.Sprintf("%d", userId), + IsSignConfig: 0, + SignConfig: "", + CertApplicationTime: model.LocalTime(time.Now()), + CertExpireTime: model.LocalTime(time.Now().AddDate(0, 0, 180)), // 180天以后的时间 + } + + userCaCert, err = userCaCertDao.AddUserCaCert(tx, userCaCert) + if err != nil || userCaCert == nil { + return false, errors.New(err.Error()) + } + } else { + // 修改ca监管证书表 + data := make(map[string]interface{}) + data["cert_base64"] = cloudCertResponse.CertBase64 + data["cert_chain_p7"] = cloudCertResponse.CertP7 + data["cert_serial_number"] = cloudCertResponse.CertSerialnumber + data["cert_application_time"] = model.LocalTime(time.Now()) + data["cert_expire_time"] = CertExpireTime + err = userCaCertDao.EditUserCaCertById(tx, userCaCert.CertId, data) + if err != nil { + return false, errors.New("审核失败") + } } return true, nil