TRX 1 年間 前
コミット
97c70ff411

+ 42 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/DeviceInfoOpenApiSimpleModel.java

@@ -0,0 +1,42 @@
+package com.zhongshu.card.client.openApi.model;
+
+import com.github.microservice.models.type.DeviceType;
+import com.zhongshu.card.client.model.org.OrganizationMiniModel;
+import com.zhongshu.card.client.model.org.OrganizationSimpleModel;
+import com.zhongshu.card.client.model.school.AreaSimpleModel;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.OnLineState;
+import com.zhongshu.opengateway.client.model.OpenApiModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+
+/**
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceInfoOpenApiSimpleModel extends OpenApiModel {
+
+    @Schema(description = "设备ID、设备编号")
+    private String deviceId;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备类型,如 消费机 门禁机")
+    private DeviceType deviceType;
+
+    private String deviceTypeStr;
+
+    public String getDeviceTypeStr() {
+        if (deviceType != null) {
+            return deviceType.getRemark();
+        }
+        return "";
+    }
+}

+ 144 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/model/DevicePermissOpenApiModel.java

@@ -0,0 +1,144 @@
+package com.zhongshu.card.client.openApi.model;
+
+import com.github.microservice.models.type.DeviceType;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.devices.DeviceInfoModel;
+import com.zhongshu.card.client.model.org.DepartmentModel;
+import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import com.zhongshu.card.client.model.org.UserCountSimpleModel;
+import com.zhongshu.card.client.model.org.role.RoleModel;
+import com.zhongshu.card.client.model.school.AreaSimpleModel;
+import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
+import com.zhongshu.card.client.type.DataState;
+import com.zhongshu.card.client.type.OnLineState;
+import com.zhongshu.card.client.type.UserState;
+import com.zhongshu.opengateway.client.model.OpenApiModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/10/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DevicePermissOpenApiModel extends OpenApiModel {
+
+    @Schema(description = "关联的设备信息")
+    private DeviceInfoModel deviceInfo;
+
+    //------------------设备冗余数据 start-------------------
+    @Schema(description = "设备ID")
+    private String deviceId;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "设备类型,如 消费机 门禁机")
+    private DeviceType deviceType;
+
+    @Schema(description = "是否在线")
+    private OnLineState onLineState;
+
+    private String onLineStateStr;
+
+    public String getOnLineStateStr() {
+        if (onLineState != null) {
+            return onLineState.getRemark();
+        }
+        return "";
+    }
+
+    private String deviceTypeStr;
+
+    public String getDeviceTypeStr() {
+        if (deviceType != null) {
+            return deviceType.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "区域信息")
+    private AreaSimpleModel area;
+
+    public AreaSimpleModel getArea() {
+        if (ObjectUtils.isNotEmpty(deviceInfo)) {
+            return deviceInfo.getArea();
+        }
+        return null;
+    }
+
+    @Schema(description = "区域所有上级ID路径,如:a1/a12/a123")
+    private String areaPaths = "";
+
+    @Schema(description = "可使用的用户信息")
+    private UserCountSimpleModel userAccount;
+
+    public UserCountSimpleModel getUserAccount() {
+        if (organizationUser != null) {
+            return organizationUser.getUser();
+        }
+        return null;
+    }
+
+    @Schema(description = "机构用户信息")
+    private OrganizationUserModel organizationUser;
+
+    //---------------用户冗余数据 start--------------
+
+    @Schema(description = "可使用用户userId")
+    private String userId;
+
+    @Schema(description = "昵称")
+    private String name;
+
+    @Schema(description = "编码")
+    private String code;
+
+    @Schema(description = "用户所属机构oid")
+    private String userOid;
+
+    @Schema(description = "职位")
+    private DictInfoSimpleModel position;
+
+    @Schema(description = "角色信息")
+    private List<RoleModel> roles = new ArrayList<>();
+
+    @Schema(description = "部门信息")
+    private DepartmentModel department;
+
+    @Schema(description = "用户状态")
+    private UserState state = UserState.Normal;
+
+    private String stateStr;
+
+    public String getStateStr() {
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "权限是否下发")
+    private Boolean isUsed = Boolean.FALSE;
+
+    @Schema(description = "权限是否可用")
+    private DataState dataState;
+
+    private String dataStateStr;
+
+    public String getDataStateStr() {
+        if (dataState != null) {
+            return dataState.getRemark();
+        }
+        return "";
+    }
+
+}

+ 21 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/openApi/params/DeviceIdAndProjectCodeParam.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.client.openApi.params;
+
+import com.zhongshu.card.client.openApi.base.ProjectCodeParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeviceIdAndProjectCodeParam extends ProjectCodeParam {
+
+    @Schema(description = "设备ID")
+    private String deviceId;
+
+}

+ 18 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/openAPI/DevicePermissOpenApiController.java

@@ -4,6 +4,9 @@ import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.openApi.model.DeviceInfoOpenApiModel;
+import com.zhongshu.card.client.openApi.model.DevicePermissOpenApiModel;
+import com.zhongshu.card.client.openApi.params.DeviceIdAndProjectCodeParam;
+import com.zhongshu.card.client.openApi.params.DeviceIdParam;
 import com.zhongshu.card.client.openApi.params.DeviceInfoOpenApiSearch;
 import com.zhongshu.card.server.core.service.openAPI.DevicePermissOpenApiService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -15,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/6/5
@@ -34,11 +39,18 @@ public class DevicePermissOpenApiController {
         return devicePermissOpenApiService.page(param);
     }
 
-//    @ResourceAuth(value = "user", type = AuthType.User)
-//    @Operation(summary = "订单详情", description = "订单详情")
-//    @RequestMapping(value = {"getDetailByPaymentNo"}, method = {RequestMethod.POST})
-//    public ResultContent<ExpenseFlowOpenApiModel> getDetailByPaymentNo(@RequestBody PaymentNoParam param) {
-//        return expenseFlowOpenApiService.getDetailByPaymentNo(param);
-//    }
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "设备详情--根据设备ID查询", description = "设备详情-根据设备ID查询")
+    @RequestMapping(value = {"getDetailByDeviceId"}, method = {RequestMethod.POST})
+    public ResultContent<DeviceInfoOpenApiModel> getDetailByDeviceId(@RequestBody DeviceIdParam param) {
+        return devicePermissOpenApiService.getDetailByDeviceId(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "查询设备的权限", description = "设备详情-根据设备ID查询")
+    @RequestMapping(value = {"getDevicePermissByDeviceId"}, method = {RequestMethod.POST})
+    public ResultContent<List<DevicePermissOpenApiModel>> getDevicePermissByDeviceId(@RequestBody DeviceIdAndProjectCodeParam param) {
+        return devicePermissOpenApiService.getDevicePermissByDeviceId(param);
+    }
 
 }

+ 63 - 12
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/DevicePermissOpenApiService.java

@@ -6,11 +6,16 @@ import com.zhongshu.card.client.model.devices.DeviceInfoSearch;
 import com.zhongshu.card.client.model.org.OrganizationMiniModel;
 import com.zhongshu.card.client.model.school.AreaSimpleModel;
 import com.zhongshu.card.client.openApi.model.DeviceInfoOpenApiModel;
+import com.zhongshu.card.client.openApi.model.DeviceInfoOpenApiSimpleModel;
+import com.zhongshu.card.client.openApi.model.DevicePermissOpenApiModel;
+import com.zhongshu.card.client.openApi.params.DeviceIdAndProjectCodeParam;
 import com.zhongshu.card.client.openApi.params.DeviceIdParam;
 import com.zhongshu.card.client.openApi.params.DeviceInfoOpenApiSearch;
 import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
+import com.zhongshu.card.server.core.dao.devices.DevicePermissDao;
 import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
 import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.domain.devices.DevicePermiss;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
 import com.zhongshu.card.server.core.service.orgManager.OrganizationManagerServiceImpl;
@@ -25,6 +30,7 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -39,10 +45,6 @@ import java.util.stream.Collectors;
 @Service
 public class DevicePermissOpenApiService extends SuperService {
 
-
-    @Autowired
-    private ExpenseFlowDao expenseFlowDao;
-
     @Autowired
     private OrganizationManagerServiceImpl organizationManagerService;
 
@@ -55,6 +57,9 @@ public class DevicePermissOpenApiService extends SuperService {
     @Autowired
     private DeviceInfoDao deviceInfoDao;
 
+    @Autowired
+    private DevicePermissDao devicePermissDao;
+
     /**
      * 设备列表
      *
@@ -74,13 +79,40 @@ public class DevicePermissOpenApiService extends SuperService {
         return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
     }
 
-//    public ResultContent getDetailByDeviceId(DeviceIdParam param) {
-//        DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(param.getDeviceId());
-//        if () {
-//
-//        }
-//
-//    }
+    /**
+     * 更加设备ID查询设备详情
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<DeviceInfoOpenApiModel> getDetailByDeviceId(DeviceIdParam param) {
+        DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(param.getDeviceId());
+        if (ObjectUtils.isEmpty(deviceInfo)) {
+            return ResultContent.buildFail("数据不存在");
+        }
+        return ResultContent.buildSuccess(toModel(deviceInfo));
+    }
+
+    /**
+     * 查询设备的权限
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<List<DevicePermissOpenApiModel>> getDevicePermissByDeviceId(DeviceIdAndProjectCodeParam param) {
+        if (StringUtils.isEmpty(param.getProjectCode())) {
+            return ResultContent.buildFail("projectCode不能为空");
+        }
+        List<DevicePermissOpenApiModel> models = new ArrayList<>();
+        String projectOid = getOidByCode(param.getProjectCode());
+        if (StringUtils.isNotEmpty(projectOid)) {
+            List<DevicePermiss> list = devicePermissDao.findByDeviceIdAndProjectOid(param.getDeviceId(), projectOid);
+            if (ObjectUtils.isNotEmpty(list)) {
+                models = list.stream().map(this::toDevicePermissModel).collect(Collectors.toUnmodifiableList());
+            }
+        }
+        return ResultContent.buildSuccess(models);
+    }
 
     /**
      * 设备基础信息
@@ -92,11 +124,12 @@ public class DevicePermissOpenApiService extends SuperService {
         DeviceInfoOpenApiModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {
             model = new DeviceInfoOpenApiModel();
+            BeanUtils.copyProperties(entity, model);
+
             // 所属机构信息
             OrganizationMiniModel miniModel = organizationManagerService.toMiniModel(entity.getOrganization());
             model.setOrganization(miniModel);
 
-            BeanUtils.copyProperties(entity, model);
             model.setProjectInfoName(organizationServiceImpl.getOrgNameByCode(entity.getProjectInfoCode()));
 
             // 所属区域信息
@@ -111,4 +144,22 @@ public class DevicePermissOpenApiService extends SuperService {
         return model;
     }
 
+    public DeviceInfoOpenApiSimpleModel toDeviceSimpleModel(DeviceInfo entity) {
+        DeviceInfoOpenApiSimpleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new DeviceInfoOpenApiSimpleModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+    public DevicePermissOpenApiModel toDevicePermissModel(DevicePermiss entity) {
+        DevicePermissOpenApiModel model = new DevicePermissOpenApiModel();
+        if (ObjectUtils.isEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+
+        }
+        return model;
+    }
+
 }

+ 134 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/openAPI/OrganizationUserOpenApiService.java

@@ -0,0 +1,134 @@
+package com.zhongshu.card.server.core.service.openAPI;
+
+import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.devices.DeviceInfoSearch;
+import com.zhongshu.card.client.model.org.OrganizationMiniModel;
+import com.zhongshu.card.client.model.school.AreaSimpleModel;
+import com.zhongshu.card.client.openApi.model.DeviceInfoOpenApiModel;
+import com.zhongshu.card.client.openApi.model.DeviceInfoOpenApiSimpleModel;
+import com.zhongshu.card.client.openApi.params.DeviceIdParam;
+import com.zhongshu.card.client.openApi.params.DeviceInfoOpenApiSearch;
+import com.zhongshu.card.server.core.dao.devices.DeviceInfoDao;
+import com.zhongshu.card.server.core.dao.devices.DevicePermissDao;
+import com.zhongshu.card.server.core.dao.payment.ExpenseFlowDao;
+import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
+import com.zhongshu.card.server.core.service.orgManager.OrganizationManagerServiceImpl;
+import com.zhongshu.card.server.core.service.school.AreaServiceImpl;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 机构相关的 openAPI
+ *
+ * @author TRX
+ * @date 2024/11/12
+ */
+@Slf4j
+@Service
+public class OrganizationUserOpenApiService extends SuperService {
+
+    @Autowired
+    private DevicePermissDao devicePermissDao;
+
+    @Autowired
+    private ExpenseFlowDao expenseFlowDao;
+
+    @Autowired
+    private OrganizationManagerServiceImpl organizationManagerService;
+
+    @Autowired
+    private OrganizationServiceImpl organizationServiceImpl;
+
+    @Autowired
+    private AreaServiceImpl areaService;
+
+    @Autowired
+    private DeviceInfoDao deviceInfoDao;
+
+    /**
+     * 设备列表
+     *
+     * @param apiSearch
+     * @return
+     */
+    public ResultContent<Page<DeviceInfoOpenApiModel>> page(DeviceInfoOpenApiSearch apiSearch) {
+        if (StringUtils.isEmpty(apiSearch.getProjectCode())) {
+            return ResultContent.buildFail("projectCode不能为空");
+        }
+        DeviceInfoSearch param = new DeviceInfoSearch();
+        BeanUtils.copyProperties(apiSearch, param);
+        param.setProjectInfoCode(apiSearch.getProjectCode());
+
+        Pageable pageable = PageRequest.of(apiSearch.getNumber(), apiSearch.getSize());
+        Page<DeviceInfo> page = deviceInfoDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    /**
+     * 设备详情
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<DeviceInfoOpenApiModel> getDetailByDeviceId(DeviceIdParam param) {
+        DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(param.getDeviceId());
+        if (ObjectUtils.isEmpty(deviceInfo)) {
+            return ResultContent.buildFail("数据不存在");
+        }
+        return ResultContent.buildSuccess(toModel(deviceInfo));
+    }
+
+    /**
+     * 设备基础信息
+     *
+     * @param entity
+     * @return
+     */
+    public DeviceInfoOpenApiModel toModel(DeviceInfo entity) {
+        DeviceInfoOpenApiModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new DeviceInfoOpenApiModel();
+            BeanUtils.copyProperties(entity, model);
+
+            // 所属机构信息
+            OrganizationMiniModel miniModel = organizationManagerService.toMiniModel(entity.getOrganization());
+            model.setOrganization(miniModel);
+
+            model.setProjectInfoName(organizationServiceImpl.getOrgNameByCode(entity.getProjectInfoCode()));
+
+            // 所属区域信息
+            List<AreaSimpleModel> areaModels = areaService.getParents(entity.getArea());
+            if (ObjectUtils.isNotEmpty(areaModels)) {
+                model.setArea(areaModels.get(0));
+                Collections.reverse(areaModels);
+                List<String> areaNames = areaModels.stream().map(it -> it.getName()).collect(Collectors.toList());
+                model.setAreaAllName(String.join("/", areaNames));
+            }
+        }
+        return model;
+    }
+
+    public DeviceInfoOpenApiSimpleModel toDeviceSimpleModel(DeviceInfo entity) {
+        DeviceInfoOpenApiSimpleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new DeviceInfoOpenApiSimpleModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}