From 7c13eb909a140c736a67555fabe60966f5d2c065 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期四, 23 三月 2023 17:51:36 +0800 Subject: [PATCH] 账号增加时间限制 --- ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 80 ++++++++++++++----- ycl-platform/src/main/resources/application-dev.yml | 2 ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java | 6 + ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml | 82 +++++++++++++++++--- ycl-common/src/main/resources/mapper/user/UmsDepartManageMapper.xml | 5 + ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java | 9 + ycl-common/src/main/java/com/ycl/mapper/user/UmsDepartManageMapper.java | 1 ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java | 7 + 8 files changed, 154 insertions(+), 38 deletions(-) diff --git a/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java b/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java index ee93ad6..a386288 100644 --- a/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java +++ b/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java @@ -13,6 +13,8 @@ @Getter @Setter public class UmsAdminParam { + @ApiModelProperty(value = "鐢ㄦ埛鍚�", required = false) + private Long id; @NotBlank(message = "鐢ㄦ埛鍚嶄笉鑳戒负绌�") @ApiModelProperty(value = "鐢ㄦ埛鍚�", required = true) private String username; @@ -36,11 +38,11 @@ @ApiModelProperty(value = "澶囨敞") private String note; - @ApiModelProperty(value = "鏄惁鍏氬憳,0:鍚︼紝1锛氭槸",example = "0") + @ApiModelProperty(value = "鏄惁鍏氬憳,0:鍚︼紝1锛氭槸", example = "0") @NotNull(message = "鍏氬憳鏈�夋嫨") private byte isDy; - @ApiModelProperty(value = "鎬у埆,0:濂筹紝1锛氱敺",example = "0") + @ApiModelProperty(value = "鎬у埆,0:濂筹紝1锛氱敺", example = "0") @NotNull(message = "鎬у埆鏈�夋嫨") private byte sex; @@ -76,4 +78,7 @@ @ApiModelProperty(value = "ip鍦板潃") private String ipAddress; + + @ApiModelProperty(value = "鏈夋晥澶╂暟") + private Integer days; } diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java index dff07d7..47eda99 100644 --- a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java +++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; import com.ycl.entity.depart.UmsDepart; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -58,6 +60,10 @@ @ApiModelProperty(value = "鏈�鍚庣櫥褰曟椂闂�") private Date loginTime; + @ApiModelProperty(value = "璐﹀彿鏈夋晥鏈�") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date expirationDate; + @ApiModelProperty(value = "甯愬彿鍚敤鐘舵�侊細0->绂佺敤锛�1->鍚敤") private Integer status; @@ -79,7 +85,6 @@ @ApiModelProperty(value = "閮ㄩ棬鍚嶇О") @TableField(exist = false) private String departName; - @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷") diff --git a/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java b/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java index 0950b22..6ef35af 100644 --- a/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java +++ b/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java @@ -22,7 +22,11 @@ */ List<Long> getAdminIdList(@Param("resourceId") Long resourceId); - Page<UmsAdmin> selectCondPage(Page<UmsAdmin> page,UmsAdmin umsAdmin); + Page<UmsAdmin> selectCondPage(Page<UmsAdmin> page, UmsAdmin umsAdmin); + + Long selectCondTotal(@Param("umsAdmin") UmsAdmin umsAdmin); + + List<UmsAdmin> selectCondList(@Param("umsAdmin") UmsAdmin umsAdmin, @Param("offset") Integer offset, @Param("size") Integer size); List<UmsAdmin> selectToExp(); diff --git a/ycl-common/src/main/java/com/ycl/mapper/user/UmsDepartManageMapper.java b/ycl-common/src/main/java/com/ycl/mapper/user/UmsDepartManageMapper.java index 7c8bffa..c26637d 100644 --- a/ycl-common/src/main/java/com/ycl/mapper/user/UmsDepartManageMapper.java +++ b/ycl-common/src/main/java/com/ycl/mapper/user/UmsDepartManageMapper.java @@ -18,6 +18,7 @@ public interface UmsDepartManageMapper extends BaseMapper<UmsDepartManage> { void deletedByDepartId(@Param("departId") long departId); + void deletedByUserId(@Param("userId") long userId); List<UmsDepartManage> selectPageByUserId(@Param("userId") long userId, @Param("current") int current, @Param("pageSize") int pageSize); } diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java index d96a0ed..c8235e2 100644 --- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java +++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java @@ -1,9 +1,13 @@ package com.ycl.service.user.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.druid.sql.PagerUtils; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.bo.AdminUserDetails; @@ -45,9 +49,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -85,8 +87,9 @@ @Override public UmsAdmin getAdminByUsername(String username) { - UmsAdmin admin = getCacheService().getAdmin(username); - if (admin != null) return admin; + // UmsAdmin admin = getCacheService().getAdmin(username); + // if (admin != null) return admin; + UmsAdmin admin = null; QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(UmsAdmin::getUsername, username); List<UmsAdmin> adminList = list(wrapper); @@ -109,6 +112,9 @@ //鏌ヨ鏄惁鏈夌浉鍚岀敤鎴峰悕鐨勭敤鎴� QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername()); + if (umsAdmin.getId() != null) { + wrapper.lambda().ne(UmsAdmin::getId, umsAdmin.getId()); + } List<UmsAdmin> umsAdminList = list(wrapper); if (umsAdminList.size() > 0) { return null; @@ -116,15 +122,35 @@ //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣� String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); - if ( !umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { + if (umsAdmin.getId() == null && !umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { Asserts.fail("瀵嗙爜闀垮害8鍒�16浣嶄笖瀵嗙爜涓殑瀛楃蹇呴』鍖呭惈瀛楁瘝锛堝ぇ鍐欐垨鑰呭皬鍐欙級鍜屽繀椤诲寘鍚暟瀛楋紝涓嶈兘鍖呭惈绌烘牸"); } - if(umsAdmin.getUsername().equals(umsAdmin.getPassword())){ - Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�"); + if (umsAdmin.getUsername().equals(umsAdmin.getPassword())) { + Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�"); } umsAdmin.setPassword(encodePassword); - baseMapper.insert(umsAdmin); + if (umsAdminParam.getDays() != null) { + Date date = new Date(); + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + // 鎶婃棩鏈熷線鍚庡鍔犱竴澶�,鏁存暟 寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔� + calendar.add(Calendar.DATE, umsAdminParam.getDays()); + // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉 + date = calendar.getTime(); + umsAdmin.setExpirationDate(date); + } else { + umsAdmin.setExpirationDate(new Date("2200-01-01")); + } + if (umsAdmin.getId() != null) { + baseMapper.updateById(umsAdmin); + } else { + baseMapper.insert(umsAdmin); + } + LambdaQueryWrapper<UmsAdminRoleRelation> deleteWrapper = new QueryWrapper<UmsAdminRoleRelation>().lambda() + .eq(UmsAdminRoleRelation::getAdminId, umsAdmin.getId()); + + umsAdminRoleRelationService.remove(deleteWrapper); //娣诲姞瑙掕壊鎺堟潈 List<Long> ids = umsAdminParam.getRoleIds(); if (!ids.isEmpty()) { @@ -138,6 +164,8 @@ umsAdminRoleRelationService.saveBatch(roleIds); } + umsDepartManageMapper.deletedByDepartId(umsAdmin.getId()); + //娣诲姞閮ㄩ棬 UmsDepartManage departManage = new UmsDepartManage(); departManage.setUserId(umsAdmin.getId()); @@ -146,7 +174,7 @@ departManage.setUpdateTime(new Date()); umsDepartManageMapper.insert(departManage); - baseMapper.updateById(umsAdmin); + // baseMapper.updateById(umsAdmin); return umsAdmin; } @@ -167,10 +195,10 @@ //灏嗗瘑鐮佽繘琛屽姞瀵嗘搷浣� String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); - if ( !umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { + if (!umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { Asserts.fail("瀵嗙爜闀垮害8鍒�16浣嶄笖瀵嗙爜涓殑瀛楃蹇呴』鍖呭惈瀛楁瘝锛堝ぇ鍐欐垨鑰呭皬鍐欙級鍜屽繀椤诲寘鍚暟瀛楋紝涓嶈兘鍖呭惈绌烘牸"); } - if(umsAdmin.getUsername().equals(umsAdmin.getPassword())){ + if (umsAdmin.getUsername().equals(umsAdmin.getPassword())) { Asserts.fail("瀵嗙爜涓嶈兘鍜岀櫥褰曞悕瀹屽叏涓�鑷�"); } umsAdmin.setPassword(encodePassword); @@ -236,6 +264,7 @@ if (!userDetails.isEnabled()) { Asserts.fail("甯愬彿宸茶绂佺敤"); } + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); //鏍规嵁鐢ㄦ埛id锛岀敤鎴峰鍚� @@ -369,7 +398,7 @@ && !param.getNewPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { return -1; } - if(param.getUsername().equals(param.getNewPassword())){ + if (param.getUsername().equals(param.getNewPassword())) { return -4; } QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); @@ -393,6 +422,11 @@ //鑾峰彇鐢ㄦ埛淇℃伅 UmsAdmin admin = getAdminByUsername(username); if (admin != null) { + if (admin.getExpirationDate() != null) { + if (!admin.getExpirationDate().after(new Date())) { + Asserts.fail("璐﹀彿宸茶繃鏈熻鑱旂郴绠$悊鍛�"); + } + } List<UmsMenu> resourceList = getResourceList(admin.getId()); return new AdminUserDetails(admin, resourceList); } @@ -432,9 +466,13 @@ if (pageUserVO.getJobTitle() != null && !("".equals(pageUserVO.getJobTitle()))) { umsAdmin.setJobTitle(pageUserVO.getJobTitle()); } - Page<UmsAdmin> page1 = baseMapper.selectCondPage(page, umsAdmin); - - return page1; + PageUtil.setFirstPageNo(1); + int offset = PageUtil.getStart(current, pageSize); + List<UmsAdmin> list = baseMapper.selectCondList(umsAdmin, offset, pageSize); + Long total = baseMapper.selectCondTotal(umsAdmin); + page.setRecords(list); + page.setTotal(total); + return page; } @Override @@ -456,7 +494,7 @@ roleStrBuffer.append(","); } }); - roleStrBuffer.deleteCharAt(roleStrBuffer.length()-1); + roleStrBuffer.deleteCharAt(roleStrBuffer.length() - 1); res1.setRoles(roleStrBuffer.toString()); StringBuffer departStrBuffer = new StringBuffer(); List<UmsDepart> departs = item.getDepart(); @@ -467,19 +505,19 @@ departStrBuffer.append(","); } }); - departStrBuffer.deleteCharAt(departStrBuffer.length()-1); + departStrBuffer.deleteCharAt(departStrBuffer.length() - 1); res1.setDepart(departStrBuffer.toString()); res1.setJobTitle(item.getJobTitle()); Date createTime = item.getCreateTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - if (createTime != null){ + if (createTime != null) { res1.setCreateTime(sdf.format(createTime)); } Integer status = item.getStatus(); - if (status.equals(1)){ + if (status.equals(1)) { res1.setStatus("鍚敤"); - }else { + } else { res1.setStatus("绂佺敤"); } return res1; diff --git a/ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml b/ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml index 77fdbc8..f422638 100644 --- a/ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml +++ b/ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml @@ -22,6 +22,7 @@ <result column="user_type" property="userType"/> <result column="zj" property="zj"/> <result column="mobile" property="mobile"/> + <result column="expiration_date" property="expirationDate"/> </resultMap> <resultMap type="com.ycl.entity.user.UmsAdmin" id="CondMapResultMap" extends="BaseResultMap"> <collection property="depart" javaType="ArrayList" ofType="com.ycl.entity.depart.UmsDepart"> @@ -35,15 +36,14 @@ <result column="depart_update_time" property="updateTime"/> <result column="is_deleted" property="isDeleted"/> </collection> - <collection property="roles" javaType="ArrayList" ofType="com.ycl.entity.user.UmsRole" column="id" - select="selectAdminRoles"> - <id column="role_id" property="id"/> - <result column="name" property="name"/> - <result column="description" property="description"/> - <result column="admin_count" property="adminCount"/> + <collection property="roles" javaType="ArrayList" ofType="com.ycl.entity.user.UmsRole"> + <result column="role_id" property="id"/> + <result column="role_name" property="name"/> + <result column="role_description" property="description"/> + <result column="role_admin_count" property="adminCount"/> <result column="role_create_time" property="createTime"/> <result column="role_status" property="status"/> - <result column="sort" property="sort"/> + <result column="role_sort" property="sort"/> </collection> </resultMap> @@ -65,11 +65,15 @@ ud.create_time depat_create_time, ud.update_time depat_update_time, ud.STATUS depart_status, - ud.is_deleted + ud.is_deleted, + r.id role_id, + r.`name` role_name FROM ums_admin ua LEFT JOIN ums_depart_manager udm ON ua.id = udm.user_id LEFT JOIN ums_depart ud ON udm.depart_id = ud.id + LEFT JOIN ums_admin_role_relation ar on ar.admin_id = ua.id + LEFT JOIN ums_role r on ar.role_id = r.id <where> <if test="umsAdmin.keyword !=null and umsAdmin.keyword !=''"> AND (ua.username LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%') @@ -100,6 +104,40 @@ where ua.id = #{id} </select> <select id="selectToExp" resultType="com.ycl.entity.user.UmsAdmin" resultMap="CondMapResultMap"> + SELECT ua.*, + ud.id depart_id, + ud.depart_name, + ud.depart_des, + ud.depart_type, + ud.parent_id, + ud.create_time depat_create_time, + ud.update_time depat_update_time, + ud.STATUS depart_status, + ud.is_deleted + FROM ums_admin ua + LEFT JOIN ums_depart_manager udm ON ua.id = udm.user_id + LEFT JOIN ums_depart ud ON udm.depart_id = ud.id + ORDER BY ua.id DESC + </select> + <select id="selectCondTotal" parameterType="com.ycl.entity.user.UmsAdmin" resultType="java.lang.Long"> + SELECT count(1) total + FROM + ums_admin ua + <where> + <if test="umsAdmin.keyword !=null and umsAdmin.keyword !=''"> + AND (ua.username LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%') + or ua.nick_name LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%') + or ua.mobile LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%')) + </if> + <if test="umsAdmin.userType !=null and umsAdmin.userType >=0 "> + AND ua.user_type = #{umsAdmin.userType} + </if> + <if test="umsAdmin.jobTitle !=null and umsAdmin.keyword !=''"> + AND ua.job_title = #{umsAdmin.jobTitle} + </if> + </where> + </select> + <select id="selectCondList" parameterType="com.ycl.entity.user.UmsAdmin" resultMap="CondMapResultMap"> SELECT ua.*, ud.id depart_id, @@ -110,12 +148,32 @@ ud.create_time depat_create_time, ud.update_time depat_update_time, ud.STATUS depart_status, - ud.is_deleted + ud.is_deleted, + r.id role_id, + r.`name` role_name FROM - ums_admin ua - LEFT JOIN ums_depart_manager udm ON ua.id = udm.user_id - LEFT JOIN ums_depart ud ON udm.depart_id = ud.id + (select * from ums_admin ua + <where> + <if test="umsAdmin.keyword !=null and umsAdmin.keyword !=''"> + AND (ua.username LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%') + or ua.nick_name LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%') + or ua.mobile LIKE concat('%',#{umsAdmin.keyword,jdbcType=VARCHAR},'%')) + </if> + <if test="umsAdmin.userType !=null and umsAdmin.userType >=0 "> + AND ua.user_type = #{umsAdmin.userType} + </if> + <if test="umsAdmin.jobTitle !=null and umsAdmin.keyword !=''"> + AND ua.job_title = #{umsAdmin.jobTitle} + </if> + </where> ORDER BY ua.id DESC + LIMIT #{offset}, #{size} ) as + ua + LEFT JOIN ums_depart_manager udm ON ua.id = udm.user_id + LEFT JOIN ums_depart ud ON udm.depart_id = ud.id + LEFT JOIN ums_admin_role_relation ar on ar.admin_id = ua.id + LEFT JOIN ums_role r on ar.role_id = r.id + </select> </mapper> diff --git a/ycl-common/src/main/resources/mapper/user/UmsDepartManageMapper.xml b/ycl-common/src/main/resources/mapper/user/UmsDepartManageMapper.xml index 932ebc0..b2c0b37 100644 --- a/ycl-common/src/main/resources/mapper/user/UmsDepartManageMapper.xml +++ b/ycl-common/src/main/resources/mapper/user/UmsDepartManageMapper.xml @@ -21,6 +21,11 @@ from ums_depart_manager where depart_id = #{departId} </delete> + <delete id="deletedByUserId"> + delete + from ums_depart_manager + where user_id = #{userId} + </delete> <select id="selectPageByUserId" resultMap="BaseResultMap"> select diff --git a/ycl-platform/src/main/resources/application-dev.yml b/ycl-platform/src/main/resources/application-dev.yml index f1691ac..5b41647 100644 --- a/ycl-platform/src/main/resources/application-dev.yml +++ b/ycl-platform/src/main/resources/application-dev.yml @@ -35,7 +35,7 @@ timeout: 0 datasource: - url: jdbc:mysql://42.193.1.25:3306/sccg0318?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false + url: jdbc:mysql://42.193.1.25:3306/sccg?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false username: root password: 321$YcYl@1970! type: com.alibaba.druid.pool.DruidDataSource -- Gitblit v1.8.0