!40 集成easyTrans来代替部分表join sql 使用typeHandler处理加解密

Merge pull request !40 from fhs_opensource/master
This commit is contained in:
小诺 2022-10-01 05:52:18 +00:00 committed by Gitee
commit e9199c5485
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
16 changed files with 440 additions and 392 deletions

View File

@ -132,7 +132,7 @@
}, },
{ {
title: '性别', title: '性别',
dataIndex: 'gender', dataIndex: 'genderName',
width: '50px' width: '50px'
}, },
{ {

View File

@ -17,7 +17,8 @@
<properties> <properties>
<lombok.versin>1.18.22</lombok.versin> <lombok.versin>1.18.22</lombok.versin>
<druid.version>1.2.8</druid.version> <druid.version>1.2.8</druid.version>
<mybatis.plus.version>3.5.1</mybatis.plus.version> <mybatis.plus.version>3.5.2</mybatis.plus.version>
<easy.trans.version>2.0.3</easy.trans.version>
<commons.pool2.version>2.11.1</commons.pool2.version> <commons.pool2.version>2.11.1</commons.pool2.version>
<hutool.version>5.7.22</hutool.version> <hutool.version>5.7.22</hutool.version>
<pinyin.version>2.5.1</pinyin.version> <pinyin.version>2.5.1</pinyin.version>
@ -79,6 +80,43 @@
<version>${mybatis.plus.version}</version> <version>${mybatis.plus.version}</version>
</dependency> </dependency>
<!-- easy-trans 排除自带MP版本使用最新版本 -->
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-spring-boot-starter</artifactId>
<version>${easy.trans.version}</version>
<exclusions>
<exclusion>
<artifactId>mybatis-plus-annotation</artifactId>
<groupId>com.baomidou</groupId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-schema</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fhs-opensource</groupId>
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
<version>${easy.trans.version}</version>
<exclusions>
<exclusion>
<artifactId>mybatis-plus-core</artifactId>
<groupId>com.baomidou</groupId>
</exclusion>
<exclusion>
<artifactId>mybatis-plus-extension</artifactId>
<groupId>com.baomidou</groupId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-schema</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- redis --> <!-- redis -->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>

View File

@ -0,0 +1,44 @@
package vip.xiaonuo.common.handler;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import vip.xiaonuo.common.util.CommonCryptogramUtil;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Sm4Cbc加解密
* @author wanglei
* @date 2022/9/30 15:24
**/
@MappedJdbcTypes(JdbcType.VARCHAR)
public class Sm4CbcTypeHandler <T> extends BaseTypeHandler<T> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, CommonCryptogramUtil.doSm4CbcEncrypt((String)parameter));
}
@Override
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
String columnValue = rs.getString(columnName);
//有一些可能是空字符
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
}
@Override
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String columnValue = rs.getString(columnIndex);
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
}
@Override
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String columnValue = cs.getString(columnIndex);
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
}
}

View File

