API项目:
更改全局异常处理器中的返回码常量
COMMON:
更改常量类和response枚举
11 files modified
276 ■■■■ changed files
screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java 5 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/Constants.java 52 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java 9 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/AESUtils.java 13 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/RegexUtils.java 4 ●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/TokenUtils.java 16 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/AccountController.java 29 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/AccountInsertForm.java 36 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/form/AccountUpdateForm.java 24 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java 83 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
@@ -1,6 +1,7 @@
package com.moral.api.exception;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
@@ -21,7 +22,7 @@
    @ResponseStatus(HttpStatus.OK)
    public ResultMessage handleException(Exception ex) {
        ex.printStackTrace();
        return  ResultMessage.fail(Constants.CODE_OPERATION_FAILED, "请求失败");
        return  ResultMessage.fail(ResponseCodeEnum.FAIL.getCode(), ResponseCodeEnum.FAIL.getMsg());
    }
    /**
@@ -31,7 +32,7 @@
    @ResponseBody
    @ResponseStatus(HttpStatus.OK)
    public ResultMessage handleUserNotExistException(BusinessException ex) {
        return ResultMessage.fail(Constants.CODE_OPERATION_FAILED, "请求用户数据失败");
        return ResultMessage.fail(ResponseCodeEnum.FAIL.getCode(), "请求用户数据失败");
    }
}
screen-common/src/main/java/com/moral/constant/Constants.java
@@ -4,55 +4,7 @@
 * 通用常量信息
 */
public class Constants {
    public static String DELETE = "1";
    /**
     * 操作成功
     */
    public static final String MSG_OPERATION_SUCCESS = "操作成功!";
    /**
     * 操作失败
     */
    public static final String MSG_OPERATION_FAILED = "操作失败!";
    /*
    * token无效
    * */
    public static final String MSG_TOKEN_ERROR = "token无效,请重新登陆";
    /*
    * token生成失败
    * */
    public static final String MSG_TOKEN_CREATE_ERROR = "token生成失败,请联系管理员";
    /*
    * 前端传入参数不完整
    * */
    public static final String MSG_PARAMETER_IS_MISSING = "参数不全";
    /**
     * 操作成功code
     */
    public static final int CODE_OPERATION_SUCCESS = 0;
    /**
     * 操作失败code
     */
    public static final int CODE_OPERATION_FAILED = -1;
    /*
    * 前端传入参数不完整
    * */
    public static final int CODE_PARAMETER_IS_MISSING = -2;
    /**
     * token校验失败
     */
    public static final int CODE_TOKEN_ERROR = -10;
    /*
    * token生成失败
    * */
    public static final int CODE_TOKEN_CREATE_ERROR = -11;
    public static String NOT_DELETE = "0";
}
screen-common/src/main/java/com/moral/constant/ResponseCodeEnum.java
@@ -17,14 +17,11 @@
    ACCOUNT_NOT_EXIST(-5,"用户不存在"),
    ACCOUNT_EXIST(-6,"用户已经存在"),
    ACCOUNT_IS_DELETE(-7,"用户已经被删除"),
    PASSWORD_INVALID(-8,"密码错误"),
    PASSWORD_ERROR(-8,"密码错误"),
    MOBILE_INVALID(-9,"手机号无效"),
    EMAIL_INVALID(-10,"邮箱无效"),
    ACCOUNT_LENGTH_INVALID(-11,"账号长度无效"),
    PASSWORD_LENGTH_INVALID(-12,"账号长度无效"),
    ACCOUNT_EXIST_SPECIAL_CHAR(-13,"用户名包含特殊字符"),
    PASSWORD_EXIST_SPECIAL_CHAR(-14,"密码包含特殊字符")
    ACCOUNT_INVALID(-11,"用户名无效"),
    PASSWORD_INVALID(-12,"密码无效")
    ;
    private final Integer code;
    private final String  msg;
screen-common/src/main/java/com/moral/util/AESUtils.java
@@ -6,6 +6,8 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.net.util.Base64;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
 * @ClassName AESUtil
@@ -15,9 +17,10 @@
 * @Version TODO
 **/
@Slf4j
@Component
public class AESUtils {
    //密钥
    public static String key = "AD42F7787B035B7580000EF93BE20BAD";
    public static String key ;
    //字符集
    private static String charset = "utf-8";
    // 偏移量
@@ -26,6 +29,14 @@
    private static String transformation = "AES/CBC/PKCS5Padding";
    private static String algorithm = "AES";
    @Value("${AES.KEY}")
    public  void setKey(String key) {
        AESUtils.key = key;
    }
    //加密
    public static String encrypt(String content) {
        return encrypt(content, key);
screen-common/src/main/java/com/moral/util/RegexUtils.java
@@ -16,6 +16,10 @@
        return account.matches(regex);
    }
    public static void main(String[] args) {
    }
    /**
     * 验证密码
     *
screen-common/src/main/java/com/moral/util/TokenUtils.java
@@ -1,6 +1,7 @@
package com.moral.util;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.exception.TokenException;
import com.sun.org.apache.bcel.internal.classfile.ConstantString;
import lombok.extern.slf4j.Slf4j;
@@ -60,7 +61,8 @@
            return token;
        } catch (Exception e) {
            log.error("token生成异常:"+e.getMessage());
            throw new TokenException(Constants.CODE_TOKEN_CREATE_ERROR,Constants.MSG_TOKEN_CREATE_ERROR);
            throw new TokenException(ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode(),
                    ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg());
        }
    }
@@ -77,15 +79,18 @@
            String[] tokenArray = TokenEncryptUtils.decoded(token).split("/");
            //校验token是否合法
            if (tokenArray.length != 2) {
                throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
                throw new TokenException(ResponseCodeEnum.TOKEN_INVALID.getCode(),
                        ResponseCodeEnum.TOKEN_INVALID.getMsg());
            }
            //校验token是否过期
            if (!redisTemplate.hasKey(token)) {
                throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
                throw new TokenException(ResponseCodeEnum.TOKEN_INVALID.getCode(),
                        ResponseCodeEnum.TOKEN_INVALID.getMsg());
            }
        } catch (Exception e) {
            log.error("token工具类校验token异常" + e.getMessage());
            throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
            throw new TokenException(ResponseCodeEnum.TOKEN_INVALID.getCode(),
                    ResponseCodeEnum.TOKEN_INVALID.getMsg());
        }
    }
@@ -99,7 +104,8 @@
    public static Object getUserInfoByToken(String token) {
        Object userInfo = redisTemplate.opsForValue().get(token);
        if(userInfo==null)
            throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
            throw new TokenException(ResponseCodeEnum.TOKEN_INVALID.getCode(),
                    ResponseCodeEnum.TOKEN_INVALID.getMsg());
        return userInfo;
    }
screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -40,7 +40,8 @@
    @PostMapping("login")
    public ResultMessage login(@RequestBody LoginForm loginForm) {
        if (!loginForm.valid())
            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        LoginDTO loginDTO = accountService.login(loginForm);
@@ -69,6 +70,11 @@
        if(!accountInsertForm.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //判断参数是否符合条件
        AccountInsertDTO conditionDTO = accountInsertForm.paramValid();
        if(conditionDTO.getCode()!=ResponseCodeEnum.SUCCESS.getCode()){
            return new ResultMessage(conditionDTO.getCode(),conditionDTO.getMsg(),null);
        }
        AccountInsertDTO accountInsertDTO = accountService.insertAccount(accountInsertForm);
@@ -80,7 +86,8 @@
    @GetMapping("query")
    public ResultMessage query(AccountQueryForm accountQueryForm){
        if(!accountQueryForm.valid())
            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        AccountQueryDTO accountQueryDTO = accountService.queryAccount(accountQueryForm);
@@ -91,11 +98,18 @@
    @PostMapping("update")
    public ResultMessage update(@RequestBody AccountUpdateForm accountQeuryRequest){
        if(!accountQeuryRequest.valid())
            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
    public ResultMessage update(@RequestBody AccountUpdateForm accountUpdateRequest){
        if(!accountUpdateRequest.valid())
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        AccountUpdateDTO accountUpdateDTO = accountService.updateAccount(accountQeuryRequest);
        //判断参数是否符合条件
        AccountUpdateDTO conditionDTO = accountUpdateRequest.paramValid();
        if(conditionDTO.getCode()!=ResponseCodeEnum.SUCCESS.getCode()){
            return new ResultMessage(conditionDTO.getCode(),conditionDTO.getMsg(),null);
        }
        AccountUpdateDTO accountUpdateDTO = accountService.updateAccount(accountUpdateRequest);
        AccountUpdateVO accountUpdateVO = AccountUpdateVO.convert(accountUpdateDTO);
@@ -105,7 +119,8 @@
    @PostMapping("delete")
    public ResultMessage delete(@RequestBody AccountDeleteForm accountDeleteForm){
        if(!accountDeleteForm.valid())
            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        AccountDeleteDTO accountDeleteDTO = accountService.deleteAccount(accountDeleteForm);
screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
@@ -1,6 +1,7 @@
package com.moral.api.exception;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.exception.TokenException;
import lombok.extern.slf4j.Slf4j;
@@ -24,7 +25,7 @@
    public ResultMessage handleException(Exception ex) {
        log.error(ex.getMessage());
        ex.printStackTrace();
        return  ResultMessage.fail(Constants.CODE_OPERATION_FAILED, "请求失败");
        return  ResultMessage.fail(ResponseCodeEnum.FAIL.getCode(), ResponseCodeEnum.FAIL.getMsg());
    }
    /**
@@ -34,7 +35,7 @@
    @ResponseBody
    @ResponseStatus(HttpStatus.OK)
    public ResultMessage handleUserNotExistException(BusinessException ex) {
        return ResultMessage.fail(Constants.CODE_OPERATION_FAILED, "请求用户数据失败");
        return ResultMessage.fail(ResponseCodeEnum.FAIL.getCode(), "请求用户数据失败");
    }
    /**
screen-manage/src/main/java/com/moral/api/pojo/form/AccountInsertForm.java
@@ -1,6 +1,11 @@
package com.moral.api.pojo.form;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.RegexUtils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
import java.io.Serializable;
@@ -54,4 +59,35 @@
            return false;
        return true;
    }
    public AccountInsertDTO paramValid(){
        AccountInsertDTO dto = new AccountInsertDTO();
        //判断用户名是否符合条件
        if(!RegexUtils.checkAccount(account)){
            dto.setCode(ResponseCodeEnum.ACCOUNT_INVALID.getCode());
            dto.setMsg(ResponseCodeEnum.ACCOUNT_INVALID.getMsg());
            return dto;
        }
        //判断密码是否符合条件
        if(!RegexUtils.checkPassword(AESUtils.decrypt(password))){
            dto.setCode(ResponseCodeEnum.PASSWORD_INVALID.getCode());
            dto.setMsg(ResponseCodeEnum.PASSWORD_INVALID.getMsg());
            return dto;
        }
        //判断手机号是否符合条件
        if(!RegexUtils.checkMobile(mobile)){
            dto.setCode(ResponseCodeEnum.MOBILE_INVALID.getCode());
            dto.setMsg(ResponseCodeEnum.MOBILE_INVALID.getMsg());
            return dto;
        }
        //判断邮箱是否符合条件
        if(!RegexUtils.checkEmail(email)){
            dto.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode());
            dto.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg());
            return dto;
        }
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/form/AccountUpdateForm.java
@@ -1,5 +1,10 @@
package com.moral.api.pojo.form;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.RegexUtils;
import lombok.Data;
import org.springframework.util.ObjectUtils;
@@ -39,4 +44,23 @@
        return true;
    }
    public AccountUpdateDTO paramValid(){
        AccountUpdateDTO dto = new AccountUpdateDTO();
        //判断手机号是否符合条件
        if(!RegexUtils.checkMobile(mobile)){
            dto.setCode(ResponseCodeEnum.MOBILE_INVALID.getCode());
            dto.setMsg(ResponseCodeEnum.MOBILE_INVALID.getMsg());
            return dto;
        }
        //判断邮箱是否符合条件
        if(!RegexUtils.checkEmail(email)){
            dto.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode());
            dto.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg());
            return dto;
        }
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
        return dto;
    }
}
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -43,8 +43,7 @@
@Service
public class ManageAccountServiceImpl extends ServiceImpl<ManageAccountMapper, ManageAccount> implements ManageAccountService {
    @Value("${AES.KEY}")
    private String AESKey;
    @Autowired
    ManageAccountMapper manageAccountMapper;
    @Autowired
@@ -54,11 +53,6 @@
    @Autowired
    ManageAccountRoleMapper manageAccountRoleMapper;
    public final static String specialCharRegEx = "[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t";
    public final static String mobileRegEx = "^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-3,5-9]))\\d{8}$";
    public final static String emailRegEx = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
    /**
     * @Description: 登陆
@@ -74,7 +68,7 @@
        String account = loginForm.getAccount();
        String AESPassword = loginForm.getPassword();
        //解密
        String password = AESUtils.decrypt(AESPassword, AESKey);
        String password = AESUtils.decrypt(AESPassword);
        //查询是否存在
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
        wrapper.eq("account", account);
@@ -98,8 +92,8 @@
        }
        //校验密码
        if (!MD5Utils.saltMD5Verify(password, manageAccount.getPassword())) {
            loginDTO.setCode(ResponseCodeEnum.PASSWORD_INVALID.getCode());
            loginDTO.setMsg(ResponseCodeEnum.PASSWORD_INVALID.getMsg());
            loginDTO.setCode(ResponseCodeEnum.PASSWORD_ERROR.getCode());
            loginDTO.setMsg(ResponseCodeEnum.PASSWORD_ERROR.getMsg());
            return loginDTO;
        }
@@ -159,49 +153,13 @@
        //取参
        String account = accountInsertForm.getAccount();
        String AESPassword = accountInsertForm.getPassword();
        String password = MD5Utils.saltMD5(AESUtils.decrypt(AESPassword, AESKey));
        String password = MD5Utils.saltMD5(AESUtils.decrypt(AESPassword));
        String userName = accountInsertForm.getUserName();
        String email = accountInsertForm.getEmail();
        String mobile = accountInsertForm.getMobile();
        String wechat = accountInsertForm.getWechat();
        List<String> roleIdsStr = accountInsertForm.getRoleIds();
        //校验参数是否符合业务逻辑
        /*判断用户名是否包含特殊字符*/
        if (isSpecialChar(account)) {
            accountInsertDTO.setCode(ResponseCodeEnum.ACCOUNT_EXIST_SPECIAL_CHAR.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.ACCOUNT_EXIST_SPECIAL_CHAR.getMsg());
            return accountInsertDTO;
        }
        /*判断密码是否包含特殊字符*/
        if (isSpecialChar(password)) {
            accountInsertDTO.setCode(ResponseCodeEnum.PASSWORD_EXIST_SPECIAL_CHAR.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.PASSWORD_EXIST_SPECIAL_CHAR.getMsg());
            return accountInsertDTO;
        }
        /*判断用户名是否超过长度*/
        if (account.length() >= 20 || account.length() <= 6) {
            accountInsertDTO.setCode(ResponseCodeEnum.ACCOUNT_LENGTH_INVALID.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.ACCOUNT_LENGTH_INVALID.getMsg());
            return accountInsertDTO;
        }
        /*判断密码是否超过长度*/
        if (AESUtils.decrypt(AESPassword, AESKey).length() >= 20 || AESUtils.decrypt(AESPassword, AESKey).length() <= 6) {
            accountInsertDTO.setCode(ResponseCodeEnum.PASSWORD_LENGTH_INVALID.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.PASSWORD_LENGTH_INVALID.getMsg());
            return accountInsertDTO;
        }
        /*判断手机号是否符合规则*/
        if (!isValidMobile(mobile)) {
            accountInsertDTO.setCode(ResponseCodeEnum.MOBILE_INVALID.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.MOBILE_INVALID.getMsg());
            return accountInsertDTO;
        }
        /*判断邮箱是否符合规则*/
        if (!isValidEmail(email)) {
            accountInsertDTO.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode());
            accountInsertDTO.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg());
            return accountInsertDTO;
        }
        /*判断账号是否存在*/
        ManageAccount exitAccount = new ManageAccount();
        exitAccount.setAccount(account);
@@ -360,18 +318,6 @@
            accountUpdateDTO.setMsg(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
            return accountUpdateDTO;
        }
        /*判断手机号是否符合规则*/
        if (!isValidMobile(mobile)) {
            accountUpdateDTO.setCode(ResponseCodeEnum.MOBILE_INVALID.getCode());
            accountUpdateDTO.setMsg(ResponseCodeEnum.MOBILE_INVALID.getMsg());
            return accountUpdateDTO;
        }
        /*判断邮箱是否符合规则*/
        if (!isValidEmail(email)) {
            accountUpdateDTO.setCode(ResponseCodeEnum.EMAIL_INVALID.getCode());
            accountUpdateDTO.setMsg(ResponseCodeEnum.EMAIL_INVALID.getMsg());
            return accountUpdateDTO;
        }
        //更新ManageAccount表
        ManageAccount manageAccount = new ManageAccount();
        manageAccount.setEmail(email);
@@ -446,23 +392,6 @@
    }
    private static boolean isSpecialChar(String str) {
        Pattern pattern = Pattern.compile(specialCharRegEx);
        Matcher matcher = pattern.matcher(str);
        return matcher.find();
    }
    private static boolean isValidMobile(String str) {
        Pattern pattern = Pattern.compile(mobileRegEx);
        Matcher matcher = pattern.matcher(str);
        return matcher.find();
    }
    private static boolean isValidEmail(String str) {
        Pattern pattern = Pattern.compile(emailRegEx);
        Matcher matcher = pattern.matcher(str);
        return matcher.find();
    }
}