diff --git a/mall-portal/src/main/java/com/macro/mall/portal/controller/UmsMemberController.java b/mall-portal/src/main/java/com/macro/mall/portal/controller/UmsMemberController.java index e69de29..ada1ece 100644 --- a/mall-portal/src/main/java/com/macro/mall/portal/controller/UmsMemberController.java +++ b/mall-portal/src/main/java/com/macro/mall/portal/controller/UmsMemberController.java @@ -0,0 +1,143 @@ +package com.macro.mall.portal.controller; // 定义包名 + +import com.macro.mall.common.api.CommonResult; // 导入公共结果类 +import com.macro.mall.model.UmsMember; // 导入会员模型类 +import com.macro.mall.portal.service.UmsMemberService; // 导入会员服务类 +import io.swagger.annotations.Api; // 导入Swagger Api注解 +import io.swagger.annotations.ApiOperation; // 导入Swagger 操作注解 +import io.swagger.v3.oas.annotations.tags.Tag; // 导入Swagger 标签注解 +import org.springframework.beans.factory.annotation.Autowired; // 导入Spring自动注入注解 +import org.springframework.beans.factory.annotation.Value; // 导入Spring属性注入注解 +import org.springframework.stereotype.Controller; // 导入Spring控制器注解 +import org.springframework.web.bind.annotation.RequestMapping; // 导入Spring请求映射注解 +import org.springframework.web.bind.annotation.RequestMethod; // 导入Spring请求方法注解 +import org.springframework.web.bind.annotation.RequestParam; // 导入Spring请求参数注解 +import org.springframework.web.bind.annotation.ResponseBody; // 导入Spring响应体注解 + +import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest接口 +import java.security.Principal; // 导入Principal接口 +import java.util.HashMap; // 导入HashMap类 +import java.util.Map; // 导入Map接口 + +/** + * 会员管理Controller + * Created by macro on 2018/8/3. + */ +@Controller // 标识为Spring MVC的Controller +@Api(tags = "UmsMemberController") // Swagger注解,定义API的标签 +@Tag(name = "UmsMemberController", description = "会员登录注册管理") // Swagger注解,定义API的标签和描述 +@RequestMapping("/sso") // 定义请求的基础路径 +public class UmsMemberController { + @Value("${jwt.tokenHeader}") // 注入配置文件中的tokenHeader属性 + private String tokenHeader; + @Value("${jwt.tokenHead}") // 注入配置文件中的tokenHead属性 + private String tokenHead; + @Autowired // 自动注入UmsMemberService + private UmsMemberService memberService; + + /** + * 会员注册 + * @param username 用户名 + * @param password 密码 + * @param telephone 手机号 + * @param authCode 验证码 + * @return 注册结果 + */ + @ApiOperation("会员注册") // Swagger注解,定义API的操作描述 + @RequestMapping(value = "/register", method = RequestMethod.POST) // 定义请求的路径和方法 + @ResponseBody // 标识返回值直接作为响应体 + public CommonResult register(@RequestParam String username, // 请求参数:用户名 + @RequestParam String password, // 请求参数:密码 + @RequestParam String telephone, // 请求参数:手机号 + @RequestParam String authCode) { // 请求参数:验证码 + memberService.register(username, password, telephone, authCode); // 调用服务层注册会员 + return CommonResult.success(null,"注册成功"); // 返回注册成功结果 + } + + /** + * 会员登录 + * @param username 用户名 + * @param password 密码 + * @return 登录结果 + */ + @ApiOperation("会员登录") // Swagger注解,定义API的操作描述 + @RequestMapping(value = "/login", method = RequestMethod.POST) // 定义请求的路径和方法 + @ResponseBody // 标识返回值直接作为响应体 + public CommonResult login(@RequestParam String username, // 请求参数:用户名 + @RequestParam String password) { // 请求参数:密码 + String token = memberService.login(username, password); // 调用服务层登录 + if (token == null) { + return CommonResult.validateFailed("用户名或密码错误"); // 返回用户名或密码错误结果 + } + Map tokenMap = new HashMap<>(); // 创建tokenMap + tokenMap.put("token", token); // 放入token + tokenMap.put("tokenHead", tokenHead); // 放入tokenHead + return CommonResult.success(tokenMap); // 返回登录成功结果 + } + + /** + * 获取会员信息 + * @param principal 当前用户 + * @return 会员信息结果 + */ + @ApiOperation("获取会员信息") // Swagger注解,定义API的操作描述 + @RequestMapping(value = "/info", method = RequestMethod.GET) // 定义请求的路径和方法 + @ResponseBody // 标识返回值直接作为响应体 + public CommonResult info(Principal principal) { // 请求参数:当前用户 + if(principal==null){ + return CommonResult.unauthorized(null); // 如果用户为空,返回未授权结果 + } + UmsMember member = memberService.getCurrentMember(); // 调用服务层获取当前会员 + return CommonResult.success(member); // 返回会员信息结果 + } + + /** + * 获取验证码 + * @param telephone 手机号 + * @return 验证码结果 + */ + @ApiOperation("获取验证码") // Swagger注解,定义API的操作描述 + @RequestMapping(value = "/getAuthCode", method = RequestMethod.GET) // 定义请求的路径和方法 + @ResponseBody // 标识返回值直接作为响应体 + public CommonResult getAuthCode(@RequestParam String telephone) { // 请求参数:手机号 + String authCode = memberService.generateAuthCode(telephone); // 调用服务层生成验证码 + return CommonResult.success(authCode,"获取验证码成功"); // 返回获取验证码成功结果 + } + + /** + * 会员修改密码 + * @param telephone 手机号 + * @param password 新密码 + * @param authCode 验证码 + * @return 修改密码结果 + */ + @ApiOperation("会员修改密码") // Swagger注解,定义API的操作描述 + @RequestMapping(value = "/updatePassword", method = RequestMethod.POST) // 定义请求的路径和方法 + @ResponseBody // 标识返回值直接作为响应体 + public CommonResult updatePassword(@RequestParam String telephone, // 请求参数:手机号 + @RequestParam String password, // 请求参数:新密码 + @RequestParam String authCode) { // 请求参数:验证码 + memberService.updatePassword(telephone,password,authCode); // 调用服务层修改密码 + return CommonResult.success(null,"密码修改成功"); // 返回密码修改成功结果 + } + + /** + * 刷新token + * @param request 请求对象 + * @return 刷新token结果 + */ + @ApiOperation(value = "刷新token") // Swagger注解,定义API的操作描述 + @RequestMapping(value = "/refreshToken", method = RequestMethod.GET) // 定义请求的路径和方法 + @ResponseBody // 标识返回值直接作为响应体 + public CommonResult refreshToken(HttpServletRequest request) { // 请求参数:请求对象 + String token = request.getHeader(tokenHeader); // 从请求头中获取token + String refreshToken = memberService.refreshToken(token); // 调用服务层刷新token + if (refreshToken == null) { + return CommonResult.failed("token已经过期!"); // 如果刷新的token为空,返回token过期结果 + } + Map tokenMap = new HashMap<>(); // 创建tokenMap + tokenMap.put("token", refreshToken); // 放入刷新后的token + tokenMap.put("tokenHead", tokenHead); // 放入tokenHead + return CommonResult.success(tokenMap); // 返回刷新token成功结果 + } +} \ No newline at end of file