package erms3 import ( "mtp2_if/global/app" "mtp2_if/global/e" "mtp2_if/logger" "mtp2_if/models" "net/http" "sort" "time" "github.com/gin-gonic/gin" ) // customer.go 客户管理 // AddUserInfoApplyReq 新增客户申请请求参数 type AddUserInfoApplyReq struct { models.Wskhuserinfo } // AddUserInfoApply 新增客户申请 // @Summary 新增客户申请 // @Produce json // @Security ApiKeyAuth // @Param jsonBody body AddUserInfoApplyReq true "用户信息" // @Success 200 {object} app.Response // @Failure 500 {object} app.Response // @Router /Erms3/AddUserInfoApply [post] // @Tags 风险管理v3 func AddUserInfoApply(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req AddUserInfoApplyReq err := appG.C.ShouldBindJSON(&req) if err != nil { logger.GetLogger().Errorf("AddUserInfoApply failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } // 设置值 req.Isvalidate = "1" // 是否有效 (删除后标记为失效) - 0:无效 1:有效 req.Usertype = 6 // 用户类型 - 1:投资者 2:机构 if err := models.InsertWSKHUserInfo(req.Wskhuserinfo); err != nil { // 执行失败 logger.GetLogger().Errorf("AddUserInfoApply failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_OPERATION_FAILED, nil) return } // 执行成功 logger.GetLogger().Debugln("AddUserInfoApply successed: %v", "OK") appG.Response(http.StatusOK, e.SUCCESS, "OK") } // ModifyUserInfoApplyReq 修改客户申请请求参数 type ModifyUserInfoApplyReq struct { models.Wskhuserinfo } // ModifyUserInfoApply 修改客户申请 // @Summary 修改客户申请 // @description 保存草稿(撤回)- { "userid": int, "userstate": 1 } 提交审核 - { "userid": int, "userstate": 2 } // @Produce json // @Security ApiKeyAuth // @Param jsonBody body ModifyUserInfoApplyReq true "用户信息" // @Success 200 {object} app.Response // @Failure 500 {object} app.Response // @Router /Erms3/ModifyUserInfoApply [post] // @Tags 风险管理v3 func ModifyUserInfoApply(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req ModifyUserInfoApplyReq err := appG.C.ShouldBindJSON(&req) if err != nil { logger.GetLogger().Errorf("ModifyUserInfoApply failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := models.UpdateWSKHUserInfo(req.Wskhuserinfo); err != nil { // 执行失败 logger.GetLogger().Errorf("ModifyUserInfoApply failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_OPERATION_FAILED, nil) return } // 执行成功 logger.GetLogger().Debugln("ModifyUserInfoApply successed: %v", "OK") appG.Response(http.StatusOK, e.SUCCESS, "OK") } // DeleteUserInfoApplyReq 删除客户申请请求参数 type DeleteUserInfoApplyReq struct { UserID int `form:"userID" binding:"required"` } // DeleteUserInfoApply 删除客户申请 // @Summary 删除客户申请 // @description 只可删除 UserState = 1 (未提交)状态的申请信息 // @Produce json // @Security ApiKeyAuth // @Param userID query int true "用户ID" // @Success 200 {object} app.Response // @Failure 500 {object} app.Response // @Router /Erms3/DeleteUserInfoApply [get] // @Tags 风险管理v3 func DeleteUserInfoApply(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req DeleteUserInfoApplyReq err := appG.C.ShouldBindQuery(&req) if err != nil { logger.GetLogger().Errorf("DeleteUserInfoApply failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } if err := models.DeleteWSKHUserInfo(req.UserID); err != nil { // 执行失败 logger.GetLogger().Errorf("DeleteUserInfoApply failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_OPERATION_FAILED, nil) return } // 执行成功 logger.GetLogger().Debugln("DeleteUserInfoApply successed: %v", "OK") appG.Response(http.StatusOK, e.SUCCESS, "OK") } // QueryUserInfoAppliesReq 客户申请信息查询请求参数 type QueryUserInfoAppliesReq struct { app.PageInfo UserName string `form:"userName"` } // QueryUserInfoAppliesRsp 客户申请信息查询返回模型 type QueryUserInfoAppliesRsp struct { Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID(自增ID) Username string `json:"username" xorm:"'USERNAME'"` // 用户姓名 Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业 Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它 Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人 Userstate int32 `json:"userstate" xorm:"'USERSTATE'"` // 开户状态 - 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过 Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 开户申请时间 } // QueryUserInfoApplies 客户申请信息查询 // @Summary 客户申请信息查询 // @Produce json // @Security ApiKeyAuth // @Param page query int false "页码" // @Param pagesize query int false "每页条数" // @Param userName query string false "客户名称,支持模糊查询" // @Success 200 {object} QueryUserInfoAppliesRsp // @Failure 500 {object} app.Response // @Router /Erms3/QueryUserInfoApplies [get] // @Tags 风险管理v3 func QueryUserInfoApplies(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req QueryUserInfoAppliesReq err := appG.C.ShouldBindQuery(&req) if err != nil { logger.GetLogger().Errorf("QueryUserInfoApplies failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } // 获取客户信息 userInfos, err := models.GetWSKHUserInfos(req.UserName) if err != nil { // 查询失败 logger.GetLogger().Errorf("QueryUserInfoApplies failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 排序 sort.Slice(userInfos, func(i int, j int) bool { return userInfos[i].Createtime.After(userInfos[j].Createtime) }) // 分页 total := len(userInfos) if req.PageSize > 0 { rstByPage := make([]models.Wskhuserinfo, 0) // 开始上标 start := req.Page * req.PageSize // 结束下标 end := start + req.PageSize if start <= len(userInfos) { // 判断结束下标是否越界 if end > len(userInfos) { end = len(userInfos) } rstByPage = userInfos[start:end] } else { rstByPage = userInfos[0:0] } userInfos = rstByPage } // 转换返回模型 rsp := make([]QueryUserInfoAppliesRsp, 0) for _, v := range userInfos { rsp = append(rsp, QueryUserInfoAppliesRsp{ Userid: v.Userid, Username: v.Username, Userinfotype: v.Userinfotype, Biznature: v.Biznature, Contactname: v.Contactname, Userstate: v.Userstate, Createtime: v.Createtime, }) } // 查询成功返回 if req.PageSize > 0 { logger.GetLogger().Debugln("QueryUserInfoApplies successed: %v", rsp) appG.ResponseByPage(http.StatusOK, e.SUCCESS, rsp, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: total}) } else { logger.GetLogger().Debugln("QueryUserInfoApplies successed: %v", rsp) appG.Response(http.StatusOK, e.SUCCESS, rsp) } } // QueryUserInfosReq 客户信息查询请求参数 type QueryUserInfosReq struct { app.PageInfo UserName string `form:"userName"` } // QueryUserInfosRsp 客户信息查询返回模型 type QueryUserInfosRsp struct { Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业 Customername string `json:"customername" xorm:"'CUSTOMERNAME'"` // 客户名称(企业名称) Userstatus int32 `json:"userstatus" xorm:"'USERSTATUS'"` // 用户状态 - 1:正常 2:注销 Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它 Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人 } // QueryUserInfos 客户信息查询 // @Summary 客户信息查询 // @Produce json // @Security ApiKeyAuth // @Param page query int false "页码" // @Param pagesize query int false "每页条数" // @Param userName query string false "客户名称,支持模糊查询" // @Success 200 {object} QueryUserInfosRsp // @Failure 500 {object} app.Response // @Router /Erms3/QueryUserInfos [get] // @Tags 风险管理v3 func QueryUserInfos(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req QueryUserInfosReq err := appG.C.ShouldBindQuery(&req) if err != nil { logger.GetLogger().Errorf("QueryUserInfos failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } // 获取客户信息 userInfos, err := models.GetUserInfos(req.UserName) if err != nil { // 查询失败 logger.GetLogger().Errorf("QueryUserInfos failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 排序 sort.Slice(userInfos, func(i int, j int) bool { return userInfos[i].Createtime.After(userInfos[j].Createtime) }) // 分页 total := len(userInfos) if req.PageSize > 0 { rstByPage := make([]models.Userinfo, 0) // 开始上标 start := req.Page * req.PageSize // 结束下标 end := start + req.PageSize if start <= len(userInfos) { // 判断结束下标是否越界 if end > len(userInfos) { end = len(userInfos) } rstByPage = userInfos[start:end] } else { rstByPage = userInfos[0:0] } userInfos = rstByPage } // 转换返回模型 rsp := make([]QueryUserInfosRsp, 0) for _, v := range userInfos { rsp = append(rsp, QueryUserInfosRsp{ Userid: v.Userid, Userinfotype: v.Userinfotype, Customername: v.Customername, Userstatus: v.Userstatus, Biznature: v.Biznature, Contactname: v.Contactname, }) } // 查询成功返回 if req.PageSize > 0 { logger.GetLogger().Debugln("QueryUserInfos successed: %v", rsp) appG.ResponseByPage(http.StatusOK, e.SUCCESS, rsp, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: total}) } else { logger.GetLogger().Debugln("QueryUserInfos successed: %v", rsp) appG.Response(http.StatusOK, e.SUCCESS, rsp) } }