mirror of https://gitee.com/xiaonuobase/snowy
commit
1f94b423cc
24
README.md
24
README.md
|
@ -88,28 +88,20 @@ npm run dev
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XHr1wiA&path=%7BshareItemLink%3A8XHr1wiA%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=a938SjhgZ5ayRmNxjyvqNeG4piLbdyB39rdXaFyKsqCVrkmwLRyBcBc&name=/%E7%99%BB%E5%BD%95%E9%A1%B5%E9%9D%A2.png"/></td>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XHyk66w&path=%7BshareItemLink%3A8XHyk66w%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=b5e9VS9CKAeez01eHUfUdGyzm9eRSvtPrw9AF90mt_vPImvieiU9BR0&name=/%E7%B3%BB%E7%BB%9F%E9%A6%96%E9%A1%B5.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XHy7cOw&path=%7BshareItemLink%3A8XHy7cOw%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=d173c7qJ7dgrK3vN1ovs55qtuDGW6bFOdiYglAsDNCJbI1LDifNuu_E&name=/%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86.png"/></td>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XHzPDJg&path=%7BshareItemLink%3A8XHzPDJg%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=0086BVQAINW_1mFSSz3Of4gsyreG3fX-6BZqiqLb0kWSXA-6ff6dD4Y&name=/%E6%9C%8D%E5%8A%A1%E7%9B%91%E6%8E%A7.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XHzm0ng&path=%7BshareItemLink%3A8XHzm0ng%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=1b72cVKHNtArl1A7qTeaAMicO1Pcv99U9PrPn4ESfwgk1VqCRmEIVqc&name=/%E6%8E%88%E6%9D%83%E6%9D%83%E9%99%90.png"/></td>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XHz1PZg&path=%7BshareItemLink%3A8XHz1PZg%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=1cc4CdKq2y5-hjuCfBLe5QiydnJMJfHWiM25mbobRsDBD7LK2Czkl3g&name=/%E6%93%8D%E4%BD%9C%E6%97%A5%E5%BF%97.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XH0H8nw&path=%7BshareItemLink%3A8XH0H8nw%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=f923EqvOkfbhNtN2pXA0Z55I5fRX4-_XWTmiGA8QBM_JJyIELv7ugLM&name=/EC%E6%95%A3%E7%82%B9%E5%9B%BE.png"/></td>
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XH0c-yw&path=%7BshareItemLink%3A8XH0c-yw%7D%2F"/></td>
|
<td><img src="https://pan.xiaonuo.vip/?explorer/share/file&hash=e43fxc4TEVvJCZNuBNcueFAh5Mi9CDwnc25v25krItJ0iKj1wKBnqfY&name=/%E8%8F%9C%E5%8D%95%E7%AE%A1%E7%90%86.png"/></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XH0sCdg&path=%7BshareItemLink%3A8XH0sCdg%7D%2F"/></td>
|
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XH05YLw&path=%7BshareItemLink%3A8XH05YLw%7D%2F"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XH1QLzQ&path=%7BshareItemLink%3A8XH1QLzQ%7D%2F"/></td>
|
|
||||||
<td><img src="https://pan.xiaonuo.vip/?explorer/share/fileOut&shareID=8XH8Uyhg&path=%7BshareItemLink%3A8XH8Uyhg%7D%2F"/></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
4
pom.xml
4
pom.xml
|
@ -67,6 +67,10 @@
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>src/main/resources</directory>
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>false</filtering>
|
||||||
|
<includes>
|
||||||
|
<include>*.xdb</include>
|
||||||
|
</includes>
|
||||||
</resource>
|
</resource>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>src/main/java</directory>
|
<directory>src/main/java</directory>
|
||||||
|
|
|
@ -13,16 +13,19 @@ import java.sql.SQLException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sm4Cbc加解密
|
* Sm4Cbc加解密
|
||||||
|
*
|
||||||
* @author wanglei
|
* @author wanglei
|
||||||
* @date 2022/9/30 15:24
|
* @date 2022/9/30 15:24
|
||||||
**/
|
**/
|
||||||
@MappedJdbcTypes(JdbcType.VARCHAR)
|
@MappedJdbcTypes(JdbcType.VARCHAR)
|
||||||
public class Sm4CbcTypeHandler <T> extends BaseTypeHandler<T> {
|
public class CommonSm4CbcTypeHandler<T> extends BaseTypeHandler<T> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
|
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
|
||||||
ps.setString(i, CommonCryptogramUtil.doSm4CbcEncrypt((String)parameter));
|
ps.setString(i, CommonCryptogramUtil.doSm4CbcEncrypt((String)parameter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ALL")
|
||||||
@Override
|
@Override
|
||||||
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
||||||
String columnValue = rs.getString(columnName);
|
String columnValue = rs.getString(columnName);
|
||||||
|
@ -30,12 +33,14 @@ public class Sm4CbcTypeHandler <T> extends BaseTypeHandler<T> {
|
||||||
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
|
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ALL")
|
||||||
@Override
|
@Override
|
||||||
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
||||||
String columnValue = rs.getString(columnIndex);
|
String columnValue = rs.getString(columnIndex);
|
||||||
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
|
return StringUtils.isBlank(columnValue) ? (T)columnValue : (T)CommonCryptogramUtil.doSm4CbcDecrypt(columnValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("ALL")
|
||||||
@Override
|
@Override
|
||||||
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
||||||
String columnValue = cs.getString(columnIndex);
|
String columnValue = cs.getString(columnIndex);
|
|
@ -15,6 +15,7 @@ package vip.xiaonuo.biz.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 BizOrg extends CommonEntity {
|
public class BizOrg extends CommonEntity implements TransPojo {
|
||||||
|
|
||||||
/** id */
|
/** id */
|
||||||
@ApiModelProperty(value = "id", position = 1)
|
@ApiModelProperty(value = "id", position = 1)
|
||||||
|
|
|
@ -15,6 +15,7 @@ package vip.xiaonuo.biz.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 BizPosition extends CommonEntity {
|
public class BizPosition extends CommonEntity implements TransPojo {
|
||||||
|
|
||||||
/** id */
|
/** id */
|
||||||
@ApiModelProperty(value = "id", position = 1)
|
@ApiModelProperty(value = "id", position = 1)
|
||||||
|
|
|
@ -28,13 +28,9 @@ import vip.xiaonuo.biz.modular.org.entity.BizOrg;
|
||||||
import vip.xiaonuo.biz.modular.position.entity.BizPosition;
|
import vip.xiaonuo.biz.modular.position.entity.BizPosition;
|
||||||
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
||||||
import vip.xiaonuo.biz.modular.user.param.*;
|
import vip.xiaonuo.biz.modular.user.param.*;
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserResult;
|
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
|
import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
|
||||||
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
||||||
import vip.xiaonuo.biz.modular.user.wrapper.BizUserResultWrapperImpl;
|
|
||||||
import vip.xiaonuo.biz.modular.user.wrapper.BizUserWrapperImpl;
|
|
||||||
import vip.xiaonuo.common.annotation.CommonLog;
|
import vip.xiaonuo.common.annotation.CommonLog;
|
||||||
import vip.xiaonuo.common.annotation.CommonWrapper;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonResult;
|
import vip.xiaonuo.common.pojo.CommonResult;
|
||||||
import vip.xiaonuo.common.pojo.CommonValidList;
|
import vip.xiaonuo.common.pojo.CommonValidList;
|
||||||
|
|
||||||
|
@ -69,9 +65,8 @@ public class BizUserController {
|
||||||
@ApiOperationSupport(order = 1)
|
@ApiOperationSupport(order = 1)
|
||||||
@ApiOperation("获取人员分页")
|
@ApiOperation("获取人员分页")
|
||||||
@SaCheckPermission("/biz/user/page")
|
@SaCheckPermission("/biz/user/page")
|
||||||
@CommonWrapper(BizUserResultWrapperImpl.class)
|
|
||||||
@GetMapping("/biz/user/page")
|
@GetMapping("/biz/user/page")
|
||||||
public CommonResult<Page<BizUserResult>> page(BizUserPageParam bizUserPageParam) {
|
public CommonResult<Page<BizUser>> page(BizUserPageParam bizUserPageParam) {
|
||||||
return CommonResult.data(bizUserService.page(bizUserPageParam));
|
return CommonResult.data(bizUserService.page(bizUserPageParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +128,6 @@ public class BizUserController {
|
||||||
@ApiOperationSupport(order = 5)
|
@ApiOperationSupport(order = 5)
|
||||||
@ApiOperation("获取人员详情")
|
@ApiOperation("获取人员详情")
|
||||||
@SaCheckPermission("/biz/user/detail")
|
@SaCheckPermission("/biz/user/detail")
|
||||||
@CommonWrapper(BizUserWrapperImpl.class)
|
|
||||||
@GetMapping("/biz/user/detail")
|
@GetMapping("/biz/user/detail")
|
||||||
public CommonResult<BizUser> detail(@Valid BizUserIdParam bizUserIdParam) {
|
public CommonResult<BizUser> detail(@Valid BizUserIdParam bizUserIdParam) {
|
||||||
return CommonResult.data(bizUserService.detail(bizUserIdParam));
|
return CommonResult.data(bizUserService.detail(bizUserIdParam));
|
||||||
|
|
|
@ -14,10 +14,17 @@ package vip.xiaonuo.biz.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.biz.modular.org.entity.BizOrg;
|
||||||
|
import vip.xiaonuo.biz.modular.position.entity.BizPosition;
|
||||||
|
import vip.xiaonuo.common.handler.CommonSm4CbcTypeHandler;
|
||||||
import vip.xiaonuo.common.pojo.CommonEntity;
|
import vip.xiaonuo.common.pojo.CommonEntity;
|
||||||
|
|
||||||
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 BizUser extends CommonEntity {
|
public class BizUser 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 BizUser 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 BizUser 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 = CommonSm4CbcTypeHandler.class)
|
||||||
private String idCardNumber;
|
private String idCardNumber;
|
||||||
|
|
||||||
/** 文化程度 */
|
/** 文化程度 */
|
||||||
|
@ -141,7 +150,7 @@ public class BizUser 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 = CommonSm4CbcTypeHandler.class)
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
/** 邮箱 */
|
/** 邮箱 */
|
||||||
|
@ -166,7 +175,7 @@ public class BizUser 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 = CommonSm4CbcTypeHandler.class)
|
||||||
private String emergencyPhone;
|
private String emergencyPhone;
|
||||||
|
|
||||||
/** 紧急联系人地址 */
|
/** 紧急联系人地址 */
|
||||||
|
@ -187,21 +196,24 @@ public class BizUser 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 = BizOrg.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 = BizPosition.class, fields = "name", alias = "position", ref = "positionName")
|
||||||
private String positionId;
|
private String positionId;
|
||||||
|
|
||||||
/** 岗级 */
|
/** 职级 */
|
||||||
@ApiModelProperty(value = "岗级", position = 34)
|
@ApiModelProperty(value = "职级", position = 34)
|
||||||
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
|
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
|
||||||
private String positionLevel;
|
private String positionLevel;
|
||||||
|
|
||||||
/** 主管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 = BizUser.class, fields = "name", alias = "director", ref = "directorName")
|
||||||
private String directorId;
|
private String directorId;
|
||||||
|
|
||||||
/** 兼任信息 */
|
/** 兼任信息 */
|
||||||
|
@ -253,4 +265,16 @@ public class BizUser 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,15 +12,8 @@
|
||||||
*/
|
*/
|
||||||
package vip.xiaonuo.biz.modular.user.mapper;
|
package vip.xiaonuo.biz.modular.user.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserExportResult;
|
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserResult;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人员Mapper接口
|
* 人员Mapper接口
|
||||||
|
@ -30,19 +23,4 @@ import java.util.List;
|
||||||
**/
|
**/
|
||||||
public interface BizUserMapper extends BaseMapper<BizUser> {
|
public interface BizUserMapper extends BaseMapper<BizUser> {
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取人员分页列表
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/7/8 13:27
|
|
||||||
**/
|
|
||||||
Page<BizUserResult> page(@Param("page") Page<BizUserResult> page, @Param("ew") QueryWrapper<BizUserResult> queryWrapper);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取要导出的用户列表
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/7/8 13:27
|
|
||||||
**/
|
|
||||||
List<BizUserExportResult> exportList(@Param("ew") QueryWrapper<BizUserExportResult> queryWrapper);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,31 +2,4 @@
|
||||||
<!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.biz.modular.user.mapper.BizUserMapper">
|
<mapper namespace="vip.xiaonuo.biz.modular.user.mapper.BizUserMapper">
|
||||||
|
|
||||||
<!-- 获取用户分页 -->
|
|
||||||
<select id="page" resultType="vip.xiaonuo.biz.modular.user.result.BizUserResult">
|
|
||||||
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.biz.modular.user.result.BizUserExportResult">
|
|
||||||
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>
|
|
@ -1,224 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
|
||||||
*
|
|
||||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
||||||
*
|
|
||||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
|
||||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
||||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
||||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
||||||
*/
|
|
||||||
package vip.xiaonuo.biz.modular.user.result;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户结果集
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/7/8 13:22
|
|
||||||
**/
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
public class BizUserResult {
|
|
||||||
|
|
||||||
/** id */
|
|
||||||
@ApiModelProperty(value = "id", position = 1)
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
/** 头像 */
|
|
||||||
@ApiModelProperty(value = "头像", position = 3)
|
|
||||||
private String avatar;
|
|
||||||
|
|
||||||
/** 签名 */
|
|
||||||
@ApiModelProperty(value = "签名", position = 4)
|
|
||||||
private String signature;
|
|
||||||
|
|
||||||
/** 账号 */
|
|
||||||
@ApiModelProperty(value = "账号", position = 5)
|
|
||||||
private String account;
|
|
||||||
|
|
||||||
/** 姓名 */
|
|
||||||
@ApiModelProperty(value = "姓名", position = 7)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
/** 昵称 */
|
|
||||||
@ApiModelProperty(value = "昵称", position = 8)
|
|
||||||
private String nickname;
|
|
||||||
|
|
||||||
/** 性别 */
|
|
||||||
@ApiModelProperty(value = "性别", position = 9)
|
|
||||||
private String gender;
|
|
||||||
|
|
||||||
/** 年龄 */
|
|
||||||
@ApiModelProperty(value = "年龄", position = 10)
|
|
||||||
private String age;
|
|
||||||
|
|
||||||
/** 出生日期 */
|
|
||||||
@ApiModelProperty(value = "出生日期", position = 11)
|
|
||||||
private String birthday;
|
|
||||||
|
|
||||||
/** 民族 */
|
|
||||||
@ApiModelProperty(value = "民族", position = 12)
|
|
||||||
private String nation;
|
|
||||||
|
|
||||||
/** 籍贯 */
|
|
||||||
@ApiModelProperty(value = "籍贯", position = 13)
|
|
||||||
private String nativePlace;
|
|
||||||
|
|
||||||
/** 家庭住址 */
|
|
||||||
@ApiModelProperty(value = "家庭住址", position = 14)
|
|
||||||
private String homeAddress;
|
|
||||||
|
|
||||||
/** 通信地址 */
|
|
||||||
@ApiModelProperty(value = "通信地址", position = 15)
|
|
||||||
private String mailingAddress;
|
|
||||||
|
|
||||||
/** 证件类型 */
|
|
||||||
@ApiModelProperty(value = "证件类型", position = 16)
|
|
||||||
private String idCardType;
|
|
||||||
|
|
||||||
/** 证件号码 */
|
|
||||||
@ApiModelProperty(value = "证件号码", position = 17)
|
|
||||||
private String idCardNumber;
|
|
||||||
|
|
||||||
/** 文化程度 */
|
|
||||||
@ApiModelProperty(value = "文化程度", position = 18)
|
|
||||||
private String cultureLevel;
|
|
||||||
|
|
||||||
/** 政治面貌 */
|
|
||||||
@ApiModelProperty(value = "政治面貌", position = 19)
|
|
||||||
private String politicalOutlook;
|
|
||||||
|
|
||||||
/** 毕业院校 */
|
|
||||||
@ApiModelProperty(value = "毕业院校", position = 20)
|
|
||||||
private String college;
|
|
||||||
|
|
||||||
/** 学历 */
|
|
||||||
@ApiModelProperty(value = "学历", position = 21)
|
|
||||||
private String education;
|
|
||||||
|
|
||||||
/** 学制 */
|
|
||||||
@ApiModelProperty(value = "学制", position = 22)
|
|
||||||
private String eduLength;
|
|
||||||
|
|
||||||
/** 学位 */
|
|
||||||
@ApiModelProperty(value = "学位", position = 23)
|
|
||||||
private String degree;
|
|
||||||
|
|
||||||
/** 手机 */
|
|
||||||
@ApiModelProperty(value = "手机", position = 24)
|
|
||||||
private String phone;
|
|
||||||
|
|
||||||
/** 邮箱 */
|
|
||||||
@ApiModelProperty(value = "邮箱", position = 25)
|
|
||||||
private String email;
|
|
||||||
|
|
||||||
/** 家庭电话 */
|
|
||||||
@ApiModelProperty(value = "家庭电话", position = 26)
|
|
||||||
private String homeTel;
|
|
||||||
|
|
||||||
/** 办公电话 */
|
|
||||||
@ApiModelProperty(value = "办公电话", position = 27)
|
|
||||||
private String officeTel;
|
|
||||||
|
|
||||||
/** 紧急联系人 */
|
|
||||||
@ApiModelProperty(value = "紧急联系人", position = 28)
|
|
||||||
private String emergencyContact;
|
|
||||||
|
|
||||||
/** 紧急联系人电话 */
|
|
||||||
@ApiModelProperty(value = "紧急联系人电话", position = 29)
|
|
||||||
private String emergencyPhone;
|
|
||||||
|
|
||||||
/** 紧急联系人地址 */
|
|
||||||
@ApiModelProperty(value = "紧急联系人地址", position = 30)
|
|
||||||
private String emergencyAddress;
|
|
||||||
|
|
||||||
/** 员工编号 */
|
|
||||||
@ApiModelProperty(value = "员工编号", position = 31)
|
|
||||||
private String empNo;
|
|
||||||
|
|
||||||
/** 入职日期 */
|
|
||||||
@ApiModelProperty(value = "入职日期", position = 32)
|
|
||||||
private String entryDate;
|
|
||||||
|
|
||||||
/** 机构id */
|
|
||||||
@ApiModelProperty(value = "机构id", position = 33)
|
|
||||||
private String orgId;
|
|
||||||
|
|
||||||
/** 岗位id */
|
|
||||||
@ApiModelProperty(value = "岗位id", position = 34)
|
|
||||||
private String positionId;
|
|
||||||
|
|
||||||
/** 岗级 */
|
|
||||||
@ApiModelProperty(value = "岗级", position = 35)
|
|
||||||
private String positionLevel;
|
|
||||||
|
|
||||||
/** 主管id */
|
|
||||||
@ApiModelProperty(value = "主管id", position = 36)
|
|
||||||
private String directorId;
|
|
||||||
|
|
||||||
/** 上次登录ip */
|
|
||||||
@ApiModelProperty(value = "上次登录ip", position = 37)
|
|
||||||
private String lastLoginIp;
|
|
||||||
|
|
||||||
/** 上次登录地点 */
|
|
||||||
@ApiModelProperty(value = "上次登录地点", position = 38)
|
|
||||||
private String lastLoginAddress;
|
|
||||||
|
|
||||||
/** 上次登录时间 */
|
|
||||||
@ApiModelProperty(value = "上次登录时间", position = 39)
|
|
||||||
private Date lastLoginTime;
|
|
||||||
|
|
||||||
/** 上次登录设备 */
|
|
||||||
@ApiModelProperty(value = "上次登录设备", position = 40)
|
|
||||||
private String lastLoginDevice;
|
|
||||||
|
|
||||||
/** 最新登录ip */
|
|
||||||
@ApiModelProperty(value = "最新登录ip", position = 41)
|
|
||||||
private String latestLoginIp;
|
|
||||||
|
|
||||||
/** 最新登录地点 */
|
|
||||||
@ApiModelProperty(value = "最新登录地点", position = 42)
|
|
||||||
private String latestLoginAddress;
|
|
||||||
|
|
||||||
/** 最新登录时间 */
|
|
||||||
@ApiModelProperty(value = "最新登录时间", position = 43)
|
|
||||||
private Date latestLoginTime;
|
|
||||||
|
|
||||||
/** 最新登录设备 */
|
|
||||||
@ApiModelProperty(value = "最新登录设备", position = 44)
|
|
||||||
private String latestLoginDevice;
|
|
||||||
|
|
||||||
/** 用户状态 */
|
|
||||||
@ApiModelProperty(value = "用户状态", position = 45)
|
|
||||||
private String userStatus;
|
|
||||||
|
|
||||||
/** 排序码 */
|
|
||||||
@ApiModelProperty(value = "排序码", position = 46)
|
|
||||||
private Integer sortCode;
|
|
||||||
|
|
||||||
/** 扩展信息 */
|
|
||||||
@ApiModelProperty(value = "扩展信息", position = 47)
|
|
||||||
private String extJson;
|
|
||||||
|
|
||||||
/* ====额外的字段==== */
|
|
||||||
|
|
||||||
/** 机构名称 */
|
|
||||||
@ApiModelProperty(value = "机构名称", position = 48)
|
|
||||||
private String orgName;
|
|
||||||
|
|
||||||
/** 岗位名称 */
|
|
||||||
@ApiModelProperty(value = "岗位名称", position = 49)
|
|
||||||
private String positionName;
|
|
||||||
|
|
||||||
/** 主管名称 */
|
|
||||||
@ApiModelProperty(value = "主管名称", position = 50)
|
|
||||||
private String directorName;
|
|
||||||
}
|
|
|
@ -20,7 +20,6 @@ import vip.xiaonuo.biz.modular.org.entity.BizOrg;
|
||||||
import vip.xiaonuo.biz.modular.position.entity.BizPosition;
|
import vip.xiaonuo.biz.modular.position.entity.BizPosition;
|
||||||
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
||||||
import vip.xiaonuo.biz.modular.user.param.*;
|
import vip.xiaonuo.biz.modular.user.param.*;
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserResult;
|
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
|
import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
@ -41,7 +40,7 @@ public interface BizUserService extends IService<BizUser> {
|
||||||
* @author xuyuxiang
|
* @author xuyuxiang
|
||||||
* @date 2022/4/24 20:08
|
* @date 2022/4/24 20:08
|
||||||
*/
|
*/
|
||||||
Page<BizUserResult> page(BizUserPageParam bizUserPageParam);
|
Page<BizUser> page(BizUserPageParam bizUserPageParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加人员
|
* 添加人员
|
||||||
|
|
|
@ -48,7 +48,6 @@ import vip.xiaonuo.biz.modular.user.enums.BizUserStatusEnum;
|
||||||
import vip.xiaonuo.biz.modular.user.mapper.BizUserMapper;
|
import vip.xiaonuo.biz.modular.user.mapper.BizUserMapper;
|
||||||
import vip.xiaonuo.biz.modular.user.param.*;
|
import vip.xiaonuo.biz.modular.user.param.*;
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserExportResult;
|
import vip.xiaonuo.biz.modular.user.result.BizUserExportResult;
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserResult;
|
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
|
import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
|
||||||
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
||||||
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
||||||
|
@ -95,54 +94,41 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
|
||||||
private BizPositionService bizPositionService;
|
private BizPositionService bizPositionService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<BizUserResult> page(BizUserPageParam bizUserPageParam) {
|
public Page<BizUser> page(BizUserPageParam bizUserPageParam) {
|
||||||
QueryWrapper<BizUserResult> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<BizUser> queryWrapper = new QueryWrapper<>();
|
||||||
if(ObjectUtil.isNotEmpty(bizUserPageParam.getSearchKey())) {
|
if (ObjectUtil.isNotEmpty(bizUserPageParam.getSearchKey())) {
|
||||||
queryWrapper.and(q -> q.like("SYS_USER.ACCOUNT", bizUserPageParam.getSearchKey())
|
queryWrapper.lambda().like(BizUser::getAccount, bizUserPageParam.getSearchKey()).or()
|
||||||
.or().like("SYS_USER.NAME", bizUserPageParam.getSearchKey())
|
.like(BizUser::getName, bizUserPageParam.getSearchKey());
|
||||||
.or().like("SYS_USER.PHONE", bizUserPageParam.getSearchKey()));
|
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isNotEmpty(bizUserPageParam.getUserStatus())) {
|
if (ObjectUtil.isNotEmpty(bizUserPageParam.getOrgId())) {
|
||||||
queryWrapper.eq("SYS_USER.USER_STATUS", bizUserPageParam.getUserStatus());
|
queryWrapper.lambda().eq(BizUser::getOrgId, bizUserPageParam.getOrgId());
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isNotEmpty(bizUserPageParam.getOrgId())) {
|
if (ObjectUtil.isNotEmpty(bizUserPageParam.getUserStatus())) {
|
||||||
queryWrapper.eq("SYS_USER.ORG_ID", bizUserPageParam.getOrgId());
|
queryWrapper.lambda().eq(BizUser::getUserStatus, bizUserPageParam.getUserStatus());
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isAllNotEmpty(bizUserPageParam.getSortField(), bizUserPageParam.getSortOrder())) {
|
if (ObjectUtil.isAllNotEmpty(bizUserPageParam.getSortField(), bizUserPageParam.getSortOrder())) {
|
||||||
CommonSortOrderEnum.validate(bizUserPageParam.getSortOrder());
|
CommonSortOrderEnum.validate(bizUserPageParam.getSortOrder());
|
||||||
queryWrapper.orderBy(true, bizUserPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
|
queryWrapper.orderBy(true, bizUserPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
|
||||||
StrUtil.toUnderlineCase("SYS_USER." + bizUserPageParam.getSortField()));
|
StrUtil.toUnderlineCase(bizUserPageParam.getSortField()));
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.orderByAsc("SYS_USER.SORT_CODE");
|
queryWrapper.lambda().orderByAsc(BizUser::getSortCode);
|
||||||
}
|
}
|
||||||
// 排除超管
|
// 排除超管
|
||||||
queryWrapper.ne("SYS_USER.ID", "-1");
|
queryWrapper.lambda().ne(BizUser::getAccount, BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
|
||||||
// 校验数据范围
|
// 校验数据范围
|
||||||
List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
|
List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
|
||||||
if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
|
if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
|
||||||
queryWrapper.in("SYS_USER.ORG_ID", loginUserDataScope);
|
queryWrapper.lambda().in(BizUser::getOrgId, loginUserDataScope);
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.eq("SYS_USER.ID", StpUtil.getLoginIdAsString());
|
queryWrapper.lambda().eq(BizUser::getId, StpUtil.getLoginIdAsString());
|
||||||
}
|
}
|
||||||
return this.baseMapper.page(CommonPageRequest.defaultPage(), queryWrapper);
|
return this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void add(BizUserAddParam bizUserAddParam) {
|
public void add(BizUserAddParam bizUserAddParam) {
|
||||||
checkParam(bizUserAddParam);
|
checkParam(bizUserAddParam);
|
||||||
// 设置手机号
|
|
||||||
if(ObjectUtil.isNotEmpty(bizUserAddParam.getPhone())) {
|
|
||||||
bizUserAddParam.setPhone(CommonCryptogramUtil.doSm4CbcEncrypt(bizUserAddParam.getPhone()));
|
|
||||||
}
|
|
||||||
// 设置证件号
|
|
||||||
if(ObjectUtil.isNotEmpty(bizUserAddParam.getIdCardNumber())) {
|
|
||||||
bizUserAddParam.setIdCardNumber(CommonCryptogramUtil.doSm4CbcEncrypt(bizUserAddParam.getIdCardNumber()));
|
|
||||||
}
|
|
||||||
// 设置紧急联系人电话
|
|
||||||
if(ObjectUtil.isNotEmpty(bizUserAddParam.getEmergencyPhone())) {
|
|
||||||
bizUserAddParam.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcEncrypt(bizUserAddParam.getEmergencyPhone()));
|
|
||||||
}
|
|
||||||
BizUser bizUser = BeanUtil.toBean(bizUserAddParam, BizUser.class);
|
BizUser bizUser = BeanUtil.toBean(bizUserAddParam, BizUser.class);
|
||||||
if(ObjectUtil.isEmpty(bizUser.getAvatar())) {
|
if(ObjectUtil.isEmpty(bizUser.getAvatar())) {
|
||||||
// 设置默认头像
|
// 设置默认头像
|
||||||
|
@ -194,17 +180,10 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
|
||||||
public void edit(BizUserEditParam bizUserEditParam) {
|
public void edit(BizUserEditParam bizUserEditParam) {
|
||||||
BizUser bizUser = this.queryEntity(bizUserEditParam.getId());
|
BizUser bizUser = this.queryEntity(bizUserEditParam.getId());
|
||||||
checkParam(bizUserEditParam);
|
checkParam(bizUserEditParam);
|
||||||
// 设置手机号
|
boolean updateSuperAdminAccount = bizUser.getAccount().equals(BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue()) &&
|
||||||
if(ObjectUtil.isNotEmpty(bizUserEditParam.getPhone())) {
|
!bizUserEditParam.getAccount().equals(BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
|
||||||
bizUserEditParam.setPhone(CommonCryptogramUtil.doSm4CbcEncrypt(bizUserEditParam.getPhone()));
|
if(updateSuperAdminAccount) {
|
||||||
}
|
throw new CommonException("不可修改系统内置超管用户账号");
|
||||||
// 设置证件号
|
|
||||||
if(ObjectUtil.isNotEmpty(bizUserEditParam.getIdCardNumber())) {
|
|
||||||
bizUserEditParam.setIdCardNumber(CommonCryptogramUtil.doSm4CbcEncrypt(bizUserEditParam.getIdCardNumber()));
|
|
||||||
}
|
|
||||||
// 设置紧急联系人电话
|
|
||||||
if(ObjectUtil.isNotEmpty(bizUserEditParam.getEmergencyPhone())) {
|
|
||||||
bizUserEditParam.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcEncrypt(bizUserEditParam.getEmergencyPhone()));
|
|
||||||
}
|
}
|
||||||
BeanUtil.copyProperties(bizUserEditParam, bizUser);
|
BeanUtil.copyProperties(bizUserEditParam, bizUser);
|
||||||
this.updateById(bizUser);
|
this.updateById(bizUser);
|
||||||
|
@ -389,20 +368,20 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
|
||||||
public void exportUser(BizUserExportParam bizUserExportParam, HttpServletResponse response) throws IOException {
|
public void exportUser(BizUserExportParam bizUserExportParam, HttpServletResponse response) throws IOException {
|
||||||
File tempFile = null;
|
File tempFile = null;
|
||||||
try {
|
try {
|
||||||
QueryWrapper<BizUserExportResult> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<BizUser> queryWrapper = new QueryWrapper<>();
|
||||||
if(ObjectUtil.isNotEmpty(bizUserExportParam.getSearchKey())) {
|
if(ObjectUtil.isNotEmpty(bizUserExportParam.getSearchKey())) {
|
||||||
queryWrapper.and(q -> q.like("SYS_USER.ACCOUNT", bizUserExportParam.getSearchKey())
|
queryWrapper.lambda().like(BizUser::getAccount, bizUserExportParam.getSearchKey()).or()
|
||||||
.or().like("SYS_USER.NAME", bizUserExportParam.getSearchKey())
|
.like(BizUser::getName, bizUserExportParam.getSearchKey());
|
||||||
.or().like("SYS_USER.PHONE", bizUserExportParam.getSearchKey()));
|
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isNotEmpty(bizUserExportParam.getUserStatus())) {
|
if(ObjectUtil.isNotEmpty(bizUserExportParam.getUserStatus())) {
|
||||||
queryWrapper.eq("SYS_USER.STATUS", bizUserExportParam.getUserStatus());
|
queryWrapper.lambda().eq(BizUser::getUserStatus, bizUserExportParam.getUserStatus());
|
||||||
}
|
}
|
||||||
String fileName = "SNOWY2.0系统B端人员信息清单";
|
String fileName = "SNOWY2.0系统B端人员信息清单";
|
||||||
List<BizUserExportResult> bizUserExportResultList = this.baseMapper.exportList(queryWrapper).stream().peek(sysUserExportResult -> {
|
List<BizUserExportResult> bizUserExportResultList =this.list(queryWrapper).stream()
|
||||||
if(ObjectUtil.isNotEmpty(sysUserExportResult.getAvatar())) {
|
.map(bizUser -> BeanUtil.copyProperties(bizUser, BizUserExportResult.class)).peek(bizUserExportResult -> {
|
||||||
sysUserExportResult.setAvatarByte(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
|
if (ObjectUtil.isNotEmpty(bizUserExportResult.getAvatar())) {
|
||||||
.split(sysUserExportResult.getAvatar(), StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG));
|
bizUserExportResult.setAvatarByte(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
|
||||||
|
.split(bizUserExportResult.getAvatar(), StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG));
|
||||||
}
|
}
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(fileName, "B端人员"),
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(fileName, "B端人员"),
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
|
||||||
*
|
|
||||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
||||||
*
|
|
||||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
|
||||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
||||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
||||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
||||||
*/
|
|
||||||
package vip.xiaonuo.biz.modular.user.wrapper;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import vip.xiaonuo.biz.modular.user.result.BizUserResult;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonWrapperInterface;
|
|
||||||
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BizUserResult类型的包装实现类
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:42
|
|
||||||
*/
|
|
||||||
public class BizUserResultWrapperImpl implements CommonWrapperInterface<BizUserResult> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对手机号和证件号码进行解密
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:45
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public JSONObject doWrap(BizUserResult bizUserResult) {
|
|
||||||
String phone = bizUserResult.getPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(phone)) {
|
|
||||||
bizUserResult.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(phone));
|
|
||||||
}
|
|
||||||
String idCardNumber = bizUserResult.getIdCardNumber();
|
|
||||||
if(ObjectUtil.isNotEmpty(idCardNumber)) {
|
|
||||||
bizUserResult.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(idCardNumber));
|
|
||||||
}
|
|
||||||
String emergencyPhone = bizUserResult.getEmergencyPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(emergencyPhone)) {
|
|
||||||
bizUserResult.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcDecrypt(emergencyPhone));
|
|
||||||
}
|
|
||||||
return JSONUtil.parseObj(bizUserResult);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
|
||||||
*
|
|
||||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
||||||
*
|
|
||||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
|
||||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
||||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
||||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
||||||
*/
|
|
||||||
package vip.xiaonuo.biz.modular.user.wrapper;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonWrapperInterface;
|
|
||||||
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SysUser类型的包装实现类
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:42
|
|
||||||
*/
|
|
||||||
public class BizUserWrapperImpl implements CommonWrapperInterface<BizUser> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对手机号和证件号码进行解密
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:45
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public JSONObject doWrap(BizUser bizUser) {
|
|
||||||
String phone = bizUser.getPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(phone)) {
|
|
||||||
bizUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(phone));
|
|
||||||
}
|
|
||||||
String idCardNumber = bizUser.getIdCardNumber();
|
|
||||||
if(ObjectUtil.isNotEmpty(idCardNumber)) {
|
|
||||||
bizUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(idCardNumber));
|
|
||||||
}
|
|
||||||
String emergencyPhone = bizUser.getEmergencyPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(emergencyPhone)) {
|
|
||||||
bizUser.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcDecrypt(emergencyPhone));
|
|
||||||
}
|
|
||||||
return JSONUtil.parseObj(bizUser);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -28,9 +28,7 @@ import vip.xiaonuo.client.modular.user.param.ClientUserEditParam;
|
||||||
import vip.xiaonuo.client.modular.user.param.ClientUserIdParam;
|
import vip.xiaonuo.client.modular.user.param.ClientUserIdParam;
|
||||||
import vip.xiaonuo.client.modular.user.param.ClientUserPageParam;
|
import vip.xiaonuo.client.modular.user.param.ClientUserPageParam;
|
||||||
import vip.xiaonuo.client.modular.user.service.ClientUserService;
|
import vip.xiaonuo.client.modular.user.service.ClientUserService;
|
||||||
import vip.xiaonuo.client.modular.user.wrapper.ClientUserWrapperImpl;
|
|
||||||
import vip.xiaonuo.common.annotation.CommonLog;
|
import vip.xiaonuo.common.annotation.CommonLog;
|
||||||
import vip.xiaonuo.common.annotation.CommonWrapper;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonResult;
|
import vip.xiaonuo.common.pojo.CommonResult;
|
||||||
import vip.xiaonuo.common.pojo.CommonValidList;
|
import vip.xiaonuo.common.pojo.CommonValidList;
|
||||||
|
|
||||||
|
@ -61,7 +59,6 @@ public class ClientUserController {
|
||||||
*/
|
*/
|
||||||
@ApiOperationSupport(order = 1)
|
@ApiOperationSupport(order = 1)
|
||||||
@ApiOperation("获取C端用户分页")
|
@ApiOperation("获取C端用户分页")
|
||||||
@CommonWrapper(ClientUserWrapperImpl.class)
|
|
||||||
@GetMapping("/client/user/page")
|
@GetMapping("/client/user/page")
|
||||||
public CommonResult<Page<ClientUser>> page(ClientUserPageParam clientUserPageParam) {
|
public CommonResult<Page<ClientUser>> page(ClientUserPageParam clientUserPageParam) {
|
||||||
return CommonResult.data(clientUserService.page(clientUserPageParam));
|
return CommonResult.data(clientUserService.page(clientUserPageParam));
|
||||||
|
@ -121,7 +118,6 @@ public class ClientUserController {
|
||||||
*/
|
*/
|
||||||
@ApiOperationSupport(order = 5)
|
@ApiOperationSupport(order = 5)
|
||||||
@ApiOperation("获取C端用户详情")
|
@ApiOperation("获取C端用户详情")
|
||||||
@CommonWrapper(ClientUserWrapperImpl.class)
|
|
||||||
@GetMapping("/client/user/detail")
|
@GetMapping("/client/user/detail")
|
||||||
public CommonResult<ClientUser> detail(@Valid ClientUserIdParam clientUserIdParam) {
|
public CommonResult<ClientUser> detail(@Valid ClientUserIdParam clientUserIdParam) {
|
||||||
return CommonResult.data(clientUserService.detail(clientUserIdParam));
|
return CommonResult.data(clientUserService.detail(clientUserIdParam));
|
||||||
|
|
|
@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
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.CommonSm4CbcTypeHandler;
|
||||||
import vip.xiaonuo.common.pojo.CommonEntity;
|
import vip.xiaonuo.common.pojo.CommonEntity;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -106,7 +107,7 @@ public class ClientUser 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 = CommonSm4CbcTypeHandler.class)
|
||||||
private String idCardNumber;
|
private String idCardNumber;
|
||||||
|
|
||||||
/** 文化程度 */
|
/** 文化程度 */
|
||||||
|
@ -141,7 +142,7 @@ public class ClientUser 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 = CommonSm4CbcTypeHandler.class)
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
/** 邮箱 */
|
/** 邮箱 */
|
||||||
|
@ -166,7 +167,7 @@ public class ClientUser 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 = CommonSm4CbcTypeHandler.class)
|
||||||
private String emergencyPhone;
|
private String emergencyPhone;
|
||||||
|
|
||||||
/** 紧急联系人地址 */
|
/** 紧急联系人地址 */
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
|
||||||
*
|
|
||||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
||||||
*
|
|
||||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
|
||||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
||||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
||||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
||||||
*/
|
|
||||||
package vip.xiaonuo.client.modular.user.wrapper;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import vip.xiaonuo.client.modular.user.entity.ClientUser;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonWrapperInterface;
|
|
||||||
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ClientUser类型的包装实现类
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:42
|
|
||||||
*/
|
|
||||||
public class ClientUserWrapperImpl implements CommonWrapperInterface<ClientUser> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对手机号和证件号码进行解密
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:45
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public JSONObject doWrap(ClientUser clientUser) {
|
|
||||||
String phone = clientUser.getPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(phone)) {
|
|
||||||
clientUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(phone));
|
|
||||||
}
|
|
||||||
String idCardNumber = clientUser.getIdCardNumber();
|
|
||||||
if(ObjectUtil.isNotEmpty(idCardNumber)) {
|
|
||||||
clientUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(idCardNumber));
|
|
||||||
}
|
|
||||||
String emergencyPhone = clientUser.getEmergencyPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(emergencyPhone)) {
|
|
||||||
clientUser.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcDecrypt(emergencyPhone));
|
|
||||||
}
|
|
||||||
return JSONUtil.parseObj(clientUser);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -37,7 +37,6 @@ 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 javax.annotation.Resource;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
@ -193,33 +192,28 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() {
|
||||||
refreshTransCache();
|
refreshTransCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshTransCache() {
|
private void refreshTransCache() {
|
||||||
// 异步不阻塞主线程,不会 增加启动用时
|
// 异步不阻塞主线程,不会 增加启动用时
|
||||||
CompletableFuture.supplyAsync(()->{
|
CompletableFuture.supplyAsync(() -> {
|
||||||
// 使用redis能解决共享问题,但是性能没有直接取缓存的好。
|
// 使用redis能解决共享问题,但是性能没有直接取缓存的好。
|
||||||
dictionaryTransService.makeUseRedis();
|
dictionaryTransService.makeUseRedis();
|
||||||
List<DevDict> devDicts = super.list(new LambdaQueryWrapper<DevDict>());
|
List<DevDict> devDictList = super.list(new LambdaQueryWrapper<>());
|
||||||
// 非root级别的字典根据ParentId分组
|
// 非root级别的字典根据ParentId分组
|
||||||
Map<String,List<DevDict>> devDictGroupByPIDMap = devDicts.stream().filter(dict -> {
|
Map<String,List<DevDict>> devDictGroupByPIDMap = devDictList.stream().filter(dict -> !ROOT_PARENT_ID
|
||||||
return !ROOT_PARENT_ID.equals(dict.getParentId());
|
.equals(dict.getParentId())).collect(Collectors.groupingBy(DevDict::getParentId));
|
||||||
}).collect(Collectors.groupingBy(DevDict::getParentId));
|
Map<String,String> parentDictIdValMap = devDictList.stream().filter(dict -> ROOT_PARENT_ID
|
||||||
Map<String,String> parentDictIdValMap = devDicts.stream().filter(dict -> {
|
.equals(dict.getParentId())).collect(Collectors.toMap(DevDict::getId, DevDict::getDictValue));
|
||||||
return ROOT_PARENT_ID.equals(dict.getParentId());
|
|
||||||
}).collect(Collectors.toMap(DevDict::getId,DevDict::getDictValue));
|
|
||||||
for (String parentId : parentDictIdValMap.keySet()) {
|
for (String parentId : parentDictIdValMap.keySet()) {
|
||||||
if(devDictGroupByPIDMap.containsKey(parentId)){
|
if(devDictGroupByPIDMap.containsKey(parentId)){
|
||||||
dictionaryTransService.refreshCache(parentDictIdValMap.get(parentId),devDictGroupByPIDMap.get(parentId).stream()
|
dictionaryTransService.refreshCache(parentDictIdValMap.get(parentId), devDictGroupByPIDMap.get(parentId).stream()
|
||||||
.collect(Collectors.toMap(DevDict::getDictValue,DevDict::getDictLabel)));
|
.collect(Collectors.toMap(DevDict::getDictValue, DevDict::getDictLabel)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,6 @@ import vip.xiaonuo.sys.modular.org.service.SysOrgService;
|
||||||
import vip.xiaonuo.sys.modular.position.entity.SysPosition;
|
import vip.xiaonuo.sys.modular.position.entity.SysPosition;
|
||||||
import vip.xiaonuo.sys.modular.position.service.SysPositionService;
|
import vip.xiaonuo.sys.modular.position.service.SysPositionService;
|
||||||
import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
||||||
import vip.xiaonuo.sys.modular.role.enums.SysRoleCategoryEnum;
|
|
||||||
import vip.xiaonuo.sys.modular.role.service.SysRoleService;
|
import vip.xiaonuo.sys.modular.role.service.SysRoleService;
|
||||||
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
||||||
import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
||||||
|
|
|
@ -45,7 +45,6 @@ import vip.xiaonuo.sys.modular.relation.entity.SysRelation;
|
||||||
import vip.xiaonuo.sys.modular.relation.enums.SysRelationCategoryEnum;
|
import vip.xiaonuo.sys.modular.relation.enums.SysRelationCategoryEnum;
|
||||||
import vip.xiaonuo.sys.modular.relation.service.SysRelationService;
|
import vip.xiaonuo.sys.modular.relation.service.SysRelationService;
|
||||||
import vip.xiaonuo.sys.modular.resource.entity.SysMenu;
|
import vip.xiaonuo.sys.modular.resource.entity.SysMenu;
|
||||||
import vip.xiaonuo.sys.modular.resource.entity.SysSpa;
|
|
||||||
import vip.xiaonuo.sys.modular.resource.enums.SysResourceCategoryEnum;
|
import vip.xiaonuo.sys.modular.resource.enums.SysResourceCategoryEnum;
|
||||||
import vip.xiaonuo.sys.modular.resource.service.SysMenuService;
|
import vip.xiaonuo.sys.modular.resource.service.SysMenuService;
|
||||||
import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
||||||
|
|
|
@ -19,13 +19,11 @@ 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.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import vip.xiaonuo.common.annotation.CommonLog;
|
import vip.xiaonuo.common.annotation.CommonLog;
|
||||||
import vip.xiaonuo.common.annotation.CommonWrapper;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonResult;
|
import vip.xiaonuo.common.pojo.CommonResult;
|
||||||
import vip.xiaonuo.common.pojo.CommonValidList;
|
import vip.xiaonuo.common.pojo.CommonValidList;
|
||||||
import vip.xiaonuo.sys.modular.org.entity.SysOrg;
|
import vip.xiaonuo.sys.modular.org.entity.SysOrg;
|
||||||
|
@ -33,10 +31,7 @@ import vip.xiaonuo.sys.modular.position.entity.SysPosition;
|
||||||
import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
import vip.xiaonuo.sys.modular.role.entity.SysRole;
|
||||||
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
||||||
import vip.xiaonuo.sys.modular.user.param.*;
|
import vip.xiaonuo.sys.modular.user.param.*;
|
||||||
import vip.xiaonuo.sys.modular.user.result.SysUserResult;
|
|
||||||
import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
||||||
import vip.xiaonuo.sys.modular.user.wrapper.SysUserResultWrapperImpl;
|
|
||||||
import vip.xiaonuo.sys.modular.user.wrapper.SysUserWrapperImpl;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
@ -128,7 +123,6 @@ public class SysUserController {
|
||||||
*/
|
*/
|
||||||
@ApiOperationSupport(order = 5)
|
@ApiOperationSupport(order = 5)
|
||||||
@ApiOperation("获取用户详情")
|
@ApiOperation("获取用户详情")
|
||||||
@CommonWrapper(SysUserWrapperImpl.class)
|
|
||||||
@GetMapping("/sys/user/detail")
|
@GetMapping("/sys/user/detail")
|
||||||
public CommonResult<SysUser> detail(@Valid SysUserIdParam sysUserIdParam) {
|
public CommonResult<SysUser> detail(@Valid SysUserIdParam sysUserIdParam) {
|
||||||
return CommonResult.data(sysUserService.detail(sysUserIdParam));
|
return CommonResult.data(sysUserService.detail(sysUserIdParam));
|
||||||
|
|
|
@ -22,7 +22,7 @@ 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.handler.CommonSm4CbcTypeHandler;
|
||||||
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.org.entity.SysOrg;
|
||||||
import vip.xiaonuo.sys.modular.position.entity.SysPosition;
|
import vip.xiaonuo.sys.modular.position.entity.SysPosition;
|
||||||
|
@ -37,7 +37,7 @@ import java.util.Date;
|
||||||
**/
|
**/
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@TableName(value = "SYS_USER",autoResultMap = true)
|
@TableName(value = "SYS_USER", autoResultMap = true)
|
||||||
public class SysUser extends CommonEntity implements TransPojo {
|
public class SysUser extends CommonEntity implements TransPojo {
|
||||||
|
|
||||||
/** id */
|
/** id */
|
||||||
|
@ -115,7 +115,7 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
|
|
||||||
/** 证件号码 */
|
/** 证件号码 */
|
||||||
@ApiModelProperty(value = "证件号码", position = 16)
|
@ApiModelProperty(value = "证件号码", position = 16)
|
||||||
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED,typeHandler = Sm4CbcTypeHandler.class)
|
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED, typeHandler = CommonSm4CbcTypeHandler.class)
|
||||||
private String idCardNumber;
|
private String idCardNumber;
|
||||||
|
|
||||||
/** 文化程度 */
|
/** 文化程度 */
|
||||||
|
@ -150,7 +150,7 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
|
|
||||||
/** 手机 */
|
/** 手机 */
|
||||||
@ApiModelProperty(value = "手机", position = 23)
|
@ApiModelProperty(value = "手机", position = 23)
|
||||||
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED,typeHandler = Sm4CbcTypeHandler.class)
|
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED, typeHandler = CommonSm4CbcTypeHandler.class)
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
/** 邮箱 */
|
/** 邮箱 */
|
||||||
|
@ -175,7 +175,7 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
|
|
||||||
/** 紧急联系人电话 */
|
/** 紧急联系人电话 */
|
||||||
@ApiModelProperty(value = "紧急联系人电话", position = 28)
|
@ApiModelProperty(value = "紧急联系人电话", position = 28)
|
||||||
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED,typeHandler = Sm4CbcTypeHandler.class)
|
@TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED, typeHandler = CommonSm4CbcTypeHandler.class)
|
||||||
private String emergencyPhone;
|
private String emergencyPhone;
|
||||||
|
|
||||||
/** 紧急联系人地址 */
|
/** 紧急联系人地址 */
|
||||||
|
@ -196,14 +196,13 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
/** 组织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")
|
@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")
|
@Trans(type=TransType.SIMPLE, target = SysPosition.class, fields = "name", alias = "position", ref = "positionName")
|
||||||
private String positionId;
|
private String positionId;
|
||||||
|
|
||||||
/** 职级 */
|
/** 职级 */
|
||||||
|
@ -214,7 +213,7 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
/** 主管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")
|
@Trans(type=TransType.SIMPLE, target = SysUser.class, fields = "name", alias = "director", ref = "directorName")
|
||||||
private String directorId;
|
private String directorId;
|
||||||
|
|
||||||
/** 兼任信息 */
|
/** 兼任信息 */
|
||||||
|
@ -271,7 +270,7 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String orgName;
|
private String orgName;
|
||||||
|
|
||||||
@ApiModelProperty(value = "组织名称", position = 49)
|
@ApiModelProperty(value = "职位名称", position = 49)
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String positionName;
|
private String positionName;
|
||||||
|
|
||||||
|
@ -279,6 +278,4 @@ public class SysUser extends CommonEntity implements TransPojo {
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String directorName;
|
private String directorName;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,15 +12,8 @@
|
||||||
*/
|
*/
|
||||||
package vip.xiaonuo.sys.modular.user.mapper;
|
package vip.xiaonuo.sys.modular.user.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
||||||
import vip.xiaonuo.sys.modular.user.result.SysUserExportResult;
|
|
||||||
import vip.xiaonuo.sys.modular.user.result.SysUserResult;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户Mapper接口
|
* 用户Mapper接口
|
||||||
|
@ -30,5 +23,4 @@ import java.util.List;
|
||||||
**/
|
**/
|
||||||
public interface SysUserMapper extends BaseMapper<SysUser> {
|
public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,4 @@
|
||||||
<mapper namespace="vip.xiaonuo.sys.modular.user.mapper.SysUserMapper">
|
<mapper namespace="vip.xiaonuo.sys.modular.user.mapper.SysUserMapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -188,23 +188,23 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||||
public Page<SysUser> page(SysUserPageParam sysUserPageParam) {
|
public Page<SysUser> page(SysUserPageParam sysUserPageParam) {
|
||||||
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
||||||
if (ObjectUtil.isNotEmpty(sysUserPageParam.getSearchKey())) {
|
if (ObjectUtil.isNotEmpty(sysUserPageParam.getSearchKey())) {
|
||||||
queryWrapper.and(q -> q.like("ACCOUNT", sysUserPageParam.getSearchKey())
|
queryWrapper.lambda().like(SysUser::getAccount, sysUserPageParam.getSearchKey()).or()
|
||||||
.or().like("NAME", sysUserPageParam.getSearchKey()));
|
.like(SysUser::getName, sysUserPageParam.getSearchKey());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(sysUserPageParam.getOrgId())) {
|
if (ObjectUtil.isNotEmpty(sysUserPageParam.getOrgId())) {
|
||||||
queryWrapper.eq("ORG_ID", sysUserPageParam.getOrgId());
|
queryWrapper.lambda().eq(SysUser::getOrgId, sysUserPageParam.getOrgId());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(sysUserPageParam.getUserStatus())) {
|
if (ObjectUtil.isNotEmpty(sysUserPageParam.getUserStatus())) {
|
||||||
queryWrapper.eq("USER_STATUS", sysUserPageParam.getUserStatus());
|
queryWrapper.lambda().eq(SysUser::getUserStatus, 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(sysUserPageParam.getSortField()));
|
StrUtil.toUnderlineCase(sysUserPageParam.getSortField()));
|
||||||
} else {
|
} else {
|
||||||
queryWrapper.orderByAsc("SORT_CODE");
|
queryWrapper.lambda().orderByAsc(SysUser::getSortCode);
|
||||||
}
|
}
|
||||||
return this.baseMapper.selectPage(CommonPageRequest.defaultPage(), queryWrapper);
|
return this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@ -253,6 +253,11 @@ 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);
|
||||||
|
boolean updateSuperAdminAccount = sysUser.getAccount().equals(SysBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue()) &&
|
||||||
|
!sysUserEditParam.getAccount().equals(SysBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
|
||||||
|
if(updateSuperAdminAccount) {
|
||||||
|
throw new CommonException("不可修改系统内置超管用户账号");
|
||||||
|
}
|
||||||
BeanUtil.copyProperties(sysUserEditParam, sysUser);
|
BeanUtil.copyProperties(sysUserEditParam, sysUser);
|
||||||
this.updateById(sysUser);
|
this.updateById(sysUser);
|
||||||
}
|
}
|
||||||
|
@ -844,17 +849,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||||
try {
|
try {
|
||||||
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
||||||
if (ObjectUtil.isNotEmpty(sysUserExportParam.getSearchKey())) {
|
if (ObjectUtil.isNotEmpty(sysUserExportParam.getSearchKey())) {
|
||||||
queryWrapper.and(q -> q.like("ACCOUNT", sysUserExportParam.getSearchKey())
|
queryWrapper.lambda().like(SysUser::getAccount, sysUserExportParam.getSearchKey()).or()
|
||||||
.or().like("NAME", sysUserExportParam.getSearchKey())
|
.like(SysUser::getName, sysUserExportParam.getSearchKey());
|
||||||
.or().like("PHONE", sysUserExportParam.getSearchKey()));
|
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(sysUserExportParam.getUserStatus())) {
|
if (ObjectUtil.isNotEmpty(sysUserExportParam.getUserStatus())) {
|
||||||
queryWrapper.eq("STATUS", sysUserExportParam.getUserStatus());
|
queryWrapper.lambda().eq(SysUser::getUserStatus, sysUserExportParam.getUserStatus());
|
||||||
}
|
}
|
||||||
String fileName = "SNOWY2.0系统B端用户信息清单";
|
String fileName = "SNOWY2.0系统B端用户信息清单";
|
||||||
List<SysUserExportResult> sysUserExportResultList = this.baseMapper.selectList(queryWrapper).stream().map(sysUser -> {
|
List<SysUserExportResult> sysUserExportResultList = this.list(queryWrapper).stream()
|
||||||
return BeanUtil.copyProperties(sysUser, SysUserExportResult.class);
|
.map(sysUser -> BeanUtil.copyProperties(sysUser, SysUserExportResult.class)).peek(sysUserExportResult -> {
|
||||||
}).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));
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
|
||||||
*
|
|
||||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
||||||
*
|
|
||||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
|
||||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
||||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
||||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
||||||
*/
|
|
||||||
package vip.xiaonuo.sys.modular.user.wrapper;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonWrapperInterface;
|
|
||||||
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
||||||
import vip.xiaonuo.sys.modular.user.result.SysUserResult;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SysUserResult类型的包装实现类
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:42
|
|
||||||
*/
|
|
||||||
public class SysUserResultWrapperImpl implements CommonWrapperInterface<SysUserResult> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对手机号和证件号码进行解密
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:45
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public JSONObject doWrap(SysUserResult sysUserResult) {
|
|
||||||
String phone = sysUserResult.getPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(phone)) {
|
|
||||||
sysUserResult.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(phone));
|
|
||||||
}
|
|
||||||
String idCardNumber = sysUserResult.getIdCardNumber();
|
|
||||||
if(ObjectUtil.isNotEmpty(idCardNumber)) {
|
|
||||||
sysUserResult.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(idCardNumber));
|
|
||||||
}
|
|
||||||
String emergencyPhone = sysUserResult.getEmergencyPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(emergencyPhone)) {
|
|
||||||
sysUserResult.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcDecrypt(emergencyPhone));
|
|
||||||
}
|
|
||||||
return JSONUtil.parseObj(sysUserResult);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
|
||||||
*
|
|
||||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
||||||
*
|
|
||||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
|
||||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
|
||||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
|
||||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
|
||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
|
||||||
*/
|
|
||||||
package vip.xiaonuo.sys.modular.user.wrapper;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import vip.xiaonuo.common.pojo.CommonWrapperInterface;
|
|
||||||
import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
||||||
import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SysUser类型的包装实现类
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:42
|
|
||||||
*/
|
|
||||||
public class SysUserWrapperImpl implements CommonWrapperInterface<SysUser> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 对手机号和证件号码进行解密
|
|
||||||
*
|
|
||||||
* @author xuyuxiang
|
|
||||||
* @date 2022/9/15 21:45
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public JSONObject doWrap(SysUser sysUser) {
|
|
||||||
String phone = sysUser.getPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(phone)) {
|
|
||||||
sysUser.setPhone(CommonCryptogramUtil.doSm4CbcDecrypt(phone));
|
|
||||||
}
|
|
||||||
String idCardNumber = sysUser.getIdCardNumber();
|
|
||||||
if(ObjectUtil.isNotEmpty(idCardNumber)) {
|
|
||||||
sysUser.setIdCardNumber(CommonCryptogramUtil.doSm4CbcDecrypt(idCardNumber));
|
|
||||||
}
|
|
||||||
String emergencyPhone = sysUser.getEmergencyPhone();
|
|
||||||
if(ObjectUtil.isNotEmpty(emergencyPhone)) {
|
|
||||||
sysUser.setEmergencyPhone(CommonCryptogramUtil.doSm4CbcDecrypt(emergencyPhone));
|
|
||||||
}
|
|
||||||
return JSONUtil.parseObj(sysUser);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -96,6 +96,14 @@ 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
|
mybatis-plus.type-handlers-package=vip.xiaonuo.common.handler
|
||||||
|
|
||||||
|
#########################################
|
||||||
|
# easy-trans configuration
|
||||||
|
#########################################
|
||||||
|
easy-trans.is-enable-redis=true
|
||||||
|
easy-trans.is-enable-global=true
|
||||||
|
easy-trans.is-enable-tile=true
|
||||||
|
|
||||||
#########################################
|
#########################################
|
||||||
# sa-token configuration
|
# sa-token configuration
|
||||||
#########################################
|
#########################################
|
||||||
|
@ -104,6 +112,7 @@ sa-token.timeout=2592000
|
||||||
sa-token.activity-timeout=-1
|
sa-token.activity-timeout=-1
|
||||||
sa-token.is-concurrent=true
|
sa-token.is-concurrent=true
|
||||||
sa-token.is-share=false
|
sa-token.is-share=false
|
||||||
|
sa-token.max-login-count=-1
|
||||||
sa-token.token-style=random-32
|
sa-token.token-style=random-32
|
||||||
sa-token.is-log=false
|
sa-token.is-log=false
|
||||||
sa-token.is-print=false
|
sa-token.is-print=false
|
||||||
|
@ -119,13 +128,6 @@ 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
|
||||||
#########################################
|
#########################################
|
||||||
|
|
Loading…
Reference in New Issue