package customer import ( "errors" "net/http" "spaceofcheng/services/controllers" "spaceofcheng/services/models" "spaceofcheng/services/models/model" "spaceofcheng/services/service/customer" "spaceofcheng/services/utils" ) // CustomerController 用户 type CustomerController struct { serv *customer.CustomerServ controllers.BaseController } // Constructor 初始化 Controller // @Title Constructor // @Description 初始化 Controller, 系统自动调用 func (c *CustomerController) Constructor() { c.serv = customer.NewCustomerServ(c.Context) } // CustWXList 获取客户列表 func (c *CustomerController) CustWXList() { phone := c.GetString("phone") username := c.GetString("username") recommendname := c.GetString("recommendname") begindate := c.GetString("begindate") enddate := c.GetString("enddate") page, _ := c.GetInt("page") pageSize, _ := c.GetInt("pagesize") caseids := c.GetString("caseid") if caseids == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseids = c.GetCaseIDs(cases) } custList, err := c.serv.GetCustWithWXList(phone, username, recommendname, begindate, enddate, caseids, page, pageSize) if err != nil { c.ResponseError(err) } c.ResponseJSON(custList) } // GetCustWXByID 获取用户信息 func (c *CustomerController) GetCustWXByID() { userMapRaw := c.Context.Get("userMap") if userMapRaw == nil { c.ResponseError(errors.New("获取用户信息失败, 请确认使用微信浏览")) } userMap := userMapRaw.(model.TaUserMapping) openid := userMap.Openid cust, err := c.serv.GetCustUserByOpenID(openid) // cust, err := c.serv.GetCustWithWXByID(custID) if err != nil { utils.LogError(err) c.ResponseError(errors.New("获取用户信息失败, 请重试")) } if cust.MapUser != "" && cust.BelongCaseStatus != models.STATUS_NORMAL { c.ResponseError( errors.New("案场状态异常!"), http.StatusMethodNotAllowed, ) } c.ResponseJSON(map[string]interface{}{ "customer": cust, }) } // SignIn 微信登录 func (c *CustomerController) SignIn() { phone := c.GetString("phone") captcha := c.GetString("captcha") if c.RunMode != "dev" { if err := utils.ValidCaptcha(phone, captcha); err != nil { c.ResponseError(err) } utils.DestoryCaptcha(phone) } userMapping := c.Context.Get("userMap").(model.TaUserMapping) _, err := c.serv.BindWechatUser(&userMapping, phone) if err != nil { c.ResponseError(err) } c.ResponseJSON("ok") } // SignUp 注册会员 func (c *CustomerController) SignUp() { phone := c.GetString("phone") captcha := c.GetString("captcha") name := c.GetString("name") recommendCode := c.GetString("recommendCode") if phone == "" || captcha == "" || name == "" { c.ResponseError(errors.New("请填写完整注册信息")) } if c.RunMode != "dev" { if err := utils.ValidCaptcha(phone, captcha); err != nil { c.ResponseError(err) } } userMapping := c.Context.Get("userMap").(model.TaUserMapping) _, err := c.serv.BindWechatCust(&userMapping, phone, recommendCode, name) if err != nil { c.ResponseError(err) } c.ResponseJSON("ok") } // CustByTel 根据电话查询用户信息 func (c *CustomerController) CustByTel() { tel := c.GetString(":tel") customer, err := c.serv.GetCustUserByTel(tel) if err != nil { utils.LogError("获取客户信息失败: " + err.Error()) c.ResponseError( errors.New("获取客户信息失败"), http.StatusInternalServerError, ) } c.ResponseJSON(customer) } // GetCustomerInfo 获取个人信息 func (c *CustomerController) GetCustomerInfo() { info, err := c.serv.GetCustomerInfo() if err != nil { utils.LogError("获取客户信息失败: " + err.Error()) c.ResponseError(err) } c.ResponseJSON(info) }