Commit c3daae30 by songzhenmin

feat:新增导出权限控制

parent a321a625
...@@ -5,6 +5,7 @@ import com.hs.admin.common.annotations.CurrentUser; ...@@ -5,6 +5,7 @@ import com.hs.admin.common.annotations.CurrentUser;
import com.hs.admin.common.annotations.Token; import com.hs.admin.common.annotations.Token;
import com.hs.admin.common.base.PageRequest; import com.hs.admin.common.base.PageRequest;
import com.hs.admin.common.base.PageResult; import com.hs.admin.common.base.PageResult;
import com.hs.admin.model.SysDataMenu;
import com.hs.admin.model.SysRole; import com.hs.admin.model.SysRole;
import com.hs.admin.model.SysUser; import com.hs.admin.model.SysUser;
import com.hs.admin.model.reqmodel.AddUserReq; import com.hs.admin.model.reqmodel.AddUserReq;
...@@ -12,6 +13,7 @@ import com.hs.admin.model.reqmodel.UpdateUserReq; ...@@ -12,6 +13,7 @@ import com.hs.admin.model.reqmodel.UpdateUserReq;
import com.hs.admin.model.reqmodel.UserReq; import com.hs.admin.model.reqmodel.UserReq;
import com.hs.admin.model.respmodel.SysMenuList; import com.hs.admin.model.respmodel.SysMenuList;
import com.hs.admin.model.respmodel.SysUserList; import com.hs.admin.model.respmodel.SysUserList;
import com.hs.admin.service.SysDataMenuService;
import com.hs.admin.service.SysMenuService; import com.hs.admin.service.SysMenuService;
import com.hs.admin.service.SysUserRoleRsService; import com.hs.admin.service.SysUserRoleRsService;
import com.hs.admin.service.UserService; import com.hs.admin.service.UserService;
...@@ -24,8 +26,10 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -24,8 +26,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
import java.util.Map;
@Api(tags = "用户API", produces = "produces", consumes = "consumes", protocols = "protocols") @Api(tags = "用户API", produces = "produces", consumes = "consumes", protocols = "protocols")
@RequestMapping("/user") @RequestMapping("/user")
...@@ -37,6 +41,8 @@ public class UserController { ...@@ -37,6 +41,8 @@ public class UserController {
private SysUserRoleRsService sysUserRoleRsService; private SysUserRoleRsService sysUserRoleRsService;
@Autowired @Autowired
private SysMenuService sysMenuService; private SysMenuService sysMenuService;
@Resource
private SysDataMenuService sysDataMenuService;
@PostMapping("all") @PostMapping("all")
@Token @Token
...@@ -141,4 +147,26 @@ public class UserController { ...@@ -141,4 +147,26 @@ public class UserController {
return Result.success(updateresult); 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; ...@@ -2,9 +2,12 @@ package com.hs.admin.model.reqmodel;
import com.hs.admin.common.base.PageRequest; import com.hs.admin.common.base.PageRequest;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
public class UserReq { public class UserReq {
public static class SysconfigReq { public static class SysconfigReq {
...@@ -292,4 +295,51 @@ public class UserReq { ...@@ -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 { ...@@ -29,7 +29,8 @@ public interface UserService {
boolean updateSysconfig(String state); 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; ...@@ -8,13 +8,16 @@ import com.hs.admin.common.base.PageResult;
import com.hs.admin.common.enums.StateType; import com.hs.admin.common.enums.StateType;
import com.hs.admin.common.utils.AESUtil; import com.hs.admin.common.utils.AESUtil;
import com.hs.admin.common.utils.PageUtil; import com.hs.admin.common.utils.PageUtil;
import com.hs.admin.mapper.SysDataMenuMapper;
import com.hs.admin.mapper.SysUserMapper; import com.hs.admin.mapper.SysUserMapper;
import com.hs.admin.model.SysDataMenu;
import com.hs.admin.model.SysUser; import com.hs.admin.model.SysUser;
import com.hs.admin.model.reqmodel.AddUserReq; import com.hs.admin.model.reqmodel.AddUserReq;
import com.hs.admin.model.reqmodel.UpdateUserReq; import com.hs.admin.model.reqmodel.UpdateUserReq;
import com.hs.admin.model.reqmodel.UserReq; import com.hs.admin.model.reqmodel.UserReq;
import com.hs.admin.model.respmodel.SysUserList; import com.hs.admin.model.respmodel.SysUserList;
import com.hs.admin.service.DicOrgService; import com.hs.admin.service.DicOrgService;
import com.hs.admin.service.SysDataMenuService;
import com.hs.admin.service.SysRoleService; import com.hs.admin.service.SysRoleService;
import com.hs.admin.service.UserService; import com.hs.admin.service.UserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -24,6 +27,7 @@ import javax.annotation.Resource; ...@@ -24,6 +27,7 @@ import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
...@@ -35,6 +39,10 @@ public class UserServiceImpl implements UserService { ...@@ -35,6 +39,10 @@ public class UserServiceImpl implements UserService {
private SysRoleService sysRoleService; private SysRoleService sysRoleService;
@Resource @Resource
private DicOrgService dicOrgService; private DicOrgService dicOrgService;
@Resource
private SysDataMenuService sysDataMenuService;
@Resource
private SysDataMenuMapper sysDataMenuMapper;
@Override @Override
public SysUser findByLoginName(String loginName) { public SysUser findByLoginName(String loginName) {
...@@ -177,4 +185,20 @@ public class UserServiceImpl implements UserService { ...@@ -177,4 +185,20 @@ public class UserServiceImpl implements UserService {
return sysUserMapper.selectpwdcontol(); 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; package com.hs.api.mapper;
import com.hs.api.model.SysDataMenu;
import com.hs.api.model.SysUser; import com.hs.api.model.SysUser;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -31,6 +32,9 @@ public interface SysUserMapper { ...@@ -31,6 +32,9 @@ public interface SysUserMapper {
List<Map<String, String>> getdatacontentlist(@Param("datasourcesql") String datasourcesql); 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 { ...@@ -18,6 +18,9 @@ public class LoginInfo {
private List<DicOrg> org; private List<DicOrg> org;
@ApiModelProperty("用户科室信息") @ApiModelProperty("用户科室信息")
private SerDepartment dept; private SerDepartment dept;
@ApiModelProperty("数据菜单权限信息")
private List<SysDataMenu> dataMenus;
@ApiModelProperty("病案信息") @ApiModelProperty("病案信息")
private SysVersion version; private SysVersion version;
...@@ -70,6 +73,14 @@ public class LoginInfo { ...@@ -70,6 +73,14 @@ public class LoginInfo {
this.role = role; this.role = role;
} }
public List<SysDataMenu> getDataMenus() {
return dataMenus;
}
public void setDataMenus(List<SysDataMenu> dataMenus) {
this.dataMenus = dataMenus;
}
public SysVersion getVersion() { public SysVersion getVersion() {
return version; return version;
} }
...@@ -86,6 +97,7 @@ public class LoginInfo { ...@@ -86,6 +97,7 @@ public class LoginInfo {
", role=" + role + ", role=" + role +
", org=" + org + ", org=" + org +
", dept=" + dept + ", dept=" + dept +
", dataMenus=" + dataMenus +
", version=" + version + ", version=" + version +
'}'; '}';
} }
......
...@@ -89,6 +89,9 @@ public class LoginServiceImpl implements LoginService { ...@@ -89,6 +89,9 @@ public class LoginServiceImpl implements LoginService {
} }
loginInfo.setOrg(orgList); loginInfo.setOrg(orgList);
List<SysDataMenu> sysDataMenus = sysUserMapper.getSysDataMenus(user.getId());
loginInfo.setDataMenus(sysDataMenus);
HttpSession session = SessionUtil.getSession(); HttpSession session = SessionUtil.getSession();
session.setAttribute("userId", user.getId()); session.setAttribute("userId", user.getId());
session.setAttribute("token", token); session.setAttribute("token", token);
......
...@@ -25,6 +25,10 @@ ...@@ -25,6 +25,10 @@
<result column="IS_LEADER" jdbcType="BOOLEAN" property="isLeader"/> <result column="IS_LEADER" jdbcType="BOOLEAN" property="isLeader"/>
<result column="IS_ADMIN" jdbcType="BOOLEAN" property="isAdmin"/> <result column="IS_ADMIN" jdbcType="BOOLEAN" property="isAdmin"/>
</resultMap> </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 id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete delete
from SYS_USER from SYS_USER
...@@ -173,6 +177,17 @@ ...@@ -173,6 +177,17 @@
) datacontent*/ ) datacontent*/
</select> </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> </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