customer.go 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  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. // ModifyUserInfoApplyReq 修改客户申请请求参数
  50. type ModifyUserInfoApplyReq struct {
  51. models.Wskhuserinfo
  52. }
  53. // ModifyUserInfoApply 修改客户申请
  54. // @Summary 修改客户申请
  55. // @description 保存草稿(撤回)- { "userid": int, "userstate": 1 } 提交审核 - { "userid": int, "userstate": 2 }
  56. // @Produce json
  57. // @Security ApiKeyAuth
  58. // @Param jsonBody body ModifyUserInfoApplyReq true "用户信息"
  59. // @Success 200 {object} app.Response
  60. // @Failure 500 {object} app.Response
  61. // @Router /Erms3/ModifyUserInfoApply [post]
  62. // @Tags 风险管理v3
  63. func ModifyUserInfoApply(c *gin.Context) {
  64. appG := app.Gin{C: c}
  65. // 获取请求参数
  66. var req ModifyUserInfoApplyReq
  67. err := appG.C.ShouldBindJSON(&req)
  68. if err != nil {
  69. logger.GetLogger().Errorf("ModifyUserInfoApply failed: %s", err.Error())
  70. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  71. return
  72. }
  73. if err := models.UpdateWSKHUserInfo(req.Wskhuserinfo); err != nil {
  74. // 执行失败
  75. logger.GetLogger().Errorf("ModifyUserInfoApply failed: %s", err.Error())
  76. appG.Response(http.StatusBadRequest, e.ERROR_OPERATION_FAILED, nil)
  77. return
  78. }
  79. // 执行成功
  80. logger.GetLogger().Debugln("ModifyUserInfoApply successed: %v", "OK")
  81. appG.Response(http.StatusOK, e.SUCCESS, "OK")
  82. }
  83. // QueryUserInfoAppliesReq 客户申请信息查询请求参数
  84. type QueryUserInfoAppliesReq struct {
  85. app.PageInfo
  86. UserName string `form:"userName"`
  87. }
  88. // QueryUserInfoAppliesRsp 客户申请信息查询返回模型
  89. type QueryUserInfoAppliesRsp struct {
  90. Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID(自增ID)
  91. Username string `json:"username" xorm:"'USERNAME'"` // 用户姓名
  92. Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业
  93. Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它
  94. Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人
  95. Userstate int32 `json:"userstate" xorm:"'USERSTATE'"` // 开户状态 - 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过
  96. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 开户申请时间
  97. }
  98. // QueryUserInfoApplies 客户申请信息查询
  99. // @Summary 客户申请信息查询
  100. // @Produce json
  101. // @Security ApiKeyAuth
  102. // @Param page query int false "页码"
  103. // @Param pagesize query int false "每页条数"
  104. // @Param userName query string false "客户名称,支持模糊查询"
  105. // @Success 200 {object} QueryUserInfoAppliesRsp
  106. // @Failure 500 {object} app.Response
  107. // @Router /Erms3/QueryUserInfoApplies [get]
  108. // @Tags 风险管理v3
  109. func QueryUserInfoApplies(c *gin.Context) {
  110. appG := app.Gin{C: c}
  111. // 获取请求参数
  112. var req QueryUserInfoAppliesReq
  113. err := appG.C.ShouldBindQuery(&req)
  114. if err != nil {
  115. logger.GetLogger().Errorf("QueryUserInfoApplies failed: %s", err.Error())
  116. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  117. return
  118. }
  119. // 获取客户信息
  120. userInfos, err := models.GetWSKHUserInfos(req.UserName)
  121. if err != nil {
  122. // 查询失败
  123. logger.GetLogger().Errorf("QueryUserInfoApplies failed: %s", err.Error())
  124. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  125. return
  126. }
  127. // 排序
  128. sort.Slice(userInfos, func(i int, j int) bool {
  129. return userInfos[i].Createtime.After(userInfos[j].Createtime)
  130. })
  131. // 分页
  132. total := len(userInfos)
  133. if req.PageSize > 0 {
  134. rstByPage := make([]models.Wskhuserinfo, 0)
  135. // 开始上标
  136. start := req.Page * req.PageSize
  137. // 结束下标
  138. end := start + req.PageSize
  139. if start <= len(userInfos) {
  140. // 判断结束下标是否越界
  141. if end > len(userInfos) {
  142. end = len(userInfos)
  143. }
  144. rstByPage = userInfos[start:end]
  145. } else {
  146. rstByPage = userInfos[0:0]
  147. }
  148. userInfos = rstByPage
  149. }
  150. // 转换返回模型
  151. rsp := make([]QueryUserInfoAppliesRsp, 0)
  152. for _, v := range userInfos {
  153. rsp = append(rsp, QueryUserInfoAppliesRsp{
  154. Userid: v.Userid,
  155. Username: v.Username,
  156. Userinfotype: v.Userinfotype,
  157. Biznature: v.Biznature,
  158. Contactname: v.Contactname,
  159. Userstate: v.Userstate,
  160. Createtime: v.Createtime,
  161. })
  162. }
  163. // 查询成功返回
  164. if req.PageSize > 0 {
  165. logger.GetLogger().Debugln("QueryUserInfoApplies successed: %v", rsp)
  166. appG.ResponseByPage(http.StatusOK, e.SUCCESS, rsp, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: total})
  167. } else {
  168. logger.GetLogger().Debugln("QueryUserInfoApplies successed: %v", rsp)
  169. appG.Response(http.StatusOK, e.SUCCESS, rsp)
  170. }
  171. }
  172. // QueryUserInfosReq 客户信息查询请求参数
  173. type QueryUserInfosReq struct {
  174. app.PageInfo
  175. UserName string `form:"userName"`
  176. }
  177. // QueryUserInfosRsp 客户信息查询返回模型
  178. type QueryUserInfosRsp struct {
  179. Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID
  180. Userinfotype int32 `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 用户信息类型 - 1:个人 2:企业
  181. Customername string `json:"customername" xorm:"'CUSTOMERNAME'"` // 客户名称(企业名称)
  182. Userstatus int32 `json:"userstatus" xorm:"'USERSTATUS'"` // 用户状态 - 1:正常 2:注销
  183. Biznature int32 `json:"biznature" xorm:"'BIZNATURE'"` // 企业性质( 企业) - 1:国有控股企业 2:集体控股企业 3:私人控股企业 4:港澳台商控股企业 5:外商控股企业 6:其它
  184. Contactname string `json:"contactname" xorm:"'CONTACTNAME'"` // 联系人
  185. }
  186. // QueryUserInfos 客户信息查询
  187. // @Summary 客户信息查询
  188. // @Produce json
  189. // @Security ApiKeyAuth
  190. // @Param page query int false "页码"
  191. // @Param pagesize query int false "每页条数"
  192. // @Param userName query string false "客户名称,支持模糊查询"
  193. // @Success 200 {object} QueryUserInfosRsp
  194. // @Failure 500 {object} app.Response
  195. // @Router /Erms3/QueryUserInfos [get]
  196. // @Tags 风险管理v3
  197. func QueryUserInfos(c *gin.Context) {
  198. appG := app.Gin{C: c}
  199. // 获取请求参数
  200. var req QueryUserInfosReq
  201. err := appG.C.ShouldBindQuery(&req)
  202. if err != nil {
  203. logger.GetLogger().Errorf("QueryUserInfos failed: %s", err.Error())
  204. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  205. return
  206. }
  207. // 获取客户信息
  208. userInfos, err := models.GetUserInfos(req.UserName)
  209. if err != nil {
  210. // 查询失败
  211. logger.GetLogger().Errorf("QueryUserInfos failed: %s", err.Error())
  212. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  213. return
  214. }
  215. // 排序
  216. sort.Slice(userInfos, func(i int, j int) bool {
  217. return userInfos[i].Createtime.After(userInfos[j].Createtime)
  218. })
  219. // 分页
  220. total := len(userInfos)
  221. if req.PageSize > 0 {
  222. rstByPage := make([]models.Userinfo, 0)
  223. // 开始上标
  224. start := req.Page * req.PageSize
  225. // 结束下标
  226. end := start + req.PageSize
  227. if start <= len(userInfos) {
  228. // 判断结束下标是否越界
  229. if end > len(userInfos) {
  230. end = len(userInfos)
  231. }
  232. rstByPage = userInfos[start:end]
  233. } else {
  234. rstByPage = userInfos[0:0]
  235. }
  236. userInfos = rstByPage
  237. }
  238. // 转换返回模型
  239. rsp := make([]QueryUserInfosRsp, 0)
  240. for _, v := range userInfos {
  241. rsp = append(rsp, QueryUserInfosRsp{
  242. Userid: v.Userid,
  243. Userinfotype: v.Userinfotype,
  244. Customername: v.Customername,
  245. Userstatus: v.Userstatus,
  246. Biznature: v.Biznature,
  247. Contactname: v.Contactname,
  248. })
  249. }
  250. // 查询成功返回
  251. if req.PageSize > 0 {
  252. logger.GetLogger().Debugln("QueryUserInfos successed: %v", rsp)
  253. appG.ResponseByPage(http.StatusOK, e.SUCCESS, rsp, app.PageInfo{Page: req.Page, PageSize: req.PageSize, Total: total})
  254. } else {
  255. logger.GetLogger().Debugln("QueryUserInfos successed: %v", rsp)
  256. appG.Response(http.StatusOK, e.SUCCESS, rsp)
  257. }
  258. }