1 files added
	
		
		25 files modified
	
	
 
	
	
	
	
	
	
	
	
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @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() | 
|---|
|  |  |  | 
|---|
|  |  |  | @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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | @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() | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 创建时间 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | * </p> | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author moral | 
|---|
|  |  |  | * @since 2021-03-09 | 
|---|
|  |  |  | * @since 2021-04-13 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | @EqualsAndHashCode(callSuper = false) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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地址 | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 操作时间 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Date createTime; | 
|---|
|  |  |  | private LocalDateTime createTime; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 菜单名 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @TableField(value = "`name`") | 
|---|
|  |  |  | private String name; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 同一级别菜单的顺序 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @TableField(value = "`order`") | 
|---|
|  |  |  | private Integer order; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | * </p> | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author moral | 
|---|
|  |  |  | * @since 2021-03-09 | 
|---|
|  |  |  | * @since 2021-04-13 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | @EqualsAndHashCode(callSuper = false) | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @TableId(value = "id", type = IdType.AUTO) | 
|---|
|  |  |  | private Integer id; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 操作类型 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private String type; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 操作描述 | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 操作时间 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | 
|---|
|  |  |  | private Date createTime; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | * </p> | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author moral | 
|---|
|  |  |  | * @since 2021-03-09 | 
|---|
|  |  |  | * @since 2021-04-13 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public interface ManageLogMapper extends BaseMapper<ManageLog> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | * </p> | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author moral | 
|---|
|  |  |  | * @since 2021-03-09 | 
|---|
|  |  |  | * @since 2021-04-13 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public interface ManageLogService extends IService<ManageLog> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public interface UserLogService extends IService<UserLog> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Page<UserLog> selectLogs(Map<String, Object> parameters); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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> | 
|---|
|  |  |  | 
|---|
|  |  |  | @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 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | //逻辑删除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"); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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<>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | * </p> | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author moral | 
|---|
|  |  |  | * @since 2021-03-09 | 
|---|
|  |  |  | * @since 2021-04-13 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class ManageLogServiceImpl extends ServiceImpl<ManageLogMapper, ManageLog> implements ManageLogService { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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> | 
|---|
|  |  |  | 
|---|
|  |  |  | @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 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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> | 
|---|
|  |  |  | 
|---|
|  |  |  | @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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | //日志 | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | //逻辑删除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<>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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")) | 
|---|
|  |  |  | 
|---|
|  |  |  | queryWrapper.orderByDesc("create_time"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | userMapper.selectPage(pageData, queryWrapper); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return pageData; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 通用查询映射结果 --> | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | 
|---|
|  |  |  | <!-- 通用查询映射结果 --> | 
|---|
|  |  |  | <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" /> | 
|---|