@ -24,6 +24,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fhs.trans.service.impl.DictionaryTransService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import vip.xiaonuo.common.enums.CommonSortOrderEnum; import vip.xiaonuo.common.enums.CommonSortOrderEnum;
import vip.xiaonuo.common.exception.CommonException; import vip.xiaonuo.common.exception.CommonException;
@ -34,7 +36,11 @@ import vip.xiaonuo.dev.modular.dict.mapper.DevDictMapper;
import vip.xiaonuo.dev.modular.dict.param.*; import vip.xiaonuo.dev.modular.dict.param.*;
import vip.xiaonuo.dev.modular.dict.service.DevDictService; import vip.xiaonuo.dev.modular.dict.service.DevDictService;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -44,7 +50,12 @@ import java.util.stream.Collectors;
* @date 2022/4/22 10:41 * @date 2022/4/22 10:41
**/ **/
@Service @Service
public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> implements DevDictService { public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> implements DevDictService, InitializingBean {
private static final String ROOT_PARENT_ID = "0";
@Resource
private DictionaryTransService dictionaryTransService;
@Override @Override
public Page<DevDict> page(DevDictPageParam devDictPageParam) { public Page<DevDict> page(DevDictPageParam devDictPageParam) {
@ -103,6 +114,7 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
checkParam(devDictAddParam); checkParam(devDictAddParam);
DevDict devDict = BeanUtil.toBean(devDictAddParam, DevDict.class); DevDict devDict = BeanUtil.toBean(devDictAddParam, DevDict.class);
this.save(devDict); this.save(devDict);
refreshTransCache();
} }
private void checkParam(DevDictAddParam devDictAddParam) { private void checkParam(DevDictAddParam devDictAddParam) {
@ -129,6 +141,7 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
checkParam(devDictEditParam); checkParam(devDictEditParam);
BeanUtil.copyProperties(devDictEditParam, devDict); BeanUtil.copyProperties(devDictEditParam, devDict);
this.updateById(devDict); this.updateById(devDict);
refreshTransCache();
} }
private void checkParam(DevDictEditParam devDictEditParam) { private void checkParam(DevDictEditParam devDictEditParam) {
@ -178,4 +191,35 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
} }
return devDict; return devDict;
} }
@Override
public void afterPropertiesSet() throws Exception {
refreshTransCache();
}
private void refreshTransCache() {
// 异步不阻塞主线程不会 增加启动用时
CompletableFuture.supplyAsync(()->{
// 使用redis能解决共享问题但是性能没有直接取缓存的好
dictionaryTransService.makeUseRedis();
List<DevDict> devDicts = super.list(new LambdaQueryWrapper<DevDict>());
// 非root级别的字典根据ParentId分组
Map<String,List<DevDict>> devDictGroupByPIDMap = devDicts.stream().filter(dict -> {
return !ROOT_PARENT_ID.equals(dict.getParentId());
}).collect(Collectors.groupingBy(DevDict::getParentId));
Map<String,String> parentDictIdValMap = devDicts.stream().filter(dict -> {
return ROOT_PARENT_ID.equals(dict.getParentId());
}).collect(Collectors.toMap(DevDict::getId,DevDict::getDictValue));
for (String parentId : parentDictIdValMap.keySet()) {
if(devDictGroupByPIDMap.containsKey(parentId)){
dictionaryTransService.refreshCache(parentDictIdValMap.get(parentId),devDictGroupByPIDMap.get(parentId).stream()
.collect(Collectors.toMap(DevDict::getDictValue,DevDict::getDictLabel)));
}
}
return null;
});
}
} }

View File

