zhanghua
2023-03-23 7c13eb909a140c736a67555fabe60966f5d2c065
账号增加时间限制
8个文件已修改
192 ■■■■ 已修改文件
ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/mapper/user/UmsDepartManageMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/resources/mapper/user/UmsDepartManageMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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 = "用户类型")
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();
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);
}
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;
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>
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
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