f
This commit is contained in:
@@ -154,6 +154,59 @@ func (h *CertificationHandler) ConfirmAuth(c *gin.Context) {
|
||||
h.response.Success(c, result, "状态确认成功")
|
||||
}
|
||||
|
||||
// ListSignPlatforms 可选签署平台列表
|
||||
func (h *CertificationHandler) ListSignPlatforms(c *gin.Context) {
|
||||
result, err := h.appService.ListSignPlatforms(c.Request.Context())
|
||||
if err != nil {
|
||||
h.response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
h.response.Success(c, result, "获取签署平台列表成功")
|
||||
}
|
||||
|
||||
// SelectSignPlatform 选择签署平台并生成企业认证链接
|
||||
func (h *CertificationHandler) SelectSignPlatform(c *gin.Context) {
|
||||
var cmd commands.SelectSignPlatformCommand
|
||||
cmd.UserID = h.getCurrentUserID(c)
|
||||
if cmd.UserID == "" {
|
||||
h.response.Unauthorized(c, "用户未登录")
|
||||
return
|
||||
}
|
||||
if err := c.ShouldBindJSON(&cmd); err != nil {
|
||||
h.response.BadRequest(c, "请求参数错误")
|
||||
return
|
||||
}
|
||||
result, err := h.appService.SelectSignPlatform(c.Request.Context(), &cmd)
|
||||
if err != nil {
|
||||
h.logger.Error("选择签署平台失败", zap.Error(err), zap.String("user_id", cmd.UserID))
|
||||
h.response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
h.response.Success(c, result, "已选择签署平台")
|
||||
}
|
||||
|
||||
// HandleFadadaCallback 法大大回调
|
||||
func (h *CertificationHandler) HandleFadadaCallback(c *gin.Context) {
|
||||
headers := make(map[string]string)
|
||||
for key, values := range c.Request.Header {
|
||||
if len(values) > 0 {
|
||||
headers[key] = values[0]
|
||||
}
|
||||
}
|
||||
body, err := io.ReadAll(c.Request.Body)
|
||||
if err != nil {
|
||||
h.logger.Error("读取法大大回调失败", zap.Error(err))
|
||||
c.String(400, "fail")
|
||||
return
|
||||
}
|
||||
if err := h.appService.HandleFadadaCallback(c.Request.Context(), headers, body); err != nil {
|
||||
h.logger.Error("处理法大大回调失败", zap.Error(err))
|
||||
c.String(400, "fail")
|
||||
return
|
||||
}
|
||||
c.Data(200, "application/json", []byte(`{"msg":"success"}`))
|
||||
}
|
||||
|
||||
// ConfirmSign 前端确认是否完成签署
|
||||
// @Summary 前端确认签署状态
|
||||
// @Description 前端轮询确认合同签署是否完成
|
||||
@@ -219,6 +272,38 @@ func (h *CertificationHandler) ApplyContract(c *gin.Context) {
|
||||
h.response.Success(c, result, "合同申请成功")
|
||||
}
|
||||
|
||||
// RefreshContractSignURL 刷新合同签署 iframe 长链
|
||||
func (h *CertificationHandler) RefreshContractSignURL(c *gin.Context) {
|
||||
userID := h.getCurrentUserID(c)
|
||||
if userID == "" {
|
||||
h.response.Unauthorized(c, "用户未登录")
|
||||
return
|
||||
}
|
||||
result, err := h.appService.RefreshContractSignURL(c.Request.Context(), userID)
|
||||
if err != nil {
|
||||
h.logger.Error("刷新签署链接失败", zap.Error(err), zap.String("user_id", userID))
|
||||
h.response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
h.response.Success(c, result, "签署链接已刷新")
|
||||
}
|
||||
|
||||
// RefreshContractPreviewURL 刷新合同预览链接
|
||||
func (h *CertificationHandler) RefreshContractPreviewURL(c *gin.Context) {
|
||||
userID := h.getCurrentUserID(c)
|
||||
if userID == "" {
|
||||
h.response.Unauthorized(c, "用户未登录")
|
||||
return
|
||||
}
|
||||
result, err := h.appService.RefreshContractPreviewURL(c.Request.Context(), userID)
|
||||
if err != nil {
|
||||
h.logger.Error("刷新合同预览链接失败", zap.Error(err), zap.String("user_id", userID))
|
||||
h.response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
h.response.Success(c, result, "预览链接已刷新")
|
||||
}
|
||||
|
||||
// RecognizeBusinessLicense OCR识别营业执照
|
||||
// @Summary OCR识别营业执照
|
||||
// @Description 上传营业执照图片进行OCR识别,自动填充企业信息
|
||||
@@ -451,6 +536,46 @@ func (h *CertificationHandler) AdminCompleteCertificationWithoutContract(c *gin.
|
||||
h.response.Success(c, result, "代用户完成认证成功")
|
||||
}
|
||||
|
||||
// AdminResetForResignContract 管理员触发重新认证
|
||||
// @Summary 管理员触发重新认证
|
||||
// @Description 将认证回退到 pending,用户可重新填写企业信息并走完整入驻流程;保留钱包、API Key、历史合同与 is_certified
|
||||
// @Tags 认证管理
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security Bearer
|
||||
// @Param request body commands.AdminResetForResignContractCommand true "管理员重新认证请求"
|
||||
// @Success 200 {object} responses.CertificationResponse "操作成功"
|
||||
// @Failure 400 {object} map[string]interface{} "请求参数错误"
|
||||
// @Failure 401 {object} map[string]interface{} "未认证"
|
||||
// @Failure 403 {object} map[string]interface{} "权限不足"
|
||||
// @Router /api/v1/certifications/admin/reset-for-resign-contract [post]
|
||||
func (h *CertificationHandler) AdminResetForResignContract(c *gin.Context) {
|
||||
adminID := h.getCurrentUserID(c)
|
||||
if adminID == "" {
|
||||
h.response.Unauthorized(c, "用户未登录")
|
||||
return
|
||||
}
|
||||
|
||||
var cmd commands.AdminResetForResignContractCommand
|
||||
if err := h.validator.BindAndValidate(c, &cmd); err != nil {
|
||||
return
|
||||
}
|
||||
cmd.AdminID = adminID
|
||||
|
||||
result, err := h.appService.AdminResetForResignContract(c.Request.Context(), &cmd)
|
||||
if err != nil {
|
||||
h.logger.Error("管理员触发重新认证失败",
|
||||
zap.Error(err),
|
||||
zap.String("admin_id", adminID),
|
||||
zap.String("user_id", cmd.UserID),
|
||||
)
|
||||
h.response.BadRequest(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
h.response.Success(c, result, "已重置为重新认证,请通知用户前往企业入驻重新填写企业信息")
|
||||
}
|
||||
|
||||
// AdminListSubmitRecords 管理端分页查询企业信息提交记录
|
||||
// @Summary 管理端企业审核列表
|
||||
// @Tags 认证管理
|
||||
|
||||
@@ -64,9 +64,16 @@ func (r *CertificationRoutes) Register(router *http.GinRouter) {
|
||||
// 3. 申请合同签署
|
||||
authGroup.POST("/apply-contract", r.handler.ApplyContract)
|
||||
|
||||
authGroup.POST("/refresh-contract-sign-url", r.handler.RefreshContractSignURL)
|
||||
authGroup.POST("/refresh-contract-preview-url", r.handler.RefreshContractPreviewURL)
|
||||
|
||||
// 前端确认是否完成认证
|
||||
authGroup.POST("/confirm-auth", r.handler.ConfirmAuth)
|
||||
|
||||
// 签署平台选择(审核通过后、企业认证前)
|
||||
authGroup.GET("/sign-platforms", r.handler.ListSignPlatforms)
|
||||
authGroup.POST("/select-sign-platform", r.handler.SelectSignPlatform)
|
||||
|
||||
// 前端确认是否完成签署
|
||||
authGroup.POST("/confirm-sign", r.handler.ConfirmSign)
|
||||
}
|
||||
@@ -78,6 +85,7 @@ func (r *CertificationRoutes) Register(router *http.GinRouter) {
|
||||
{
|
||||
adminGroup.GET("", r.handler.ListCertifications) // 查询认证列表(管理员)
|
||||
adminGroup.POST("/complete-without-contract", r.handler.AdminCompleteCertificationWithoutContract)
|
||||
adminGroup.POST("/reset-for-resign-contract", r.handler.AdminResetForResignContract)
|
||||
adminGroup.POST("/transition-status", r.handler.AdminTransitionCertificationStatus)
|
||||
}
|
||||
adminCertGroup := adminGroup.Group("/submit-records")
|
||||
@@ -91,7 +99,8 @@ func (r *CertificationRoutes) Register(router *http.GinRouter) {
|
||||
// 回调路由(不需要认证,但需要验证签名)
|
||||
callbackGroup := certificationGroup.Group("/callbacks")
|
||||
{
|
||||
callbackGroup.POST("/esign", r.handler.HandleEsignCallback) // e签宝回调(统一处理企业认证和合同签署回调)
|
||||
callbackGroup.POST("/esign", r.handler.HandleEsignCallback)
|
||||
callbackGroup.POST("/fadada", r.handler.HandleFadadaCallback)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user