jinpengyong
2021-04-07 923510deed8c991823db60dbd430bf18d78b98cb
登陆用户信息返回修改,用户组查询修改
1 files renamed
5 files added
18 files modified
442 ■■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/GroupController.java 32 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/LoginController.java 3 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/MenuController.java 8 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/Organization.java 26 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/SysArea.java 43 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/User.java 9 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java 6 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/SysAreaMapper.java 16 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/UserMapper.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/pojo/bo/UserBO.java 6 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/OrganizationService.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/SysAreaService.java 16 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserGroupService.java 3 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserService.java 3 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java 171 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java 3 ●●●● patch | view | raw | blame | history
screen-api/src/main/resources/application-dev.yml 2 ●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/OrganizationMapper.xml 11 ●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/SysAreaMapper.xml 12 ●●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/UserMapper.xml 13 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/GroupController.java
@@ -6,6 +6,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -42,8 +43,8 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "addGroup", method = RequestMethod.POST)
    private ResultMessage addGroup(@RequestBody Group group, HttpServletRequest request) {
    @RequestMapping(value = "insert", method = RequestMethod.POST)
    private ResultMessage insert(@RequestBody Group group, HttpServletRequest request) {
        if (group.getGroupName().isEmpty()) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -64,8 +65,8 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "deleteGroup", method = RequestMethod.POST)
    public ResultMessage deleteGroup(@RequestBody Group group, HttpServletRequest request) {
    @RequestMapping(value = "delete", method = RequestMethod.POST)
    public ResultMessage delete(@RequestBody Group group, HttpServletRequest request) {
        if (group.getId() == null) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -88,8 +89,8 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "updateGroup", method = RequestMethod.POST)
    public ResultMessage updateUser(@RequestBody Group group, HttpServletRequest request) {
    @RequestMapping(value = "update", method = RequestMethod.POST)
    public ResultMessage update(@RequestBody Group group, HttpServletRequest request) {
        String token = request.getHeader("token");
        Map<String, Object> result = groupService.updateGroup(group, token);
        if (!result.isEmpty()) {
@@ -107,11 +108,12 @@
            @ApiImplicitParam(name = "page", value = "当前页", required = false, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "size", value = "每页条数", required = false, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "order", value = "排序字段", required = false, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "orderType", value = "排序类型,升序:0,降序:1", defaultValue = "0", required = false, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
            @ApiImplicitParam(name = "groupName", value = "组名模糊查询", required = false, paramType = "query", dataType = "String")
    })
    @RequestMapping(value = "selectGroups", method = RequestMethod.POST)
    public ResultMessage selectGroups(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
    @RequestMapping(value = "select", method = RequestMethod.POST)
    public ResultMessage select(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
        parameters.put("token", request.getHeader("token"));
        Page<Group> userPage = groupService.selectGroups(parameters);
        PageResult<Group> pageResult = new PageResult<>(
@@ -120,12 +122,22 @@
        return ResultMessage.ok(pageResult);
    }
    @ApiOperation(value = "获取用户所属组", notes = "获取用户所属组")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "get-group-ids", method = RequestMethod.GET)
    public ResultMessage getGroupIds(Integer userId){
        List<Integer> groupIds = userGroupService.getGroupIds(userId);
        return ResultMessage.ok(groupIds);
    }
    @ApiOperation(value = "用户分配组", notes = "用户分配组")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "allotGroups", method = RequestMethod.POST)
    public ResultMessage allotGroups(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
    @RequestMapping(value = "allot", method = RequestMethod.POST)
    public ResultMessage allot(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
        if (!parameters.containsKey("userId")) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
screen-api/src/main/java/com/moral/api/controller/LoginController.java
@@ -64,7 +64,8 @@
        String ip = WebUtils.getIpAddr(request);
        userLog.setIp(ip);
        userLog.setOperateId((Integer) userInfo.get("userId"));
        userLog.setOrganizationId((Integer) userInfo.get("organizationId"));
        Map<String, Object> organization = (Map<String, Object>) userInfo.get("organization");
        userLog.setOrganizationId((Integer) organization.get("id"));
        userLog.setContent(userInfo.get("account") + "登陆了");
        userLogService.save(userLog);
        return ResultMessage.ok(data);
screen-api/src/main/java/com/moral/api/controller/MenuController.java
@@ -38,8 +38,8 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "allotMenus", method = RequestMethod.POST)
    public ResultMessage allotMenus(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
    @RequestMapping(value = "allot", method = RequestMethod.POST)
    public ResultMessage allot(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
        if (!parameters.containsKey("groupId")) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -53,8 +53,8 @@
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
    })
    @RequestMapping(value = "selectGroups", method = RequestMethod.POST)
    public ResultMessage selectGroups(HttpServletRequest request) {
    @RequestMapping(value = "select", method = RequestMethod.POST)
    public ResultMessage select(HttpServletRequest request) {
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> result = menuService.selectMenusByOrgId((Integer) currentUserInfo.get("organizationId"));
screen-api/src/main/java/com/moral/api/entity/Organization.java
@@ -15,7 +15,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@@ -50,29 +50,39 @@
    private Integer provinceCode;
    /**
     * 省份名称
     */
    private String provinceName;
    /**
     * 城市代码
     */
    private Integer cityCode;
    /**
     * 县代码
     * 城市名称
     */
    private String cityName;
    /**
     * 区代码
     */
    private Integer areaCode;
    /**
     * 镇代码
     * 区名称
     */
    private Long townCode;
    private String areaName;
    /**
     * 街道代码
     * 地图定位级别码
     */
    private Long villageCode;
    private Integer locationLevelCode;
    /**
     * 地图定位级别 provincd_code city_code ......
     * 地图定位级别名称
     */
    private String locationLevel;
    private String locationLevelName;
    /**
     * 地址
screen-api/src/main/java/com/moral/api/entity/SysArea.java
New file
@@ -0,0 +1,43 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 * 系统区域表
 * </p>
 *
 * @author moral
 * @since 2021-04-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class SysArea extends Model<SysArea> {
    private static final long serialVersionUID = 1L;
    /**
     * 区域代码
     */
    private Integer areaCode;
    /**
     * 区域名称
     */
    private String areaName;
    /**
     * 父级代码
     */
    private Integer parentCode;
    @Override
    protected Serializable pkVal() {
        return this.areaCode;
    }
}
screen-api/src/main/java/com/moral/api/entity/User.java
@@ -4,6 +4,10 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import java.util.Date;
@@ -49,6 +53,7 @@
    /**
     * 密码
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;
    /**
@@ -79,16 +84,19 @@
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date expireTime;
    /**
@@ -96,6 +104,7 @@
     */
    private String isDelete;
    @Override
    protected Serializable pkVal() {
        return this.id;
screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
@@ -1,7 +1,5 @@
package com.moral.api.mapper;
import java.util.Map;
import com.moral.api.entity.Organization;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -11,10 +9,8 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-06
 */
public interface OrganizationMapper extends BaseMapper<Organization> {
    Map<String, Object> selectOrganizationById(int id);
}
screen-api/src/main/java/com/moral/api/mapper/SysAreaMapper.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.mapper;
import com.moral.api.entity.SysArea;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 系统区域表 Mapper 接口
 * </p>
 *
 * @author moral
 * @since 2021-04-07
 */
public interface SysAreaMapper extends BaseMapper<SysArea> {
}
screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
@@ -4,7 +4,7 @@
import com.moral.api.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moral.api.pojo.UserBO;
import com.moral.api.pojo.bo.UserBO;
/**
 * <p>
screen-api/src/main/java/com/moral/api/pojo/bo/UserBO.java
File was renamed from screen-api/src/main/java/com/moral/api/pojo/UserBO.java
@@ -1,4 +1,4 @@
package com.moral.api.pojo;
package com.moral.api.pojo.bo;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -16,10 +16,10 @@
@EqualsAndHashCode(callSuper = false)
public class UserBO extends User {
    @Transient
    private Organization organization;
    @Transient
    private List<Group> groups;
}
screen-api/src/main/java/com/moral/api/service/OrganizationService.java
@@ -9,7 +9,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-06
 */
public interface OrganizationService extends IService<Organization> {
screen-api/src/main/java/com/moral/api/service/SysAreaService.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.service;
import com.moral.api.entity.SysArea;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 系统区域表 服务类
 * </p>
 *
 * @author moral
 * @since 2021-04-07
 */
public interface SysAreaService extends IService<SysArea> {
}
screen-api/src/main/java/com/moral/api/service/UserGroupService.java
@@ -1,5 +1,6 @@
package com.moral.api.service;
import java.util.List;
import java.util.Map;
import com.moral.api.entity.UserGroup;
@@ -16,4 +17,6 @@
public interface UserGroupService extends IService<UserGroup> {
    void allotGroups(Map<String, Object> parameters, String token);
    List<Integer> getGroupIds(Integer userId);
}
screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -7,7 +7,8 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.pojo.UserBO;
import com.moral.api.pojo.bo.UserBO;
/**
 * <p>
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
@@ -1,28 +1,24 @@
package com.moral.api.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.Group;
import com.moral.api.entity.GroupMenu;
import com.moral.api.entity.User;
import com.moral.api.entity.UserGroup;
import com.moral.api.mapper.GroupMapper;
import com.moral.api.mapper.GroupMenuMapper;
import com.moral.api.mapper.UserGroupMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.service.GroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.RegexUtils;
import com.moral.util.ConvertUtils;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -110,6 +106,7 @@
        queryWrapper.eq("organization_id", organizationId)
                .eq("is_delete", Constants.NOT_DELETE);
        Object order = parameters.get("order");
        Object orderType = parameters.get("orderType");
        Object groupName = parameters.get("groupName");
        //模糊查询参数
        if (groupName != null) {
@@ -128,10 +125,15 @@
        int size = Integer.parseInt(parameters.get("size").toString());
        Page<Group> pageData = new Page<>(page, size);
        //排序参数,默认id升序
        if (order == null) {
            queryWrapper.orderByAsc("id");
        //排序参数,默认create_time降序
        if (order != null && orderType != null) {
            if (Constants.ORDER_ASC.equals(orderType)) {
                queryWrapper.orderByAsc(ConvertUtils.toLine(order.toString()));
            } else {
                queryWrapper.orderByDesc(ConvertUtils.toLine(order.toString()));
            }
        } else {
            queryWrapper.orderByAsc(order.toString(), "id");
            queryWrapper.orderByDesc("create_time");
        }
        groupMapper.selectPage(pageData, queryWrapper);
        return pageData;
screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -12,7 +12,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-06
 */
@Service
public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Organization> implements OrganizationService {
screen-api/src/main/java/com/moral/api/service/impl/SysAreaServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.service.impl;
import com.moral.api.entity.SysArea;
import com.moral.api.mapper.SysAreaMapper;
import com.moral.api.service.SysAreaService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 系统区域表 服务实现类
 * </p>
 *
 * @author moral
 * @since 2021-04-07
 */
@Service
public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysArea> implements SysAreaService {
}
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
@@ -4,6 +4,7 @@
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.moral.api.entity.UserGroup;
import com.moral.api.mapper.UserGroupMapper;
@@ -47,4 +48,16 @@
            }
        }
    }
    @Override
    public List<Integer> getGroupIds(Integer userId) {
        QueryWrapper<UserGroup> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId).eq("is_delete", Constants.NOT_DELETE);
        List<UserGroup> userGroups = userGroupMapper.selectList(queryWrapper);
        List<Integer> groupIds = new ArrayList<>();
        for (UserGroup userGroup : userGroups) {
            groupIds.add(userGroup.getGroupId());
        }
        return groupIds;
    }
}
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -9,32 +9,34 @@
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.Group;
import com.moral.api.entity.Menu;
import com.moral.api.entity.Organization;
import com.moral.api.entity.User;
import com.moral.api.entity.UserGroup;
import com.moral.api.mapper.MenuMapper;
import com.moral.api.mapper.UserGroupMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.pojo.UserBO;
import com.moral.api.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.RegexUtils;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.entity.Group;
import com.moral.api.entity.Menu;
import com.moral.api.entity.Organization;
import com.moral.api.entity.User;
import com.moral.api.entity.UserGroup;
import com.moral.api.mapper.MenuMapper;
import com.moral.api.mapper.UserGroupMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.pojo.bo.UserBO;
import com.moral.api.service.UserService;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.AESUtils;
import com.moral.util.ConvertUtils;
import com.moral.util.DateUtils;
import com.moral.util.MD5Utils;
import com.moral.util.RegexUtils;
import com.moral.util.TokenUtils;
/**
 * <p>
@@ -97,25 +99,39 @@
        }
        //封装用户信息
        Map<String, Object> userInfo = new LinkedHashMap<>();
        List<Map<String, Object>> groups = new ArrayList<>();
        for (Group group : userBo.getGroups()) {
            HashMap<String, Object> groupMap = new HashMap<>();
            groupMap.put("groupId", group.getId());
            groupMap.put("groupName", group.getGroupName());
            groups.add(groupMap);
        }
        Organization organization = userBo.getOrganization();
        //用户in西
        userInfo.put("userId", userBo.getId());
        userInfo.put("account", userBo.getAccount());
        userInfo.put("userName", userBo.getUserName());
        userInfo.put("expireTime", userBo.getExpireTime());
        userInfo.put("email", userBo.getEmail());
        userInfo.put("mobile", userBo.getMobile());
        userInfo.put("wechat", userBo.getWechat());
        userInfo.put("expireTime", DateUtils.dateToDateString(userBo.getExpireTime()));
        userInfo.put("isAdmin", userBo.getIsAdmin());
        userInfo.put("organizationId", userBo.getOrganizationId());
        userInfo.put("organizationName", organization.getName());
        userInfo.put("locationLevel", organization.getLocationLevel());
        //用户组织信息
        Organization organization = userBo.getOrganization();
        Map<String, Object> orgInfo = new LinkedHashMap<>();
        orgInfo.put("id", userBo.getOrganizationId());
        orgInfo.put("name", organization.getName());
        orgInfo.put("locationLevelCode", organization.getLocationLevelCode());
        orgInfo.put("expireTime", DateUtils.dateToDateString(organization.getExpireTime()));
        userInfo.put("organization", orgInfo);
        //用户组信息
        List<Map<String, Object>> groups = new ArrayList<>();
        for (Group group : userBo.getGroups()) {
            HashMap<String, Object> groupMap = new LinkedHashMap<>();
            groupMap.put("id", group.getId());
            groupMap.put("groupName", group.getGroupName());
            groups.add(groupMap);
        }
        userInfo.put("groups", groups);
        Map<String, Object> map = new HashMap<>();
        map.put("userId", userBo.getId());
        //用户菜单信息
        userInfo.putAll(getMenus(map));
        try {
            //生成token,并存入redis
@@ -156,7 +172,7 @@
            menuMap.put("name", o.getName());
            menuMap.put("url", o.getUrl());
            menuMap.put("icon", o.getIcon());
            menuMap.put("menus", getMenusByRecursion(o, allMenus));
            menuMap.put("child", getMenusByRecursion(o, allMenus));
            newList.add(menuMap);
        });
        resultMap.put("menus", newList);
@@ -181,7 +197,7 @@
                menuMap.put("url", o.getUrl());
                menuMap.put("icon", o.getIcon());
                //调用递归体
                menuMap.put("menus", getMenusByRecursion(o, menus));
                menuMap.put("child", getMenusByRecursion(o, menus));
                list.add(menuMap);
            });
        }
@@ -217,7 +233,7 @@
        //正则校验密码
        String password = user.getPassword();
        //密码解密
        //password = AESUtils.decrypt(password, AESKey);
        password = AESUtils.decrypt(password, AESKey);
        if (!RegexUtils.checkPassword(password)) {
            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
@@ -231,14 +247,20 @@
        }
        //密码加密
        user.setPassword(MD5Utils.saltMD5(password));
        user.setOrganizationId((int) currentUserInfo.get("organizationId"));
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        user.setOrganizationId(orgId);
        user.setIsAdmin(false);
        //新增账户的过期时间
        Date userExpireTime = user.getExpireTime();
        //当前账户的过期时间
        Date currentUserExpireTime = (Date) currentUserInfo.get("expireTime");
        if (userExpireTime == null || userExpireTime.getTime() > currentUserExpireTime.getTime()) {
            user.setExpireTime(currentUserExpireTime);
        //当前组织的过期时间
        Date orgExpireTime = DateUtils.getDate((String) orgInfo.get("expireTime"), DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
        if (userExpireTime != null) {
            if (orgExpireTime != null && userExpireTime.getTime() > orgExpireTime.getTime()) {
                user.setExpireTime(orgExpireTime);
            } else {
                user.setExpireTime(userExpireTime);
            }
        }
        userMapper.insert(user);
        return result;
@@ -267,33 +289,20 @@
    public Map<String, Object> updateUser(User user, String token) {
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ne("id", user.getId())
                .eq("account", user.getAccount())
                .eq("is_delete", Constants.NOT_DELETE);
        //校验账户名是否重复
        if (userMapper.selectOne(queryWrapper) != null) {
            result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode());
            result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
            return result;
        }
        //正则校验账户
        if (!RegexUtils.checkAccount(user.getAccount())) {
            result.put("code", ResponseCodeEnum.ACCOUNT_INVALID.getCode());
            result.put("msg", ResponseCodeEnum.ACCOUNT_INVALID.getMsg());
            return result;
        }
        //正则校验账户
        String account = userMapper.selectById(user.getId()).getAccount();
        //account不可修改
        user.setAccount(account);
        //邮箱校验
        if (user.getEmail() != null && !RegexUtils.checkEmail(user.getEmail())) {
            result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode());
            result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg());
            return result;
        }
        //正则校验密码
        //密码校验
        String password = user.getPassword();
        //密码解密
        //password = AESUtils.decrypt(password, AESKey);
        password = AESUtils.decrypt(password, AESKey);
        if (!RegexUtils.checkPassword(password)) {
            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
@@ -308,20 +317,26 @@
        }
        //密码MD5加密
        user.setPassword(MD5Utils.saltMD5(password));
        user.setOrganizationId((int) currentUserInfo.get("organizationId"));
        //组织信息
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        user.setOrganizationId((int) orgInfo.get("id"));
        user.setIsAdmin(false);
        //所修改账户的过期时间
        Date userExpireTime = user.getExpireTime();
        //当前账户的过期时间
        Date currentUserExpireTime = (Date) currentUserInfo.get("expireTime");
        if (userExpireTime == null || userExpireTime.getTime() > currentUserExpireTime.getTime()) {
            user.setExpireTime(currentUserExpireTime);
        //当前组织的过期时间
        Date orgExpireTime = DateUtils.getDate((String) orgInfo.get("expireTime"), DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
        if (userExpireTime != null) {
            if (orgExpireTime != null && userExpireTime.getTime() > orgExpireTime.getTime()) {
                user.setExpireTime(orgExpireTime);
            } else {
                user.setExpireTime(userExpireTime);
            }
        }
        //更新redis
        String userId = user.getId().toString();
        if (TokenUtils.hHasKey(userId)) {
            String deleterToken = TokenUtils.hget(userId).toString();
            TokenUtils.destoryToken(userId, deleterToken);
            String deleteToken = TokenUtils.hget(userId).toString();
            TokenUtils.destoryToken(userId, deleteToken);
        }
        userMapper.updateById(user);
        return result;
@@ -330,11 +345,12 @@
    @Override
    public Page<User> selectUsers(Map<String, Object> parameters) {
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(parameters.get("token").toString());
        Object organizationId = currentUserInfo.get("organizationId");
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("organization_id", organizationId)
        queryWrapper.eq("organization_id", orgInfo.get("id"))
                .eq("is_delete", Constants.NOT_DELETE);
        Object order = parameters.get("order");
        Object orderType = parameters.get("orderType");
        Object account = parameters.get("account");
        Object userName = parameters.get("userName");
        Object mobile = parameters.get("mobile");
@@ -360,13 +376,18 @@
        Integer page = (Integer) parameters.get("page");
        Integer size = (Integer) parameters.get("size");
        Page<User> pageData = new Page<>(page, size);
        //排序参数,默认id升序
        if (order == null) {
            queryWrapper.orderByAsc("id");
        //排序参数,默认create_time降序
        if (order != null && orderType != null) {
            if (Constants.ORDER_ASC.equals(orderType)) {
                queryWrapper.orderByAsc(ConvertUtils.toLine(order.toString()));
            } else {
                queryWrapper.orderByDesc(ConvertUtils.toLine(order.toString()));
            }
        } else {
            queryWrapper.orderByAsc(order.toString(), "id");
            queryWrapper.orderByDesc("create_time");
        }
        userMapper.selectPage(pageData, queryWrapper);
        return pageData;
    }
screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java
@@ -31,7 +31,8 @@
        UserLog userLog = new UserLog();
        userLog.setIp(WebUtils.getIpAddr(request));
        userLog.setOperateId((Integer) currentUserInfo.get("userId"));
        userLog.setOrganizationId((Integer) currentUserInfo.get("organizationId"));
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        userLog.setOrganizationId((Integer) orgInfo.get("id"));
        userLog.setContent(content);
        userLogService.save(userLog);
    }
screen-api/src/main/resources/application-dev.yml
@@ -57,7 +57,7 @@
    filters: stat
    type: com.alibaba.druid.pool.DruidDataSource
    max-wait: 60000
    url: jdbc:mysql://39.97.177.149:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
    url: jdbc:mysql://39.97.177.149:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: chenkaiyu111
    test-on-borrow: false
screen-api/src/main/resources/mapper/OrganizationMapper.xml
@@ -9,11 +9,13 @@
        <result column="admin_user_id" property="adminUserId"/>
        <result column="name" property="name"/>
        <result column="province_code" property="provinceCode"/>
        <result column="province_name" property="provinceName"/>
        <result column="city_code" property="cityCode"/>
        <result column="city_name" property="cityName"/>
        <result column="area_code" property="areaCode"/>
        <result column="town_code" property="townCode"/>
        <result column="village_code" property="villageCode"/>
        <result column="location_level" property="locationLevel"/>
        <result column="area_name" property="areaName"/>
        <result column="location_level_code" property="locationLevelCode"/>
        <result column="location_level_name" property="locationLevelName"/>
        <result column="address" property="address"/>
        <result column="phone" property="phone"/>
        <result column="email" property="email"/>
@@ -24,7 +26,4 @@
        <result column="is_delete" property="isDelete"/>
    </resultMap>
    <select id="selectOrganizationById" resultType="java.util.Map">
        SELECT * FROM organization WHERE id= #{orgId}
    </select>
</mapper>
screen-api/src/main/resources/mapper/SysAreaMapper.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.SysAreaMapper">
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="com.moral.api.entity.SysArea">
                    <id column="area_code" property="areaCode" />
                    <result column="area_name" property="areaName" />
                    <result column="parent_code" property="parentCode" />
        </resultMap>
</mapper>
screen-api/src/main/resources/mapper/UserMapper.xml
@@ -19,25 +19,26 @@
        <result column="is_delete" property="isDelete"/>
    </resultMap>
    <resultMap id="userInfoMap" type="com.moral.api.pojo.UserBO" extends="BaseResultMap">
    <resultMap id="userInfoMap" type="com.moral.api.pojo.bo.UserBO" extends="BaseResultMap">
        <!--用户组织-->
        <association property="organization" javaType="com.moral.api.entity.Organization">
            <result column="id" property="id" jdbcType="INTEGER"/>
            <result column="name" property="name" jdbcType="VARCHAR"/>
            <result column="location_level" property="locationLevel"/>
            <result column="location_level_code" property="locationLevelCode"/>
            <result column="org_expire_ime" property="expireTime"/>
        </association>
        <!--用户组-->
        <collection property="groups" ofType="com.moral.api.entity.Group" javaType="java.util.ArrayList">
            <id column="groupId" property="id" jdbcType="INTEGER"/>
            <id column="group_id" property="id" jdbcType="INTEGER"/>
            <result column="group_name" property="groupName" jdbcType="VARCHAR"/>
        </collection>
    </resultMap>
    <!--查询用户信息,包含组织,角色-->
    <select id="selectUserInfo" resultMap="userInfoMap">
        SELECT u.id, u.account, u.password, u.user_name, u.organization_id, u.expire_time, u.is_delete,u.is_Admin,
        o.name, o.location_level,
        a.id groupId , a.group_name
        SELECT u.id, u.account, u.password, u.user_name, u.email, u.mobile, u.wechat ,u.organization_id, u.expire_time, u.is_delete,u.is_Admin,
        o.name, o.location_level_code, o.expire_time org_expire_ime,
        a.id group_id , a.group_name
        FROM `user` u
        LEFT JOIN
            (SELECT ug.user_id,g.id,g.group_name FROM `user_group` ug ,`group` g WHERE ug.group_id=g.id   AND g.is_delete = 0