customer.go 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package erms3
  2. import (
  3. "mtp2_if/global/app"
  4. "mtp2_if/global/e"
  5. "mtp2_if/logger"
  6. "mtp2_if/models"
  7. "net/http"
  8. "sort"
  9. "time"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // customer.go 客户管理
  13. // AddUserInfoApplyReq 新增客户申请请求参数
  14. type AddUserInfoApplyReq struct {
  15. models.Wskhuserinfo
  16. }
  17. // AddUserInfoApply 新增客户申请
  18. // @Summary 新增客户申请
  19. // @Produce json
  20. // @Security ApiKeyAuth
  21. // @Param jsonBody body AddUserInfoApplyReq true "申请参数"
  22. // @Success 200 {object} app.Response
  23. // @Failure 500 {object} app.Response
  24. // @Router /Erms3/AddUserInfoApply [post]
  25. // @Tags 风险管理v3
  26. func AddUserInfoApply(c *gin.Context) {
  27. appG := app.Gin{C: c}
  28. // 获取请求参数
  29. var req AddUserInfoApplyReq
  30. err := appG.C.ShouldBindJSON(&req)
  31. if err != nil {
  32. logger.GetLogger().Errorf("AddUserInfoApply failed: %s", err.Error())
  33. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  34. return
  35. }
  36. // 设置值
  37. req.Isvalidate = "1" // 是否有效 (删除后标记为失效) - 0:无效 1:有效
  38. req.Usertype = 6 // 用户类型 - 1:投资者 2:机构
  39. if err := models.InsertWSKHUserInfo(req.Wskhuserinfo); err != nil {
  40. // 执行失败
  41. logger.GetLogger().Errorf("AddUserInfoApply failed: %s", err.Error())
  42. appG.Response(http.StatusBadRequest, e.ERROR_OPERATION_FAILED, nil)
  43. return
  44. }
  45. // 执行成功
  46. logger.GetLogger().Debugln("AddUserInfoApply successed: %v", "OK")
  47. appG.Response(http.StatusOK, e.SUCCESS, "OK")
  48. }
  49. // QueryUserInfoAppliesReq 客户申请信息查询请求参数
  50. type QueryUserInfoAppliesReq struct {
  51. app.PageInfo
  52. UserName string `form:"userName"`
  53. }
  54. // QueryUserInfoAppliesRsp 客户申请信息查询返回模型
  55. type QueryUserInfoAppliesRsp struct {
  56. Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID(自增ID)
  57. Username string `json:"username" xorm:"'USERNAME'"` // 用户姓名
  58. Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业
  59. Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它
  60. Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人
  61. Userstate int32 `json:"userstate" xorm:"'USERSTATE'"` // 开户状态 - 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过
  62. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 开户申请时间
  63. }
  64. // QueryUserInfoApplies 客户申请信息查询
  65. // @Summary 客户申请信息查询
  66. // @Produce json
  67. // @Security ApiKeyAuth
  68. // @Param page query int false "页码"
  69. // @Param pagesize query int false "每页条数"
  70. // @Param userName query string false "客户名称,支持模糊查询"
  71. // @Success 200 {object} QueryUserInfoAppliesRsp
  72. // @Failure 500 {object} app.Response
  73. // @Router /Erms3/QueryUserInfoApplies [get]
  74. // @Tags 风险管理v3
  75. func QueryUserInfoApplies(c *gin.Context) {
  76. appG := app.Gin{C: c}
  77. // 获取请求参数
  78. var req QueryUserInfoAppliesReq
  79. err := appG.C.ShouldBindQuery(&req)
  80. if err != nil {
  81. logger.GetLogger().Errorf("QueryUserInfoApplies failed: %s", err.Error())
  82. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  83. return
  84. }
  85. // 获取客户信息
  86. userInfos, err := models.GetWSKHUserInfos(req.UserName)
  87. if err != nil {
  88. // 查询失败
  89. logger.GetLogger().Errorf("QueryUserInfoApplies failed: %s", err.Error())
  90. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  91. return
  92. }
  93. // 排序
  94. sort.Slice(userInfos, func(i int, j int) bool {
  95. return userInfos[i].Createtime.After(userInfos[j].Createtime)
  96. })
  97. // 分页
  98. total := len(userInfos)
  99. if req.PageSize > 0 {
  100. rstByPage := make([]models.Wskhuserinfo, 0)
  101. // 开始上标
  102. start := req.Page * req.PageSize
  103. // 结束下标
  104. end := start + req.PageSize
  105. if start <= len(userInfos) {
  106. // 判断结束下标是否越界
  107. if end > len(userInfos) {
  108. end = len(userInfos)
  109. }
  110. rstByPage = userInfos[start:end]
  111. } else {
  112. rstByPage = userInfos[0:0]
  113. }
  114. userInfos = rstByPage
  115. }
  116. // 转换返回模型
  117. rsp := make([]QueryUserInfoAppliesRsp, 0)
  118. for _, v := range userInfos {
  119. rsp = append(rsp, QueryUserInfoAppliesRsp{
  120. Userid: v.Userid,
  121. Username: v.Username,
  122. Userinfotype: v.Userinfotype,
  123. Biznature: v.Biznature,
  124. Contactname: v.Contactname,
  125. Userstate: v.Userstate,
  126. Createtime: v.Createtime,
  127. })
  128. }
  129. // 查询成功返回
  130. if req.PageSize > 0 {
  131. logger.GetLogger().Debugln("QueryUserInfoApplies successed: %v", rsp)
  132. appG.ResponseByPage(http.StatusOK, e.SUCCESS, rsp, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: total})
  133. } else {
  134. logger.GetLogger().Debugln("QueryUserInfoApplies successed: %v", rsp)
  135. appG.Response(http.StatusOK, e.SUCCESS, rsp)
  136. }
  137. }
  138. // QueryUserInfosReq 客户信息查询请求参数
  139. type QueryUserInfosReq struct {
  140. app.PageInfo
  141. UserName string `form:"userName"`
  142. }
  143. // QueryUserInfosRsp 客户信息查询返回模型
  144. type QueryUserInfosRsp struct {
  145. Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID
  146. Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业
  147. Customername string `json:"customername" xorm:"'CUSTOMERNAME'"` // 客户名称(企业名称)
  148. Userstatus int32 `json:"userstatus" xorm:"'USERSTATUS'"` // 用户状态 - 1:正常 2:注销
  149. Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它
  150. Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人
  151. }
  152. // QueryUserInfos 客户信息查询
  153. // @Summary 客户信息查询
  154. // @Produce json
  155. // @Security ApiKeyAuth
  156. // @Param page query int false "页码"
  157. // @Param pagesize query int false "每页条数"
  158. // @Param userName query string false "客户名称,支持模糊查询"
  159. // @Success 200 {object} QueryUserInfosRsp
  160. // @Failure 500 {object} app.Response
  161. // @Router /Erms3/QueryUserInfos [get]
  162. // @Tags 风险管理v3
  163. func QueryUserInfos(c *gin.Context) {
  164. appG := app.Gin{C: c}
  165. // 获取请求参数
  166. var req QueryUserInfosReq
  167. err := appG.C.ShouldBindQuery(&req)
  168. if err != nil {
  169. logger.GetLogger().Errorf("QueryUserInfos failed: %s", err.Error())
  170. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  171. return
  172. }
  173. // 获取客户信息
  174. userInfos, err := models.GetUserInfos(req.UserName)
  175. if err != nil {
  176. // 查询失败
  177. logger.GetLogger().Errorf("QueryUserInfos failed: %s", err.Error())
  178. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  179. return
  180. }
  181. // 排序
  182. sort.Slice(userInfos, func(i int, j int) bool {
  183. return userInfos[i].Createtime.After(userInfos[j].Createtime)
  184. })
  185. // 分页
  186. total := len(userInfos)
  187. if req.PageSize > 0 {
  188. rstByPage := make([]models.Userinfo, 0)
  189. // 开始上标
  190. start := req.Page * req.PageSize
  191. // 结束下标
  192. end := start + req.PageSize
  193. if start <= len(userInfos) {
  194. // 判断结束下标是否越界
  195. if end > len(userInfos) {
  196. end = len(userInfos)
  197. }
  198. rstByPage = userInfos[start:end]
  199. } else {
  200. rstByPage = userInfos[0:0]
  201. }
  202. userInfos = rstByPage
  203. }
  204. // 转换返回模型
  205. rsp := make([]QueryUserInfosRsp, 0)
  206. for _, v := range userInfos {
  207. rsp = append(rsp, QueryUserInfosRsp{
  208. Userid: v.Userid,
  209. Userinfotype: v.Userinfotype,
  210. Customername: v.Customername,
  211. Userstatus: v.Userstatus,
  212. Biznature: v.Biznature,
  213. Contactname: v.Contactname,
  214. })
  215. }
  216. // 查询成功返回
  217. if req.PageSize > 0 {
  218. logger.GetLogger().Debugln("QueryUserInfos successed: %v", rsp)
  219. appG.ResponseByPage(http.StatusOK, e.SUCCESS, rsp, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: total})
  220. } else {
  221. logger.GetLogger().Debugln("QueryUserInfos successed: %v", rsp)
  222. appG.Response(http.StatusOK, e.SUCCESS, rsp)
  223. }
  224. }