Commit c3daae30 by songzhenmin

feat:新增导出权限控制

parent a321a625
......@@ -5,6 +5,7 @@ import com.hs.admin.common.annotations.CurrentUser;
import com.hs.admin.common.annotations.Token;
import com.hs.admin.common.base.PageRequest;
import com.hs.admin.common.base.PageResult;
import com.hs.admin.model.SysDataMenu;
import com.hs.admin.model.SysRole;
import com.hs.admin.model.SysUser;
import com.hs.admin.model.reqmodel.AddUserReq;
......@@ -12,6 +13,7 @@ import com.hs.admin.model.reqmodel.UpdateUserReq;
import com.hs.admin.model.reqmodel.UserReq;
import com.hs.admin.model.respmodel.SysMenuList;
import com.hs.admin.model.respmodel.SysUserList;
import com.hs.admin.service.SysDataMenuService;
import com.hs.admin.service.SysMenuService;
import com.hs.admin.service.SysUserRoleRsService;
import com.hs.admin.service.UserService;
......@@ -24,8 +26,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
@Api(tags = "用户API", produces = "produces", consumes = "consumes", protocols = "protocols")
@RequestMapping("/user")
......@@ -37,6 +41,8 @@ public class UserController {
private SysUserRoleRsService sysUserRoleRsService;
@Autowired
private SysMenuService sysMenuService;
@Resource
private SysDataMenuService sysDataMenuService;
@PostMapping("all")
@Token
......@@ -141,4 +147,26 @@ public class UserController {
return Result.success(updateresult);
}
@PostMapping("getDataMenuList")
@Token
@ApiOperation("查询数据菜单列表")
public Object getDataMenuList(@RequestBody UserReq.UserDataMenuReq req) throws Exception {
Map<String, List<SysDataMenu>> listMap = sysDataMenuService.getDataMenuList(req.getUserId(), req.getRoleId(), req.getType());
return Result.success(listMap);
}
@PostMapping("addUserDataMenu")
@Token
@ApiOperation("添加数据菜单权限")
public Object saveUserDataMenurs(@RequestBody UserReq.UserDataMenuRsReq req) throws Exception {
sysDataMenuService.saveUserDataMenurs(req.getUserId(), req.getDataMenuIds());
return Result.success(true);
}
@PostMapping("initSysDataMenuRs")
@ApiOperation("初始化数据菜单权限")
public Object initSysDataMenuRs(@RequestBody UserReq.UserDataMenuRsReq req) throws Exception {
userService.initSysDataMenuRs();
return Result.success(true);
}
}
package com.hs.admin.mapper;
import com.hs.admin.model.SysDataMenu;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper
public interface SysDataMenuMapper {
List<SysDataMenu> getDataMenuList(Integer userId, Integer roleId, String type);
boolean deleteByUserId(Integer userId);
void insert(Integer userId, Integer dataMenuId);
}
\ No newline at end of file
package com.hs.admin.model;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
public class SysDataMenu {
private Integer id;
private Date createDate;
@Setter
private boolean state;
@Setter
private String type;
@Setter
private String name;
@Setter
private String moduleName;
@Setter
private String code;
@Setter
private String firstCode;
@Setter
private String roles;
@Setter
private boolean checked;
}
\ No newline at end of file
package com.hs.admin.model;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
public class SysDataMenuRs {
private Integer id;
private Date createDate;
@Setter
private boolean state;
@Setter
private String type;
@Setter
private String name;
}
\ No newline at end of file
......@@ -2,9 +2,12 @@ package com.hs.admin.model.reqmodel;
import com.hs.admin.common.base.PageRequest;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
public class UserReq {
public static class SysconfigReq {
......@@ -292,4 +295,51 @@ public class UserReq {
'}';
}
}
public static class UserDataMenuReq {
@ApiModelProperty(value = "用户ID", required = false)
@Setter
@Getter
private Integer userId;
@ApiModelProperty(value = "角色ID", required = false)
@Setter
@Getter
private Integer roleId;
@Setter
@Getter
@ApiModelProperty(value = "类型", required = true)
@NotBlank(message = "类型 参数必传")
private String type;
@Override
public String toString() {
return "UserDataMenuReq{" +
"roleId=" + roleId +
", sex='" + type + '\'' +
'}';
}
}
public static class UserDataMenuRsReq {
@ApiModelProperty(value = "角色ID", required = false)
@Setter
@Getter
private Integer userId;
@Setter
@Getter
@ApiModelProperty(value = "类型", required = true)
@NotBlank(message = "类型 参数必传")
private List<Integer> dataMenuIds;
@Override
public String toString() {
return "UserDataMenuReq{" +
"userId=" + userId +
", dataMenuIds='" + dataMenuIds + '\'' +
'}';
}
}
}
package com.hs.admin.service;
import com.hs.admin.model.SysDataMenu;
import java.util.List;
import java.util.Map;
public interface SysDataMenuService {
Map<String, List<SysDataMenu>> getDataMenuList(Integer userId, Integer roleId, String type);
void saveUserDataMenurs(Integer userId, List<Integer> dataMenuIds);
}
......@@ -29,7 +29,8 @@ public interface UserService {
boolean updateSysconfig(String state);
String selectpwdcontol() ;
String selectpwdcontol();
void initSysDataMenuRs();
}
package com.hs.admin.service.impl;
import com.hs.admin.mapper.SysDataMenuMapper;
import com.hs.admin.model.SysDataMenu;
import com.hs.admin.service.SysDataMenuService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class SysDataMenuServiceImpl implements SysDataMenuService {
@Resource
SysDataMenuMapper sysDataMenuMapper;
@Override
public Map<String, List<SysDataMenu>> getDataMenuList(Integer userId, Integer roleId, String type) {
List<SysDataMenu> dataMenuList = sysDataMenuMapper.getDataMenuList(userId, roleId, type);
Map<String, List<SysDataMenu>> listMap = dataMenuList.stream().collect(Collectors.groupingBy(SysDataMenu::getModuleName));
return listMap;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveUserDataMenurs(Integer userId, List<Integer> dataMenuIds){
if (userId != null) {
boolean b = sysDataMenuMapper.deleteByUserId(userId);
}
for (Integer dataMenuId : dataMenuIds) {
sysDataMenuMapper.insert(userId, dataMenuId);
}
}
}
......@@ -8,13 +8,16 @@ import com.hs.admin.common.base.PageResult;
import com.hs.admin.common.enums.StateType;
import com.hs.admin.common.utils.AESUtil;
import com.hs.admin.common.utils.PageUtil;
import com.hs.admin.mapper.SysDataMenuMapper;
import com.hs.admin.mapper.SysUserMapper;
import com.hs.admin.model.SysDataMenu;
import com.hs.admin.model.SysUser;
import com.hs.admin.model.reqmodel.AddUserReq;
import com.hs.admin.model.reqmodel.UpdateUserReq;
import com.hs.admin.model.reqmodel.UserReq;
import com.hs.admin.model.respmodel.SysUserList;
import com.hs.admin.service.DicOrgService;
import com.hs.admin.service.SysDataMenuService;
import com.hs.admin.service.SysRoleService;
import com.hs.admin.service.UserService;
import org.springframework.stereotype.Service;
......@@ -24,6 +27,7 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
......@@ -35,6 +39,10 @@ public class UserServiceImpl implements UserService {
private SysRoleService sysRoleService;
@Resource
private DicOrgService dicOrgService;
@Resource
private SysDataMenuService sysDataMenuService;
@Resource
private SysDataMenuMapper sysDataMenuMapper;
@Override
public SysUser findByLoginName(String loginName) {
......@@ -177,4 +185,20 @@ public class UserServiceImpl implements UserService {
return sysUserMapper.selectpwdcontol();
}
@Override
public void initSysDataMenuRs() {
List<SysUser> sysUsers = sysUserMapper.selectAll();
List<SysDataMenu> dataMenuList = sysDataMenuMapper.getDataMenuList(null, null, "export");
List<Integer> list = new ArrayList<>();
for (SysDataMenu sysDataMenu : dataMenuList) {
list.add(sysDataMenu.getId());
}
for (SysUser sysUser : sysUsers) {
Integer userId = sysUser.getId();
sysDataMenuService.saveUserDataMenurs(userId,list);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hs.admin.mapper.SysDataMenuMapper">
<resultMap id="BaseResultMap" type="com.hs.admin.model.SysDataMenu">
<id column="ID" jdbcType="DECIMAL" property="id"/>
<result column="CREATE_DATE" jdbcType="TIMESTAMP" property="createDate"/>
<result column="STATE" jdbcType="BOOLEAN" property="state"/>
<result column="type" jdbcType="DECIMAL" property="type"/>
<result column="module_name" jdbcType="VARCHAR" property="moduleName"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="code" jdbcType="VARCHAR" property="code"/>
<result column="roles" jdbcType="VARCHAR" property="roles"/>
<result column="checked" jdbcType="BOOLEAN" property="checked"/>
</resultMap>
<insert id="insert">
insert into sys_user_datamenu_rs (CREATE_DATE, CREATE_USERID,
USER_ID, DATAMENU_ID
)
values (now(), 1, #{userId,jdbcType=DECIMAL}, #{dataMenuId,jdbcType=DECIMAL}
)
</insert>
<select id="getDataMenuList" resultMap="BaseResultMap">
SELECT
sd.*,
<if test="userId != null and userId != ''">
CASE
WHEN sydrs.USER_ID IS NULL THEN
0 ELSE 1
END AS checked
</if>
<if test="userId == null or userId == ''">
0 AS checked
</if>
FROM
sys_datamenu sd
LEFT JOIN sys_user_datamenu_rs sydrs ON sydrs.DATAMENU_ID = sd.id
<if test="userId != null and userId != ''">
AND sydrs.user_id = #{userId}
</if>
WHERE
sd.state = 1
AND sd.type = #{type}
<if test="roleId != null and roleId != ''">
AND INSTR( sd.roles, #{roleId} )>0
</if>
ORDER BY sd.id
</select>
<delete id="deleteByUserId">
DELETE
FROM
sys_user_datamenu_rs
WHERE
user_id = #{userId}
</delete>
</mapper>
\ No newline at end of file
package com.hs.api.mapper;
import com.hs.api.model.SysDataMenu;
import com.hs.api.model.SysUser;
import org.apache.ibatis.annotations.Param;
......@@ -31,6 +32,9 @@ public interface SysUserMapper {
List<Map<String, String>> getdatacontentlist(@Param("datasourcesql") String datasourcesql);
List<SysDataMenu> getSysDataMenus(Long id);
......
package com.hs.api.model;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
public class SysDataMenu {
private Integer id;
private Date createDate;
@Setter
private boolean state;
@Setter
private String type;
@Getter
@Setter
private String name;
@Setter
private String moduleName;
@Getter
@Setter
private String code;
@Setter
private String firstCode;
@Setter
private String roles;
}
\ No newline at end of file
......@@ -18,6 +18,9 @@ public class LoginInfo {
private List<DicOrg> org;
@ApiModelProperty("用户科室信息")
private SerDepartment dept;
@ApiModelProperty("数据菜单权限信息")
private List<SysDataMenu> dataMenus;
@ApiModelProperty("病案信息")
private SysVersion version;
......@@ -70,6 +73,14 @@ public class LoginInfo {
this.role = role;
}
public List<SysDataMenu> getDataMenus() {
return dataMenus;
}
public void setDataMenus(List<SysDataMenu> dataMenus) {
this.dataMenus = dataMenus;
}
public SysVersion getVersion() {
return version;
}
......@@ -86,6 +97,7 @@ public class LoginInfo {
", role=" + role +
", org=" + org +
", dept=" + dept +
", dataMenus=" + dataMenus +
", version=" + version +
'}';
}
......
......@@ -89,6 +89,9 @@ public class LoginServiceImpl implements LoginService {
}
loginInfo.setOrg(orgList);
List<SysDataMenu> sysDataMenus = sysUserMapper.getSysDataMenus(user.getId());
loginInfo.setDataMenus(sysDataMenus);
HttpSession session = SessionUtil.getSession();
session.setAttribute("userId", user.getId());
session.setAttribute("token", token);
......
......@@ -25,6 +25,10 @@
<result column="IS_LEADER" jdbcType="BOOLEAN" property="isLeader"/>
<result column="IS_ADMIN" jdbcType="BOOLEAN" property="isAdmin"/>
</resultMap>
<resultMap id="SysDataMenuMap" type="com.hs.api.model.SysDataMenu">
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="code" jdbcType="VARCHAR" property="code"/>
</resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete
from SYS_USER
......@@ -173,6 +177,17 @@
) datacontent*/
</select>
<select id="getSysDataMenus" resultMap="SysDataMenuMap">
SELECT
sd.name,sd.code
FROM
sys_user_datamenu_rs sydrs
LEFT JOIN sys_datamenu sd ON sd.id = sydrs.datamenu_id
WHERE
user_id = #{userId}
AND sydrs.state =1
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment