kaiyu
2021-03-17 8fa47457bcda1c05b7df2c04a1d4c31eec51272c
common模块:
添加验证码工具类
6 files added
14 files modified
389 ■■■■ changed files
pom.xml 5 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/config/KaptchaConfig.java 47 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/pojo/VerificationCode.java 18 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/AESUtils.java 2 ●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/KaptchaUtils.java 80 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/AccountController.java 30 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountDTO.java 2 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountDeleteDTO.java 26 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountInsertDTO.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountUpdateDTO.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/request/AccountDeleteRequest.java 23 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/request/AccountInsertRequest.java 3 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/request/AccountUpdateRequest.java 3 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountDeleteVO.java 41 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountInsertVO.java 3 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountUpdateVO.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountVO.java 7 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java 14 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java 76 ●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/application-dev.yml 2 ●●●●● patch | view | raw | blame | history
pom.xml
@@ -107,6 +107,11 @@
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.kaptcha</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>
    </dependencies>
screen-common/src/main/java/com/moral/config/KaptchaConfig.java
New file
@@ -0,0 +1,47 @@
package com.moral.config;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
/**
 * @ClassName KaptchaConfig
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/3/16 14:04
 * @Version TODO
 **/
@Configuration
public class KaptchaConfig {
    @Bean(name = "kaptchaProducer")
    public DefaultKaptcha getDefaultKaptcha(){
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        //设置边框
        properties.put("kaptcha.border", "no");
        //字体颜色
        properties.put("kaptcha.textproducer.font.color", "blue");
        //文字间隔
        properties.put("kaptcha.textproducer.char.space", "15");
        //验证码长度
        properties.put("kaptcha.textproducer.char.length","4");
        //图片高度
        properties.put("kaptcha.image.height","34");
        //文字尺寸
        properties.put("kaptcha.textproducer.font.size","25");
        //干扰实现类
        /*不使用干扰*/
        //properties.put("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");
        /*使用默认干扰实现类*/
        properties.put("kaptcha.noise.impl","com.google.code.kaptcha.impl.DefaultNoise");
        //字体
        //properties.setProperty("kaptcha.textproducer.font.names", "宋体");
        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }
}
screen-common/src/main/java/com/moral/pojo/VerificationCode.java
New file
@@ -0,0 +1,18 @@
package com.moral.pojo;
import lombok.Data;
/**
 * @ClassName VerificationCode
 * @Description 验证码类
 * @Author 陈凯裕
 * @Date 2021/3/17 8:51
 * @Version TODO
 **/
@Data
public class VerificationCode {
    private String key;
    private String value;
}
screen-common/src/main/java/com/moral/util/AESUtils.java
@@ -70,7 +70,7 @@
    }
    public static void main(String[] args) {
        System.out.println(encrypt("4048974139","AD42F7787B035B7580000EF93BE20BAD"));
        System.out.println(encrypt("404897439","AD42F7787B035B7580000EF93BE20BAD"));
        System.out.println(encrypt("chenkaiyu111","AD42F7787B035B7580000EF93BE20BAD"));
    }
screen-common/src/main/java/com/moral/util/KaptchaUtils.java
New file
@@ -0,0 +1,80 @@
package com.moral.util;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.moral.pojo.VerificationCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Encoder;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.UUID;
/**
 * @ClassName KaptchaUtils
 * @Description 验证码工具类
 * @Author 陈凯裕
 * @Date 2021/3/16 15:36
 * @Version TODO
 **/
