Commit 164408e0 authored by liming's avatar liming

feat(初始化项目): 登录注册统一接口

parent 91353747
package com.antai.sport.http.server.common.base;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import java.util.ArrayList;
import java.util.List;
/**
* @Author liming
......@@ -21,78 +14,27 @@ import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
public class Result<T> {
public final static Integer SUCCESS = 1;
public final static Integer FAIL = 2;
@ApiModelProperty(value = "请求结果 1:成功 2:失败")
private Integer resultType = SUCCESS;
@ApiModelProperty(value = "响应Code")
private String respCode;
@ApiModelProperty(value = "响应信息")
private String respMsg;
@ApiModelProperty(value = "异常代码")
private String errorCode;
private Object data;
@ApiModelProperty(value = "数据包")
private T data;
@ApiModelProperty(value = "是否需要刷新Token")
private boolean refreshToken;
@ApiModelProperty(value = "长Token,仅当短Token失效时使用")
private String longToken;
@ApiModelProperty(value = "短Token")
private String shortToken;
public static ResponseEntity<Result> error(RespCodeEnum RespCodeEnum) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.getCode());
Result.setRespMsg(RespCodeEnum.getMessage());
Result.setResultType(FAIL);
return new ResponseEntity<>(Result, HttpStatus.OK);
}
public static ResponseEntity<Result> error(RespCodeEnum RespCodeEnum, String errorMsg) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.getCode());
Result.setRespMsg(errorMsg);
Result.setResultType(FAIL);
return new ResponseEntity<>(Result, HttpStatus.OK);
}
public static ResponseEntity<Result> error(RespCodeEnum RespCodeEnum, BindingResult bindingResult) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.getCode());
Result.setRespMsg(RespCodeEnum.getMessage());
Result.setResultType(FAIL);
StringBuilder errorStr = new StringBuilder();
List<String> errorList = new ArrayList<>();
for (int i = 0; i < bindingResult.getErrorCount(); i++) {
ObjectError oe = bindingResult.getAllErrors().get(i);
errorList.add(oe.getDefaultMessage());
if (i == 0) {
errorStr.append(oe.getDefaultMessage());
} else {
errorStr.append(",").append(oe.getDefaultMessage());
}
}
Result.setData(errorStr.toString());
return new ResponseEntity<>(Result, HttpStatus.OK);
}
public static ResponseEntity<Result> success(HttpHeaders httpHeaders, Object object) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.SUCCESS.getCode());
Result.setRespMsg(RespCodeEnum.SUCCESS.getMessage());
Result.setData(object);
Result.setResultType(SUCCESS);
return new ResponseEntity<>(Result, httpHeaders, HttpStatus.OK);
}
public static ResponseEntity<Result> success(Object object) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.SUCCESS.getCode());
Result.setRespMsg(RespCodeEnum.SUCCESS.getMessage());
Result.setData(object);
Result.setResultType(SUCCESS);
return new ResponseEntity<>(Result, new HttpHeaders(), HttpStatus.OK);
}
public static ResponseEntity<Result> success(Result result) {
result.setRespCode(RespCodeEnum.SUCCESS.getCode());
result.setResultType(SUCCESS);
return new ResponseEntity<>(result, new HttpHeaders(), HttpStatus.OK);
}
}
package com.antai.sport.http.server.common.util;
import com.antai.sport.http.server.common.base.RespCodeEnum;
import com.antai.sport.http.server.common.base.Result;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import java.util.ArrayList;
import java.util.List;
/**
* @Author liming
* @Date 2021/8/23 13:30
* @Email lmmax@126.com
* @Description:
*/
public class ResultUtil {
public static ResponseEntity<Result> success() {
Result result = new Result();
result.setRespCode(RespCodeEnum.SUCCESS.getCode());
result.setResultType(Result.SUCCESS);
return new ResponseEntity<>(result, new HttpHeaders(), HttpStatus.OK);
}
public static ResponseEntity<Result> error(RespCodeEnum RespCodeEnum) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.getCode());
Result.setRespMsg(RespCodeEnum.getMessage());
Result.setResultType(Result.FAIL);
return new ResponseEntity<>(Result, HttpStatus.OK);
}
public static ResponseEntity<Result> error(RespCodeEnum RespCodeEnum, String errorMsg) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.getCode());
Result.setRespMsg(errorMsg);
Result.setResultType(Result.FAIL);
return new ResponseEntity<>(Result, HttpStatus.OK);
}
public static ResponseEntity<Result> error(RespCodeEnum RespCodeEnum, BindingResult bindingResult) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.getCode());
Result.setRespMsg(RespCodeEnum.getMessage());
Result.setResultType(Result.FAIL);
StringBuilder errorStr = new StringBuilder();
List<String> errorList = new ArrayList<>();
for (int i = 0; i < bindingResult.getErrorCount(); i++) {
ObjectError oe = bindingResult.getAllErrors().get(i);
errorList.add(oe.getDefaultMessage());
if (i == 0) {
errorStr.append(oe.getDefaultMessage());
} else {
errorStr.append(",").append(oe.getDefaultMessage());
}
}
Result.setData(errorStr.toString());
return new ResponseEntity<>(Result, HttpStatus.OK);
}
public static <T> ResponseEntity<Result<T>> success(HttpHeaders httpHeaders, T data) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.SUCCESS.getCode());
Result.setRespMsg(RespCodeEnum.SUCCESS.getMessage());
Result.setData(data);
Result.setResultType(Result.SUCCESS);
return new ResponseEntity<>(Result, httpHeaders, HttpStatus.OK);
}
public static <T> ResponseEntity<Result<T>> success(T data) {
Result Result = new Result();
Result.setRespCode(RespCodeEnum.SUCCESS.getCode());
Result.setRespMsg(RespCodeEnum.SUCCESS.getMessage());
Result.setData(data);
Result.setResultType(Result.SUCCESS);
return new ResponseEntity<>(Result, new HttpHeaders(), HttpStatus.OK);
}
public static <T> ResponseEntity<Result<T>> success(Result<T> result) {
result.setRespCode(RespCodeEnum.SUCCESS.getCode());
result.setResultType(Result.SUCCESS);
return new ResponseEntity<>(result, new HttpHeaders(), HttpStatus.OK);
}
}
......@@ -2,6 +2,7 @@ package com.antai.sport.http.server.game.api.business.sport.user;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.game.api.business.sport.user.dto.ReqLogin;
import com.antai.sport.http.server.game.api.business.sport.user.dto.RespLogin;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
......@@ -9,7 +10,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import static com.antai.sport.http.server.common.base.Result.success;
import static com.antai.sport.http.server.common.util.ResultUtil.success;
/**
* @Author liming
......@@ -26,7 +27,7 @@ public class SportUserController {
@ApiOperation(value = "登录接口", notes = "登录成功后返回长短token")
@PostMapping("/login")
public ResponseEntity<Result> login(@RequestBody ReqLogin param) {
public ResponseEntity<Result<RespLogin>> login(@RequestBody ReqLogin param) {
return success(sportUserService.login(param));
}
......@@ -34,6 +35,6 @@ public class SportUserController {
@GetMapping("/login/sms/captcha/{phone}")
public ResponseEntity<Result> sendLoginSmsCaptcha(@PathVariable String phone) {
sportUserService.sendLoginSmsCaptcha(phone);
return success(true);
return success();
}
}
......@@ -10,6 +10,7 @@ import com.antai.sport.http.server.common.util.RandomUtil;
import com.antai.sport.http.server.constants.DeleteStatus;
import com.antai.sport.http.server.constants.LoginMode;
import com.antai.sport.http.server.game.api.business.sport.user.dto.ReqLogin;
import com.antai.sport.http.server.game.api.business.sport.user.dto.RespLogin;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import com.antai.sport.http.server.repository.sport.mapper.SportUserMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -20,6 +21,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.TimeUnit;
......@@ -45,7 +47,7 @@ public class SportUserService {
@Resource
private RedisTemplate<String, Object> redisTemplate;
public Result login(ReqLogin param) {
public Result<RespLogin> login(ReqLogin param) {
if (param.getMode() == null || (!param.getMode().equals(LoginMode.PASSWORD) && !param.getMode().equals(LoginMode.SMS_CAPTCHA))) {
throw new BusinessException("请选择正确的登录模式");
}
......@@ -55,15 +57,17 @@ public class SportUserService {
List<SportUser> sportUserList = sportUserMapper.selectList(new QueryWrapper<SportUser>()
.eq("phone", param.getUsername())
.eq("deleted", DeleteStatus.UNDELETED));
if (sportUserList.isEmpty()) {
throw new BusinessException("用户名或密码错误");
}
SportUser sportUser = sportUserList.get(0);
Result result = new Result();
Result<RespLogin> result = new Result();
SportUser sportUser;
if (param.getMode().equals(LoginMode.PASSWORD)) {
if (sportUserList.isEmpty()) {
throw new BusinessException("用户不存在,请先使用手机短信验证码登录");
}
sportUser = sportUserList.get(0);
if (sportUser.getPassword() == null) {
throw new BusinessException("当前用户还没有设置密码,请使用验证码方式登录");
throw new BusinessException("当前用户还没有设置密码,请使用验证码方式登录,在个人设置中设置密码");
}
if (StringUtils.isBlank(param.getPassword())) {
throw new BusinessException("请输入密码");
......@@ -85,18 +89,34 @@ public class SportUserService {
if (!loginSmsCaptcha.equals(param.getSmsCaptcha())) {
throw new BusinessException("短信验证码错误");
}
if (sportUserList.isEmpty()) {
sportUser = new SportUser();
sportUser.setPhone(param.getUsername());
sportUser.setCtDate(LocalDateTime.now());
sportUser.setRoleInitialized(false);
sportUser.setInfoInitialized(false);
sportUser.setEquipmentInitialized(false);
sportUserMapper.insert(sportUser);
} else {
sportUser = sportUserList.get(0);
}
redisTemplate.delete(redisKey);
}
result.setRespMsg("登录成功");
TokenVO tokenVO = tokenService.initToken(param.getUsername());
RespLogin respLogin = new RespLogin();
respLogin.setInfoInitialized(sportUser.getInfoInitialized());
respLogin.setRoleInitialized(sportUser.getRoleInitialized());
respLogin.setEquipmentInitialized(sportUser.getEquipmentInitialized());
result.setLongToken(tokenVO.getLongToken());
result.setShortToken(tokenVO.getShortToken());
result.setData(true);
result.setData(respLogin);
return result;
}
/**
* 发送验证码逻辑
*
* @param phone 电话号码
*/
public void sendLoginSmsCaptcha(String phone) {
......
package com.antai.sport.http.server.game.api.business.sport.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author liming
* @Date 2021/8/23 13:00
* @Email lmmax@126.com
* @Description:
*/
@Data
@ApiModel("登录返回对象")
public class RespLogin {
@ApiModelProperty(value = "是否已初始化个人信息")
private Boolean infoInitialized;
@ApiModelProperty(value = "是否已初始化角色")
private Boolean roleInitialized;
@ApiModelProperty(value = "是否已初始化设备配置")
private Boolean equipmentInitialized;
}
package com.antai.sport.http.server.repository.sport.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 运动用户表
* </p>
*
* @author liming
* @since 2021-08-21
* @since 2021-08-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
......@@ -58,6 +58,16 @@ public class SportUser implements Serializable {
*/
private Integer sex;
/**
* 身高
*/
private BigDecimal height;
/**
* 体重
*/
private BigDecimal weight;
/**
* 头像
*/
......@@ -84,9 +94,19 @@ public class SportUser implements Serializable {
private String city;
/**
* 已初始化
* 初始化个人信息
*/
private Boolean infoInitialized;
/**
* 初始化接角色
*/
private Boolean roleInitialized;
/**
* 设备初始化
*/
private Boolean initialized;
private Boolean equipmentInitialized;
/**
* 备注
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment