mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-10-08 05:06:39 +08:00
优化验证码、cache、datascope、datatracker、reload、repeatsubmit
This commit is contained in:
parent
a32bd96595
commit
ab73f51a3e
@ -1,22 +0,0 @@
|
||||
package net.lab1024.smartadmin.service.common.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
*
|
||||
*/
|
||||
@Data
|
||||
public class CaptchaVO {
|
||||
|
||||
/**
|
||||
* 验证码UUID
|
||||
*/
|
||||
private String uuid;
|
||||
|
||||
/**
|
||||
* base64 验证码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
}
|
@ -1,156 +0,0 @@
|
||||
package net.lab1024.smartadmin.service.config;
|
||||
|
||||
import com.google.code.kaptcha.NoiseProducer;
|
||||
import com.google.code.kaptcha.impl.DefaultKaptcha;
|
||||
import com.google.code.kaptcha.text.WordRenderer;
|
||||
import com.google.code.kaptcha.util.Config;
|
||||
import com.google.code.kaptcha.util.Configurable;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.font.FontRenderContext;
|
||||
import java.awt.font.GlyphVector;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* [ 验证码配置 ]
|
||||
*
|
||||
* @author zhuoda
|
||||
*/
|
||||
@Configuration
|
||||
public class KaptchaConfig {
|
||||
|
||||
@Bean
|
||||
public DefaultKaptcha getDefaultKaptcha() {
|
||||
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("kaptcha.border", "no");
|
||||
properties.setProperty("kaptcha.border.color", "34,114,200");
|
||||
properties.setProperty("kaptcha.image.width", "125");
|
||||
properties.setProperty("kaptcha.image.height", "45");
|
||||
properties.setProperty("kaptcha.textproducer.char.string", "123456789");
|
||||
properties.setProperty("kaptcha.textproducer.char.length", "4");
|
||||
properties.setProperty("kaptcha.textproducer.font.names", "Arial,Arial Narrow,Serif,Helvetica,Tahoma,Times New Roman,Verdana");
|
||||
properties.setProperty("kaptcha.textproducer.font.size", "38");
|
||||
|
||||
properties.setProperty("kaptcha.background.clear.from", "white");
|
||||
properties.setProperty("kaptcha.background.clear.to", "white");
|
||||
|
||||
properties.setProperty("kaptcha.word.impl", KaptchaWordRenderer.class.getName());
|
||||
properties.setProperty("kaptcha.noise.impl", KaptchaNoise.class.getName());
|
||||
|
||||
Config config = new Config(properties);
|
||||
defaultKaptcha.setConfig(config);
|
||||
return defaultKaptcha;
|
||||
}
|
||||
|
||||
|
||||
public static class KaptchaColor {
|
||||
|
||||
public static Color getColor() {
|
||||
|
||||
List<Color> colors = Lists.newArrayList();
|
||||
colors.add(new Color(0, 135, 255));
|
||||
colors.add(new Color(51, 153, 51));
|
||||
colors.add(new Color(255, 102, 102));
|
||||
colors.add(new Color(255, 153, 0));
|
||||
colors.add(new Color(153, 102, 0));
|
||||
colors.add(new Color(153, 102, 153));
|
||||
colors.add(new Color(51, 153, 153));
|
||||
colors.add(new Color(102, 102, 255));
|
||||
colors.add(new Color(0, 102, 204));
|
||||
colors.add(new Color(204, 51, 51));
|
||||
colors.add(new Color(128, 153, 65));
|
||||
Random random = new Random();
|
||||
int colorIndex = random.nextInt(10);
|
||||
return colors.get(colorIndex);
|
||||
}
|
||||
}
|
||||
|
||||
public class KaptchaNoise extends Configurable implements NoiseProducer {
|
||||
|
||||
public KaptchaNoise() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void makeNoise(BufferedImage image, float factorOne, float factorTwo, float factorThree, float factorFour) {
|
||||
|
||||
int width = image.getWidth();
|
||||
int height = image.getHeight();
|
||||
Graphics2D graph = (Graphics2D) image.getGraphics();
|
||||
graph.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON));
|
||||
graph.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
|
||||
Random random = new Random();
|
||||
int noiseLineNum = random.nextInt(3);
|
||||
if (noiseLineNum == 0) {
|
||||
noiseLineNum = 1;
|
||||
}
|
||||
for (int i = 0; i < noiseLineNum; i++) {
|
||||
graph.setColor(KaptchaColor.getColor());
|
||||
graph.drawLine(random.nextInt(width), random.nextInt(height), 10 + random.nextInt(20), 10 + random.nextInt(20));
|
||||
}
|
||||
|
||||
graph.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public class KaptchaWordRenderer extends Configurable implements WordRenderer {
|
||||
|
||||
public KaptchaWordRenderer() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage renderWord(String word, int width, int height) {
|
||||
int fontSize = this.getConfig().getTextProducerFontSize();
|
||||
Font[] fonts = this.getConfig().getTextProducerFonts(fontSize);
|
||||
int charSpace = this.getConfig().getTextProducerCharSpace();
|
||||
BufferedImage image = new BufferedImage(width, height, 2);
|
||||
|
||||
Graphics2D g2D = image.createGraphics();
|
||||
g2D.setColor(Color.WHITE);
|
||||
RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
|
||||
g2D.setRenderingHints(hints);
|
||||
g2D.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));
|
||||
|
||||
FontRenderContext frc = g2D.getFontRenderContext();
|
||||
Random random = new Random();
|
||||
int startPosY = (height - fontSize) / 5 + fontSize;
|
||||
char[] wordChars = word.toCharArray();
|
||||
Font[] chosenFonts = new Font[wordChars.length];
|
||||
int[] charWidths = new int[wordChars.length];
|
||||
int widthNeeded = 0;
|
||||
|
||||
int startPosX;
|
||||
for (startPosX = 0; startPosX < wordChars.length; ++startPosX) {
|
||||
chosenFonts[startPosX] = fonts[random.nextInt(fonts.length)];
|
||||
char[] charToDraw = new char[]{wordChars[startPosX]};
|
||||
GlyphVector gv = chosenFonts[startPosX].createGlyphVector(frc, charToDraw);
|
||||
charWidths[startPosX] = (int) gv.getVisualBounds().getWidth();
|
||||
if (startPosX > 0) {
|
||||
widthNeeded += 2;
|
||||
}
|
||||
|
||||
widthNeeded += charWidths[startPosX];
|
||||
}
|
||||
|
||||
startPosX = (width - widthNeeded) / 2;
|
||||
|
||||
for (int i = 0; i < wordChars.length; ++i) {
|
||||
g2D.setColor(KaptchaColor.getColor());
|
||||
g2D.setFont(chosenFonts[i].deriveFont(Font.PLAIN));
|
||||
char[] charToDraw = new char[]{wordChars[i]};
|
||||
g2D.drawChars(charToDraw, 0, charToDraw.length, startPosX, startPosY);
|
||||
startPosX = startPosX + charWidths[i] + charSpace;
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.config;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.util.SmartRequestUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.RepeatSubmitAspect;
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.RepeatSubmitCaffeineTicket;
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.ticket.RepeatSubmitCaffeineTicket;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package net.lab1024.smartadmin.service.config;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.module.support.reload.SmartReloadCommand;
|
||||
import net.lab1024.smartadmin.service.module.support.reload.ReloadCommand;
|
||||
import net.lab1024.smartadmin.service.module.support.reload.core.SmartReloadManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@ -18,14 +18,14 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class SmartReloadConfig {
|
||||
|
||||
@Autowired
|
||||
private SmartReloadCommand smartReloadCommand;
|
||||
private ReloadCommand reloadCommand;
|
||||
|
||||
@Bean
|
||||
public SmartReloadManager initSmartReloadManager() {
|
||||
/**
|
||||
* 创建 Reload Manager 调度器
|
||||
*/
|
||||
SmartReloadManager smartReloadManager = new SmartReloadManager(smartReloadCommand);
|
||||
SmartReloadManager smartReloadManager = new SmartReloadManager(reloadCommand);
|
||||
return smartReloadManager;
|
||||
}
|
||||
}
|
||||
|
@ -3,12 +3,12 @@ package net.lab1024.smartadmin.service.module.business.goods;
|
||||
import com.google.common.collect.Lists;
|
||||
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||
import net.lab1024.smartadmin.service.module.business.goods.domain.GoodsEntity;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.DataTracerFieldService;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.DataTracerService;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.service.DataTracerFieldService;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.service.DataTracerService;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerOperateTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerExtraDataDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerForm;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerExtraData;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -34,39 +34,39 @@ public class GoodsDataTracerService {
|
||||
|
||||
@Async
|
||||
public void goodsAddRecord(GoodsEntity goodsEntity, LocalDateTime operateTime, Long operatorId, String operatorName) {
|
||||
DataTracerDTO dataTracerDTO = new DataTracerDTO();
|
||||
dataTracerDTO.setBusinessId(goodsEntity.getGoodsId());
|
||||
dataTracerDTO.setBusinessType(DataTracerBusinessTypeEnum.GOODS);
|
||||
dataTracerDTO.setOperateType(DataTracerOperateTypeEnum.Common.SAVE);
|
||||
dataTracerDTO.setOperateContent(DataTracerOperateTypeEnum.Common.SAVE.getDesc());
|
||||
dataTracerDTO.setOperateTime(operateTime);
|
||||
dataTracerService.saveOperateRecord(dataTracerDTO, operatorId, operatorName);
|
||||
DataTracerForm dataTracerForm = new DataTracerForm();
|
||||
dataTracerForm.setBusinessId(goodsEntity.getGoodsId());
|
||||
dataTracerForm.setBusinessType(DataTracerBusinessTypeEnum.GOODS);
|
||||
dataTracerForm.setOperateType(DataTracerOperateTypeEnum.Common.SAVE);
|
||||
dataTracerForm.setOperateContent(DataTracerOperateTypeEnum.Common.SAVE.getDesc());
|
||||
dataTracerForm.setOperateTime(operateTime);
|
||||
dataTracerService.saveOperateRecord(dataTracerForm, operatorId, operatorName);
|
||||
}
|
||||
|
||||
@Async
|
||||
public void goodsUpdateRecord(GoodsEntity originGoodsEntity, GoodsEntity newGoodsEntity, LocalDateTime operateTime, Long operatorId, String operatorName) {
|
||||
String operateContent = dataTracerFieldService.beanParse(originGoodsEntity, newGoodsEntity);
|
||||
DataTracerDTO dataTracerDTO = new DataTracerDTO();
|
||||
dataTracerDTO.setBusinessId(originGoodsEntity.getGoodsId());
|
||||
dataTracerDTO.setBusinessType(DataTracerBusinessTypeEnum.GOODS);
|
||||
dataTracerDTO.setOperateType(DataTracerOperateTypeEnum.Common.UPDATE);
|
||||
dataTracerDTO.setOperateContent(operateContent);
|
||||
dataTracerDTO.setOperateTime(operateTime);
|
||||
dataTracerDTO.setExtraData(new DataTracerExtraDataDTO(GoodsEntity.class, originGoodsEntity, newGoodsEntity));
|
||||
dataTracerService.saveOperateRecord(dataTracerDTO, operatorId, operatorName);
|
||||
DataTracerForm dataTracerForm = new DataTracerForm();
|
||||
dataTracerForm.setBusinessId(originGoodsEntity.getGoodsId());
|
||||
dataTracerForm.setBusinessType(DataTracerBusinessTypeEnum.GOODS);
|
||||
dataTracerForm.setOperateType(DataTracerOperateTypeEnum.Common.UPDATE);
|
||||
dataTracerForm.setOperateContent(operateContent);
|
||||
dataTracerForm.setOperateTime(operateTime);
|
||||
dataTracerForm.setExtraData(new DataTracerExtraData(GoodsEntity.class, originGoodsEntity, newGoodsEntity));
|
||||
dataTracerService.saveOperateRecord(dataTracerForm, operatorId, operatorName);
|
||||
}
|
||||
|
||||
@Async
|
||||
public void batchRecord(List<Long> goodsIdList, String operateContent, BaseEnum operateType, LocalDateTime operateTime, Long operatorId, String operatorName) {
|
||||
List<DataTracerDTO> dataTracerList = Lists.newArrayList();
|
||||
List<DataTracerForm> dataTracerList = Lists.newArrayList();
|
||||
for (Long goodsId : goodsIdList) {
|
||||
DataTracerDTO dataTracerDTO = new DataTracerDTO();
|
||||
dataTracerDTO.setBusinessId(goodsId);
|
||||
dataTracerDTO.setBusinessType(DataTracerBusinessTypeEnum.GOODS);
|
||||
dataTracerDTO.setOperateType(operateType);
|
||||
dataTracerDTO.setOperateContent(operateContent);
|
||||
dataTracerDTO.setOperateTime(operateTime);
|
||||
dataTracerList.add(dataTracerDTO);
|
||||
DataTracerForm dataTracerForm = new DataTracerForm();
|
||||
dataTracerForm.setBusinessId(goodsId);
|
||||
dataTracerForm.setBusinessType(DataTracerBusinessTypeEnum.GOODS);
|
||||
dataTracerForm.setOperateType(operateType);
|
||||
dataTracerForm.setOperateContent(operateContent);
|
||||
dataTracerForm.setOperateTime(operateTime);
|
||||
dataTracerList.add(dataTracerForm);
|
||||
}
|
||||
dataTracerService.saveBatchOperateRecord(dataTracerList, operatorId, operatorName);
|
||||
}
|
||||
|
@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import net.lab1024.smartadmin.service.module.business.category.CategoryDao;
|
||||
import net.lab1024.smartadmin.service.module.business.goods.constant.GoodsTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldBigDecimalValue;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldDoc;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldEnumValue;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldSqlValue;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldBigDecimal;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldDoc;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldSql;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@ -32,8 +32,8 @@ public class GoodsEntity {
|
||||
*
|
||||
* @see GoodsTypeEnum
|
||||
*/
|
||||
@FieldDoc("商品类型")
|
||||
@FieldEnumValue(enumClass = GoodsTypeEnum.class)
|
||||
@DataTracerFieldDoc("商品类型")
|
||||
@DataTracerFieldEnum(enumClass = GoodsTypeEnum.class)
|
||||
private Integer goodsType;
|
||||
|
||||
/**
|
||||
@ -44,13 +44,13 @@ public class GoodsEntity {
|
||||
/**
|
||||
* 商品分类
|
||||
*/
|
||||
@FieldSqlValue(relateColumn = "categoryId",relateDisplayColumn = "categoryName",relateMapper = CategoryDao.class)
|
||||
@DataTracerFieldSql(relateColumn = "categoryId",relateDisplayColumn = "categoryName",relateMapper = CategoryDao.class)
|
||||
private Long categoryId;
|
||||
|
||||
/**
|
||||
* 商品名称
|
||||
*/
|
||||
@FieldDoc("商品名称")
|
||||
@DataTracerFieldDoc("商品名称")
|
||||
private String goodsName;
|
||||
|
||||
/**
|
||||
@ -61,8 +61,8 @@ public class GoodsEntity {
|
||||
/**
|
||||
* 商品价格
|
||||
*/
|
||||
@FieldDoc("商品价格")
|
||||
@FieldBigDecimalValue
|
||||
@DataTracerFieldDoc("商品价格")
|
||||
@DataTracerFieldBigDecimal
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
@ -73,7 +73,7 @@ public class GoodsEntity {
|
||||
/**
|
||||
* 上架状态
|
||||
*/
|
||||
@FieldDoc("上架状态")
|
||||
@DataTracerFieldDoc("上架状态")
|
||||
private Boolean shelvesFlag;
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@ package net.lab1024.smartadmin.service.module.support.cache;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -19,19 +20,19 @@ import java.util.List;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = {SwaggerTagConst.Admin.MANAGER_SYSTEM_CACHE})
|
||||
public class CacheController {
|
||||
public class CacheController extends SupportBaseController {
|
||||
|
||||
@Autowired
|
||||
private CacheService systemCacheService;
|
||||
|
||||
@ApiOperation(value = "获取所有缓存", notes = "@author 罗伊")
|
||||
@ApiOperation(value = "获取所有缓存 @author 罗伊")
|
||||
@GetMapping("/cache/names")
|
||||
public ResponseDTO<List<String>> cacheNames() {
|
||||
return ResponseDTO.ok(systemCacheService.cacheNames());
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "移除某个缓存", notes = "@author 罗伊")
|
||||
@ApiOperation(value = "移除某个缓存 @author 罗伊")
|
||||
@GetMapping("/cache/remove/{cacheName}")
|
||||
public ResponseDTO<String> removeCache(@PathVariable String cacheName) {
|
||||
systemCacheService.removeCache(cacheName);
|
||||
@ -39,7 +40,7 @@ public class CacheController {
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "获取某个缓存的所有key", notes = "@author 罗伊")
|
||||
@ApiOperation(value = "获取某个缓存的所有key @author 罗伊")
|
||||
@GetMapping("/cache/keys/{cacheName}")
|
||||
public ResponseDTO<List<String>> cacheKeys(@PathVariable String cacheName) {
|
||||
return ResponseDTO.ok(systemCacheService.cacheKey(cacheName));
|
||||
|
@ -4,18 +4,18 @@ package net.lab1024.smartadmin.service.module.support.captcha;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import net.lab1024.smartadmin.service.common.annoation.NoNeedLogin;
|
||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 图形验证码业务 路由
|
||||
* 图形验证码业务
|
||||
*
|
||||
* @author listen
|
||||
* @author 胡克
|
||||
* @date 2021/08/31 20:00
|
||||
*/
|
||||
@Api(tags = SwaggerTagConst.Support.CAPTCHA)
|
||||
@ -26,10 +26,10 @@ public class CaptchaController extends SupportBaseController {
|
||||
private CaptchaService captchaService;
|
||||
|
||||
@NoNeedLogin
|
||||
@ApiOperation("获取图形验证码 by listen")
|
||||
@ApiOperation("获取图形验证码 @author 胡克")
|
||||
@GetMapping("/captcha")
|
||||
public ResponseDTO<CaptchaVO> generateCaptcha() {
|
||||
return captchaService.generateCaptcha();
|
||||
return ResponseDTO.ok(captchaService.generateCaptcha());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,8 +5,10 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||
import net.lab1024.smartadmin.service.common.exception.BusinessException;
|
||||
import net.lab1024.smartadmin.service.constant.RedisKeyConst;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaForm;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaVO;
|
||||
import net.lab1024.smartadmin.service.module.support.redis.RedisService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -30,6 +32,11 @@ import java.util.UUID;
|
||||
@Service
|
||||
public class CaptchaService {
|
||||
|
||||
/**
|
||||
* 过期时间:65秒
|
||||
*/
|
||||
private static final long EXPIRE_SECOND = 65L;
|
||||
|
||||
@Autowired
|
||||
private DefaultKaptcha defaultKaptcha;
|
||||
|
||||
@ -37,21 +44,22 @@ public class CaptchaService {
|
||||
private RedisService redisService;
|
||||
|
||||
/**
|
||||
* 获取生成图形验证码
|
||||
* 生成图形验证码
|
||||
* 默认 1 分钟有效期
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<CaptchaVO> generateCaptcha() {
|
||||
String base64Code;
|
||||
public CaptchaVO generateCaptcha() {
|
||||
String captchaText = defaultKaptcha.createText();
|
||||
BufferedImage image = defaultKaptcha.createImage(captchaText);
|
||||
|
||||
String base64Code;
|
||||
try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
|
||||
ImageIO.write(image, "jpg", os);
|
||||
base64Code = Base64Utils.encodeToString(os.toByteArray());
|
||||
} catch (Exception e) {
|
||||
log.error("verificationCode exception:", e);
|
||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "generate captcha error" );
|
||||
log.error("generateCaptcha error:", e);
|
||||
throw new BusinessException("生成验证码错误");
|
||||
}
|
||||
// uuid 唯一标识
|
||||
String uuid = UUID.randomUUID().toString().replace("-", StringConst.EMPTY_STR);
|
||||
@ -62,33 +70,36 @@ public class CaptchaService {
|
||||
* 默认有效时长 80s
|
||||
*/
|
||||
CaptchaVO captchaVO = new CaptchaVO();
|
||||
captchaVO.setCaptchaId(uuid);
|
||||
captchaVO.setCaptchaImg("data:image/png;base64," + base64Code);
|
||||
redisService.set(buildCaptchaRedisKey(uuid), captchaText, 80L);
|
||||
return ResponseDTO.ok(captchaVO);
|
||||
captchaVO.setCaptchaUUid(uuid);
|
||||
captchaVO.setCaptchaBase64Image("data:image/png;base64," + base64Code);
|
||||
redisService.set(buildCaptchaRedisKey(uuid), captchaText, EXPIRE_SECOND);
|
||||
return captchaVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验图形验证码
|
||||
*
|
||||
* @param captchaId
|
||||
* @param captcha
|
||||
* @param captchaForm
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<String> checkCaptcha(String captchaId, String captcha) {
|
||||
if (StringUtils.isBlank(captchaId) || StringUtils.isBlank(captcha)) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "请输入正确验证码" );
|
||||
public ResponseDTO<String> checkCaptcha(CaptchaForm captchaForm) {
|
||||
if (StringUtils.isBlank(captchaForm.getCaptchaUuid()) || StringUtils.isBlank(captchaForm.getCaptchaCode())) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "请输入正确验证码");
|
||||
}
|
||||
String redisKey = buildCaptchaRedisKey(captchaId);
|
||||
String redisCode = redisService.get(redisKey);
|
||||
if (StringUtils.isBlank(redisCode)) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误或已过期,请刷新重试" );
|
||||
/**
|
||||
* 1、校验redis里的验证码
|
||||
* 2、校验成功后,删除redis
|
||||
*/
|
||||
String redisCaptchaKey = buildCaptchaRedisKey(captchaForm.getCaptchaUuid());
|
||||
String redisCaptchaCode = redisService.get(redisCaptchaKey);
|
||||
if (StringUtils.isBlank(redisCaptchaCode)) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码已过期,请刷新重试");
|
||||
}
|
||||
if (!Objects.equals(redisCode, captcha)) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误或已过期,请刷新重试" );
|
||||
if (!Objects.equals(redisCaptchaCode, captchaForm.getCaptchaCode())) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误,请输入正确的验证码");
|
||||
}
|
||||
// 校验通过 移除
|
||||
redisService.delete(redisKey);
|
||||
// 删除已使用的验证码
|
||||
redisService.delete(redisCaptchaKey);
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.render;
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.config;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
@ -0,0 +1,44 @@
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.config;
|
||||
|
||||
import com.google.code.kaptcha.impl.DefaultKaptcha;
|
||||
import com.google.code.kaptcha.util.Config;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.config.CaptchaNoise;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.config.CaptchaWordRenderer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* [ 验证码配置 ]
|
||||
*
|
||||
* @author zhuoda
|
||||
*/
|
||||
@Configuration
|
||||
public class CaptchaConfig {
|
||||
|
||||
@Bean
|
||||
public DefaultKaptcha getDefaultKaptcha() {
|
||||
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("kaptcha.border", "no");
|
||||
properties.setProperty("kaptcha.border.color", "34,114,200");
|
||||
properties.setProperty("kaptcha.image.width", "125");
|
||||
properties.setProperty("kaptcha.image.height", "45");
|
||||
properties.setProperty("kaptcha.textproducer.char.string", "123456789");
|
||||
properties.setProperty("kaptcha.textproducer.char.length", "4");
|
||||
properties.setProperty("kaptcha.textproducer.font.names", "Arial,Arial Narrow,Serif,Helvetica,Tahoma,Times New Roman,Verdana");
|
||||
properties.setProperty("kaptcha.textproducer.font.size", "38");
|
||||
|
||||
properties.setProperty("kaptcha.background.clear.from", "white");
|
||||
properties.setProperty("kaptcha.background.clear.to", "white");
|
||||
|
||||
properties.setProperty("kaptcha.word.impl", CaptchaWordRenderer.class.getName());
|
||||
properties.setProperty("kaptcha.noise.impl", CaptchaNoise.class.getName());
|
||||
|
||||
Config config = new Config(properties);
|
||||
defaultKaptcha.setConfig(config);
|
||||
return defaultKaptcha;
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.render;
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.config;
|
||||
|
||||
import com.google.code.kaptcha.NoiseProducer;
|
||||
import com.google.code.kaptcha.util.Configurable;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.render;
|
||||
package net.lab1024.smartadmin.service.module.support.captcha.config;
|
||||
|
||||
import com.google.code.kaptcha.text.WordRenderer;
|
||||
import com.google.code.kaptcha.util.Configurable;
|
@ -2,23 +2,23 @@ package net.lab1024.smartadmin.service.module.support.captcha.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 图形验证码 VO
|
||||
* 图形验证码 表单
|
||||
*
|
||||
* @author 胡克
|
||||
* @date 2021/8/31 20:52
|
||||
* @author zhuoda
|
||||
*/
|
||||
@Data
|
||||
public class CaptchaForm {
|
||||
|
||||
@ApiModelProperty
|
||||
@NotBlank(message = "验证码标识不能为空" )
|
||||
private String captchaId;
|
||||
@ApiModelProperty(value = "验证码")
|
||||
@NotBlank(message = "验证码不能为空")
|
||||
private String captchaCode;
|
||||
|
||||
@ApiModelProperty
|
||||
@NotBlank(message = "验证码不能为空" )
|
||||
private String captcha;
|
||||
@ApiModelProperty(value = "验证码uuid标识")
|
||||
@NotBlank(message = "验证码uuid标识不能为空")
|
||||
private String captchaUuid;
|
||||
}
|
||||
|
@ -12,9 +12,9 @@ import lombok.Data;
|
||||
@Data
|
||||
public class CaptchaVO {
|
||||
|
||||
@ApiModelProperty("验证码标识" )
|
||||
private String captchaId;
|
||||
@ApiModelProperty("验证码唯一标识" )
|
||||
private String captchaUUid;
|
||||
|
||||
@ApiModelProperty("验证码图片" )
|
||||
private String captchaImg;
|
||||
@ApiModelProperty("验证码Base64图片" )
|
||||
private String captchaBase64Image;
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.constant.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeAndViewTypeVO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScopeAndViewTypeVO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.service.DataScopeService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.datascope;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartStringUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeSqlConfigDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScopeSqlConfig;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.service.DataScopeSqlConfigService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.mapping.*;
|
||||
@ -49,7 +49,7 @@ public class MyBatisPlugin implements Interceptor {
|
||||
if (dataScopeSqlConfigService == null) {
|
||||
return invocation.proceed();
|
||||
}
|
||||
DataScopeSqlConfigDTO sqlConfigDTO = dataScopeSqlConfigService.getSqlConfig(path);
|
||||
DataScopeSqlConfig sqlConfigDTO = dataScopeSqlConfigService.getSqlConfig(path);
|
||||
if (sqlConfigDTO != null) {
|
||||
Map<String, Object> paramMap = this.getParamList(sqlConfigDTO.getParamName(), parameter);
|
||||
BoundSql newBoundSql = copyFromBoundSql(mappedStatement, boundSql, this.joinSql(originalSql, paramMap, sqlConfigDTO));
|
||||
@ -83,7 +83,7 @@ public class MyBatisPlugin implements Interceptor {
|
||||
return paramMap;
|
||||
}
|
||||
|
||||
private String joinSql(String sql, Map<String, Object> paramMap, DataScopeSqlConfigDTO sqlConfigDTO) {
|
||||
private String joinSql(String sql, Map<String, Object> paramMap, DataScopeSqlConfig sqlConfigDTO) {
|
||||
if (null == sqlConfigDTO) {
|
||||
return sql;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain.dto;
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
@ -16,7 +16,7 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class DataScopeDTO {
|
||||
public class DataScope {
|
||||
|
||||
@ApiModelProperty("数据范围类型")
|
||||
private Integer dataScopeType;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain.dto;
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain.dto;
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain;
|
||||
|
||||
import lombok.Data;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeTypeEnum;
|
||||
@ -15,7 +15,7 @@ import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScop
|
||||
* @since JDK1.8
|
||||
*/
|
||||
@Data
|
||||
public class DataScopeSqlConfigDTO {
|
||||
public class DataScopeSqlConfig {
|
||||
|
||||
/**
|
||||
* 数据范围类型
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain.dto;
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
@ -20,6 +20,7 @@ public class DataScopeViewTypeVO {
|
||||
|
||||
@ApiModelProperty("可见范围")
|
||||
private Integer viewType;
|
||||
|
||||
@ApiModelProperty("可见范围名称")
|
||||
private String viewTypeName;
|
||||
|
@ -6,9 +6,9 @@ import org.springframework.stereotype.Service;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeViewTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeAndViewTypeVO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeViewTypeVO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScopeAndViewTypeVO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScope;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScopeViewTypeVO;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
@ -32,7 +32,7 @@ public class DataScopeService {
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<List<DataScopeAndViewTypeVO>> dataScopeList() {
|
||||
List<DataScopeDTO> dataScopeList = this.getDataScopeType();
|
||||
List<DataScope> dataScopeList = this.getDataScopeType();
|
||||
List<DataScopeAndViewTypeVO> dataScopeAndTypeList = SmartBeanUtil.copyList(dataScopeList, DataScopeAndViewTypeVO.class);
|
||||
List<DataScopeViewTypeVO> typeList = this.getViewType();
|
||||
dataScopeAndTypeList.forEach(e -> {
|
||||
@ -59,16 +59,16 @@ public class DataScopeService {
|
||||
return viewTypeList;
|
||||
}
|
||||
|
||||
public List<DataScopeDTO> getDataScopeType() {
|
||||
List<DataScopeDTO> dataScopeTypeList = Lists.newArrayList();
|
||||
public List<DataScope> getDataScopeType() {
|
||||
List<DataScope> dataScopeTypeList = Lists.newArrayList();
|
||||
DataScopeTypeEnum[] enums = DataScopeTypeEnum.class.getEnumConstants();
|
||||
DataScopeDTO dataScopeDTO;
|
||||
DataScope dataScope;
|
||||
for (DataScopeTypeEnum typeEnum : enums) {
|
||||
dataScopeDTO =
|
||||
DataScopeDTO.builder().dataScopeType(typeEnum.getValue()).dataScopeTypeDesc(typeEnum.getDesc()).dataScopeTypeName(typeEnum.getName()).dataScopeTypeSort(typeEnum.getSort()).build();
|
||||
dataScopeTypeList.add(dataScopeDTO);
|
||||
dataScope =
|
||||
DataScope.builder().dataScopeType(typeEnum.getValue()).dataScopeTypeDesc(typeEnum.getDesc()).dataScopeTypeName(typeEnum.getName()).dataScopeTypeSort(typeEnum.getSort()).build();
|
||||
dataScopeTypeList.add(dataScope);
|
||||
}
|
||||
Comparator<DataScopeDTO> comparator = (h1, h2) -> h1.getDataScopeTypeSort().compareTo(h2.getDataScopeTypeSort());
|
||||
Comparator<DataScope> comparator = (h1, h2) -> h1.getDataScopeTypeSort().compareTo(h2.getDataScopeTypeSort());
|
||||
dataScopeTypeList.sort(comparator);
|
||||
return dataScopeTypeList;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import net.lab1024.smartadmin.service.module.support.datascope.DataScope;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeViewTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeWhereInTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeSqlConfigDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScopeSqlConfig;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.strategy.DataScopePowerStrategy;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
@ -47,7 +47,7 @@ public class DataScopeSqlConfigService {
|
||||
|
||||
private static final String DEPARTMENT_PARAM = "#departmentIds";
|
||||
|
||||
private ConcurrentHashMap<String, DataScopeSqlConfigDTO> dataScopeMethodMap = new ConcurrentHashMap<>();
|
||||
private ConcurrentHashMap<String, DataScopeSqlConfig> dataScopeMethodMap = new ConcurrentHashMap<>();
|
||||
|
||||
@Autowired
|
||||
private DataScopeViewService dataScopeViewService;
|
||||
@ -69,13 +69,13 @@ public class DataScopeSqlConfigService {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Map<String, DataScopeSqlConfigDTO> refreshDataScopeMethodMap() {
|
||||
private Map<String, DataScopeSqlConfig> refreshDataScopeMethodMap() {
|
||||
Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage(scanPackage)).setScanners(new MethodAnnotationsScanner()));
|
||||
Set<Method> methods = reflections.getMethodsAnnotatedWith(DataScope.class);
|
||||
for (Method method : methods) {
|
||||
DataScope dataScopeAnnotation = method.getAnnotation(DataScope.class);
|
||||
if (dataScopeAnnotation != null) {
|
||||
DataScopeSqlConfigDTO configDTO = new DataScopeSqlConfigDTO();
|
||||
DataScopeSqlConfig configDTO = new DataScopeSqlConfig();
|
||||
configDTO.setDataScopeType(dataScopeAnnotation.dataScopeType());
|
||||
configDTO.setJoinSql(dataScopeAnnotation.joinSql());
|
||||
configDTO.setWhereIndex(dataScopeAnnotation.whereIndex());
|
||||
@ -94,8 +94,8 @@ public class DataScopeSqlConfigService {
|
||||
* @param method
|
||||
* @return
|
||||
*/
|
||||
public DataScopeSqlConfigDTO getSqlConfig(String method) {
|
||||
DataScopeSqlConfigDTO sqlConfigDTO = this.dataScopeMethodMap.get(method);
|
||||
public DataScopeSqlConfig getSqlConfig(String method) {
|
||||
DataScopeSqlConfig sqlConfigDTO = this.dataScopeMethodMap.get(method);
|
||||
return sqlConfigDTO;
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ public class DataScopeSqlConfigService {
|
||||
* @param sqlConfigDTO
|
||||
* @return
|
||||
*/
|
||||
public String getJoinSql(Map<String, Object> paramMap, DataScopeSqlConfigDTO sqlConfigDTO) {
|
||||
public String getJoinSql(Map<String, Object> paramMap, DataScopeSqlConfig sqlConfigDTO) {
|
||||
DataScopeTypeEnum dataScopeTypeEnum = sqlConfigDTO.getDataScopeType();
|
||||
String joinSql = sqlConfigDTO.getJoinSql();
|
||||
Long employeeId = SmartRequestUtil.getRequestEmployeeId();
|
||||
|
@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeViewTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.entity.DataScopeRoleEntity;
|
||||
import net.lab1024.smartadmin.service.module.system.role.domain.entity.RoleDataScopeEntity;
|
||||
import net.lab1024.smartadmin.service.module.system.department.service.DepartmentService;
|
||||
import net.lab1024.smartadmin.service.module.system.employee.EmployeeDao;
|
||||
import net.lab1024.smartadmin.service.module.system.employee.domain.entity.EmployeeEntity;
|
||||
@ -121,16 +121,16 @@ public class DataScopeViewService {
|
||||
return DataScopeViewTypeEnum.ME;
|
||||
}
|
||||
//未设置角色数据范围 默认本人
|
||||
List<DataScopeRoleEntity> dataScopeRoleList = roleDataScopeDao.listByRoleIdList(roleIdList);
|
||||
List<RoleDataScopeEntity> dataScopeRoleList = roleDataScopeDao.listByRoleIdList(roleIdList);
|
||||
if (CollectionUtils.isEmpty(dataScopeRoleList)) {
|
||||
return DataScopeViewTypeEnum.ME;
|
||||
}
|
||||
Map<Integer, List<DataScopeRoleEntity>> listMap = dataScopeRoleList.stream().collect(Collectors.groupingBy(DataScopeRoleEntity::getDataScopeType));
|
||||
List<DataScopeRoleEntity> viewLevelList = listMap.getOrDefault(dataScopeTypeEnum.getValue(), Lists.newArrayList());
|
||||
Map<Integer, List<RoleDataScopeEntity>> listMap = dataScopeRoleList.stream().collect(Collectors.groupingBy(RoleDataScopeEntity::getDataScopeType));
|
||||
List<RoleDataScopeEntity> viewLevelList = listMap.getOrDefault(dataScopeTypeEnum.getValue(), Lists.newArrayList());
|
||||
if (CollectionUtils.isEmpty(viewLevelList)) {
|
||||
return DataScopeViewTypeEnum.ME;
|
||||
}
|
||||
DataScopeRoleEntity maxLevel = viewLevelList.stream().max(Comparator.comparing(e -> SmartBaseEnumUtil.getEnumByValue(e.getViewType(), DataScopeViewTypeEnum.class).getLevel())).get();
|
||||
RoleDataScopeEntity maxLevel = viewLevelList.stream().max(Comparator.comparing(e -> SmartBaseEnumUtil.getEnumByValue(e.getViewType(), DataScopeViewTypeEnum.class).getLevel())).get();
|
||||
return SmartBaseEnumUtil.getEnumByValue(maxLevel.getViewType(), DataScopeViewTypeEnum.class);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.strategy;
|
||||
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.constant.DataScopeViewTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.dto.DataScopeSqlConfigDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.DataScopeSqlConfig;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@ -23,5 +23,5 @@ public abstract class DataScopePowerStrategy {
|
||||
* @param sqlConfigDTO
|
||||
* @return
|
||||
*/
|
||||
public abstract String getCondition(DataScopeViewTypeEnum viewTypeEnum, Map<String, Object> paramMap, DataScopeSqlConfigDTO sqlConfigDTO);
|
||||
public abstract String getCondition(DataScopeViewTypeEnum viewTypeEnum, Map<String, Object> paramMap, DataScopeSqlConfig sqlConfigDTO);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.anno;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.annoation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
@ -12,6 +12,6 @@ import java.lang.annotation.Target;
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface FieldBigDecimalValue {
|
||||
public @interface DataTracerFieldBigDecimal {
|
||||
int scale() default 2;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.anno;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.annoation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
@ -12,7 +12,7 @@ import java.lang.annotation.Target;
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface FieldDoc {
|
||||
public @interface DataTracerFieldDoc {
|
||||
/**
|
||||
* 本属性的注释信息
|
||||
* @return
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.anno;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.annoation;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||
|
||||
@ -14,7 +14,7 @@ import java.lang.annotation.Target;
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface FieldEnumValue {
|
||||
public @interface DataTracerFieldEnum {
|
||||
|
||||
Class<? extends BaseEnum> enumClass() default BaseEnum.class;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.anno;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.annoation;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
@ -14,7 +14,7 @@ import java.lang.annotation.Target;
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface FieldSqlValue {
|
||||
public @interface DataTracerFieldSql {
|
||||
|
||||
/**
|
||||
* 关联字段名称
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@ -6,8 +6,9 @@ import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageResult;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQuery;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerVO;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.service.DataTracerService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -31,7 +32,7 @@ public class DataTracerController extends SystemBaseController {
|
||||
|
||||
@ApiOperation("分页查询业务操作日志 - by listen")
|
||||
@PostMapping("/data/tracer/log/query")
|
||||
public ResponseDTO<PageResult<DataTracerVO>> query(@Valid @RequestBody DataTracerQuery queryForm) {
|
||||
public ResponseDTO<PageResult<DataTracerVO>> query(@Valid @RequestBody DataTracerQueryForm queryForm) {
|
||||
return dataTracerService.query(queryForm);
|
||||
}
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerEntity;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQuery;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@ -33,5 +33,5 @@ public interface DataTracerDao extends BaseMapper<DataTracerEntity> {
|
||||
* @param queryForm
|
||||
* @return
|
||||
*/
|
||||
List<DataTracerVO> query(Page page, @Param("query") DataTracerQuery queryForm);
|
||||
List<DataTracerVO> query(Page page, @Param("query") DataTracerQueryForm queryForm);
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* [ ]
|
||||
*
|
||||
* @author 罗伊
|
||||
* @date 2020/8/25 17:23
|
||||
*/
|
||||
@Data
|
||||
public class DataTracerExtraData {
|
||||
|
||||
/**
|
||||
* 对象所属类
|
||||
*/
|
||||
private Class objectClass;
|
||||
|
||||
/**
|
||||
* 原对象
|
||||
*/
|
||||
private Object originObject;
|
||||
|
||||
/**
|
||||
* 新对象
|
||||
*/
|
||||
private Object newObject;
|
||||
|
||||
public DataTracerExtraData(Class objectClass, Object originObject, Object newObject) {
|
||||
this.objectClass = objectClass;
|
||||
this.originObject = originObject;
|
||||
this.newObject = newObject;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* [ ]
|
||||
*
|
||||
* @author 罗伊
|
||||
* @date 2020/8/25 17:23
|
||||
*/
|
||||
@Data
|
||||
public class DataTracerExtraDataDTO {
|
||||
|
||||
/**
|
||||
* 对象所属类
|
||||
*/
|
||||
private Class clazz;
|
||||
|
||||
/**
|
||||
* 原对象
|
||||
*/
|
||||
private Object originObj;
|
||||
|
||||
/**
|
||||
* 新对象
|
||||
*/
|
||||
private Object newObj;
|
||||
|
||||
public DataTracerExtraDataDTO(Class clazz, Object originObj, Object newObj) {
|
||||
this.clazz = clazz;
|
||||
this.originObj = originObj;
|
||||
this.newObj = newObj;
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@ import java.time.LocalDateTime;
|
||||
* @date 2020/8/25 16:03
|
||||
*/
|
||||
@Data
|
||||
public class DataTracerDTO {
|
||||
public class DataTracerForm {
|
||||
|
||||
/**
|
||||
* 业务id
|
||||
@ -43,6 +43,6 @@ public class DataTracerDTO {
|
||||
/**
|
||||
* 扩展信息
|
||||
*/
|
||||
private DataTracerExtraDataDTO extraData;
|
||||
private DataTracerExtraData extraData;
|
||||
|
||||
}
|
@ -15,7 +15,7 @@ import javax.validation.constraints.NotNull;
|
||||
* @date 2021/8/17 8:47
|
||||
*/
|
||||
@Data
|
||||
public class DataTracerQuery extends PageParam {
|
||||
public class DataTracerQueryForm extends PageParam {
|
||||
|
||||
@ApiModelPropertyEnum(DataTracerBusinessTypeEnum.class)
|
||||
private Integer businessType;
|
@ -1,6 +1,7 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.dao.DataTracerDao;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
@ -6,10 +6,10 @@ import com.google.common.base.CaseFormat;
|
||||
import com.google.common.collect.Lists;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldBigDecimalValue;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldDoc;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldEnumValue;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.anno.FieldSqlValue;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldBigDecimal;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldDoc;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.annoation.DataTracerFieldSql;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerOperateTypeEnum;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBigDecimalUtil;
|
||||
@ -267,13 +267,13 @@ public class DataTracerFieldService {
|
||||
if (fieldValue == null) {
|
||||
return "";
|
||||
}
|
||||
FieldEnumValue fieldEnumValue = field.getAnnotation(FieldEnumValue.class);
|
||||
FieldSqlValue fieldSqlValue = field.getAnnotation(FieldSqlValue.class);
|
||||
if (fieldEnumValue != null) {
|
||||
return SmartBaseEnumUtil.getEnumDescByValue(fieldValue, fieldEnumValue.enumClass());
|
||||
DataTracerFieldEnum dataTracerFieldEnum = field.getAnnotation(DataTracerFieldEnum.class);
|
||||
DataTracerFieldSql dataTracerFieldSql = field.getAnnotation(DataTracerFieldSql.class);
|
||||
if (dataTracerFieldEnum != null) {
|
||||
return SmartBaseEnumUtil.getEnumDescByValue(fieldValue, dataTracerFieldEnum.enumClass());
|
||||
}
|
||||
if (fieldSqlValue != null) {
|
||||
return this.getRelateDisplayValue(fieldValue, fieldSqlValue);
|
||||
if (dataTracerFieldSql != null) {
|
||||
return this.getRelateDisplayValue(fieldValue, dataTracerFieldSql);
|
||||
}
|
||||
if (fieldValue instanceof Date) {
|
||||
LocalDateTime localDateTime = SmartLocalDateUtil.toLocalDateTime((Date) fieldValue);
|
||||
@ -286,9 +286,9 @@ public class DataTracerFieldService {
|
||||
return SmartLocalDateUtil.format((LocalDate) fieldValue, SmartDateFormatterEnum.YMD);
|
||||
}
|
||||
if (fieldValue instanceof BigDecimal) {
|
||||
FieldBigDecimalValue fieldBigDecimalValue = field.getAnnotation(FieldBigDecimalValue.class);
|
||||
if (fieldBigDecimalValue != null) {
|
||||
BigDecimal value = SmartBigDecimalUtil.setScale((BigDecimal) fieldValue, fieldBigDecimalValue.scale());
|
||||
DataTracerFieldBigDecimal dataTracerFieldBigDecimal = field.getAnnotation(DataTracerFieldBigDecimal.class);
|
||||
if (dataTracerFieldBigDecimal != null) {
|
||||
BigDecimal value = SmartBigDecimalUtil.setScale((BigDecimal) fieldValue, dataTracerFieldBigDecimal.scale());
|
||||
return value.toString();
|
||||
}
|
||||
}
|
||||
@ -301,16 +301,16 @@ public class DataTracerFieldService {
|
||||
* @param fieldValue
|
||||
* @return
|
||||
*/
|
||||
private String getRelateDisplayValue(Object fieldValue, FieldSqlValue fieldSqlValue) {
|
||||
Class<? extends BaseMapper> relateMapper = fieldSqlValue.relateMapper();
|
||||
private String getRelateDisplayValue(Object fieldValue, DataTracerFieldSql dataTracerFieldSql) {
|
||||
Class<? extends BaseMapper> relateMapper = dataTracerFieldSql.relateMapper();
|
||||
BaseMapper mapper = applicationContext.getBean(relateMapper);
|
||||
if (mapper == null) {
|
||||
return "";
|
||||
}
|
||||
String relateFieldValue = fieldValue.toString();
|
||||
QueryWrapper qw = new QueryWrapper();
|
||||
qw.select(CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldSqlValue.relateDisplayColumn()));
|
||||
qw.eq(CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldSqlValue.relateColumn()), relateFieldValue);
|
||||
qw.select(CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dataTracerFieldSql.relateDisplayColumn()));
|
||||
qw.eq(CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, dataTracerFieldSql.relateColumn()), relateFieldValue);
|
||||
List<Object> displayValue = mapper.selectObjs(qw);
|
||||
if (CollectionUtils.isEmpty(displayValue)) {
|
||||
return "";
|
||||
@ -331,7 +331,7 @@ public class DataTracerFieldService {
|
||||
if (null != desc) {
|
||||
return desc;
|
||||
}
|
||||
FieldDoc operateField = field.getAnnotation(FieldDoc.class);
|
||||
DataTracerFieldDoc operateField = field.getAnnotation(DataTracerFieldDoc.class);
|
||||
if (operateField != null) {
|
||||
desc = operateField.value();
|
||||
} else {
|
||||
@ -450,7 +450,7 @@ public class DataTracerFieldService {
|
||||
Field[] declaredFields = tempClass.getDeclaredFields();
|
||||
for (Field field : declaredFields) {
|
||||
// 过虑出有注解字段
|
||||
if (!field.isAnnotationPresent(FieldDoc.class)) {
|
||||
if (!field.isAnnotationPresent(DataTracerFieldDoc.class)) {
|
||||
continue;
|
||||
}
|
||||
field.setAccessible(true);
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer;
|
||||
package net.lab1024.smartadmin.service.module.support.datatracer.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -6,10 +6,12 @@ import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageResult;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.dao.DataTracerDao;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.manager.DataTracerManger;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerForm;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerEntity;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQuery;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerVO;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@ -36,12 +38,12 @@ public class DataTracerService {
|
||||
/**
|
||||
* 保存操作日志
|
||||
*
|
||||
* @param dataTracerDTO
|
||||
* @param dataTracerForm
|
||||
* @param operatorId 操作人id
|
||||
* @param operatorName 操作人名称
|
||||
*/
|
||||
public void saveOperateRecord(DataTracerDTO dataTracerDTO, Long operatorId, String operatorName) {
|
||||
DataTracerEntity dataTracerEntity = this.convertEntity(dataTracerDTO, operatorId, operatorName);
|
||||
public void saveOperateRecord(DataTracerForm dataTracerForm, Long operatorId, String operatorName) {
|
||||
DataTracerEntity dataTracerEntity = this.convertEntity(dataTracerForm, operatorId, operatorName);
|
||||
dataTracerDao.insert(dataTracerEntity);
|
||||
}
|
||||
|
||||
@ -52,13 +54,13 @@ public class DataTracerService {
|
||||
* @param operatorId
|
||||
* @param operatorName
|
||||
*/
|
||||
public void saveBatchOperateRecord(List<DataTracerDTO> dataTracerList, Long operatorId, String operatorName) {
|
||||
public void saveBatchOperateRecord(List<DataTracerForm> dataTracerList, Long operatorId, String operatorName) {
|
||||
if (CollectionUtils.isEmpty(dataTracerList)) {
|
||||
return;
|
||||
}
|
||||
List<DataTracerEntity> recordEntityList = Lists.newArrayList();
|
||||
for (DataTracerDTO dataTracerDTO : dataTracerList) {
|
||||
DataTracerEntity dataTracerEntity = this.convertEntity(dataTracerDTO, operatorId, operatorName);
|
||||
for (DataTracerForm dataTracerForm : dataTracerList) {
|
||||
DataTracerEntity dataTracerEntity = this.convertEntity(dataTracerForm, operatorId, operatorName);
|
||||
recordEntityList.add(dataTracerEntity);
|
||||
}
|
||||
dataTracerManger.saveBatch(recordEntityList);
|
||||
@ -67,25 +69,25 @@ public class DataTracerService {
|
||||
/**
|
||||
* dto 转实体对象
|
||||
*
|
||||
* @param dataTracerDTO
|
||||
* @param dataTracerForm
|
||||
* @param operatorId
|
||||
* @param operatorName
|
||||
* @return
|
||||
*/
|
||||
private DataTracerEntity convertEntity(DataTracerDTO dataTracerDTO, Long operatorId, String operatorName) {
|
||||
private DataTracerEntity convertEntity(DataTracerForm dataTracerForm, Long operatorId, String operatorName) {
|
||||
DataTracerEntity recordEntity = new DataTracerEntity();
|
||||
recordEntity.setBusinessId(dataTracerDTO.getBusinessId());
|
||||
recordEntity.setBusinessType(dataTracerDTO.getBusinessType().getValue());
|
||||
recordEntity.setBusinessTypeDesc(dataTracerDTO.getBusinessType().getDesc());
|
||||
recordEntity.setOperateType((Integer) dataTracerDTO.getOperateType().getValue());
|
||||
recordEntity.setOperateTypeDesc(dataTracerDTO.getOperateType().getDesc());
|
||||
recordEntity.setOperateContent(dataTracerDTO.getOperateContent());
|
||||
recordEntity.setBusinessId(dataTracerForm.getBusinessId());
|
||||
recordEntity.setBusinessType(dataTracerForm.getBusinessType().getValue());
|
||||
recordEntity.setBusinessTypeDesc(dataTracerForm.getBusinessType().getDesc());
|
||||
recordEntity.setOperateType((Integer) dataTracerForm.getOperateType().getValue());
|
||||
recordEntity.setOperateTypeDesc(dataTracerForm.getOperateType().getDesc());
|
||||
recordEntity.setOperateContent(dataTracerForm.getOperateContent());
|
||||
recordEntity.setOperatorId(operatorId);
|
||||
recordEntity.setOperatorName(operatorName);
|
||||
if (dataTracerDTO.getExtraData() != null) {
|
||||
recordEntity.setExtraData(JSON.toJSONString(dataTracerDTO.getExtraData()));
|
||||
if (dataTracerForm.getExtraData() != null) {
|
||||
recordEntity.setExtraData(JSON.toJSONString(dataTracerForm.getExtraData()));
|
||||
}
|
||||
recordEntity.setCreateTime(dataTracerDTO.getOperateTime());
|
||||
recordEntity.setCreateTime(dataTracerForm.getOperateTime());
|
||||
return recordEntity;
|
||||
}
|
||||
|
||||
@ -107,7 +109,7 @@ public class DataTracerService {
|
||||
* @param queryForm
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<PageResult<DataTracerVO>> query(DataTracerQuery queryForm) {
|
||||
public ResponseDTO<PageResult<DataTracerVO>> query(DataTracerQueryForm queryForm) {
|
||||
Page page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||
List<DataTracerVO> list = dataTracerDao.query(page, queryForm);
|
||||
PageResult<DataTracerVO> pageResult = SmartPageUtil.convert2PageResult(page, list);
|
@ -7,6 +7,7 @@ import net.lab1024.smartadmin.service.common.domain.PageParam;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageResult;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
@ -2,6 +2,8 @@ package net.lab1024.smartadmin.service.module.support.heartbeat;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordEntity;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.core.HeartBeatRecord;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.core.IHeartBeatRecordHandler;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordEntity;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -6,6 +6,7 @@ import net.lab1024.smartadmin.service.common.domain.PageParam;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageResult;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordVO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.heartbeat;
|
||||
package net.lab1024.smartadmin.service.module.support.heartbeat.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.heartbeat;
|
||||
package net.lab1024.smartadmin.service.module.support.heartbeat.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
@ -7,7 +7,7 @@ import net.lab1024.smartadmin.service.common.domain.PageResult;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQuery;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryForm;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -27,7 +27,7 @@ public class OperateLogController extends SupportBaseController {
|
||||
|
||||
@ApiOperation(value = "分页查询 @author 罗伊")
|
||||
@PostMapping("/userOperateLog/page/query")
|
||||
public ResponseDTO<PageResult<OperateLogDTO>> queryByPage(@RequestBody OperateLogQuery queryForm) {
|
||||
public ResponseDTO<PageResult<OperateLogDTO>> queryByPage(@RequestBody OperateLogQueryForm queryForm) {
|
||||
return operateLogService.queryByPage(queryForm);
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.operatelog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.OperateLogEntity;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQuery;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryForm;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -25,7 +25,7 @@ public interface OperateLogDao extends BaseMapper<OperateLogEntity> {
|
||||
* @param queryForm
|
||||
* @return UserOperateLogEntity
|
||||
*/
|
||||
List<OperateLogEntity> queryByPage(Page page, @Param("query") OperateLogQuery queryForm);
|
||||
List<OperateLogEntity> queryByPage(Page page, @Param("query") OperateLogQueryForm queryForm);
|
||||
|
||||
/**
|
||||
* 根据id删除
|
||||
|
@ -5,7 +5,7 @@ import net.lab1024.smartadmin.service.common.domain.PageResult;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.OperateLogEntity;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQuery;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryForm;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -29,7 +29,7 @@ public class OperateLogService {
|
||||
* @description 分页查询
|
||||
* @date 2019-05-15 11:32:14
|
||||
*/
|
||||
public ResponseDTO<PageResult<OperateLogDTO>> queryByPage(OperateLogQuery queryForm) {
|
||||
public ResponseDTO<PageResult<OperateLogDTO>> queryByPage(OperateLogQueryForm queryForm) {
|
||||
Page page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||
List<OperateLogEntity> logEntityList = operateLogDao.queryByPage(page, queryForm);
|
||||
PageResult<OperateLogDTO> pageResult = SmartPageUtil.convert2PageResult(page, logEntityList, OperateLogDTO.class);
|
||||
|
@ -10,7 +10,7 @@ import lombok.Data;
|
||||
* @author 罗伊
|
||||
*/
|
||||
@Data
|
||||
public class OperateLogQuery extends PageParam {
|
||||
public class OperateLogQueryForm extends PageParam {
|
||||
|
||||
|
||||
@ApiModelProperty("开始日期")
|
@ -20,7 +20,7 @@ import java.util.List;
|
||||
* @date 2018/02/10 09:18
|
||||
*/
|
||||
@Component
|
||||
public class SmartReloadCommand extends AbstractSmartReloadCommand {
|
||||
public class ReloadCommand extends AbstractSmartReloadCommand {
|
||||
|
||||
@Autowired
|
||||
private ReloadItemDao reloadItemDao;
|
@ -1,8 +1,10 @@
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.annoation.RepeatSubmit;
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.ticket.AbstractRepeatSubmitTicket;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
@ -20,6 +22,7 @@ import java.lang.reflect.Method;
|
||||
* @date
|
||||
*/
|
||||
@Aspect
|
||||
@Slf4j
|
||||
public class RepeatSubmitAspect {
|
||||
|
||||
private AbstractRepeatSubmitTicket repeatSubmitTicket;
|
||||
@ -50,7 +53,7 @@ public class RepeatSubmitAspect {
|
||||
if (StringUtils.isEmpty(ticket)) {
|
||||
return point.proceed();
|
||||
}
|
||||
Long timeStamp = this.repeatSubmitTicket.ticketTimeStamp(ticket);
|
||||
Long timeStamp = this.repeatSubmitTicket.getTicketTimestamp(ticket);
|
||||
if (timeStamp != null) {
|
||||
Method method = ((MethodSignature) point.getSignature()).getMethod();
|
||||
RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class);
|
||||
@ -64,7 +67,9 @@ public class RepeatSubmitAspect {
|
||||
try {
|
||||
obj = point.proceed();
|
||||
this.repeatSubmitTicket.putTicket(ticket);
|
||||
}catch (Throwable throwable){
|
||||
} catch (Throwable throwable) {
|
||||
log.error("", throwable);
|
||||
} finally {
|
||||
this.repeatSubmitTicket.removeTicket(ticket);
|
||||
}
|
||||
return obj;
|
||||
|
@ -1,12 +1,11 @@
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit;
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit.ticket;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* [ ]
|
||||
*
|
||||
* @author yandanyang
|
||||
* @author 罗伊
|
||||
* @date 2021/10/9 19:10
|
||||
*/
|
||||
public abstract class AbstractRepeatSubmitTicket {
|
||||
@ -33,18 +32,18 @@ public abstract class AbstractRepeatSubmitTicket {
|
||||
* @param ticket
|
||||
* @return
|
||||
*/
|
||||
abstract Long ticketTimeStamp(String ticket);
|
||||
public abstract Long getTicketTimestamp(String ticket);
|
||||
|
||||
|
||||
/**
|
||||
* 设置本次请求时间
|
||||
* @param ticket
|
||||
*/
|
||||
abstract void putTicket(String ticket);
|
||||
public abstract void putTicket(String ticket);
|
||||
|
||||
/**
|
||||
* 移除凭证
|
||||
* @param ticket
|
||||
*/
|
||||
abstract void removeTicket(String ticket);
|
||||
public abstract void removeTicket(String ticket);
|
||||
}
|
@ -1,9 +1,8 @@
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit;
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit.ticket;
|
||||
|
||||
import com.github.benmanes.caffeine.cache.Cache;
|
||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.annoation.RepeatSubmit;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
@ -30,7 +29,7 @@ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long ticketTimeStamp(String ticket) {
|
||||
public Long getTicketTimestamp(String ticket) {
|
||||
return cache.getIfPresent(ticket);
|
||||
}
|
||||
|
||||
@ -41,7 +40,7 @@ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket {
|
||||
}
|
||||
|
||||
@Override
|
||||
void removeTicket(String ticket) {
|
||||
public void removeTicket(String ticket) {
|
||||
cache.invalidate(ticket);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit;
|
||||
package net.lab1024.smartadmin.service.module.support.repeatsubmit.ticket;
|
||||
|
||||
import net.lab1024.smartadmin.service.module.support.repeatsubmit.annoation.RepeatSubmit;
|
||||
import org.springframework.data.redis.core.ValueOperations;
|
||||
@ -23,10 +23,10 @@ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long ticketTimeStamp(String ticket) {
|
||||
public Long getTicketTimestamp(String ticket) {
|
||||
Long timeStamp = System.currentTimeMillis();
|
||||
boolean setFlag = redisValueOperations.setIfAbsent(ticket, String.valueOf(timeStamp), RepeatSubmit.MAX_INTERVAL, TimeUnit.MILLISECONDS);
|
||||
if(!setFlag){
|
||||
if (!setFlag) {
|
||||
timeStamp = Long.valueOf(redisValueOperations.get(ticket));
|
||||
}
|
||||
return timeStamp;
|
||||
@ -35,11 +35,11 @@ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket {
|
||||
@Override
|
||||
public void putTicket(String ticket) {
|
||||
redisValueOperations.getOperations().delete(ticket);
|
||||
this.ticketTimeStamp(ticket);
|
||||
this.getTicketTimestamp(ticket);
|
||||
}
|
||||
|
||||
@Override
|
||||
void removeTicket(String ticket) {
|
||||
public void removeTicket(String ticket) {
|
||||
redisValueOperations.getOperations().delete(ticket);
|
||||
}
|
||||
}
|
@ -3,8 +3,8 @@ package net.lab1024.smartadmin.service.module.system.login.controller;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.CaptchaVO;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartRequestUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaVO;
|
||||
import net.lab1024.smartadmin.service.module.system.login.service.LoginService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
@ -2,8 +2,9 @@ package net.lab1024.smartadmin.service.module.system.login.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartVerificationUtil;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaForm;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Pattern;
|
||||
@ -15,7 +16,7 @@ import javax.validation.constraints.Pattern;
|
||||
* @date 2017年12月19日上午11:49:46
|
||||
*/
|
||||
@Data
|
||||
public class LoginForm {
|
||||
public class LoginForm extends CaptchaForm {
|
||||
|
||||
@ApiModelProperty(example = "sa")
|
||||
@NotBlank(message = "登录名不能为空")
|
||||
@ -27,14 +28,6 @@ public class LoginForm {
|
||||
@Pattern(regexp = SmartVerificationUtil.PWD_REGEXP, message = "请输入6-15位密码(数字|大小写字母|小数点)")
|
||||
private String password;
|
||||
|
||||
@ApiModelProperty(value = "验证码")
|
||||
@Length(max = 6, message = "验证码最多6字符")
|
||||
@NotBlank(message = "验证码不能为空")
|
||||
private String captchaCode;
|
||||
|
||||
@ApiModelProperty(value = "验证码uuid")
|
||||
@Length(max = 50, message = "验证码id最多6字符")
|
||||
private String captchaUuid;
|
||||
|
||||
@ApiModelProperty(value = "登录终端")
|
||||
@Length(max = 30, message = "登录终端最多30字符")
|
||||
|
@ -1,14 +1,12 @@
|
||||
package net.lab1024.smartadmin.service.module.system.login.service;
|
||||
|
||||
import com.google.code.kaptcha.impl.DefaultKaptcha;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||
import net.lab1024.smartadmin.service.common.domain.CaptchaVO;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.constant.RedisKeyConst;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.CaptchaService;
|
||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaVO;
|
||||
import net.lab1024.smartadmin.service.module.system.department.dao.DepartmentDao;
|
||||
import net.lab1024.smartadmin.service.module.system.department.domain.entity.DepartmentEntity;
|
||||
import net.lab1024.smartadmin.service.module.system.employee.EmployeeDao;
|
||||
@ -21,17 +19,9 @@ import net.lab1024.smartadmin.service.module.system.menu.domain.bo.MenuLoginBO;
|
||||
import net.lab1024.smartadmin.service.module.system.menu.service.MenuEmployeeService;
|
||||
import net.lab1024.smartadmin.service.module.system.systemconfig.SystemConfigKeyEnum;
|
||||
import net.lab1024.smartadmin.service.module.system.systemconfig.SystemConfigService;
|
||||
import net.lab1024.smartadmin.service.module.support.redis.RedisService;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author zhuoda
|
||||
* @version 2.0
|
||||
@ -54,10 +44,7 @@ public class LoginService {
|
||||
private JwtService jwtService;
|
||||
|
||||
@Autowired
|
||||
private DefaultKaptcha defaultKaptcha;
|
||||
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
private CaptchaService captchaService;
|
||||
|
||||
@Autowired
|
||||
private MenuEmployeeService menuEmployeeService;
|
||||
@ -73,18 +60,11 @@ public class LoginService {
|
||||
* @return 返回用户登录信息
|
||||
*/
|
||||
public ResponseDTO<LoginResultVO> login(LoginForm loginForm) {
|
||||
|
||||
/**
|
||||
* 1、校验redis里的验证码
|
||||
* 2、校验成功后,删除redis
|
||||
*/
|
||||
String redisCaptchaKey = RedisKeyConst.Support.CAPTCHA + loginForm.getCaptchaUuid();
|
||||
String redisCaptchaValue = redisService.get(redisCaptchaKey);
|
||||
if (StringUtils.isBlank(redisCaptchaValue) || !StringUtils.equalsIgnoreCase(loginForm.getCaptchaCode(), redisCaptchaValue)) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误");
|
||||
// 校验 验证码
|
||||
ResponseDTO<String> checkCaptcha = captchaService.checkCaptcha(loginForm);
|
||||
if (!checkCaptcha.getOk()) {
|
||||
return ResponseDTO.error(checkCaptcha);
|
||||
}
|
||||
// 删除已使用的验证码
|
||||
redisService.delete(redisCaptchaKey);
|
||||
|
||||
/**
|
||||
* 验证账号和账号状态
|
||||
@ -136,6 +116,7 @@ public class LoginService {
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<String> logoutByToken(Long employeeId) {
|
||||
//TODO 卓大 清除缓存等
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
@ -145,32 +126,7 @@ public class LoginService {
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<CaptchaVO> getCaptcha() {
|
||||
String uuid = UUID.randomUUID().toString().replace("-", StringConst.EMPTY_STR);
|
||||
String captchaText = defaultKaptcha.createText();
|
||||
String base64Code;
|
||||
BufferedImage image = defaultKaptcha.createImage(captchaText);
|
||||
ByteArrayOutputStream outputStream = null;
|
||||
try {
|
||||
outputStream = new ByteArrayOutputStream();
|
||||
ImageIO.write(image, "jpg", outputStream);
|
||||
base64Code = Base64.encodeBase64String(outputStream.toByteArray());
|
||||
} catch (Exception e) {
|
||||
log.error("verificationCode exception .{}", e);
|
||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR);
|
||||
} finally {
|
||||
if (outputStream != null) {
|
||||
try {
|
||||
outputStream.close();
|
||||
} catch (Exception e) {
|
||||
log.error("verificationCode outputStream close exception .{}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
CaptchaVO captchaVO = new CaptchaVO();
|
||||
captchaVO.setUuid(uuid);
|
||||
captchaVO.setCode("data:image/png;base64," + base64Code);
|
||||
redisService.set(RedisKeyConst.Support.CAPTCHA + uuid, captchaText, 60);
|
||||
return ResponseDTO.ok(captchaVO);
|
||||
return ResponseDTO.ok(captchaService.generateCaptcha());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Component;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.entity.DataScopeRoleEntity;
|
||||
import net.lab1024.smartadmin.service.module.system.role.domain.entity.RoleDataScopeEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -20,21 +20,21 @@ import java.util.List;
|
||||
*/
|
||||
@Mapper
|
||||
@Component
|
||||
public interface RoleDataScopeDao extends BaseMapper<DataScopeRoleEntity> {
|
||||
public interface RoleDataScopeDao extends BaseMapper<RoleDataScopeEntity> {
|
||||
|
||||
/**
|
||||
* 获取某个角色的设置信息
|
||||
* @param roleId
|
||||
* @return
|
||||
*/
|
||||
List<DataScopeRoleEntity> listByRoleId(@Param("roleId") Long roleId);
|
||||
List<RoleDataScopeEntity> listByRoleId(@Param("roleId") Long roleId);
|
||||
|
||||
/**
|
||||
* 获取某批角色的所有数据范围配置信息
|
||||
* @param roleIdList
|
||||
* @return
|
||||
*/
|
||||
List<DataScopeRoleEntity> listByRoleIdList(@Param("roleIdList") List<Long> roleIdList);
|
||||
List<RoleDataScopeEntity> listByRoleIdList(@Param("roleIdList") List<Long> roleIdList);
|
||||
|
||||
/**
|
||||
* 删除某个角色的设置信息
|
||||
@ -48,5 +48,5 @@ public interface RoleDataScopeDao extends BaseMapper<DataScopeRoleEntity> {
|
||||
* 批量添加设置信息
|
||||
* @param list
|
||||
*/
|
||||
void batchInsert(@Param("list")List<DataScopeRoleEntity> list);
|
||||
void batchInsert(@Param("list")List<RoleDataScopeEntity> list);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.module.support.datascope.domain.entity;
|
||||
package net.lab1024.smartadmin.service.module.system.role.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
@ -19,7 +19,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@TableName("t_role_data_scope")
|
||||
public class DataScopeRoleEntity {
|
||||
public class RoleDataScopeEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
@ -7,7 +7,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.datascope.domain.entity.DataScopeRoleEntity;
|
||||
import net.lab1024.smartadmin.service.module.system.role.domain.entity.RoleDataScopeEntity;
|
||||
import net.lab1024.smartadmin.service.module.system.role.dao.RoleDataScopeDao;
|
||||
import net.lab1024.smartadmin.service.module.system.role.domain.form.RoleDataScopeUpdateForm;
|
||||
import net.lab1024.smartadmin.service.module.system.role.domain.vo.RoleDataScopeVO;
|
||||
@ -33,11 +33,11 @@ public class RoleDataScopeService {
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<List<RoleDataScopeVO>> getRoleDataScopeList(Long roleId) {
|
||||
List<DataScopeRoleEntity> dataScopeRoleEntityList = roleDataScopeDao.listByRoleId(roleId);
|
||||
if (CollectionUtils.isEmpty(dataScopeRoleEntityList)) {
|
||||
List<RoleDataScopeEntity> roleDataScopeEntityList = roleDataScopeDao.listByRoleId(roleId);
|
||||
if (CollectionUtils.isEmpty(roleDataScopeEntityList)) {
|
||||
return ResponseDTO.ok(Lists.newArrayList());
|
||||
}
|
||||
List<RoleDataScopeVO> roleDataScopeList = SmartBeanUtil.copyList(dataScopeRoleEntityList, RoleDataScopeVO.class);
|
||||
List<RoleDataScopeVO> roleDataScopeList = SmartBeanUtil.copyList(roleDataScopeEntityList, RoleDataScopeVO.class);
|
||||
return ResponseDTO.ok(roleDataScopeList);
|
||||
}
|
||||
|
||||
@ -53,10 +53,10 @@ public class RoleDataScopeService {
|
||||
if (CollectionUtils.isEmpty(batchSetList)) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "缺少配置信息");
|
||||
}
|
||||
List<DataScopeRoleEntity> dataScopeRoleEntityList = SmartBeanUtil.copyList(batchSetList, DataScopeRoleEntity.class);
|
||||
dataScopeRoleEntityList.forEach(e -> e.setRoleId(roleDataScopeUpdateForm.getRoleId()));
|
||||
List<RoleDataScopeEntity> roleDataScopeEntityList = SmartBeanUtil.copyList(batchSetList, RoleDataScopeEntity.class);
|
||||
roleDataScopeEntityList.forEach(e -> e.setRoleId(roleDataScopeUpdateForm.getRoleId()));
|
||||
roleDataScopeDao.deleteByRoleId(roleDataScopeUpdateForm.getRoleId());
|
||||
roleDataScopeDao.batchInsert(dataScopeRoleEntityList);
|
||||
roleDataScopeDao.batchInsert(roleDataScopeEntityList);
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="net.lab1024.smartadmin.service.module.support.datatracer.DataTracerDao">
|
||||
<mapper namespace="net.lab1024.smartadmin.service.module.support.datatracer.dao.DataTracerDao">
|
||||
|
||||
<select id="selectRecord"
|
||||
resultType="net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerVO">
|
||||
|
@ -27,11 +27,11 @@
|
||||
</where>
|
||||
</update>
|
||||
|
||||
<select id="query" resultType="net.lab1024.smartadmin.service.module.support.heartbeat.HeartBeatRecordEntity">
|
||||
<select id="query" resultType="net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordEntity">
|
||||
select * from t_heart_beat_record where project_path = #{projectPath} and server_ip = #{serverIp} and process_no =#{processNo}
|
||||
</select>
|
||||
|
||||
<select id="pageQuery" resultType="net.lab1024.smartadmin.service.module.support.heartbeat.HeartBeatRecordVO">
|
||||
<select id="pageQuery" resultType="net.lab1024.smartadmin.service.module.support.heartbeat.domain.HeartBeatRecordVO">
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="net.lab1024.smartadmin.service.module.system.role.dao.RoleDataScopeDao">
|
||||
|
||||
<resultMap id="DataScopeRoleEntity" type="net.lab1024.smartadmin.service.module.support.datascope.domain.entity.DataScopeRoleEntity"></resultMap>
|
||||
<resultMap id="DataScopeRoleEntity" type="net.lab1024.smartadmin.service.module.system.role.domain.entity.RoleDataScopeEntity"></resultMap>
|
||||
|
||||
<select id="listByRoleId" resultMap="DataScopeRoleEntity">
|
||||
select id,data_scope_type,view_type,role_id,update_time,create_time from t_role_data_scope where role_id = #{roleId}
|
||||
|
Loading…
Reference in New Issue
Block a user