通讯录列定制权限

AISIN
Chengliang 5 months ago
parent 1d92b77aef
commit bccd95f828

2
.gitignore vendored

@ -5,7 +5,7 @@
HELP.md
target/
.idea
/.idea
/test
/src/rebel.xml

@ -0,0 +1,34 @@
package com.engine.aisin.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author liang.cheng
* @Date 2024/11/18 10:26 AM
* @Description: TODO
* @Version 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AccessCustomPo {
private String subCompanyId;
private List<String> checks;
private List<String> subCompanyIds;
private List<String> departmentIds;
private List<String> userIds;
private List<String> roleIds;
}

@ -1,5 +1,6 @@
package com.engine.aisin.service;
/**
* @Author liang.cheng
* @Date 2024/11/15 3:16 PM
@ -7,4 +8,12 @@ package com.engine.aisin.service;
* @Version 1.0
*/
public interface AccessCustomService {
/**
* @Description:
* @Author: liang.cheng
* @Date: 2024/11/15 3:35 PM
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
boolean customAccess(String userId);
}

@ -1,7 +1,18 @@
package com.engine.aisin.service.impl;
import com.engine.aisin.entity.AccessCustomPo;
import com.engine.aisin.service.AccessCustomService;
import com.engine.common.service.HrmCommonService;
import com.engine.common.service.impl.HrmCommonServiceImpl;
import com.engine.core.impl.Service;
import com.weaver.general.Util;
import lombok.SneakyThrows;
import weaver.conn.RecordSet;
import weaver.hrm.resource.ResourceComInfo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@ -11,4 +22,86 @@ import com.engine.core.impl.Service;
* @Version 1.0
*/
public class AccessCustomServiceImpl extends Service implements AccessCustomService {
@SneakyThrows
@Override
public boolean customAccess(String userId) {
boolean result;
RecordSet rs = new RecordSet();
ResourceComInfo rc = new ResourceComInfo();
HrmCommonService hrmCommonService = new HrmCommonServiceImpl();
//1.根据userId获取人员相关信息
String subCompanyId = rc.getSubCompanyID(userId);
//2.判断该人员是否在需要控制权限的分部
List<AccessCustomPo> accessSub = new ArrayList<>();
rs.executeQuery("select xykzdfb,qxxz,fb,bm,ry,js from uf_txlxsldzqxkzgt where xykzdfb = ?",subCompanyId);
while (rs.next()) {
accessSub.add(AccessCustomPo.builder()
.checks(Arrays.asList(Util.null2String(rs.getString("qxxz")).split(",")))
.subCompanyIds(Arrays.asList(Util.null2String(rs.getString("fb")).split(",")))
.departmentIds(Arrays.asList(Util.null2String(rs.getString("bm")).split(",")))
.userIds(Arrays.asList(Util.null2String(rs.getString("ry")).split(",")))
.roleIds(Arrays.asList(Util.null2String(rs.getString("js")).split(",")))
.build());
}
if (accessSub.size() == 0) {
return true;
}
//3.若存在,判断是否在可查看权限范围
result = false;
String departmentId = rc.getDepartmentID(userId);
String roleIds = hrmCommonService.getRoleIds(Integer.parseInt(userId));
for (AccessCustomPo item : accessSub) {
List<String> checks = item.getChecks();
for (String e : checks) {
switch (e) {
case "0":
List<String> subCompanyIds = item.getSubCompanyIds();
boolean sub = subCompanyIds.stream()
.anyMatch(element -> element.equals(subCompanyId));
if (sub) {
return true;
}
break;
case "1":
List<String> departmentIds = item.getDepartmentIds();
boolean dept = departmentIds.stream()
.anyMatch(element -> element.equals(departmentId));
if (dept) {
return true;
}
break;
case "2":
List<String> userIds = item.getUserIds();
boolean user = userIds.stream()
.anyMatch(element -> element.equals(departmentId));
if (user) {
return true;
}
break;
case "3":
List<String> roleIdsT = item.getRoleIds();
boolean role = roleIdsT.stream()
.anyMatch(roleIds::contains);
if (role) {
return true;
}
break;
default:
break;
}
}
}
return result;
}
}

@ -1,5 +1,25 @@
package com.engine.aisin.web;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.engine.aisin.service.AccessCustomService;
import com.engine.aisin.service.impl.AccessCustomServiceImpl;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.Map;
/**
* @Author liang.cheng
* @Date 2024/11/15 3:05 PM
@ -7,4 +27,25 @@ package com.engine.aisin.web;
* @Version 1.0
*/
public class AccessCustomAction {
private AccessCustomService getService(User user) {
return ServiceUtil.getService(AccessCustomServiceImpl.class, user);
}
@GET
@Path("/custom/access")
@Produces(MediaType.TEXT_PLAIN)
public String customAccess(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("userId")String userId){
Map<String, Object> data = new HashMap<>(8);
try {
User user = HrmUserVarify.getUser(request, response);
data.put("datas",getService(user).customAccess(userId));
data.put("api_status", true);
} catch (Exception e) {
data.put("api_status", false);
data.put("msg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect);
}
}

Loading…
Cancel
Save