@ -15,6 +15,7 @@ package vip.xiaonuo.sys.modular.org.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fhs.core.trans.vo.TransPojo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -29,7 +30,7 @@ import vip.xiaonuo.common.pojo.CommonEntity;
@Getter @Getter
@Setter @Setter
@TableName("SYS_ORG") @TableName("SYS_ORG")
public class SysOrg extends CommonEntity { public class SysOrg extends CommonEntity implements TransPojo {
/** id */ /** id */
@ApiModelProperty(value = "id", position = 1) @ApiModelProperty(value = "id", position = 1)

View File

@ -15,6 +15,7 @@ package vip.xiaonuo.sys.modular.position.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fhs.core.trans.vo.TransPojo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -29,7 +30,7 @@ import vip.xiaonuo.common.pojo.CommonEntity;
@Getter @Getter
@Setter @Setter
@TableName("SYS_POSITION") @TableName("SYS_POSITION")
public class SysPosition extends CommonEntity { public class SysPosition extends CommonEntity implements TransPojo {
/** id */ /** id */
@ApiModelProperty(value = "id", position = 1) @ApiModelProperty(value = "id", position = 1)

View File

@ -19,6 +19,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -59,6 +60,7 @@ public class SysUserController {
@Resource @Resource
private SysUserService sysUserService; private SysUserService sysUserService;
/** /**
* 获取用户分页 * 获取用户分页
* *
@ -67,9 +69,8 @@ public class SysUserController {
*/ */
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@ApiOperation("获取用户分页") @ApiOperation("获取用户分页")
@CommonWrapper(SysUserResultWrapperImpl.class)
@GetMapping("/sys/user/page") @GetMapping("/sys/user/page")
public CommonResult<Page<SysUserResult>> page(SysUserPageParam sysUserPageParam) { public CommonResult<Page<SysUser>> page(SysUserPageParam sysUserPageParam) {
return CommonResult.data(sysUserService.page(sysUserPageParam)); return CommonResult.data(sysUserService.page(sysUserPageParam));
} }

View File

@ -14,11 +14,18 @@ package vip.xiaonuo.sys.modular.user.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fhs.core.trans.anno.Trans;
import com.fhs.core.trans.constant.TransType;
import com.fhs.core.trans.vo.TransPojo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import vip.xiaonuo.common.handler.Sm4CbcTypeHandler;
import vip.xiaonuo.common.pojo.CommonEntity; import vip.xiaonuo.common.pojo.CommonEntity;
import vip.xiaonuo.sys.modular.org.entity.SysOrg;
import vip.xiaonuo.sys.modular.position.entity.SysPosition;
import java.util.Date; import java.util.Date;
@ -30,10 +37,11 @@ import java.util.Date;
**/ **/
@Getter @Getter
@Setter @Setter
@TableName("SYS_USER") @TableName(value = "SYS_USER",autoResultMap = true)
public class SysUser extends CommonEntity { public class SysUser extends CommonEntity implements TransPojo {
/** id */ /** id */
@TableId
@ApiModelProperty(value = "id", position = 1) @ApiModelProperty(value = "id", position = 1)
private String id; private String id;
@ -67,6 +75,7 @@ public class SysUser extends CommonEntity {
/** 性别 */ /** 性别 */
@ApiModelProperty(value = "性别", position = 8) @ApiModelProperty(value = "性别", position = 8)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
@Trans(type= TransType.DICTIONARY,key = "GENDER")
private String gender; private String gender;
/** 年龄 */ /** 年龄 */
@ -106,7 +115,7 @@ public class SysUser extends CommonEntity {
/** 证件号码 */ /** 证件号码 */
@ApiModelProperty(value = "证件号码", position = 16) @ApiModelProperty(value = "证件号码", position = 16)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED,typeHandler = Sm4CbcTypeHandler.class)
private String idCardNumber; private String idCardNumber;
/** 文化程度 */ /** 文化程度 */
@ -141,7 +150,7 @@ public class SysUser extends CommonEntity {
/** 手机 */ /** 手机 */
@ApiModelProperty(value = "手机", position = 23) @ApiModelProperty(value = "手机", position = 23)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED,typeHandler = Sm4CbcTypeHandler.class)
private String phone; private String phone;
/** 邮箱 */ /** 邮箱 */
@ -166,7 +175,7 @@ public class SysUser extends CommonEntity {
/** 紧急联系人电话 */ /** 紧急联系人电话 */
@ApiModelProperty(value = "紧急联系人电话", position = 28) @ApiModelProperty(value = "紧急联系人电话", position = 28)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED,typeHandler = Sm4CbcTypeHandler.class)
private String emergencyPhone; private String emergencyPhone;
/** 紧急联系人地址 */ /** 紧急联系人地址 */
@ -187,11 +196,14 @@ public class SysUser extends CommonEntity {
/** 组织id */ /** 组织id */
@ApiModelProperty(value = "组织id", position = 32) @ApiModelProperty(value = "组织id", position = 32)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
@Trans(type=TransType.SIMPLE,target = SysOrg.class,fields = "name",alias = "org",ref = "orgName")
private String orgId; private String orgId;
/** 职位id */ /** 职位id */
@ApiModelProperty(value = "职位id", position = 33) @ApiModelProperty(value = "职位id", position = 33)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
@Trans(type=TransType.SIMPLE,target = SysPosition.class,fields = "name",alias = "position",ref = "positionName")
private String positionId; private String positionId;
/** 职级 */ /** 职级 */
@ -202,6 +214,7 @@ public class SysUser extends CommonEntity {
/** 主管id */ /** 主管id */
@ApiModelProperty(value = "主管id", position = 35) @ApiModelProperty(value = "主管id", position = 35)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
@Trans(type=TransType.SIMPLE,target = SysUser.class,fields = "name",alias = "director",ref = "directorName")
private String directorId; private String directorId;
/** 兼任信息 */ /** 兼任信息 */
@ -253,4 +266,19 @@ public class SysUser extends CommonEntity {
@ApiModelProperty(value = "扩展信息", position = 47) @ApiModelProperty(value = "扩展信息", position = 47)
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
private String extJson; private String extJson;
@ApiModelProperty(value = "组织名称", position = 48)
@TableField(exist = false)
private String orgName;
@ApiModelProperty(value = "组织名称", position = 49)
@TableField(exist = false)
private String positionName;
@ApiModelProperty(value = "主管名称", position = 50)
@TableField(exist = false)
private String directorName;
} }

View File

@ -30,19 +30,5 @@ import java.util.List;
**/ **/
public interface SysUserMapper extends BaseMapper<SysUser> { public interface SysUserMapper extends BaseMapper<SysUser> {
/**
* 获取用户分页列表
*
* @author xuyuxiang
* @date 2022/7/8 13:27
**/
Page<SysUserResult> page(@Param("page") Page<SysUserResult> page, @Param("ew") QueryWrapper<SysUserResult> queryWrapper);
/**
* 获取要导出的用户列表
*
* @author xuyuxiang
* @date 2022/7/8 13:27
**/
List<SysUserExportResult> exportList(@Param("ew") QueryWrapper<SysUserExportResult> queryWrapper);
} }

View File

@ -2,31 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="vip.xiaonuo.sys.modular.user.mapper.SysUserMapper"> <mapper namespace="vip.xiaonuo.sys.modular.user.mapper.SysUserMapper">
<!-- 获取用户分页 -->
<select id="page" resultType="vip.xiaonuo.sys.modular.user.result.SysUserResult">
SELECT
SYS_USER.*,
SYS_ORG.NAME AS ORG_NAME,
SYS_POSITION.NAME AS POSITION_NAME,
SYS_DIRECTOR.NAME AS DIRECTOR_NAME
FROM SYS_USER
LEFT JOIN SYS_USER SYS_DIRECTOR ON SYS_USER.ID = SYS_DIRECTOR.ID
LEFT JOIN SYS_ORG ON SYS_USER.ORG_ID = SYS_ORG.ID
LEFT JOIN SYS_POSITION ON SYS_USER.POSITION_ID = SYS_POSITION.ID
${ew.customSqlSegment}
</select>
<!-- 获取要导出的用户列表 -->
<select id="exportList" resultType="vip.xiaonuo.sys.modular.user.result.SysUserExportResult">
SELECT
SYS_USER.*,
SYS_ORG.NAME AS ORG_NAME,
SYS_POSITION.NAME AS POSITION_NAME,
SYS_DIRECTOR.NAME AS DIRECTOR_NAME
FROM SYS_USER
LEFT JOIN SYS_USER SYS_DIRECTOR ON SYS_USER.ID = SYS_DIRECTOR.ID
LEFT JOIN SYS_ORG ON SYS_USER.ORG_ID = SYS_ORG.ID
LEFT JOIN SYS_POSITION ON SYS_USER.POSITION_ID = SYS_POSITION.ID
${ew.customSqlSegment}
</select>
</mapper> </mapper>

View File

@ -44,7 +44,7 @@ public class SysUserExportResult {
private String name; private String name;
/** 昵称 */ /** 昵称 */
@Excel(name = "姓名") @Excel(name = "昵称")
private String nickname; private String nickname;
/** 性别 */ /** 性别 */

View File

@ -74,7 +74,7 @@ public interface SysUserService extends IService<SysUser> {
* @author xuyuxiang * @author xuyuxiang
* @date 2022/4/24 20:08 * @date 2022/4/24 20:08
*/ */
Page<SysUserResult> page(SysUserPageParam sysUserPageParam); Page<SysUser> page(SysUserPageParam sysUserPageParam);
/** /**
* 添加用户 * 添加用户

View File

@ -43,6 +43,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fhs.trans.service.impl.TransService;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -113,6 +114,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Resource @Resource
private DevSmsApi devSmsApi; private DevSmsApi devSmsApi;
@Resource
private TransService transService;
@Resource @Resource
private DevEmailApi devEmailApi; private DevEmailApi devEmailApi;
@ -144,23 +148,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public SysLoginUser getUserById(String id) { public SysLoginUser getUserById(String id) {
SysUser sysUser = this.getById(id); SysUser sysUser = this.getById(id);
if (ObjectUtil.isNotEmpty(sysUser)) { if (ObjectUtil.isNotEmpty(sysUser)) {
SysLoginUser sysLoginUser = BeanUtil.copyProperties(sysUser, SysLoginUser.class); transService.transOne(sysUser);
if(ObjectUtil.isNotEmpty(sysLoginUser.getOrgId())) { return BeanUtil.copyProperties(sysUser, SysLoginUser.class);
sysLoginUser.setOrgName(sysOrgService.queryEntity(sysLoginUser.getOrgId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPositionId())) {
sysLoginUser.setPositionName(sysPositionService.queryEntity(sysLoginUser.getPositionId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPhone())) {
sysLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getPhone()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getIdCardNumber())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getIdCardNumber()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getEmergencyPhone())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getEmergencyPhone()));
}
return sysLoginUser;
} }
return null; return null;
} }
@ -169,23 +158,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public SysLoginUser getUserByAccount(String account) { public SysLoginUser getUserByAccount(String account) {
SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getAccount, account)); SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getAccount, account));
if (ObjectUtil.isNotEmpty(sysUser)) { if (ObjectUtil.isNotEmpty(sysUser)) {
SysLoginUser sysLoginUser = BeanUtil.copyProperties(sysUser, SysLoginUser.class); transService.transOne(sysUser);
if(ObjectUtil.isNotEmpty(sysLoginUser.getOrgId())) { return BeanUtil.copyProperties(sysUser, SysLoginUser.class);
sysLoginUser.setOrgName(sysOrgService.queryEntity(sysLoginUser.getOrgId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPositionId())) {
sysLoginUser.setPositionName(sysPositionService.queryEntity(sysLoginUser.getPositionId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPhone())) {
sysLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getPhone()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getIdCardNumber())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getIdCardNumber()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getEmergencyPhone())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getEmergencyPhone()));
}
return sysLoginUser;
} }
return null; return null;
} }
@ -194,23 +168,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public SysLoginUser getUserByPhone(String phone) { public SysLoginUser getUserByPhone(String phone) {
SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(phone))); SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(phone)));
if (ObjectUtil.isNotEmpty(sysUser)) { if (ObjectUtil.isNotEmpty(sysUser)) {
SysLoginUser sysLoginUser = BeanUtil.copyProperties(sysUser, SysLoginUser.class); transService.transOne(sysUser);
if(ObjectUtil.isNotEmpty(sysLoginUser.getOrgId())) { return BeanUtil.copyProperties(sysUser, SysLoginUser.class);
sysLoginUser.setOrgName(sysOrgService.queryEntity(sysLoginUser.getOrgId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPositionId())) {
sysLoginUser.setPositionName(sysPositionService.queryEntity(sysLoginUser.getPositionId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPhone())) {
sysLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getPhone()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getIdCardNumber())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getIdCardNumber()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getEmergencyPhone())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getEmergencyPhone()));
}
return sysLoginUser;
} }
return null; return null;
} }
@ -219,66 +178,39 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public SysLoginUser getUserByEmail(String email) { public SysLoginUser getUserByEmail(String email) {
SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmail, email)); SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmail, email));
if (ObjectUtil.isNotEmpty(sysUser)) { if (ObjectUtil.isNotEmpty(sysUser)) {
SysLoginUser sysLoginUser = BeanUtil.copyProperties(sysUser, SysLoginUser.class); transService.transOne(sysUser);
if(ObjectUtil.isNotEmpty(sysLoginUser.getOrgId())) { return BeanUtil.copyProperties(sysUser, SysLoginUser.class);
sysLoginUser.setOrgName(sysOrgService.queryEntity(sysLoginUser.getOrgId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPositionId())) {
sysLoginUser.setPositionName(sysPositionService.queryEntity(sysLoginUser.getPositionId()).getName());
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getPhone())) {
sysLoginUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getPhone()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getIdCardNumber())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getIdCardNumber()));
}
if(ObjectUtil.isNotEmpty(sysLoginUser.getEmergencyPhone())) {
sysLoginUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(sysLoginUser.getEmergencyPhone()));
}
return sysLoginUser;
} }
return null; return null;
} }
@Override @Override
public Page<SysUserResult> page(SysUserPageParam sysUserPageParam) { public Page<SysUser> page(SysUserPageParam sysUserPageParam) {
QueryWrapper<SysUserResult> queryWrapper = new QueryWrapper<>(); QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotEmpty(sysUserPageParam.getSearchKey())) { if (ObjectUtil.isNotEmpty(sysUserPageParam.getSearchKey())) {
queryWrapper.and(q -> q.like("SYS_USER.ACCOUNT", sysUserPageParam.getSearchKey()) queryWrapper.and(q -> q.like("ACCOUNT", sysUserPageParam.getSearchKey())
.or().like("SYS_USER.NAME", sysUserPageParam.getSearchKey())); .or().like("NAME", sysUserPageParam.getSearchKey()));
} }
if (ObjectUtil.isNotEmpty(sysUserPageParam.getOrgId())) { if (ObjectUtil.isNotEmpty(sysUserPageParam.getOrgId())) {
queryWrapper.eq("SYS_USER.ORG_ID", sysUserPageParam.getOrgId()); queryWrapper.eq("ORG_ID", sysUserPageParam.getOrgId());
} }
if (ObjectUtil.isNotEmpty(sysUserPageParam.getUserStatus())) { if (ObjectUtil.isNotEmpty(sysUserPageParam.getUserStatus())) {
queryWrapper.eq("SYS_USER.USER_STATUS", sysUserPageParam.getUserStatus()); queryWrapper.eq("USER_STATUS", sysUserPageParam.getUserStatus());
} }
if (ObjectUtil.isAllNotEmpty(sysUserPageParam.getSortField(), sysUserPageParam.getSortOrder())) { if (ObjectUtil.isAllNotEmpty(sysUserPageParam.getSortField(), sysUserPageParam.getSortOrder())) {
CommonSortOrderEnum.validate(sysUserPageParam.getSortOrder()); CommonSortOrderEnum.validate(sysUserPageParam.getSortOrder());
queryWrapper.orderBy(true, sysUserPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), queryWrapper.orderBy(true, sysUserPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
StrUtil.toUnderlineCase("SYS_USER." + sysUserPageParam.getSortField())); StrUtil.toUnderlineCase(sysUserPageParam.getSortField()));
} else { } else {
queryWrapper.orderByAsc("SYS_USER.SORT_CODE"); queryWrapper.orderByAsc("SORT_CODE");
} }
return this.baseMapper.page(CommonPageRequest.defaultPage(), queryWrapper); return this.baseMapper.selectPage(CommonPageRequest.defaultPage(), queryWrapper);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void add(SysUserAddParam sysUserAddParam) { public void add(SysUserAddParam sysUserAddParam) {
checkParam(sysUserAddParam); checkParam(sysUserAddParam);
// 设置手机号
if(ObjectUtil.isNotEmpty(sysUserAddParam.getPhone())) {
sysUserAddParam.setPhone(CommonCryptogramUtil.doSm4CbcEncrypt(sysUserAddParam.getPhone()));
}
// 设置证件号
if(ObjectUtil.isNotEmpty(sysUserAddParam.getIdCardNumber())) {
sysUserAddParam.setIdCardNumber(CommonCryptogramUtil.doSm4CbcEncrypt(sysUserAddParam.getIdCardNumber()));
}
// 设置紧急联系人电话
if(ObjectUtil.isNotEmpty(sysUserAddParam.getEmergencyPhone())) {
sysUserAddParam.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcEncrypt(sysUserAddParam.getEmergencyPhone()));
}
SysUser sysUser = BeanUtil.toBean(sysUserAddParam, SysUser.class); SysUser sysUser = BeanUtil.toBean(sysUserAddParam, SysUser.class);
if (ObjectUtil.isEmpty(sysUser.getAvatar())) { if (ObjectUtil.isEmpty(sysUser.getAvatar())) {
// 设置默认头像 // 设置默认头像
@ -321,18 +253,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public void edit(SysUserEditParam sysUserEditParam) { public void edit(SysUserEditParam sysUserEditParam) {
SysUser sysUser = this.queryEntity(sysUserEditParam.getId()); SysUser sysUser = this.queryEntity(sysUserEditParam.getId());
checkParam(sysUserEditParam); checkParam(sysUserEditParam);
// 设置手机号
if(ObjectUtil.isNotEmpty(sysUserEditParam.getPhone())) {
sysUserEditParam.setPhone(CommonCryptogramUtil.doSm4CbcEncrypt(sysUserEditParam.getPhone()));
}
// 设置证件号
if(ObjectUtil.isNotEmpty(sysUserEditParam.getIdCardNumber())) {
sysUserEditParam.setIdCardNumber(CommonCryptogramUtil.doSm4CbcEncrypt(sysUserEditParam.getIdCardNumber()));
}
// 设置紧急联系人电话
if(ObjectUtil.isNotEmpty(sysUserEditParam.getEmergencyPhone())) {
sysUserEditParam.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcEncrypt(sysUserEditParam.getEmergencyPhone()));
}
BeanUtil.copyProperties(sysUserEditParam, sysUser); BeanUtil.copyProperties(sysUserEditParam, sysUser);
this.updateById(sysUser); this.updateById(sysUser);
} }
@ -922,17 +842,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
public void exportUser(SysUserExportParam sysUserExportParam, HttpServletResponse response) throws IOException { public void exportUser(SysUserExportParam sysUserExportParam, HttpServletResponse response) throws IOException {
File tempFile = null; File tempFile = null;
try { try {
QueryWrapper<SysUserExportResult> queryWrapper = new QueryWrapper<>(); QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotEmpty(sysUserExportParam.getSearchKey())) { if (ObjectUtil.isNotEmpty(sysUserExportParam.getSearchKey())) {
queryWrapper.and(q -> q.like("SYS_USER.ACCOUNT", sysUserExportParam.getSearchKey()) queryWrapper.and(q -> q.like("ACCOUNT", sysUserExportParam.getSearchKey())
.or().like("SYS_USER.NAME", sysUserExportParam.getSearchKey()) .or().like("NAME", sysUserExportParam.getSearchKey())
.or().like("SYS_USER.PHONE", sysUserExportParam.getSearchKey())); .or().like("PHONE", sysUserExportParam.getSearchKey()));
} }
if (ObjectUtil.isNotEmpty(sysUserExportParam.getUserStatus())) { if (ObjectUtil.isNotEmpty(sysUserExportParam.getUserStatus())) {
queryWrapper.eq("SYS_USER.STATUS", sysUserExportParam.getUserStatus()); queryWrapper.eq("STATUS", sysUserExportParam.getUserStatus());
} }
String fileName = "SNOWY2.0系统B端用户信息清单"; String fileName = "SNOWY2.0系统B端用户信息清单";
List<SysUserExportResult> sysUserExportResultList = this.baseMapper.exportList(queryWrapper).stream().peek(sysUserExportResult -> { List<SysUserExportResult> sysUserExportResultList = this.baseMapper.selectList(queryWrapper).stream().map(sysUser -> {
return BeanUtil.copyProperties(sysUser, SysUserExportResult.class);
}).peek(sysUserExportResult -> {
if (ObjectUtil.isNotEmpty(sysUserExportResult.getAvatar())) { if (ObjectUtil.isNotEmpty(sysUserExportResult.getAvatar())) {
sysUserExportResult.setAvatarByte(ImgUtil.toBytes(ImgUtil.toImage(StrUtil sysUserExportResult.setAvatarByte(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
.split(sysUserExportResult.getAvatar(), StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG)); .split(sysUserExportResult.getAvatar(), StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -95,7 +95,7 @@ mybatis-plus.global-config.db-config.logic-delete-field=DELETE_FLAG
mybatis-plus.global-config.db-config.logic-delete-value=DELETED mybatis-plus.global-config.db-config.logic-delete-value=DELETED
mybatis-plus.global-config.db-config.logic-not-delete-value=NOT_DELETE mybatis-plus.global-config.db-config.logic-not-delete-value=NOT_DELETE
mybatis-plus.mapper-locations=classpath*:vip/xiaonuo/**/mapping/*.xml mybatis-plus.mapper-locations=classpath*:vip/xiaonuo/**/mapping/*.xml
mybatis-plus.type-handlers-package=vip.xiaonuo.common.handler
######################################### #########################################
# sa-token configuration # sa-token configuration
######################################### #########################################
@ -119,6 +119,13 @@ sa-token.alone-redis.lettuce.pool.max-wait=${spring.redis.lettuce.pool.max-wait}
sa-token.alone-redis.lettuce.pool.max-idle=${spring.redis.lettuce.pool.max-idle} sa-token.alone-redis.lettuce.pool.max-idle=${spring.redis.lettuce.pool.max-idle}
sa-token.alone-redis.lettuce.pool.min-idle=${spring.redis.lettuce.pool.min-idle} sa-token.alone-redis.lettuce.pool.min-idle=${spring.redis.lettuce.pool.min-idle}
#########################################
# easy-trans configuration
#########################################
easy-trans.is-enable-redis=true
easy-trans.is-enable-global=true
easy-trans.is-enable-tile=true
######################################### #########################################
# knife4j configuration # knife4j configuration
######################################### #########################################