|
|
@@ -8,7 +8,9 @@ import com.github.microservice.models.devicePermiss.DeviceUsersInfo;
|
|
|
import com.github.microservice.models.devicePermiss.GateWayPermissModel;
|
|
|
import com.github.microservice.models.devicePermiss.ProjectUserPermiss;
|
|
|
import com.github.microservice.net.ResultContent;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import com.zhongshu.card.client.model.school.CardInfoModel;
|
|
|
+import com.zhongshu.card.client.type.DataState;
|
|
|
import com.zhongshu.card.client.type.school.CardState;
|
|
|
import com.zhongshu.card.server.core.dao.devices.DevicePermissDao;
|
|
|
import com.zhongshu.card.server.core.dao.org.OrganizationDao;
|
|
|
@@ -16,8 +18,10 @@ import com.zhongshu.card.server.core.domain.devices.DevicePermiss;
|
|
|
import com.zhongshu.card.server.core.domain.org.Organization;
|
|
|
import com.zhongshu.card.server.core.domain.org.UserAccount;
|
|
|
import com.zhongshu.card.server.core.domain.projectAbout.OrgUserFace;
|
|
|
+import com.zhongshu.card.server.core.domain.school.CardInfo;
|
|
|
import com.zhongshu.card.server.core.service.projectAbout.CardInfoServiceImpl;
|
|
|
import com.zhongshu.card.server.core.service.projectAbout.OrgUserFaceService;
|
|
|
+import com.zhongshu.card.server.core.service.user.UserAccountServiceImpl;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
@@ -25,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -57,17 +62,19 @@ public class DevicePermissIotService {
|
|
|
@Autowired
|
|
|
private DevicePermissEventService devicePermissEventService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserAccountServiceImpl userAccountService;
|
|
|
+
|
|
|
/**
|
|
|
* 组装设备权限变更的数据
|
|
|
*
|
|
|
- * @param ids DevicePermiss 设备用户绑定数据ID
|
|
|
- * @param mark 0: 删除 1:新增、修改 2:全量
|
|
|
+ * @param permisses DevicePermiss 设备用户绑定数据ID
|
|
|
+ * @param mark 0: 删除 1:新增、修改 2:全量
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent changeDeviceUser(List<String> ids, int mark) {
|
|
|
- List<DevicePermiss> list = devicePermissDao.findByIdIn(ids);
|
|
|
- if (ObjectUtils.isNotEmpty(list)) {
|
|
|
- Map<String, List<DevicePermiss>> map = list.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
|
|
|
+ public ResultContent changeDeviceUser(List<DevicePermiss> permisses, int mark) {
|
|
|
+ if (ObjectUtils.isNotEmpty(permisses)) {
|
|
|
+ Map<String, List<DevicePermiss>> map = permisses.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
|
|
|
map.forEach((gateWayId, tempList) -> {
|
|
|
GateWayPermissModel gateWayPermissModel = new GateWayPermissModel();
|
|
|
gateWayPermissModel.setGateWayId(gateWayId);
|
|
|
@@ -80,12 +87,39 @@ public class DevicePermissIotService {
|
|
|
return permiss;
|
|
|
}).collect(Collectors.toUnmodifiableList());
|
|
|
gateWayPermissModel.setDevices(devices);
|
|
|
+ // 下发设备数据
|
|
|
devicePermissEventService.requestDeviceBindData(gateWayPermissModel, tempList.get(0).getProjectOid());
|
|
|
});
|
|
|
}
|
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 下发用户信息数据
|
|
|
+ *
|
|
|
+ * @param permisses
|
|
|
+ * @param mark
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent changeUserInfo(List<DevicePermiss> permisses, int mark) {
|
|
|
+ if (ObjectUtils.isNotEmpty(permisses)) {
|
|
|
+ Map<String, List<DevicePermiss>> map = permisses.stream().collect(Collectors.groupingBy(DevicePermiss::getGateWayId));
|
|
|
+ map.forEach((gateWayId, tempList) -> {
|
|
|
+ DeviceUsersInfo deviceUsersInfo = new DeviceUsersInfo();
|
|
|
+ deviceUsersInfo.setGateWayId(gateWayId);
|
|
|
+ String projectOid = tempList.get(0).getProjectOid();
|
|
|
+ // 用户数据 (去重)
|
|
|
+ List<String> userIds = tempList.stream().map(it -> it.getUserId()).distinct().collect(Collectors.toList());
|
|
|
+ List<ProjectUserPermiss> userPermiss = getUserPermiss(projectOid, userIds);
|
|
|
+
|
|
|
+ deviceUsersInfo.setUsers(userPermiss);
|
|
|
+ // 下发设备数据
|
|
|
+ devicePermissEventService.requestDevicesUsersData(deviceUsersInfo, projectOid);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查询设备的权限数据
|
|
|
*
|
|
|
@@ -98,19 +132,29 @@ public class DevicePermissIotService {
|
|
|
}
|
|
|
|
|
|
public GateWayPermissModel queryDevicePermissInfo(DevicePerQuery query) {
|
|
|
- GateWayPermissModel permissModel = devicePermissService.getDeviceAboutUsers(query.getDeviceIds());
|
|
|
+ GateWayPermissModel permissModel = getDeviceAboutUsers(query.getDeviceIds());
|
|
|
permissModel.setSuccess();
|
|
|
permissModel.setGateWayId(query.getGateWayId());
|
|
|
return permissModel;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询设备关联的用户信息(增加或修改)
|
|
|
+ *
|
|
|
+ * @param query
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public ResultContent getDeviceAboutUserInfos(DevicePerQuery query) {
|
|
|
DeviceUsersInfo permissModel = queryDeviceAboutUsers(query);
|
|
|
return ResultContent.buildSuccess(JSONUtil.toJsonStr(permissModel));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param query
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public DeviceUsersInfo queryDeviceAboutUsers(DevicePerQuery query) {
|
|
|
- DeviceUsersInfo permissModel = devicePermissService.getDeviceAboutUserInfos(query.getDeviceIds());
|
|
|
+ DeviceUsersInfo permissModel = getDeviceAboutUserInfos(query.getDeviceIds());
|
|
|
permissModel.setSuccess();
|
|
|
permissModel.setGateWayId(query.getGateWayId());
|
|
|
return permissModel;
|
|
|
@@ -133,13 +177,112 @@ public class DevicePermissIotService {
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(projectOid) && ObjectUtils.isNotEmpty(query.getUserIds())) {
|
|
|
- permissModel.setUsers(devicePermissService.getUserPermiss(projectOid, query.getUserIds()));
|
|
|
+ permissModel.setUsers(getUserPermiss(projectOid, query.getUserIds()));
|
|
|
}
|
|
|
permissModel.setSuccess();
|
|
|
permissModel.setGateWayId(query.getGateWayId());
|
|
|
return ResultContent.buildSuccess(JSONUtil.toJsonStr(permissModel));
|
|
|
}
|
|
|
|
|
|
+ public DeviceUsersInfo getDeviceAboutUserInfos(List<String> deviceIds) {
|
|
|
+ DeviceUsersInfo deviceUsersInfo = new DeviceUsersInfo();
|
|
|
+ if (ObjectUtils.isNotEmpty(deviceIds)) {
|
|
|
+ List<DevicePermiss> list = devicePermissDao.findByDeviceIdInAndDataState(deviceIds, DataState.Enable);
|
|
|
+ if (ObjectUtils.isNotEmpty(list)) {
|
|
|
+ // 用户userId集合
|
|
|
+ List<String> _userIds = list.stream().map(it -> it.getUserId()).collect(Collectors.toUnmodifiableList());
|
|
|
+ List<ProjectUserPermiss> userPermiss = getUserPermiss(list.get(0).getProjectOid(), _userIds.stream().distinct().collect(Collectors.toList()));
|
|
|
+ deviceUsersInfo.setUsers(userPermiss);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return deviceUsersInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组装用户在项目下的权限数据 mark:默认是1 ,编辑、增加
|
|
|
+ *
|
|
|
+ * @param projectOid 项目oid
|
|
|
+ * @param userIds 用户userId集合
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<ProjectUserPermiss> getUserPermiss(String projectOid, List<String> userIds) {
|
|
|
+ if (StringUtils.isNotEmpty(projectOid) && ObjectUtils.isNotEmpty(userIds)) {
|
|
|
+ // 用户信息
|
|
|
+ List<UserAccount> userAccounts = userAccountService.getUserAccounts(userIds);
|
|
|
+ Map<String, UserAccount> userMap = userAccounts.stream().collect(Collectors.toMap(it -> it.getUserId(), it -> it, (v1, v2) -> v1));
|
|
|
+
|
|
|
+ // 人脸信息
|
|
|
+ List<OrgUserFace> userFaces = orgUserFaceService.getUserFaces(projectOid, userIds);
|
|
|
+ Map<String, OrgUserFace> faceMap = userFaces.stream().collect(Collectors.toMap(it -> it.getUserId(), it -> it, (v1, v2) -> v1));
|
|
|
+
|
|
|
+ // 用户的卡片信息
|
|
|
+ List<CardInfo> cardInfos = cardInfoService.getProjectCards(projectOid, userIds);
|
|
|
+ Map<String, List<CardInfo>> cardMap = cardInfos.stream().collect(Collectors.groupingBy(CardInfo::getUserId));
|
|
|
+
|
|
|
+ Map<String, ProjectUserPermiss> map = new HashMap<>();
|
|
|
+ for (String userId : userIds) {
|
|
|
+ ProjectUserPermiss permiss = null;
|
|
|
+ if (map.containsKey(userId)) {
|
|
|
+ permiss = map.get(userId);
|
|
|
+ } else {
|
|
|
+ permiss = new ProjectUserPermiss();
|
|
|
+ }
|
|
|
+ permiss.setUid(userId);
|
|
|
+ UserAccount userAccount = userMap.get(userId);
|
|
|
+ if (ObjectUtils.isNotEmpty(userAccount)) {
|
|
|
+ permiss.setUn(userAccount.getName());
|
|
|
+ }
|
|
|
+ OrgUserFace orgUserFace = faceMap.get(userId);
|
|
|
+ if (ObjectUtils.isNotEmpty(orgUserFace)) {
|
|
|
+ permiss.setFi(orgUserFace.getImg());
|
|
|
+ }
|
|
|
+ List<CardInfo> cardInfoList = cardMap.get(userId);
|
|
|
+ if (ObjectUtils.isNotEmpty(cardInfoList)) {
|
|
|
+ permiss.setCNos(cardInfoList.stream().map(it -> it.getCode()).collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+ permiss.setCNos(List.of("unKnow"));
|
|
|
+ }
|
|
|
+ map.put(userId, permiss);
|
|
|
+ }
|
|
|
+ return List.copyOf(map.values());
|
|
|
+ }
|
|
|
+ return Lists.newArrayList();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 得到设备关联的用户 (用户数据发生了变化,为什么要在权限表来查询数据诶?
|
|
|
+ * 因为要来查询用户关联的设备->设备关联的网关,才能知道往那个网关推送数据
|
|
|
+ *
|
|
|
+ * @param deviceIds
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public GateWayPermissModel getDeviceAboutUsers(List<String> deviceIds) {
|
|
|
+ GateWayPermissModel gateWayPermissModel = new GateWayPermissModel();
|
|
|
+ if (ObjectUtils.isNotEmpty(deviceIds)) {
|
|
|
+ List<DevicePermiss> list = devicePermissDao.findByDeviceIdInAndDataState(deviceIds, DataState.Enable);
|
|
|
+ if (ObjectUtils.isNotEmpty(list)) {
|
|
|
+ List<DeviceAboutPermiss> devices = new ArrayList<DeviceAboutPermiss>();
|
|
|
+ // 以设备分组
|
|
|
+ Map<String, List<DevicePermiss>> groupedItems = list.stream().collect(Collectors.groupingBy(DevicePermiss::getDeviceId));
|
|
|
+ groupedItems.forEach((deviceId, itemsInCategory) -> {
|
|
|
+ DeviceAboutPermiss aboutPermiss = new DeviceAboutPermiss();
|
|
|
+ aboutPermiss.setDeviceId(deviceId);
|
|
|
+ List<String> _userIds = itemsInCategory.stream().map(it -> it.getUserId()).collect(Collectors.toUnmodifiableList());
|
|
|
+ aboutPermiss.setUserIds(_userIds.stream().distinct().collect(Collectors.toUnmodifiableList()));
|
|
|
+ devices.add(aboutPermiss);
|
|
|
+ });
|
|
|
+ gateWayPermissModel.setDevices(devices);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return gateWayPermissModel;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组装用户信息 权限数据
|
|
|
+ *
|
|
|
+ * @param devicePermiss
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public ProjectUserPermiss toModel(DevicePermiss devicePermiss) {
|
|
|
ProjectUserPermiss userPermiss = null;
|
|
|
if (ObjectUtils.isNotEmpty(devicePermiss)) {
|