@Component
@Slf4j
public class KaptchaUtils {
    private static DefaultKaptcha defaultKaptcha;
    private static RedisTemplate redisTemplate;
    @Autowired
    public void setRedisTemplate(RedisTemplate redisTemplate) {
        KaptchaUtils.redisTemplate = redisTemplate;
    }
    @Autowired
    @Qualifier(value = "kaptchaProducer")
    public  void setDefaultKaptcha(DefaultKaptcha defaultKaptcha) {
        KaptchaUtils.defaultKaptcha = defaultKaptcha;
    }
    /**
     * @Description: 生成验证码
     * @Param: []
     * @return: java.lang.String
     * @Author: 陈凯裕
     * @Date: 2021/3/16
     */
    public static VerificationCode createVerificationCode() throws IOException {
        //生成验证码内容
        String text = defaultKaptcha.createText();
        //生成图片
        BufferedImage image = defaultKaptcha.createImage(text);
        //获取图片的字节数组
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image,"jpg",outputStream);
        byte[] bytes = outputStream.toByteArray();
        //将字节数组进行编码
        BASE64Encoder encoder = new BASE64Encoder();
        String encode = encoder.encode(bytes);
        //将验证码存入redis
        String key = UUID.randomUUID().toString();
        //redisTemplate.opsForValsue().set(key,encode);
        //redisTemplate.expire();
        return null;
    }
    public boolean verify(String verificationCode) {
       return false;
    }
}
screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -1,10 +1,13 @@
package com.moral.api.controller;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.moral.api.pojo.dto.account.AccountDeleteDTO;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountQueryDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.api.pojo.dto.login.LoginDTO;
import com.moral.api.pojo.request.*;
import com.moral.api.pojo.vo.account.AccountDeleteVO;
import com.moral.api.pojo.vo.account.AccountInsertVO;
import com.moral.api.pojo.vo.account.AccountQueryVO;
import com.moral.api.pojo.vo.account.AccountUpdateVO;
@@ -12,6 +15,8 @@
import com.moral.api.service.ManageAccountService;
import com.moral.constant.Constants;
import com.moral.constant.ResultMessage;
import com.moral.util.KaptchaUtils;
import com.moral.util.TokenUtils;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +26,8 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j
@Api(tags = {"后台账户管理"})
@@ -32,7 +39,6 @@
    @Autowired
    @Qualifier("tokenRedisTemplate")
    RedisTemplate redisTemplate;
    @PostMapping("login")
    public ResultMessage login(@RequestBody LoginRequest loginRequest) {
@@ -88,6 +94,7 @@
        return ResultMessage.ok(accountQueryVO);
    }
    @PostMapping("update")
    public ResultMessage update(@RequestBody AccountUpdateRequest accountQeuryRequest){
        if(!accountQeuryRequest.valid())
@@ -102,6 +109,27 @@
        return ResultMessage.fail(accountUpdateVO);
    }
    @PostMapping("delete")
    public ResultMessage delete(@RequestBody AccountDeleteRequest accountDeleteRequest){
        if(!accountDeleteRequest.valid())
            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
        AccountDeleteDTO accountDeleteDTO = accountService.deleteAccount(accountDeleteRequest);
        AccountDeleteVO accountDeleteVO = AccountDeleteVO.convert(accountDeleteDTO);
        if(accountDeleteVO.getCode().equals(accountDeleteVO.SUCCESS))
            return ResultMessage.ok(accountDeleteVO);
        return ResultMessage.fail(accountDeleteVO);
    }
    @PostMapping("yanzhengma")
    public String yanzhengma(HttpServletResponse response) throws IOException {
        KaptchaUtils.createVerificationCode();
        TokenUtils.getToken("1",1);
        return null;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountDTO.java
@@ -19,4 +19,6 @@
    private ManageAccount account;
    private List<ManageRole> roles;
    private String code;
}
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountDeleteDTO.java
New file
@@ -0,0 +1,26 @@
package com.moral.api.pojo.dto.account;
import lombok.Data;
/**
 * @ClassName AccountDeleteDTO
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/3/16 8:59
 * @Version TODO
 **/
@Data
public class AccountDeleteDTO extends AccountDTO {
    /*
    * 删除成功
    * */
    public final static String SUCCESS = "0";
    /*
    * 用户不存在
    * */
    public final static String ACCOUNT_NOT_EXIST = "-1";
}
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountInsertDTO.java
@@ -56,7 +56,6 @@
    * */
    public static final String PASSWORD_EXIST_SPECIAL_CHAR = "-7";
    private String code;
}
screen-manage/src/main/java/com/moral/api/pojo/dto/account/AccountUpdateDTO.java
@@ -31,5 +31,4 @@
    * */
    public static final String EMAIL_INVALID = "-3";
    private String code;
}
screen-manage/src/main/java/com/moral/api/pojo/request/AccountDeleteRequest.java
New file
@@ -0,0 +1,23 @@
package com.moral.api.pojo.request;
import lombok.Data;
/**
 * @ClassName AccountDeleteRequest
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/3/16 8:54
 * @Version TODO
 **/
