jinpengyong
2021-04-14 f05a7d377838ba6b809329829aff058a8c455736
日志接口重构
1 files added
25 files modified
415 ■■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/GroupController.java 26 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/LogController.java 46 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/LoginController.java 5 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/MenuController.java 16 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/UserController.java 15 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/Group.java 4 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/GroupMenu.java 1 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/ManageLog.java 37 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/Menu.java 3 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/UserLog.java 10 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/GroupMenuService.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/GroupService.java 4 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/ManageLogService.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserGroupService.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserLogService.java 5 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserService.java 4 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java 41 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java 39 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java 40 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java 35 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java 46 ●●●●● 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/mapper/ManageLogMapper.xml 6 ●●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/UserLogMapper.xml 19 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/GroupController.java
@@ -22,8 +22,6 @@
import com.moral.api.entity.Group;
import com.moral.api.service.GroupService;
import com.moral.api.service.UserGroupService;
import com.moral.api.service.UserService;
import com.moral.api.utils.OperationLogUtils;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.util.PageResult;
@@ -40,21 +38,17 @@
    @Autowired
    private UserGroupService userGroupService;
    @Autowired
    private UserService userService;
    @ApiOperation(value = "添加组", notes = "添加组")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "insert", method = RequestMethod.POST)
    private ResultMessage insert(@RequestBody Group group, HttpServletRequest request) {
    private ResultMessage insert(@RequestBody Group group) {
        if (group.getGroupName().isEmpty()) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        String token = request.getHeader("token");
        Map<String, Object> result = groupService.addGroup(group, token);
        Map<String, Object> result = groupService.addGroup(group);
        if (!result.isEmpty()) {
            return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
        }
@@ -66,7 +60,7 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "delete", method = RequestMethod.POST)
    public ResultMessage delete(@RequestBody Group group, HttpServletRequest request) {
    public ResultMessage delete(@RequestBody Group group) {
        if (group.getId() == null) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -88,7 +82,7 @@
    @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);
        Map<String, Object> result = groupService.updateGroup(group);
        if (!result.isEmpty()) {
            return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
        }
@@ -105,8 +99,7 @@
            @ApiImplicitParam(name = "groupName", value = "组名模糊查询", required = false, paramType = "query", dataType = "String")
    })
    @RequestMapping(value = "select", method = RequestMethod.POST)
    public ResultMessage select(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
        parameters.put("token", request.getHeader("token"));
    public ResultMessage select(@RequestBody Map<String, Object> parameters) {
        Page<Group> userPage = groupService.selectGroups(parameters);
        PageResult<Group> pageResult = new PageResult<>(
                userPage.getTotal(), userPage.getPages(), userPage.getRecords()
@@ -129,17 +122,12 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "allot", method = RequestMethod.POST)
    public ResultMessage allot(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
    public ResultMessage allot(@RequestBody Map<String, Object> parameters) {
        if (!parameters.containsKey("userId")) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        String token = request.getHeader("token");
        userGroupService.allotGroups(parameters, token);
        String account = userService.getById((Integer) parameters.get("userId")).getAccount();
        String content = "给账户《" + account + "》分配了组";
        OperationLogUtils.insertLog(request, content);
        userGroupService.allotGroups(parameters);
        return ResultMessage.ok();
    }
}
screen-api/src/main/java/com/moral/api/controller/LogController.java
New file
@@ -0,0 +1,46 @@
package com.moral.api.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.UserLog;
import com.moral.api.service.UserLogService;
import com.moral.constant.ResultMessage;
import com.moral.util.PageResult;
@Slf4j
@RestController
@RequestMapping("/log")
@Api(tags = "日志")
public class LogController {
    @Autowired
    private UserLogService userLogService;
    @ApiOperation(value = "分页查询日志", notes = "分页查询日志")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "page", value = "当前页", required = false, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "size", value = "每页条数", required = false, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "type", value = "操作类型,0:登陆,1:添加,2:修改,3:删除", required = false, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "select", method = RequestMethod.POST)
    public ResultMessage select(@RequestBody Map<String, Object> parameters) {
        Page<UserLog> userLogPage = userLogService.selectLogs(parameters);
        PageResult pageResult = new PageResult<>(
                userLogPage.getTotal(), userLogPage.getPages(), userLogPage.getRecords()
        );
        return ResultMessage.ok(pageResult);
    }
}
screen-api/src/main/java/com/moral/api/controller/LoginController.java
@@ -42,12 +42,9 @@
    @Autowired
    private SysConfigService sysConfigService;
    @Autowired
    private UserLogService userLogService;
    @ApiOperation(value = "登陆", notes = "登陆")
    @RequestMapping(value = "login", method = RequestMethod.POST)
    public ResultMessage login(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
    public ResultMessage login(@RequestBody Map<String, Object> parameters) {
        if (!(parameters.containsKey("account") && parameters.containsKey("password"))) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
screen-api/src/main/java/com/moral/api/controller/MenuController.java
@@ -19,9 +19,7 @@
import com.moral.api.entity.Menu;
import com.moral.api.service.GroupMenuService;
import com.moral.api.service.GroupService;
import com.moral.api.service.MenuService;
import com.moral.api.utils.OperationLogUtils;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.util.TokenUtils;
@@ -38,25 +36,17 @@
    @Autowired
    private MenuService menuService;
    @Autowired
    private GroupService groupService;
    @ApiOperation(value = "组分配菜单", notes = "组分配菜单")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "allot", method = RequestMethod.POST)
    public ResultMessage allot(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
    public ResultMessage allot(@RequestBody Map<String, Object> parameters) {
        if (!parameters.containsKey("groupId")) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        String token = request.getHeader("token");
        groupMenuService.allotMenus(parameters, token);
        String groupName = groupService.getById((Integer) parameters.get("groupId")).getGroupName();
        String content = "给组<" + groupName + ">分配了菜单";
        OperationLogUtils.insertLog(request, content);
        groupMenuService.allotMenus(parameters);
        return ResultMessage.ok();
    }
@@ -91,7 +81,7 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "get-menu-ids", method = RequestMethod.GET)
    public ResultMessage getMenuIds(Integer groupId){
    public ResultMessage getMenuIds(Integer groupId) {
        List<Integer> menusIds = groupMenuService.getMenusIds(groupId);
        return ResultMessage.ok(menusIds);
    }
screen-api/src/main/java/com/moral/api/controller/UserController.java
@@ -39,13 +39,12 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "insert", method = RequestMethod.POST)
    public ResultMessage insert(@RequestBody User user, HttpServletRequest request) {
    public ResultMessage insert(@RequestBody User user) {
        if (user.getAccount().isEmpty() || user.getPassword().isEmpty()) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        String token = request.getHeader("token");
        Map<String, Object> result = userService.addUser(user, token);
        Map<String, Object> result = userService.addUser(user);
        if (!result.isEmpty()) {
            return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
        }
@@ -57,7 +56,7 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "delete", method = RequestMethod.POST)
    public ResultMessage delete(@RequestBody User user, HttpServletRequest request) {
    public ResultMessage delete(@RequestBody User user) {
        if (user.getId() == null) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -78,13 +77,12 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "update", method = RequestMethod.POST)
    public ResultMessage update(@RequestBody User user, HttpServletRequest request) {
    public ResultMessage update(@RequestBody User user) {
        if (user.getId() == null) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        String token = request.getHeader("token");
        Map<String, Object> result = userService.updateUser(user, token);
        Map<String, Object> result = userService.updateUser(user);
        if (!result.isEmpty()) {
            return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
        }
@@ -106,8 +104,7 @@
    })
    @RequestMapping(value = "select", method = RequestMethod.POST)
    public ResultMessage select(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
        parameters.put("token", request.getHeader("token"));
    public ResultMessage select(@RequestBody Map<String, Object> parameters) {
        Page<User> userPage = userService.selectUsers(parameters);
        PageResult<User> pageResult = new PageResult<>(
                userPage.getTotal(), userPage.getPages(), userPage.getRecords()
screen-api/src/main/java/com/moral/api/entity/Group.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
@@ -44,11 +46,13 @@
    /**
     * 创建时间
     */
    @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;
    /**
screen-api/src/main/java/com/moral/api/entity/GroupMenu.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
screen-api/src/main/java/com/moral/api/entity/ManageLog.java
@@ -3,8 +3,9 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,7 +16,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@@ -30,19 +31,29 @@
    private Integer id;
    /**
     * 操作人员id
     */
    private Integer accountId;
    /**
     * 操作人员账号
     */
    private String account;
    /**
     * 操作人员
     */
    private String userName;
    /**
     * 操作类型
     */
    private String type;
    /**
     * 操作描述
     */
    private String content;
    /**
     * 组织Id
     */
    private Integer organizationId;
    /**
     * 操作人员id
     */
    private Integer operateId;
    /**
     * Ip地址
@@ -52,7 +63,7 @@
    /**
     * 操作时间
     */
    private Date createTime;
    private LocalDateTime createTime;
    @Override
screen-api/src/main/java/com/moral/api/entity/Menu.java
@@ -1,6 +1,7 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
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;
@@ -34,6 +35,7 @@
    /**
     * 菜单名
     */
    @TableField(value = "`name`")
    private String name;
    /**
@@ -54,6 +56,7 @@
    /**
     * 同一级别菜单的顺序
     */
    @TableField(value = "`order`")
    private Integer order;
    /**
screen-api/src/main/java/com/moral/api/entity/UserLog.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
@@ -15,7 +17,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@@ -28,6 +30,11 @@
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 操作类型
     */
    private String type;
    /**
     * 操作描述
@@ -52,6 +59,7 @@
    /**
     * 操作时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
screen-api/src/main/java/com/moral/api/mapper/ManageLogMapper.java
@@ -9,7 +9,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-13
 */
public interface ManageLogMapper extends BaseMapper<ManageLog> {
screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
@@ -16,7 +16,7 @@
 */
public interface GroupMenuService extends IService<GroupMenu> {
    void allotMenus(Map<String, Object> parameters, String token);
    void allotMenus(Map<String, Object> parameters);
    List<Integer> getMenusIds(Integer groupId);
}
screen-api/src/main/java/com/moral/api/service/GroupService.java
@@ -18,11 +18,11 @@
 */
public interface GroupService extends IService<Group> {
    Map<String, Object> addGroup(Group group, String token);
    Map<String, Object> addGroup(Group group);
    void deleteGroup(Group group);
    Map<String, Object> updateGroup(Group group, String token);
    Map<String, Object> updateGroup(Group group);
    Page<Group> selectGroups(Map<String, Object> parameters);
screen-api/src/main/java/com/moral/api/service/ManageLogService.java
@@ -9,7 +9,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-13
 */
public interface ManageLogService extends IService<ManageLog> {
screen-api/src/main/java/com/moral/api/service/UserGroupService.java
@@ -16,7 +16,7 @@
 */
public interface UserGroupService extends IService<UserGroup> {
    void allotGroups(Map<String, Object> parameters, String token);
    void allotGroups(Map<String, Object> parameters);
    List<Integer> getGroupIds(Integer userId);
}
screen-api/src/main/java/com/moral/api/service/UserLogService.java
@@ -1,5 +1,8 @@
package com.moral.api.service;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.UserLog;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -13,4 +16,6 @@
 */
public interface UserLogService extends IService<UserLog> {
    Page<UserLog> selectLogs(Map<String, Object> parameters);
}
screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -24,11 +24,11 @@
    Map<String, Object> getMenus(Map<String, Object> parameters);
    Map<String, Object> addUser(User user, String token);
    Map<String, Object> addUser(User user);
    void deleteUser(User user);
    Map<String, Object> updateUser(User user, String token);
    Map<String, Object> updateUser(User user);
    Page<User> selectUsers(Map<String, Object> parameters);
screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
@@ -3,19 +3,27 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.moral.api.entity.GroupMenu;
import com.moral.api.mapper.GroupMapper;
import com.moral.api.mapper.GroupMenuMapper;
import com.moral.api.mapper.MenuMapper;
import com.moral.api.service.GroupMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.utils.OperationLogUtils;
import com.moral.constant.Constants;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
 * <p>
@@ -31,28 +39,43 @@
    @Autowired
    private GroupMenuMapper groupMenuMapper;
    @Autowired
    private GroupMapper groupMapper;
    @Autowired
    private MenuMapper menuMapper;
    @Override
    @Transactional
    public void allotMenus(Map<String, Object> parameters, String token) {
    public void allotMenus(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Integer groupId = Integer.parseInt(parameters.get("groupId").toString());
        List<Integer> menuIds = (ArrayList) parameters.get("menuIds");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        UpdateWrapper<GroupMenu> deleteWrapper = new UpdateWrapper<>();
        deleteWrapper.set("is_delete", Constants.DELETE)
                .eq("group_id", groupId)
                .eq("channel", Constants.WEB_CHANNEL);
        groupMenuMapper.update(null, deleteWrapper);
        deleteWrapper.eq("group_id", groupId).eq("channel", Constants.WEB_CHANNEL);
        groupMenuMapper.delete(deleteWrapper);
        List<String> menus = new ArrayList<>();
        if (menuIds != null && !menuIds.isEmpty()) {
            for (Integer menuId : menuIds) {
            menuIds.forEach(menuId -> {
                menus.add(menuMapper.selectById(menuId).getName());
                GroupMenu groupMenu = new GroupMenu();
                groupMenu.setGroupId(groupId);
                groupMenu.setMenuId(menuId);
                groupMenu.setChannel(Constants.WEB_CHANNEL);
                groupMenu.setOrganizationId((Integer) orgInfo.get("id"));
                groupMenuMapper.insert(groupMenu);
            }
            });
        }
        //日志
        String groupName = groupMapper.selectById((Integer) parameters.get("groupId")).getGroupName();
        String content = "给组:" + groupName + "分配了菜单:" + menus.toString();
        OperationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
    }
    @Override
@@ -61,9 +84,7 @@
        queryWrapper.eq("group_id", groupId).eq("is_delete", Constants.NOT_DELETE);
        List<GroupMenu> groupMenus = groupMenuMapper.selectList(queryWrapper);
        List<Integer> menuIds = new ArrayList<>();
        for (GroupMenu groupMenu : groupMenus) {
            menuIds.add(groupMenu.getMenuId());
        }
        groupMenus.forEach(groupMenu -> menuIds.add(groupMenu.getMenuId()));
        return menuIds;
    }
}
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
@@ -50,7 +50,10 @@
    private UserGroupMapper userGroupMapper;
    @Override
    public Map<String, Object> addGroup(Group group, String token) {
    public Map<String, Object> addGroup(Group group) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
@@ -66,10 +69,10 @@
        }
        group.setOrganizationId(orgId);
        groupMapper.insert(group);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "添加了组:" + group.getGroupName();
        OperationLogUtils.insertLog(request, content);
        OperationLogUtils.insertLog(request, content, Constants.INSERT_OPERATE_TYPE);
        return result;
    }
@@ -78,22 +81,26 @@
        //逻辑删除group
        group.setIsDelete(Constants.DELETE);
        groupMapper.updateById(group);
        //逻辑删除group_menu
        //删除group_menu
        UpdateWrapper<GroupMenu> deleteGroupWrapper = new UpdateWrapper<>();
        deleteGroupWrapper.set("is_delete", Constants.DELETE).eq("group_id", group.getId());
        groupMenuMapper.update(null, deleteGroupWrapper);
        //逻辑删除user_group
        deleteGroupWrapper.eq("group_id", group.getId());
        groupMenuMapper.delete(deleteGroupWrapper);
        //删除user_group
        UpdateWrapper<UserGroup> deleteUserGroupWrapper = new UpdateWrapper<>();
        deleteUserGroupWrapper.set("is_delete", Constants.DELETE).eq("group_id", group.getId());
        userGroupMapper.update(null, deleteUserGroupWrapper);
        deleteUserGroupWrapper.eq("group_id", group.getId());
        userGroupMapper.delete(deleteUserGroupWrapper);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "删除了组:" + group.getGroupName();
        OperationLogUtils.insertLog(request, content);
        OperationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
    }
    @Override
    public Map<String, Object> updateGroup(Group group, String token) {
    public Map<String, Object> updateGroup(Group group) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        String before = groupMapper.selectById(group.getId()).getGroupName();
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
@@ -111,15 +118,17 @@
        group.setOrganizationId(orgId);
        groupMapper.updateById(group);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "修改了组:" + group.getGroupName();
        OperationLogUtils.insertLog(request, content);
        String content = "修改了组:" + before + "=>" + group.getGroupName();
        OperationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
        return result;
    }
    @Override
    public Page<Group> selectGroups(Map<String, Object> parameters) {
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(parameters.get("token").toString());
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
screen-api/src/main/java/com/moral/api/service/impl/ManageLogServiceImpl.java
@@ -12,7 +12,7 @@
 * </p>
 *
 * @author moral
 * @since 2021-03-09
 * @since 2021-04-13
 */
@Service
public class ManageLogServiceImpl extends ServiceImpl<ManageLogMapper, ManageLog> implements ManageLogService {
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
@@ -3,19 +3,27 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
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.GroupMapper;
import com.moral.api.mapper.UserGroupMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.service.UserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.utils.OperationLogUtils;
import com.moral.constant.Constants;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
 * <p>
@@ -31,25 +39,41 @@
    @Autowired
    private UserGroupMapper userGroupMapper;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private GroupMapper groupMapper;
    @Override
    @Transactional
    public void allotGroups(Map<String, Object> parameters, String token) {
    public void allotGroups(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Integer userId = Integer.parseInt(parameters.get("userId").toString());
        List<Integer> groupIds = (ArrayList) parameters.get("groupIds");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>();
        deleteWrapper.set("is_delete", Constants.DELETE).eq("user_id", userId);
        userGroupMapper.update(null, deleteWrapper);
        if (!groupIds.isEmpty()) {
            for (Integer groupId : groupIds) {
        deleteWrapper.eq("user_id", userId);
        userGroupMapper.delete(deleteWrapper);
        List<String> groups = new ArrayList<>();
        if (groupIds != null && !groupIds.isEmpty()) {
            groupIds.forEach(groupId -> {
                groups.add(groupMapper.selectById(groupId).getGroupName());
                UserGroup userGroup = new UserGroup();
                userGroup.setUserId(userId);
                userGroup.setGroupId(groupId);
                userGroup.setOrganizationId((Integer) orgInfo.get("id"));
                userGroupMapper.insert(userGroup);
            }
            });
        }
        //日志
        String account = userMapper.selectById((Integer) parameters.get("userId")).getAccount();
        String content = "给用户:" + account + "分配了组:" + groups.toString();
        OperationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
    }
    @Override
@@ -58,9 +82,7 @@
        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());
        }
        userGroups.forEach(userGroup -> groupIds.add(userGroup.getGroupId()));
        return groupIds;
    }
}
screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java
@@ -1,10 +1,22 @@
package com.moral.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.UserLog;
import com.moral.api.mapper.UserLogMapper;
import com.moral.api.service.UserLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Map;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
/**
 * <p>
@@ -17,4 +29,27 @@
@Service
public class UserLogServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implements UserLogService {
    @Autowired
    private UserLogMapper userLogMapper;
    @Override
    public Page<UserLog> selectLogs(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Object orgId = orgInfo.get("id");
        QueryWrapper<UserLog> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("organization_id", orgId);
        Object type = parameters.get("type");
        if (type != null) {
            queryWrapper.eq("type", type);
        }
        queryWrapper.orderByDesc("create_time");
        Integer page = (Integer) parameters.get("page");
        Integer size = (Integer) parameters.get("size");
        Page<UserLog> userLogPage = new Page<>(page, size);
        userLogMapper.selectPage(userLogPage, queryWrapper);
        return userLogPage;
    }
}
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -1,5 +1,12 @@
package com.moral.api.service.impl;
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 org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
@@ -9,13 +16,6 @@
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
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 org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@@ -30,7 +30,6 @@
import com.moral.api.entity.Organization;
import com.moral.api.entity.User;
import com.moral.api.entity.UserGroup;
import com.moral.api.entity.UserLog;
import com.moral.api.mapper.MenuMapper;
import com.moral.api.mapper.UserGroupMapper;
@@ -163,6 +162,7 @@
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        UserLog userLog = new UserLog();
        userLog.setType(Constants.LOGIN_OPERTATE_TYPE);
        userLog.setIp(WebUtils.getIpAddr(request));
        userLog.setOperateId(userBo.getId());
        userLog.setOrganizationId(userBo.getOrganizationId());
@@ -229,7 +229,10 @@
    @Override
    @Transactional
    public Map<String, Object> addUser(User user, String token) {
    public Map<String, Object> addUser(User user) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
@@ -291,9 +294,8 @@
        }
        userMapper.insert(user);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "添加了用户:" + user.getAccount();
        OperationLogUtils.insertLog(request, content);
        OperationLogUtils.insertLog(request, content, Constants.INSERT_OPERATE_TYPE);
        return result;
    }
@@ -304,24 +306,27 @@
        //逻辑删除user
        user.setIsDelete(Constants.DELETE);
        userMapper.updateById(user);
        //逻辑删除user_group
        //删除user_group
        UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>();
        deleteWrapper.set("is_delete", Constants.DELETE).eq("user_id", userId);
        deleteWrapper.eq("user_id", userId);
        userGroupMapper.delete(deleteWrapper);
        //更新redis
        if (TokenUtils.hHasKey(userId)) {
            String token = TokenUtils.hget(userId).toString();
            TokenUtils.destoryToken(userId, token);
        }
        userGroupMapper.update(null, deleteWrapper);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "删除了用户:" + user.getAccount();
        OperationLogUtils.insertLog(request, content);
        OperationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
    }
    @Override
    @Transactional
    public Map<String, Object> updateUser(User user, String token) {
    public Map<String, Object> updateUser(User user) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        //更新的属性
        Map<String, Object> update = JSONObject.parseObject(JSON.toJSONString(user), Map.class);
        Map<String, Object> result = new HashMap<>();
@@ -386,7 +391,6 @@
        userMapper.updateById(user);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder("修改了用户:" + user.getAccount() + "->");
        for (String key : update.keySet()) {
            Object afterValue = update.get(key);
@@ -396,14 +400,17 @@
                content.append(key).append(":").append(beforeValue).append("=>").append(afterValue).append(";");
            }
        }
        OperationLogUtils.insertLog(request, content.toString());
        OperationLogUtils.insertLog(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
        return result;
    }
    @Override
    public Page<User> selectUsers(Map<String, Object> parameters) {
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(parameters.get("token").toString());
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("organization_id", orgInfo.get("id"))
@@ -446,7 +453,6 @@
            queryWrapper.orderByDesc("create_time");
        }
        userMapper.selectPage(pageData, queryWrapper);
        return pageData;
    }
screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java
@@ -25,10 +25,11 @@
        this.userLogService = userLogService;
    }
    public static void insertLog(HttpServletRequest request, String content) {
    public static void insertLog(HttpServletRequest request, String content, String type) {
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        UserLog userLog = new UserLog();
        userLog.setType(type);
        userLog.setIp(WebUtils.getIpAddr(request));
        userLog.setOperateId((Integer) currentUserInfo.get("userId"));
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
screen-api/src/main/resources/mapper/ManageLogMapper.xml
@@ -5,9 +5,11 @@
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="com.moral.api.entity.ManageLog">
                    <id column="id" property="id" />
                    <result column="account_id" property="accountId" />
                    <result column="account" property="account" />
                    <result column="user_name" property="userName" />
                    <result column="type" property="type" />
                    <result column="content" property="content" />
                    <result column="organization_id" property="organizationId" />
                    <result column="operate_id" property="operateId" />
                    <result column="ip" property="ip" />
                    <result column="create_time" property="createTime" />
        </resultMap>
screen-api/src/main/resources/mapper/UserLogMapper.xml
@@ -2,14 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.UserLogMapper">
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="com.moral.api.entity.UserLog">
                    <id column="id" property="id" />
                    <result column="content" property="content" />
                    <result column="organization_id" property="organizationId" />
                    <result column="operate_id" property="operateId" />
                    <result column="ip" property="ip" />
                    <result column="create_time" property="createTime" />
        </resultMap>
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.UserLog">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="content" property="content" />
        <result column="organization_id" property="organizationId" />
        <result column="operate_id" property="operateId" />
        <result column="ip" property="ip" />
        <result column="create_time" property="createTime" />
    </resultMap>
</mapper>