package controller import ( "ai_xhs/common" "ai_xhs/service" "github.com/gin-gonic/gin" ) type AuthController struct { authService *service.AuthService } func NewAuthController() *AuthController { return &AuthController{ authService: service.NewAuthService(), } } // WechatLogin 微信小程序登录 func (ctrl *AuthController) WechatLogin(c *gin.Context) { var req struct { Code string `json:"code" binding:"required"` Phone string `json:"phone"` // 可选,员工手机号(直接传明文) PhoneCode string `json:"phone_code"` // 可选,微信手机号加密code } if err := c.ShouldBindJSON(&req); err != nil { common.Error(c, common.CodeInvalidParams, "参数错误: "+err.Error()) return } // 调用登录服务 token, employee, err := ctrl.authService.WechatLogin(req.Code, req.Phone, req.PhoneCode) if err != nil { common.Error(c, common.CodeServerError, err.Error()) return } // 获取用户显示名称(优先使用真实姓名,其次用户名) displayName := employee.RealName if displayName == "" { displayName = employee.Username } common.SuccessWithMessage(c, "登录成功", gin.H{ "token": token, "employee": gin.H{ "id": employee.ID, "name": displayName, "username": employee.Username, "real_name": employee.RealName, "phone": employee.Phone, "role": employee.Role, "enterprise_id": employee.EnterpriseID, "enterprise_name": employee.EnterpriseName, "is_bound_xhs": employee.IsBoundXHS, }, }) } // PhoneLogin 手机号登录(用于测试) func (ctrl *AuthController) PhoneLogin(c *gin.Context) { var req struct { Phone string `json:"phone" binding:"required"` } if err := c.ShouldBindJSON(&req); err != nil { common.Error(c, common.CodeInvalidParams, "参数错误: "+err.Error()) return } // 调用手机号登录服务 token, employee, err := ctrl.authService.PhoneLogin(req.Phone) if err != nil { common.Error(c, common.CodeServerError, err.Error()) return } // 获取用户显示名称(优先使用真实姓名,其次用户名) displayName := employee.RealName if displayName == "" { displayName = employee.Username } common.SuccessWithMessage(c, "登录成功", gin.H{ "token": token, "employee": gin.H{ "id": employee.ID, "name": displayName, "username": employee.Username, "real_name": employee.RealName, "phone": employee.Phone, "role": employee.Role, "enterprise_id": employee.EnterpriseID, "enterprise_name": employee.EnterpriseName, "is_bound_xhs": employee.IsBoundXHS, }, }) }