Commit 1e124bd8 authored by 周健威's avatar 周健威

添加数据权限相关代码

parent 16f0e3c6
......@@ -19,4 +19,11 @@ public class CommonConstants {
public static final String CONTEXT_KEY_USER_TOKEN = "currentUserToken";
public static final String JWT_KEY_USER_ID = "userId";
public static final String JWT_KEY_NAME = "name";
public static final String JWT_KEY_DATA_ALL = "dataAll";
public static final String JWT_KEY_DATA_ZONE = "dataZone";
public static final String JWT_KEY_DATA_COMMPANY = "dataCommpany";
//数据权限相关
public final static Integer DATA_ALL_TRUE = 1;
public final static Integer DATA_ALL_FALSE = 1;
}
......@@ -21,4 +21,23 @@ public interface IJWTInfo {
* @return
*/
String getName();
// /**
// * 数据权限 是否拥有所有数据
// * @return
// */
// public Integer getDataAll();
//
// /**
// * 数据权限区域片区
// * @return
// */
// public String getDataZone();
//
// /**
// * 数据权限公司
// * @return
// */
// public String getDataCompany();
}
......@@ -9,11 +9,17 @@ public class JWTInfo implements Serializable,IJWTInfo {
private String username;
private String userId;
private String name;
// private Integer dataAll;
// private String dataZone;
// private String dataCompany;
public JWTInfo(String username, String userId, String name) {
this.username = username;
this.userId = userId;
this.name = name;
// this.dataAll = dataAll;
// this.dataZone = dataZone;
// this.dataCompany = dataCompany;
}
@Override
......
......@@ -14,6 +14,9 @@ public class ClientInfo implements IJWTInfo {
this.clientId = clientId;
this.name = name;
this.id = id;
// this.dataAll = dataAll;
// this.dataZone = dataZone;
// this.dataCompany = dataCompany;
}
public void setId(String id) {
......@@ -21,6 +24,10 @@ public class ClientInfo implements IJWTInfo {
}
String id;
// Integer dataAll;
// String dataZone;
// String dataCompany;
public String getClientId() {
return clientId;
}
......@@ -33,6 +40,18 @@ public class ClientInfo implements IJWTInfo {
this.name = name;
}
// public void setDataAll(Integer dataAll) {
// this.dataAll = dataAll;
// }
//
// public void setDataZone(String dataZone) {
// this.dataZone = dataZone;
// }
//
// public void setDataCompany(String dataCompany) {
// this.dataCompany = dataCompany;
// }
@Override
public String getUniqueName() {
return clientId;
......@@ -47,4 +66,19 @@ public class ClientInfo implements IJWTInfo {
public String getName() {
return name;
}
// @Override
// public Integer getDataAll() {
// return null;
// }
//
// @Override
// public String getDataZone() {
// return null;
// }
//
// @Override
// public String getDataCompany() {
// return null;
// }
}
......@@ -53,6 +53,11 @@ public class BaseContextHandler {
return StringHelper.getObjectValue(value);
}
// public static Integer getDataALL(){
// Object value = get(CommonConstants.CONTEXT_KEY_USER_NAME);
// return Integer.valueOf(StringHelper.getObjectValue(value));
// }
public static String getToken(){
Object value = get(CommonConstants.CONTEXT_KEY_USER_TOKEN);
return StringHelper.getObjectValue(value);
......
......@@ -174,6 +174,11 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<finalName>ace-admin</finalName>
......
......@@ -66,7 +66,7 @@ public class GroupBiz extends BaseBiz<GroupMapper, Group> {
* @param userId
* @return
*/
public Group getUserGroups(int userId) {
public List<Group> getUserGroups(int userId) {
return groupMapper.selectMemberGroupByUserId(userId);
}
......
......@@ -2,16 +2,29 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.mapper.MenuMapper;
import com.github.wxiaoqi.security.admin.mapper.UserMapper;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.UserConstant;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.util.Query;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.lang.reflect.ParameterizedType;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.auth.common.constatns.CommonConstants.DATA_ALL_TRUE;
/**
* ${DESCRIPTION}
......@@ -25,6 +38,7 @@ public class UserBiz extends BaseBiz<UserMapper,User> {
@Autowired
private MenuMapper menuMapper;
@Autowired
private UserAuthUtil userAuthUtil;
@Override
......@@ -52,5 +66,26 @@ public class UserBiz extends BaseBiz<UserMapper,User> {
return mapper.selectOne(user);
}
public TableResultResponse<User> selectPage(Query query, User currentUser) {
if(DATA_ALL_TRUE.equals(currentUser.getDataAll())) {
return super.selectByQuery(query);
}else {
Example example = new Example(User.class);
if(query.entrySet().size()>0) {
Example.Criteria criteria = example.createCriteria();
for (Map.Entry<String, Object> entry : query.entrySet()) {
criteria.andLike(entry.getKey(), "%" + entry.getValue().toString() + "%");
}
}
if(StringUtils.isNotBlank(currentUser.getDataCompany())){
example.createCriteria().andIn("companyId", Arrays.asList(currentUser.getDataCompany().split(",")));
}
if(StringUtils.isNotBlank(currentUser.getDataZone())){
example.createCriteria().andIn("zone", Arrays.asList(currentUser.getDataZone().split(",")));
}
Page<Object> result = PageHelper.startPage(query.getPage(), query.getLimit());
List<User> list = mapper.selectByExample(example);
return new TableResultResponse<User>(result.getTotal(), list);
}
}
}
......@@ -33,6 +33,9 @@ public class User {
@Column(name = "status")
private Integer status;
@Column(name = "zone_id")
private Integer zoneId;
private String description;
@Column(name = "crt_time")
......
......@@ -4,10 +4,12 @@ import com.github.wxiaoqi.security.admin.entity.Group;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface GroupMapper extends Mapper<Group> {
public void deleteGroupMembersById (@Param("groupId") int groupId);
public void deleteGroupLeadersById (@Param("groupId") int groupId);
public void insertGroupMembersById (@Param("groupId") int groupId,@Param("userId") int userId);
public void insertGroupLeadersById (@Param("groupId") int groupId,@Param("userId") int userId);
public Group selectMemberGroupByUserId(@Param("userId") int userId);
public List<Group> selectMemberGroupByUserId(@Param("userId") int userId);
}
\ No newline at end of file
......@@ -9,4 +9,5 @@ import java.util.List;
public interface UserMapper extends Mapper<User> {
public List<User> selectMemberByGroupId(@Param("groupId") int groupId);
public List<User> selectLeaderByGroupId(@Param("groupId") int groupId);
// public List<User> userPage(@Param("groupId") String name);
}
\ No newline at end of file
......@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.admin.biz.UserBiz;
import com.github.wxiaoqi.security.admin.entity.Group;
import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.vo.GroupUsers;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
......@@ -15,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* ${DESCRIPTION}
*
......@@ -33,10 +36,16 @@ public class CurrentController {
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
private UserAuthConfig userAuthConfig;
@Autowired
protected HttpServletRequest request;
@RequestMapping(value = "/groups", method = RequestMethod.GET)
public @ResponseBody
BaseResponse getGroups(String token) throws Exception {
String username = userAuthUtil.getInfoFromToken(token).getUniqueName();
BaseResponse getGroups() throws Exception {
String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getUniqueName();
if (username == null) {
throw new Exception();
}
......
......@@ -120,6 +120,22 @@ public class GroupController extends BaseController<GroupBiz, Group> {
return getTree(baseBiz.selectByExample(example), AdminCommonConstant.ROOT);
}
// @RequestMapping(value = "/like/{name}", method = RequestMethod.GET)
// @ResponseBody
// public List<Group> getGroupsByName(@PathVariable String name) {
// if(StringUtils.isBlank(name)&&StringUtils.isBlank(name)) {
// return new ArrayList<Group>();
// }
// Example example = new Example(Group.class);
// if (StringUtils.isNotBlank(name)) {
// example.createCriteria().andLike("name", "%" + name + "%");
// }
// if (StringUtils.isNotBlank(groupType)) {
// example.createCriteria().andEqualTo("groupType", groupType);
// }
// return getTree(baseBiz.selectByExample(example), AdminCommonConstant.ROOT);
// }
private List<GroupTree> getTree(List<Group> groups,int root) {
List<GroupTree> trees = new ArrayList<GroupTree>();
......
......@@ -8,13 +8,19 @@ import com.github.wxiaoqi.security.admin.rpc.service.PermissionService;
import com.github.wxiaoqi.security.admin.vo.FrontUser;
import com.github.wxiaoqi.security.admin.vo.MenuTree;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.Query;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* ${DESCRIPTION}
......@@ -24,6 +30,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("user")
@Slf4j
public class UserController extends BaseController<UserBiz,User> {
@Autowired
private PermissionService permissionService;
......@@ -31,6 +38,12 @@ public class UserController extends BaseController<UserBiz,User> {
@Autowired
private MenuBiz menuBiz;
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
private UserAuthConfig userAuthConfig;
@Override
@RequestMapping(value = "",method = RequestMethod.POST)
@IgnoreClientToken
......@@ -60,4 +73,18 @@ public class UserController extends BaseController<UserBiz,User> {
List<Menu> getAllMenus() throws Exception {
return menuBiz.selectListAll();
}
// @RequestMapping(value = "/page",method = RequestMethod.GET)
// @ResponseBody
// @Override
// public TableResultResponse<User> list(@RequestParam Map<String, Object> params){
// //查询列表数据
// Query query = new Query(params);
// try {
// return baseBiz.selectPage(query, baseBiz.getUserByUsername(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getUniqueName()));
// }catch (Exception e) {
// log.error(e.getMessage());
// return new TableResultResponse<User>();
// }
// }
}
......@@ -40,9 +40,16 @@
left join base_group_member gm
on gm.user_id = u.id where gm.group_id = #{groupId}
</select>
<select id="selectLeaderByGroupId" resultMap="BaseResultMap">
select u.* from base_user u
left join base_group_leader gm
on gm.user_id = u.id where gm.group_id = #{groupId}
</select>
<!-- <select id="userPage" resultMap="BaseResultMap">-->
<!-- select u.* from base_user u-->
<!-- left join base_group_leader gm-->
<!-- on gm.user_id = u.id where gm.group_id = #{groupId}-->
<!-- </select>-->
</mapper>
\ No newline at end of file
......@@ -15,6 +15,9 @@ public class UserInfo implements Serializable{
public String password;
public String name;
private String description;
private Integer dataAll;
private String dataZone;
private String dataCompany;
public Date getUpdTime() {
return updTime;
......@@ -65,4 +68,28 @@ public class UserInfo implements Serializable{
public void setDescription(String description) {
this.description = description;
}
public Integer getDataAll() {
return dataAll;
}
public void setDataAll(Integer dataAll) {
this.dataAll = dataAll;
}
public String getDataZone() {
return dataZone;
}
public void setDataZone(String dataZone) {
this.dataZone = dataZone;
}
public String getDataCompany() {
return dataCompany;
}
public void setDataCompany(String dataCompany) {
this.dataCompany = dataCompany;
}
}
......@@ -15,6 +15,7 @@ import com.xinxincaravan.caravan.vehicle.vo.PageDataVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
......@@ -27,8 +28,11 @@ import org.springframework.web.multipart.MultipartFile;
import tk.mybatis.mapper.entity.Example;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
@Slf4j
......@@ -150,6 +154,16 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
return RestResponse.suc(realFileRelPath);
}
@Cache(key="branchCompany:dataCompany{1}")
public List<BranchCompany> dataCompany(String dataZone) {
if(StringUtils.isBlank(dataZone)) {
return new ArrayList<BranchCompany>();
}
List<Integer> zoneIds = Arrays.asList(dataZone.split(",")).parallelStream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
Example example = new Example(BranchCompany.class);
example.createCriteria().andIn("zoneId", zoneIds);
List<BranchCompany> zoneCompanys = selectByExample(example);
return zoneCompanys;
}
}
package com.xinxincaravan.caravan.vehicle.biz;
import com.ace.cache.annotation.Cache;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
......@@ -9,6 +10,7 @@ import com.xinxincaravan.caravan.vehicle.common.CustomIllegalParamException;
import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.*;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.entity.BranchCompany;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookInfo;
import com.xinxincaravan.caravan.vehicle.entity.VehicleBookRecord;
......@@ -27,6 +29,7 @@ import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
......@@ -43,6 +46,7 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
@Slf4j
......@@ -790,4 +794,15 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
return PageDataVo.pageInfo(vehiclePageInfo);
}
public List<Integer> dataCompany(String dataZone, String dataCompany) {
List<BranchCompany> zoneCompanys = branchCompanyBiz.dataCompany(dataZone);
//((VehicleBiz)AopContext.currentProxy()).dataCompany(dataZone);
List<Integer> zoneCompanyIds = zoneCompanys.parallelStream().map(BranchCompany::getId).collect(Collectors.toList());
if(StringUtils.isNotBlank(dataCompany)) {
List<Integer> dataCompanyIds = Arrays.asList(dataCompany.split(",")).parallelStream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
zoneCompanyIds.addAll(dataCompanyIds);
}
//去重
return zoneCompanyIds.parallelStream().distinct().collect(Collectors.toList());
}
}
......@@ -87,4 +87,6 @@ public class BranchCompany {
private BigDecimal longitude;
private String companyPic;
private Integer zoneId;
}
\ No newline at end of file
......@@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.xinxincaravan.caravan.vehicle.biz.BranchCompanyBiz;
import com.xinxincaravan.caravan.vehicle.biz.VehicleBiz;
import com.xinxincaravan.caravan.vehicle.common.BaseController;
import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.entity.BranchCompany;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.feign.UserFeign;
import com.xinxincaravan.caravan.vehicle.feign.dto.UserDTO;
import com.xinxincaravan.caravan.vehicle.vo.BranchCompanyVo;
......@@ -32,6 +35,9 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
@Autowired
UserFeign userFeign;
@Autowired
VehicleBiz vehicleBiz;
@Autowired
private UserAuthConfig userAuthConfig;
......@@ -42,6 +48,7 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
@RequestParam(required = false) Integer addrTown) {
UserDTO userDTO = userFeign.userinfoByToken(userAuthConfig.getToken(request)).getData();
log.info(JSONObject.toJSONString(userDTO));
log.info(JSONObject.toJSONString(vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany())));
return RestResponse.data(baseBiz.getAll(page,limit,addrProvince, addrCity,
addrTown));
}
......
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