全局统一返回对象实现

This commit is contained in:
xiongfeng
2022-07-04 18:38:07 +08:00
parent dbd720b302
commit 102d28bea0
7 changed files with 95 additions and 26 deletions

View File

@@ -0,0 +1,22 @@
package cn.xf.basedemo.common.enums;
import lombok.Getter;
@Getter
public enum SystemStatus {
SUSSES(200, "请求成功"),
UNAVAILABILITY(401, "token无效"),
ERROR(500, "系统异常")
;
private Integer code;
private String errorMessage;
SystemStatus(Integer code, String errorMessage) {
this.code = code;
this.errorMessage = errorMessage;
}
}

View File

@@ -19,4 +19,6 @@ public class LoginUser {
private String account; private String account;
private String phone; private String phone;
private String token;
} }

View File

@@ -1,5 +1,6 @@
package cn.xf.basedemo.common.model; package cn.xf.basedemo.common.model;
import cn.xf.basedemo.common.enums.SystemStatus;
import lombok.Data; import lombok.Data;
/** /**
@@ -18,9 +19,47 @@ public class RetObj<T> {
private T data; private T data;
public RetObj(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public RetObj(T data) {
this.data = data;
}
public RetObj(SystemStatus status) {
this.code = status.getCode();
this.message = status.getErrorMessage();
}
public RetObj(SystemStatus status, T data) {
this.code = status.getCode();
this.message = status.getErrorMessage();
this.data = data;
}
public RetObj(Integer code, String errorMsg) {
this.code = code;
this.message = errorMsg;
}
public static <T> RetObj<T> success() { public static <T> RetObj<T> success() {
return new RetObj(); return new RetObj(SystemStatus.SUSSES);
}
public static <T> RetObj<T> success(T data) {
return new RetObj(SystemStatus.SUSSES, data);
} }
public static <T> RetObj<T> error(SystemStatus status) {
return new RetObj(status);
}
public static <T> RetObj<T> error(String errorMsg) {
return new RetObj(SystemStatus.ERROR.getCode(), errorMsg);
}
} }

View File

@@ -1,5 +1,6 @@
package cn.xf.basedemo.controller; package cn.xf.basedemo.controller;
import cn.xf.basedemo.common.model.RetObj;
import cn.xf.basedemo.model.res.LoginInfoRes; import cn.xf.basedemo.model.res.LoginInfoRes;
import cn.xf.basedemo.service.UserService; import cn.xf.basedemo.service.UserService;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -28,7 +29,7 @@ public class UserController {
@ApiOperation(value = "用户登录", notes = "用户登录") @ApiOperation(value = "用户登录", notes = "用户登录")
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@PostMapping("/login") @PostMapping("/login")
public String login(@RequestBody LoginInfoRes res){ public RetObj login(@RequestBody LoginInfoRes res){
return userService.login(res); return userService.login(res);
} }

View File

@@ -1,5 +1,6 @@
package cn.xf.basedemo.service; package cn.xf.basedemo.service;
import cn.xf.basedemo.common.model.RetObj;
import cn.xf.basedemo.model.res.LoginInfoRes; import cn.xf.basedemo.model.res.LoginInfoRes;
/** /**
@@ -11,5 +12,5 @@ import cn.xf.basedemo.model.res.LoginInfoRes;
**/ **/
public interface UserService { public interface UserService {
String login(LoginInfoRes res); RetObj login(LoginInfoRes res);
} }

View File

