123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package customer
  2. import (
  3. "errors"
  4. "net/http"
  5. "spaceofcheng/services/controllers"
  6. "spaceofcheng/services/models"
  7. "spaceofcheng/services/models/model"
  8. "spaceofcheng/services/service/customer"
  9. "spaceofcheng/services/utils"
  10. )
  11. // CustomerController 用户
  12. type CustomerController struct {
  13. serv *customer.CustomerServ
  14. controllers.BaseController
  15. }
  16. // Constructor 初始化 Controller
  17. // @Title Constructor
  18. // @Description 初始化 Controller, 系统自动调用
  19. func (c *CustomerController) Constructor() {
  20. c.serv = customer.NewCustomerServ(c.Context)
  21. }
  22. // CustWXList 获取客户列表
  23. func (c *CustomerController) CustWXList() {
  24. phone := c.GetString("phone")
  25. username := c.GetString("username")
  26. recommendname := c.GetString("recommendname")
  27. begindate := c.GetString("begindate")
  28. enddate := c.GetString("enddate")
  29. page, _ := c.GetInt("page")
  30. pageSize, _ := c.GetInt("pagesize")
  31. caseids := c.GetString("caseid")
  32. if caseids == "" {
  33. cases := c.Context.Get("cases").([]model.SysUserCase)
  34. caseids = c.GetCaseIDs(cases)
  35. }
  36. custList, err := c.serv.GetCustWithWXList(phone, username, recommendname, begindate, enddate, caseids, page, pageSize)
  37. if err != nil {
  38. c.ResponseError(err)
  39. }
  40. c.ResponseJSON(custList)
  41. }
  42. // GetCustWXByID 获取用户信息
  43. func (c *CustomerController) GetCustWXByID() {
  44. userMapRaw := c.Context.Get("userMap")
  45. if userMapRaw == nil {
  46. c.ResponseError(errors.New("获取用户信息失败, 请确认使用微信浏览"))
  47. }
  48. userMap := userMapRaw.(model.TaUserMapping)
  49. openid := userMap.Openid
  50. cust, err := c.serv.GetCustUserByOpenID(openid)
  51. // cust, err := c.serv.GetCustWithWXByID(custID)
  52. if err != nil {
  53. utils.LogError(err)
  54. c.ResponseError(errors.New("获取用户信息失败, 请重试"))
  55. }
  56. if cust.MapUser != "" && cust.BelongCaseStatus != models.STATUS_NORMAL {
  57. c.ResponseError(
  58. errors.New("案场状态异常!"),
  59. http.StatusMethodNotAllowed,
  60. )
  61. }
  62. c.ResponseJSON(map[string]interface{}{
  63. "customer": cust,
  64. })
  65. }
  66. // SignIn 微信登录
  67. func (c *CustomerController) SignIn() {
  68. phone := c.GetString("phone")
  69. captcha := c.GetString("captcha")
  70. if c.RunMode != "dev" {
  71. if err := utils.ValidCaptcha(phone, captcha); err != nil {
  72. c.ResponseError(err)
  73. }
  74. utils.DestoryCaptcha(phone)
  75. }
  76. userMapping := c.Context.Get("userMap").(model.TaUserMapping)
  77. _, err := c.serv.BindWechatUser(&userMapping, phone)
  78. if err != nil {
  79. c.ResponseError(err)
  80. }
  81. c.ResponseJSON("ok")
  82. }
  83. // SignUp 注册会员
  84. func (c *CustomerController) SignUp() {
  85. phone := c.GetString("phone")
  86. captcha := c.GetString("captcha")
  87. name := c.GetString("name")
  88. recommendCode := c.GetString("recommendCode")
  89. if phone == "" || captcha == "" || name == "" {
  90. c.ResponseError(errors.New("请填写完整注册信息"))
  91. }
  92. if c.RunMode != "dev" {
  93. if err := utils.ValidCaptcha(phone, captcha); err != nil {
  94. c.ResponseError(err)
  95. }
  96. }
  97. userMapping := c.Context.Get("userMap").(model.TaUserMapping)
  98. _, err := c.serv.BindWechatCust(&userMapping, phone, recommendCode, name)
  99. if err != nil {
  100. c.ResponseError(err)
  101. }
  102. c.ResponseJSON("ok")
  103. }
  104. // CustByTel 根据电话查询用户信息
  105. func (c *CustomerController) CustByTel() {
  106. tel := c.GetString(":tel")
  107. customer, err := c.serv.GetCustUserByTel(tel)
  108. if err != nil {
  109. utils.LogError("获取客户信息失败: " + err.Error())
  110. c.ResponseError(
  111. errors.New("获取客户信息失败"),
  112. http.StatusInternalServerError,
  113. )
  114. }
  115. c.ResponseJSON(customer)
  116. }
  117. // GetCustomerInfo 获取个人信息
  118. func (c *CustomerController) GetCustomerInfo() {
  119. info, err := c.serv.GetCustomerInfo()
  120. if err != nil {
  121. utils.LogError("获取客户信息失败: " + err.Error())
  122. c.ResponseError(err)
  123. }
  124. c.ResponseJSON(info)
  125. }