|
|
|
@ -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<String, String> 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<String, String> tokenMap = new HashMap<>(); // 创建tokenMap
|
|
|
|
|
tokenMap.put("token", refreshToken); // 放入刷新后的token
|
|
|
|
|
tokenMap.put("tokenHead", tokenHead); // 放入tokenHead
|
|
|
|
|
return CommonResult.success(tokenMap); // 返回刷新token成功结果
|
|
|
|
|
}
|
|
|
|
|
}
|