@@ -2,6 +2,7 @@ package cn.xf.basedemo.service.impl;
import cn.xf.basedemo.common.model.LoginInfo; import cn.xf.basedemo.common.model.LoginInfo;
import cn.xf.basedemo.common.model.LoginUser; import cn.xf.basedemo.common.model.LoginUser;
import cn.xf.basedemo.common.model.RetObj;
import cn.xf.basedemo.common.utils.JwtTokenUtils; import cn.xf.basedemo.common.utils.JwtTokenUtils;
import cn.xf.basedemo.common.utils.RSAUtils; import cn.xf.basedemo.common.utils.RSAUtils;
import cn.xf.basedemo.config.GlobalConfig; import cn.xf.basedemo.config.GlobalConfig;
@@ -11,6 +12,7 @@ import cn.xf.basedemo.model.res.LoginInfoRes;
import cn.xf.basedemo.service.UserService; import cn.xf.basedemo.service.UserService;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -45,7 +47,7 @@ public class UserServiceImpl implements UserService {
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Override @Override
public String login(LoginInfoRes res) { public RetObj login(LoginInfoRes res) {
if (Objects.isNull(res) || StringUtils.isEmpty(res.getEncryptedData())) { if (Objects.isNull(res) || StringUtils.isEmpty(res.getEncryptedData())) {
return null; return null;
@@ -56,9 +58,14 @@ public class UserServiceImpl implements UserService {
} catch (Exception e) { } catch (Exception e) {
log.error("解密失败------", e); log.error("解密失败------", e);
} }
LoginInfo loginInfo = objectMapper.convertValue(loginJson, LoginInfo.class); LoginInfo loginInfo = null;
try {
loginInfo = objectMapper.readValue(loginJson, LoginInfo.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
if (StringUtils.isNotBlank(loginInfo.check())) { if (StringUtils.isNotBlank(loginInfo.check())) {
return loginInfo.check(); return RetObj.error(loginInfo.check());
} }
//校验登录账号密码 //校验登录账号密码
QueryWrapper queryWrapper = new QueryWrapper(); QueryWrapper queryWrapper = new QueryWrapper();
@@ -66,7 +73,7 @@ public class UserServiceImpl implements UserService {
queryWrapper.eq("password", loginInfo.getPwd()); queryWrapper.eq("password", loginInfo.getPwd());
User user = userMapper.selectOne(queryWrapper); User user = userMapper.selectOne(queryWrapper);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
return "账号或密码错误"; return RetObj.error("账号或密码错误");
} }
LoginUser loginUser = new LoginUser(); LoginUser loginUser = new LoginUser();
loginUser.setId(user.getId()); loginUser.setId(user.getId());
@@ -75,10 +82,11 @@ public class UserServiceImpl implements UserService {
loginUser.setPhone(user.getPhone()); loginUser.setPhone(user.getPhone());
String token = JwtTokenUtils.createToken(user.getId()); String token = JwtTokenUtils.createToken(user.getId());
loginUser.setToken(token);
redisTemplate.opsForValue().set("token:" + token, JSONObject.toJSONString(loginUser), 3600, TimeUnit.SECONDS); redisTemplate.opsForValue().set("token:" + token, JSONObject.toJSONString(loginUser), 3600, TimeUnit.SECONDS);
redisTemplate.opsForValue().set("user_login_token:" + user.getId(), token, 3600, TimeUnit.SECONDS); redisTemplate.opsForValue().set("user_login_token:" + user.getId(), token, 3600, TimeUnit.SECONDS);
return "登录成功"; return RetObj.success(loginUser);
} }
} }

View File

@@ -41,25 +41,21 @@ global:
rsaPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC_F5UQC1QWsu3QsESQBz9M-GDA9Atm0qVSvwIsy568lyRLi-nq3VvvnmgrlL4yTbngFzyfb2Dn35cNCHsBvIaGuCY3_PpzPqMzVpxr2QlEkhEX9atnJQ1rWexS8QeZtPjpiIwoQrChTzXjD_sYUkDrqSykFplyivf0NSO2WqCBdwIDAQAB rsaPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC_F5UQC1QWsu3QsESQBz9M-GDA9Atm0qVSvwIsy568lyRLi-nq3VvvnmgrlL4yTbngFzyfb2Dn35cNCHsBvIaGuCY3_PpzPqMzVpxr2QlEkhEX9atnJQ1rWexS8QeZtPjpiIwoQrChTzXjD_sYUkDrqSykFplyivf0NSO2WqCBdwIDAQAB
rsaPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL8XlRALVBay7dCwRJAHP0z4YMD0C2bSpVK_AizLnryXJEuL6erdW--eaCuUvjJNueAXPJ9vYOfflw0IewG8hoa4Jjf8-nM-ozNWnGvZCUSSERf1q2clDWtZ7FLxB5m0-OmIjChCsKFPNeMP-xhSQOupLKQWmXKK9_Q1I7ZaoIF3AgMBAAECgYBxTUA61Ry0oL7U_86HP2TO9G4ZuhmQi9EucMaPXOPvmgYRLRIzCbDbMKc_P-BN3zwYnG57cgSZNz9OoPqeGvP_oVTnkoEpVkCSV-JP2p_DK09LdbDqszJXMrxAkPmWGUw8IRMcTJT1xJJcgzFE6T0CmTo-Vk47AnmqfJD4U6o74QJBAPRjVUJKZnrMSnSqKPDL2ThgTo8h7-KFxl_Z-g724lTOFiCmBpi6nCWAcuacFRrrYqxF-r9c4zdIyR7AvLROql8CQQDIK_kRF52dVtwShciZhyeUBLoi0nWV9F8mMGt60NTEER9zPEgPsv2aVn8h97KMWOwmd2Da4EPm25QxOuaKQC_pAkBczcfXp5co9KElkmR_pHl1jiTm97U3qSM-zPDHc_tYxvXiKgoBP4QCPbfkWMsu8MoEr4Jb3vMt0EcHlZtTQTgzAkAfmNla-lhV4sUgY1_T5EK6GbjsED6hag6u74u3ukkrnexR-10ApWdkumydBwV3I_464DM4uZfeVCDjWIHVpuYpAkEA6QLPztGD4V8Q1PqTEeSF3i68CKPM8vO1_mCH2JD7qsqDQcIKkczj5rTg7hlOKwB9V6gSw4CbnOF6moTooRD-cQ rsaPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL8XlRALVBay7dCwRJAHP0z4YMD0C2bSpVK_AizLnryXJEuL6erdW--eaCuUvjJNueAXPJ9vYOfflw0IewG8hoa4Jjf8-nM-ozNWnGvZCUSSERf1q2clDWtZ7FLxB5m0-OmIjChCsKFPNeMP-xhSQOupLKQWmXKK9_Q1I7ZaoIF3AgMBAAECgYBxTUA61Ry0oL7U_86HP2TO9G4ZuhmQi9EucMaPXOPvmgYRLRIzCbDbMKc_P-BN3zwYnG57cgSZNz9OoPqeGvP_oVTnkoEpVkCSV-JP2p_DK09LdbDqszJXMrxAkPmWGUw8IRMcTJT1xJJcgzFE6T0CmTo-Vk47AnmqfJD4U6o74QJBAPRjVUJKZnrMSnSqKPDL2ThgTo8h7-KFxl_Z-g724lTOFiCmBpi6nCWAcuacFRrrYqxF-r9c4zdIyR7AvLROql8CQQDIK_kRF52dVtwShciZhyeUBLoi0nWV9F8mMGt60NTEER9zPEgPsv2aVn8h97KMWOwmd2Da4EPm25QxOuaKQC_pAkBczcfXp5co9KElkmR_pHl1jiTm97U3qSM-zPDHc_tYxvXiKgoBP4QCPbfkWMsu8MoEr4Jb3vMt0EcHlZtTQTgzAkAfmNla-lhV4sUgY1_T5EK6GbjsED6hag6u74u3ukkrnexR-10ApWdkumydBwV3I_464DM4uZfeVCDjWIHVpuYpAkEA6QLPztGD4V8Q1PqTEeSF3i68CKPM8vO1_mCH2JD7qsqDQcIKkczj5rTg7hlOKwB9V6gSw4CbnOF6moTooRD-cQ
##redis ##redis
#redis: redis:
# dynamic: datasource:
# datasource: token:
# token: database: 1
# database: 1 host: 122.112.153.128
# host: 192.168.10.113 port: 6379
# port: 6379 password: 'redis'
# password: '123456' lettuce:
# lettuce: pool:
# pool: max-active: 8
# max-active: 8 max-wait: -1ms
# max-wait: -1ms max-idle: 8
# max-idle: 8 min-idle: 0
# min-idle: 0 timeout: 3000ms
# timeout: 3000ms
# res: # res:
# database: 0 # database: 0
# host: 192.168.10.113 # host: 192.168.10.113