diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUserCertificate.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUserCertificate.java new file mode 100644 index 000000000..2aa2e9401 --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/entity/SysUserCertificate.java @@ -0,0 +1,81 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.entity; + +import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 用户证书实例类 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +@TableName("sys_user_certificate") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysUserCertificate extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "user_certificate_id", type = IdType.ASSIGN_ID) + @ChineseDescription("主键") + private Long userCertificateId; + + /** + * 用户id + */ + @TableField("user_id") + @ChineseDescription("用户id") + private Long userId; + + /** + * 证书类型,取字典id + */ + @TableField("certificate_type") + @ChineseDescription("证书类型,取字典id") + private Long certificateType; + + /** + * 证书编号 + */ + @TableField("certificate_no") + @ChineseDescription("证书编号") + private String certificateNo; + + /** + * 发证机构名称 + */ + @TableField("issuing_authority") + @ChineseDescription("发证机构名称") + private String issuingAuthority; + + /** + * 证书发证日期 + */ + @TableField("date_issued") + @ChineseDescription("证书发证日期") + private Date dateIssued; + + /** + * 证书到期日期,如果为空,则为长期 + */ + @TableField("date_expires") + @ChineseDescription("证书到期日期,如果为空,则为长期") + private Date dateExpires; + + /** + * 是否删除:Y-删除,N-未删除 + */ + @TableField("del_flag") + @ChineseDescription("是否删除:Y-删除,N-未删除") + private String delFlag; + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserCertificateExceptionEnum.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserCertificateExceptionEnum.java new file mode 100644 index 000000000..21d98047d --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserCertificateExceptionEnum.java @@ -0,0 +1,36 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.enums; + +import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; +import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum; +import lombok.Getter; + +/** + * 用户证书异常相关枚举 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +@Getter +public enum SysUserCertificateExceptionEnum implements AbstractExceptionEnum { + + /** + * 查询结果不存在 + */ + SYS_USER_CERTIFICATE_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"); + + /** + * 错误编码 + */ + private final String errorCode; + + /** + * 提示用户信息 + */ + private final String userTip; + + SysUserCertificateExceptionEnum(String errorCode, String userTip) { + this.errorCode = errorCode; + this.userTip = userTip; + } + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/mapper/SysUserCertificateMapper.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/mapper/SysUserCertificateMapper.java new file mode 100644 index 000000000..62c91e23e --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/mapper/SysUserCertificateMapper.java @@ -0,0 +1,28 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.mapper; + +import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserCertificate; +import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserCertificateRequest; +import cn.stylefeng.roses.kernel.sys.modular.user.pojo.response.SysUserCertificateVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户证书 Mapper 接口 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +public interface SysUserCertificateMapper extends BaseMapper { + + /** + * 获取自定义查询列表 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + List customFindList(@Param("page") Page page, @Param("param")SysUserCertificateRequest request); + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/mapper/mapping/SysUserCertificateMapper.xml b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/mapper/mapping/SysUserCertificateMapper.xml new file mode 100644 index 000000000..9f382d523 --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/mapper/mapping/SysUserCertificateMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + user_certificate_id,user_id,certificate_type,certificate_no,issuing_authority,date_issued,date_expires,create_time,create_user,update_time,update_user,del_flag + + + + + + + + diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserCertificateRequest.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserCertificateRequest.java new file mode 100644 index 000000000..9bfe4c37b --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserCertificateRequest.java @@ -0,0 +1,82 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.pojo.request; + +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 用户证书封装类 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysUserCertificateRequest extends BaseRequest { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = {edit.class, delete.class}) + @ChineseDescription("主键") + private Long userCertificateId; + + /** + * 用户id + */ + @NotNull(message = "用户id不能为空", groups = {add.class, edit.class}) + @ChineseDescription("用户id") + private Long userId; + + /** + * 证书类型,取字典id + */ + @NotNull(message = "证书类型,取字典id不能为空", groups = {add.class, edit.class}) + @ChineseDescription("证书类型,取字典id") + private Long certificateType; + + /** + * 证书编号 + */ + @ChineseDescription("证书编号") + private String certificateNo; + + /** + * 发证机构名称 + */ + @ChineseDescription("发证机构名称") + private String issuingAuthority; + + /** + * 证书发证日期 + */ + @ChineseDescription("证书发证日期") + private String dateIssued; + + /** + * 证书到期日期,如果为空,则为长期 + */ + @ChineseDescription("证书到期日期,如果为空,则为长期") + private String dateExpires; + + /** + * 是否删除:Y-删除,N-未删除 + */ + @NotBlank(message = "是否删除:Y-删除,N-未删除不能为空", groups = {add.class, edit.class}) + @ChineseDescription("是否删除:Y-删除,N-未删除") + private String delFlag; + + + /** + * 批量删除用的id集合 + */ + @NotNull(message = "批量删除id集合不能为空", groups = batchDelete.class) + @ChineseDescription("批量删除用的id集合") + private List batchDeleteIdList; + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/response/SysUserCertificateVo.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/response/SysUserCertificateVo.java new file mode 100644 index 000000000..c356f1b88 --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/response/SysUserCertificateVo.java @@ -0,0 +1,17 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.pojo.response; + +import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserCertificate; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户证书返回值封装 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysUserCertificateVo extends SysUserCertificate { + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserCertificateService.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserCertificateService.java new file mode 100644 index 000000000..4ae7425cb --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserCertificateService.java @@ -0,0 +1,83 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.service; + +import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserCertificate; +import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserCertificateRequest; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 用户证书服务类 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +public interface SysUserCertificateService extends IService { + + /** + * 新增用户证书 + * + * @param sysUserCertificateRequest 请求参数 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + void add(SysUserCertificateRequest sysUserCertificateRequest); + + /** + * 删除用户证书 + * + * @param sysUserCertificateRequest 请求参数 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + void del(SysUserCertificateRequest sysUserCertificateRequest); + + /** + * 批量删除用户证书 + * + * @param sysUserCertificateRequest 请求参数 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + void batchDelete(SysUserCertificateRequest sysUserCertificateRequest); + + /** + * 编辑用户证书 + * + * @param sysUserCertificateRequest 请求参数 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + void edit(SysUserCertificateRequest sysUserCertificateRequest); + + /** + * 查询详情用户证书 + * + * @param sysUserCertificateRequest 请求参数 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + SysUserCertificate detail(SysUserCertificateRequest sysUserCertificateRequest); + + /** + * 获取用户证书列表 + * + * @param sysUserCertificateRequest 请求参数 + * @return List 返回结果 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + List findList(SysUserCertificateRequest sysUserCertificateRequest); + + /** + * 获取用户证书分页列表 + * + * @param sysUserCertificateRequest 请求参数 + * @return PageResult 返回结果 + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + PageResult findPage(SysUserCertificateRequest sysUserCertificateRequest); + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserCertificateServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserCertificateServiceImpl.java new file mode 100644 index 000000000..e187d1393 --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserCertificateServiceImpl.java @@ -0,0 +1,119 @@ +package cn.stylefeng.roses.kernel.sys.modular.user.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; +import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; +import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUserCertificate; +import cn.stylefeng.roses.kernel.sys.modular.user.enums.SysUserCertificateExceptionEnum; +import cn.stylefeng.roses.kernel.sys.modular.user.mapper.SysUserCertificateMapper; +import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserCertificateRequest; +import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserCertificateService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 用户证书业务实现层 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ +@Service +public class SysUserCertificateServiceImpl extends ServiceImpl implements SysUserCertificateService { + + @Override + public void add(SysUserCertificateRequest sysUserCertificateRequest) { + SysUserCertificate sysUserCertificate = new SysUserCertificate(); + BeanUtil.copyProperties(sysUserCertificateRequest, sysUserCertificate); + this.save(sysUserCertificate); + } + + @Override + public void del(SysUserCertificateRequest sysUserCertificateRequest) { + SysUserCertificate sysUserCertificate = this.querySysUserCertificate(sysUserCertificateRequest); + this.removeById(sysUserCertificate.getUserCertificateId()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchDelete(SysUserCertificateRequest sysUserCertificateRequest) { + this.removeByIds(sysUserCertificateRequest.getBatchDeleteIdList()); + } + + @Override + public void edit(SysUserCertificateRequest sysUserCertificateRequest) { + SysUserCertificate sysUserCertificate = this.querySysUserCertificate(sysUserCertificateRequest); + BeanUtil.copyProperties(sysUserCertificateRequest, sysUserCertificate); + this.updateById(sysUserCertificate); + } + + @Override + public SysUserCertificate detail(SysUserCertificateRequest sysUserCertificateRequest) { + return this.querySysUserCertificate(sysUserCertificateRequest); + } + + @Override + public PageResult findPage(SysUserCertificateRequest sysUserCertificateRequest) { + LambdaQueryWrapper wrapper = createWrapper(sysUserCertificateRequest); + Page pageList = this.page(PageFactory.defaultPage(), wrapper); + return PageResultFactory.createPageResult(pageList); + } + + @Override + public List findList(SysUserCertificateRequest sysUserCertificateRequest) { + LambdaQueryWrapper wrapper = this.createWrapper(sysUserCertificateRequest); + return this.list(wrapper); + } + + /** + * 获取信息 + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + private SysUserCertificate querySysUserCertificate(SysUserCertificateRequest sysUserCertificateRequest) { + SysUserCertificate sysUserCertificate = this.getById(sysUserCertificateRequest.getUserCertificateId()); + if (ObjectUtil.isEmpty(sysUserCertificate)) { + throw new ServiceException(SysUserCertificateExceptionEnum.SYS_USER_CERTIFICATE_NOT_EXISTED); + } + return sysUserCertificate; + } + + /** + * 创建查询wrapper + * + * @author fengshuonan + * @since 2023/11/09 22:44 + */ + private LambdaQueryWrapper createWrapper(SysUserCertificateRequest sysUserCertificateRequest) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + Long userCertificateId = sysUserCertificateRequest.getUserCertificateId(); + Long userId = sysUserCertificateRequest.getUserId(); + Long certificateType = sysUserCertificateRequest.getCertificateType(); + String certificateNo = sysUserCertificateRequest.getCertificateNo(); + String issuingAuthority = sysUserCertificateRequest.getIssuingAuthority(); + String dateIssued = sysUserCertificateRequest.getDateIssued(); + String dateExpires = sysUserCertificateRequest.getDateExpires(); + String delFlag = sysUserCertificateRequest.getDelFlag(); + + queryWrapper.eq(ObjectUtil.isNotNull(userCertificateId), SysUserCertificate::getUserCertificateId, userCertificateId); + queryWrapper.eq(ObjectUtil.isNotNull(userId), SysUserCertificate::getUserId, userId); + queryWrapper.eq(ObjectUtil.isNotNull(certificateType), SysUserCertificate::getCertificateType, certificateType); + queryWrapper.like(ObjectUtil.isNotEmpty(certificateNo), SysUserCertificate::getCertificateNo, certificateNo); + queryWrapper.like(ObjectUtil.isNotEmpty(issuingAuthority), SysUserCertificate::getIssuingAuthority, issuingAuthority); + queryWrapper.eq(ObjectUtil.isNotNull(dateIssued), SysUserCertificate::getDateIssued, dateIssued); + queryWrapper.eq(ObjectUtil.isNotNull(dateExpires), SysUserCertificate::getDateExpires, dateExpires); + queryWrapper.like(ObjectUtil.isNotEmpty(delFlag), SysUserCertificate::getDelFlag, delFlag); + + return queryWrapper; + } + +}