@Data
public class AccountDeleteRequest {
    private Integer accountId;
    public boolean valid(){
        if(accountId==null||accountId==0){
            return false;
        }
        return true;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/request/AccountInsertRequest.java
@@ -42,8 +42,6 @@
    private String updateTime;
    private String isDelete;
    private List<String> roleIds;
    public boolean valid() {
@@ -53,7 +51,6 @@
                ObjectUtils.isEmpty(email)    ||
                ObjectUtils.isEmpty(mobile)   ||
                ObjectUtils.isEmpty(userName) ||
                ObjectUtils.isEmpty(isDelete) ||
                ObjectUtils.isEmpty(roleIds)
            )
            return false;
screen-manage/src/main/java/com/moral/api/pojo/request/AccountUpdateRequest.java
@@ -25,8 +25,6 @@
    private String wechat;
    private String isDelete;
    private List<Integer> roleIds;
    public boolean valid(){
@@ -35,7 +33,6 @@
                ObjectUtils.isEmpty(userName) ||
                ObjectUtils.isEmpty(email)    ||
                ObjectUtils.isEmpty(mobile)   ||
                ObjectUtils.isEmpty(isDelete) ||
                ObjectUtils.isEmpty(roleIds)
                )
            return false;
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountDeleteVO.java
New file
@@ -0,0 +1,41 @@
package com.moral.api.pojo.vo.account;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.moral.api.entity.ManageAccount;
import com.moral.api.pojo.dto.account.AccountDeleteDTO;
import lombok.Data;
import org.springframework.util.ObjectUtils;
/**
 * @ClassName AccountDeleteVO
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/3/16 11:40
 * @Version TODO
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class AccountDeleteVO extends AccountVO {
    /*
     * 删除成功
     * */
    public final static String SUCCESS = "0";
    /*
     * 用户不存在
     * */
    public final static String ACCOUNT_NOT_EXIST = "-1";
    public static AccountDeleteVO convert(AccountDeleteDTO dto) {
        AccountDeleteVO vo = new AccountDeleteVO();
        vo.setCode(dto.getCode());
        if (!ObjectUtils.isEmpty(dto.getAccount())) {
            ManageAccount account = dto.getAccount();
            vo.setId(account.getId());
            vo.setUserName(account.getUserName());
        }
        return vo;
    }
}
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountInsertVO.java
@@ -58,7 +58,6 @@
     * */
    public static final String PASSWORD_EXIST_SPECIAL_CHAR = "-7";
    private String code;
    /**
@@ -76,7 +75,6 @@
            String email = dto.getAccount().getEmail();
            String mobile = dto.getAccount().getMobile();
            String wechat = dto.getAccount().getWechat();
            String isDelete = dto.getAccount().getIsDelete();
            //转换成角色名集合
            List<ManageRole> roles = dto.getRoles();
@@ -88,7 +86,6 @@
            vo.setEmail(email);
            vo.setMobile(mobile);
            vo.setWechat(wechat);
            vo.setIsDelete(isDelete);
            vo.setRoleNames(roleNames);
        }
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountUpdateVO.java
@@ -40,9 +40,6 @@
     * */
    public static final String EMAIL_INVALID = "-3";
    private String code;
    public static AccountUpdateVO convert(AccountUpdateDTO dto){
        AccountUpdateVO vo = new AccountUpdateVO();
        if(dto.getCode()== AccountUpdateDTO.SUCCESS){
@@ -51,7 +48,6 @@
            String email = dto.getAccount().getEmail();
            String mobile = dto.getAccount().getMobile();
            String wechat = dto.getAccount().getWechat();
            String isDelete = dto.getAccount().getIsDelete();
            //转换成角色名集合
            List<ManageRole> roles = dto.getRoles();
@@ -63,7 +59,6 @@
            vo.setEmail(email);
            vo.setMobile(mobile);
            vo.setWechat(wechat);
            vo.setIsDelete(isDelete);
            vo.setRoleNames(roleNames);
        }
screen-manage/src/main/java/com/moral/api/pojo/vo/account/AccountVO.java
@@ -18,8 +18,10 @@
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class AccountVO {
    private String code;
    private Integer id;
    private String userName;
@@ -29,8 +31,6 @@
    private String mobile;
    private String wechat;
    private String isDelete;
    private List<String> roleNames;
@@ -47,7 +47,6 @@
        vo.setEmail(account.getEmail());
        vo.setMobile(account.getMobile());
        vo.setWechat(account.getWechat());
        vo.setIsDelete(account.getIsDelete());
        vo.setRoleNames(roleNames);
        return vo;
    }
screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
@@ -2,10 +2,7 @@
import com.moral.api.entity.ManageAccount;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountQueryDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.api.pojo.dto.account.*;
import com.moral.api.pojo.dto.login.LoginDTO;
import com.moral.api.pojo.request.*;
@@ -62,4 +59,13 @@
            * @Date: 2021/3/15
            */
    AccountUpdateDTO updateAccount(AccountUpdateRequest accountUpdateRequest);
    /**
    * @Description: 删除账号
            * @Param: [accountDeleteRequest]
            * @return: com.moral.api.pojo.dto.account.AccountDeleteDTO
            * @Author: 陈凯裕
            * @Date: 2021/3/16
            */
    AccountDeleteDTO deleteAccount(AccountDeleteRequest accountDeleteRequest);
}
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -1,6 +1,7 @@
package com.moral.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.ManageAccount;
import com.moral.api.entity.ManageAccountRole;
@@ -10,10 +11,7 @@
import com.moral.api.mapper.ManageAccountRoleMapper;
import com.moral.api.mapper.ManageMenuMapper;
import com.moral.api.mapper.ManageRoleMapper;
import com.moral.api.pojo.dto.account.AccountDTO;
import com.moral.api.pojo.dto.account.AccountInsertDTO;
import com.moral.api.pojo.dto.account.AccountQueryDTO;
import com.moral.api.pojo.dto.account.AccountUpdateDTO;
import com.moral.api.pojo.dto.account.*;
import com.moral.api.pojo.dto.login.AccountInfoDTO;
import com.moral.api.pojo.dto.login.LoginDTO;
import com.moral.api.pojo.request.*;
@@ -79,13 +77,19 @@
        //查询是否存在
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
        wrapper.eq("account", account);
        ManageAccount manageAccount = manageAccountMapper.selectOne(wrapper);
        if (ObjectUtils.isEmpty(manageAccount)) {
        List<ManageAccount> manageAccounts = manageAccountMapper.selectList(wrapper);
        if (ObjectUtils.isEmpty(manageAccounts)) {
            loginDTO.setCode(LoginDTO.NOT_EXIST);
            return loginDTO;
        }
        //查询是否逻辑删除
        if (manageAccount.getIsDelete().equals("1")) {
        ManageAccount manageAccount = null;
        for (ManageAccount value : manageAccounts) {
            if("0".equals(value.getIsDelete()))
                manageAccount = value;
        }
        if (ObjectUtils.isEmpty(manageAccount)) {
            loginDTO.setCode(LoginDTO.IS_DELETE);
            return loginDTO;
        }
@@ -160,7 +164,6 @@
        String email = accountInsertRequest.getEmail();
        String mobile = accountInsertRequest.getMobile();
        String wechat = accountInsertRequest.getWechat();
        String isDelete = accountInsertRequest.getIsDelete();
        List<String> roleIdsStr = accountInsertRequest.getRoleIds();
        //校验参数是否符合业务逻辑
        /*判断用户名是否包含特殊字符*/
@@ -193,7 +196,7 @@
            accountInsertDTO.setCode(AccountInsertDTO.EMAIL_INVALID);
            return accountInsertDTO;
        }
        /*判断用户名是否存在*/
        /*判断账号是否存在*/
        ManageAccount exitAccount = new ManageAccount();
        exitAccount.setAccount(account);
        exitAccount.setIsDelete("0");
@@ -217,7 +220,6 @@
        manageAccount.setEmail(email);
        manageAccount.setMobile(mobile);
        manageAccount.setWechat(wechat);
        manageAccount.setIsDelete(isDelete);
        manageAccountMapper.insert(manageAccount);
        //封装account_role
        Integer accountId = manageAccount.getId();
@@ -265,7 +267,11 @@
        queryParams.put("email", email);
        queryParams.put("mobile", mobile);
        queryParams.put("wechat", wechat);
        queryParams.put("is_delete", isDelete);
        if(!ObjectUtils.isEmpty(isDelete))
            queryParams.put("is_delete", isDelete);
        else
            queryParams.put("is_delete","0");
        //过滤为null的参数
        queryParams.values().removeIf(value -> ObjectUtils.isEmpty(value));
        //查询用户
        Page<ManageAccount> page = new Page<>(pageCount, size);
@@ -292,6 +298,13 @@
        return accountQueryDTO;
    }
    /**
    * @Description: 更新后台账号
            * @Param: [accountUpdateRequest]
            * @return: com.moral.api.pojo.dto.account.AccountUpdateDTO
            * @Author: 陈凯裕
            * @Date: 2021/3/16
            */
    @Override
    @Transactional
    public AccountUpdateDTO updateAccount(AccountUpdateRequest accountUpdateRequest) {
@@ -301,7 +314,6 @@
        String email = accountUpdateRequest.getEmail();
        String mobile = accountUpdateRequest.getMobile();
        String wechat = accountUpdateRequest.getWechat();
        String isDelete = accountUpdateRequest.getIsDelete();
        String userName = accountUpdateRequest.getUserName();
        List<Integer> roleIds = accountUpdateRequest.getRoleIds();
        //校验参数是否符合逻辑
@@ -331,7 +343,6 @@
        manageAccount.setEmail(email);
        manageAccount.setMobile(mobile);
        manageAccount.setWechat(wechat);
        manageAccount.setIsDelete(isDelete);
        manageAccount.setUserName(userName);
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
        wrapper.eq("id",accountId);
@@ -358,7 +369,44 @@
    }
    /**
    * @Description: 删除后台账号
            * @Param: [accountDeleteRequest]
            * @return: com.moral.api.pojo.dto.account.AccountDeleteDTO
            * @Author: 陈凯裕
            * @Date: 2021/3/16
            */
    @Override
    @Transactional
    public AccountDeleteDTO deleteAccount(AccountDeleteRequest accountDeleteRequest) {
        AccountDeleteDTO accountDeleteDTO = new AccountDeleteDTO();
        //取参
        Integer accountId = accountDeleteRequest.getAccountId();
        //查询是否存在
        ManageAccount manageAccount = new ManageAccount();
        manageAccount.setIsDelete("0");
        manageAccount.setId(accountId);
        QueryWrapper<ManageAccount> queryWrapper = new QueryWrapper<>();
        queryWrapper.setEntity(manageAccount);
        ManageAccount existManageAccount = manageAccount.selectOne(queryWrapper);
        if(ObjectUtils.isEmpty(existManageAccount)){
            accountDeleteDTO.setCode(AccountDeleteDTO.ACCOUNT_NOT_EXIST);
            return accountDeleteDTO;
        }
        //逻辑删除账号
        existManageAccount.setIsDelete("1");
        UpdateWrapper<ManageAccount> deleteAccountWrapper = new UpdateWrapper<>();
        deleteAccountWrapper.set("is_delete","1").eq("id",manageAccount.getId());
        manageAccountMapper.update(null,deleteAccountWrapper);
        //逻辑删除账号相关角色
        UpdateWrapper<ManageAccountRole> deleteManageAccountRoleWrapper = new UpdateWrapper<>();
        deleteManageAccountRoleWrapper.set("is_delete","1").eq("account_id",manageAccount.getId());
        manageAccountRoleMapper.update(null,deleteManageAccountRoleWrapper);
        //封装返回结果
        accountDeleteDTO.setCode(AccountDeleteDTO.SUCCESS);
        accountDeleteDTO.setAccount(existManageAccount);
        return accountDeleteDTO;
    }
    private static boolean isSpecialChar(String str) {
screen-manage/src/main/resources/application-dev.yml
@@ -121,6 +121,8 @@
      - /account/insert
      - /account/query
      - /account/update
      - /account/delete
      - /account/yanzhengma
AES:
  KEY:
    AD42F7787B035B7580000EF93BE20BAD