将 dict 和 login log 迁移到共享库里
parent
5b723d02b2
commit
03ef1fc764
@ -0,0 +1,15 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.convert.logger;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysLoginLogCoreConvert {
|
||||||
|
|
||||||
|
SysLoginLogCoreConvert INSTANCE = Mappers.getMapper(SysLoginLogCoreConvert.class);
|
||||||
|
|
||||||
|
SysLoginLogDO convert(SysLoginLogCreateReqDTO bean);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
/**
|
||||||
|
* 提供 POJO 类的实体转换
|
||||||
|
*
|
||||||
|
* 目前使用 MapStruct 框架
|
||||||
|
*/
|
||||||
|
package cn.iocoder.yudao.coreservice.modules.system.convert;
|
||||||
@ -0,0 +1 @@
|
|||||||
|
<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao>
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.dict;
|
package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
@ -1,9 +1,9 @@
|
|||||||
package cn.iocoder.yudao.adminserver.modules.system.dal.dataobject.logger;
|
package cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginLogTypeEnum;
|
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum;
|
||||||
import cn.iocoder.yudao.adminserver.modules.system.enums.logger.SysLoginResultEnum;
|
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dict;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysDictDataCoreMapper extends BaseMapperX<SysDictDataDO> {
|
||||||
|
|
||||||
|
default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) {
|
||||||
|
return selectOne(new QueryWrapper<SysDictDataDO>().select("id")
|
||||||
|
.gt("update_time", maxUpdateTime).last("LIMIT 1")) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.dal.mysql.logger;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SysLoginLogCoreMapper extends BaseMapperX<SysLoginLogDO> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.enums.logger;
|
package cn.iocoder.yudao.coreservice.modules.system.enums.logger;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.enums.logger;
|
package cn.iocoder.yudao.coreservice.modules.system.enums.logger;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -0,0 +1 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.enums;
|
||||||
@ -1,13 +1,13 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.service.dict;
|
package cn.iocoder.yudao.coreservice.modules.system.service.dict;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService;
|
import cn.iocoder.yudao.framework.dict.core.service.DictDataFrameworkService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典数据 Service 接口
|
* 字典数据 Service 接口
|
||||||
*
|
*
|
||||||
* @author ruoyi
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
public interface SysDictDataService extends DictDataFrameworkService {
|
public interface SysDictDataCoreService extends DictDataFrameworkService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化字典数据的本地缓存
|
* 初始化字典数据的本地缓存
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.service.logger;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录日志 Core Service 接口
|
||||||
|
*/
|
||||||
|
public interface SysLoginLogCoreService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建登录日志
|
||||||
|
*
|
||||||
|
* @param reqDTO 日志信息
|
||||||
|
*/
|
||||||
|
void createLoginLog(SysLoginLogCreateReqDTO reqDTO);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.service.logger.impl;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.convert.logger.SysLoginLogCoreConvert;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.logger.SysLoginLogCoreMapper;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.logger.SysLoginLogCoreService;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登录日志 Service Core 实现
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class SysLoginLogCoreServiceImpl implements SysLoginLogCoreService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysLoginLogCoreMapper loginLogMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createLoginLog(SysLoginLogCreateReqDTO reqDTO) {
|
||||||
|
SysLoginLogDO loginLog = SysLoginLogCoreConvert.INSTANCE.convert(reqDTO);
|
||||||
|
// 插入
|
||||||
|
loginLogMapper.insert(loginLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1 +0,0 @@
|
|||||||
package cn.iocoder.yudao.coreservice.modules.system.service;
|
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.service.dict;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.coreservice.BaseDbUnitTest;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.dict.SysDictDataDO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.dict.SysDictDataCoreMapper;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.dict.impl.SysDictDataCoreServiceImpl;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
||||||
|
import com.google.common.collect.ImmutableTable;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import static cn.hutool.core.bean.BeanUtil.getFieldValue;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomCommonStatus;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link SysDictDataCoreServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Import(SysDictDataCoreServiceImpl.class)
|
||||||
|
public class SysDictDataCoreServiceTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysDictDataCoreServiceImpl dictDataCoreService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysDictDataCoreMapper dictDataMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试加载到新的字典数据的情况
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public void testInitLocalCache() {
|
||||||
|
// mock 数据
|
||||||
|
SysDictDataDO dictData01 = randomDictDataDO();
|
||||||
|
dictDataMapper.insert(dictData01);
|
||||||
|
SysDictDataDO dictData02 = randomDictDataDO();
|
||||||
|
dictDataMapper.insert(dictData02);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
dictDataCoreService.initLocalCache();
|
||||||
|
// 断言 labelDictDataCache 缓存
|
||||||
|
ImmutableTable<String, String, SysDictDataDO> labelDictDataCache =
|
||||||
|
(ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataCoreService, "labelDictDataCache");
|
||||||
|
assertEquals(2, labelDictDataCache.size());
|
||||||
|
assertPojoEquals(dictData01, labelDictDataCache.get(dictData01.getDictType(), dictData01.getLabel()));
|
||||||
|
assertPojoEquals(dictData02, labelDictDataCache.get(dictData02.getDictType(), dictData02.getLabel()));
|
||||||
|
// 断言 valueDictDataCache 缓存
|
||||||
|
ImmutableTable<String, String, SysDictDataDO> valueDictDataCache =
|
||||||
|
(ImmutableTable<String, String, SysDictDataDO>) getFieldValue(dictDataCoreService, "valueDictDataCache");
|
||||||
|
assertEquals(2, valueDictDataCache.size());
|
||||||
|
assertPojoEquals(dictData01, valueDictDataCache.get(dictData01.getDictType(), dictData01.getValue()));
|
||||||
|
assertPojoEquals(dictData02, valueDictDataCache.get(dictData02.getDictType(), dictData02.getValue()));
|
||||||
|
// 断言 maxUpdateTime 缓存
|
||||||
|
Date maxUpdateTime = (Date) getFieldValue(dictDataCoreService, "maxUpdateTime");
|
||||||
|
assertEquals(ObjectUtils.max(dictData01.getUpdateTime(), dictData02.getUpdateTime()), maxUpdateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ========== 随机对象 ==========
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
private static SysDictDataDO randomDictDataDO(Consumer<SysDictDataDO>... consumers) {
|
||||||
|
Consumer<SysDictDataDO> consumer = (o) -> {
|
||||||
|
o.setStatus(randomCommonStatus()); // 保证 status 的范围
|
||||||
|
};
|
||||||
|
return randomPojo(SysDictDataDO.class, ArrayUtils.append(consumer, consumers));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package cn.iocoder.yudao.coreservice.modules.system.service.logger;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.iocoder.yudao.coreservice.BaseDbUnitTest;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.logger.SysLoginLogDO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.dal.mysql.logger.SysLoginLogCoreMapper;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginLogTypeEnum;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.enums.logger.SysLoginResultEnum;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
||||||
|
import cn.iocoder.yudao.coreservice.modules.system.service.logger.impl.SysLoginLogCoreServiceImpl;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
|
||||||
|
import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||||
|
|
||||||
|
@Import(SysLoginLogCoreServiceImpl.class)
|
||||||
|
public class SysLoginLogServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysLoginLogCoreServiceImpl loginLogCoreService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysLoginLogCoreMapper loginLogCoreMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateLoginLog() {
|
||||||
|
SysLoginLogCreateReqDTO reqDTO = RandomUtils.randomPojo(SysLoginLogCreateReqDTO.class, vo -> {
|
||||||
|
// 指定随机的范围,避免超出范围入库失败
|
||||||
|
vo.setLogType(RandomUtil.randomEle(SysLoginLogTypeEnum.values()).getType());
|
||||||
|
vo.setResult(RandomUtil.randomEle(SysLoginResultEnum.values()).getResult());
|
||||||
|
vo.setTraceId(TracerUtils.getTraceId());
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
loginLogCoreService.createLoginLog(reqDTO);
|
||||||
|
// 断言,忽略基本字段
|
||||||
|
SysLoginLogDO sysLoginLogDO = loginLogCoreMapper.selectOne(null);
|
||||||
|
assertPojoEquals(reqDTO, sysLoginLogDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,15 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.convert.logger;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.dal.mysql.logger.SysLoginLogDO;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.factory.Mappers;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface SysLoginLogConvert {
|
|
||||||
|
|
||||||
SysLoginLogConvert INSTANCE = Mappers.getMapper(SysLoginLogConvert.class);
|
|
||||||
|
|
||||||
SysLoginLogDO convert(SysLoginLogCreateReqDTO bean);
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.dal.dataobject.dict;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 字典数据表
|
|
||||||
*
|
|
||||||
* @author ruoyi
|
|
||||||
*/
|
|
||||||
@TableName("sys_dict_data")
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class SysDictDataDO extends BaseDO {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 字典数据编号
|
|
||||||
*/
|
|
||||||
@TableId
|
|
||||||
private Long id;
|
|
||||||
/**
|
|
||||||
* 字典排序
|
|
||||||
*/
|
|
||||||
private Integer sort;
|
|
||||||
/**
|
|
||||||
* 字典标签
|
|
||||||
*/
|
|
||||||
private String label;
|
|
||||||
/**
|
|
||||||
* 字典值
|
|
||||||
*/
|
|
||||||
private String value;
|
|
||||||
/**
|
|
||||||
* 字典类型
|
|
||||||
*
|
|
||||||
* 冗余 {@link SysDictDataDO#getDictType()}
|
|
||||||
*/
|
|
||||||
private String dictType;
|
|
||||||
/**
|
|
||||||
* 状态
|
|
||||||
*
|
|
||||||
* 枚举 {@link CommonStatusEnum}
|
|
||||||
*/
|
|
||||||
private Integer status;
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.dal.dataobject.logger;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.dal.mysql.logger.SysLoginLogDO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface SysLoginLogMapper extends BaseMapperX<SysLoginLogDO> {
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.dal.dataobject;
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.dal.mysql.dict;
|
|
||||||
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.dict.SysDictDataDO;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface SysDictDataMapper extends BaseMapperX<SysDictDataDO> {
|
|
||||||
|
|
||||||
default SysDictDataDO selectByDictTypeAndValue(String dictType, String value) {
|
|
||||||
return selectOne(new QueryWrapper<SysDictDataDO>().eq("dict_type", dictType)
|
|
||||||
.eq("value", value));
|
|
||||||
}
|
|
||||||
|
|
||||||
default int selectCountByDictType(String dictType) {
|
|
||||||
return selectCount("dict_type", dictType);
|
|
||||||
}
|
|
||||||
|
|
||||||
default boolean selectExistsByUpdateTimeAfter(Date maxUpdateTime) {
|
|
||||||
return selectOne(new QueryWrapper<SysDictDataDO>().select("id")
|
|
||||||
.gt("update_time", maxUpdateTime).last("LIMIT 1")) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.enums;
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.service.logger;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录日志 Service 接口
|
|
||||||
*/
|
|
||||||
public interface SysLoginLogService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建登录日志
|
|
||||||
*
|
|
||||||
* @param reqDTO 日志信息
|
|
||||||
*/
|
|
||||||
void createLoginLog(SysLoginLogCreateReqDTO reqDTO);
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,57 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.service.logger.dto;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import javax.validation.constraints.Size;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录日志创建 Request DTO
|
|
||||||
*
|
|
||||||
* @author 芋道源码
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class SysLoginLogCreateReqDTO {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 日志类型
|
|
||||||
*/
|
|
||||||
@NotNull(message = "日志类型不能为空")
|
|
||||||
private Integer logType;
|
|
||||||
/**
|
|
||||||
* 链路追踪编号
|
|
||||||
*/
|
|
||||||
@NotEmpty(message = "链路追踪编号不能为空")
|
|
||||||
private String traceId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户编号
|
|
||||||
*/
|
|
||||||
private Long userId;
|
|
||||||
/**
|
|
||||||
* 用户账号
|
|
||||||
*/
|
|
||||||
@NotBlank(message = "用户账号不能为空")
|
|
||||||
@Size(max = 30, message = "用户账号长度不能超过30个字符")
|
|
||||||
private String username;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录结果
|
|
||||||
*/
|
|
||||||
@NotNull(message = "登录结果不能为空")
|
|
||||||
private Integer result;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户 IP
|
|
||||||
*/
|
|
||||||
@NotEmpty(message = "用户 IP 不能为空")
|
|
||||||
private String userIp;
|
|
||||||
/**
|
|
||||||
* 浏览器 UserAgent
|
|
||||||
*/
|
|
||||||
@NotEmpty(message = "浏览器 UserAgent 不能为空")
|
|
||||||
private String userAgent;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.service.logger.impl;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.convert.logger.SysLoginLogConvert;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.logger.SysLoginLogMapper;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.dal.mysql.logger.SysLoginLogDO;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.service.logger.SysLoginLogService;
|
|
||||||
import cn.iocoder.yudao.userserver.modules.system.service.logger.dto.SysLoginLogCreateReqDTO;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录日志 Service 实现
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class SysLoginLogServiceImpl implements SysLoginLogService {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SysLoginLogMapper loginLogMapper;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void createLoginLog(SysLoginLogCreateReqDTO reqDTO) {
|
|
||||||
SysLoginLogDO loginLog = SysLoginLogConvert.INSTANCE.convert(reqDTO);
|
|
||||||
loginLog.setUserType(UserTypeEnum.MEMBER.getValue());
|
|
||||||
// 插入
|
|
||||||
loginLogMapper.insert(loginLog);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1 +0,0 @@
|
|||||||
package cn.iocoder.yudao.userserver.modules.system.service;
|
|
||||||
Loading…
Reference in New Issue