TRX 1 год назад
Родитель
Сommit
96bd2f2a16

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationDao.java

@@ -18,10 +18,14 @@ public interface OrganizationDao extends MongoDao<Organization>, OrganizationDao
 
     Organization findTopByOid(String oid);
 
+    List<Organization> findByOidIn(List<String> oids);
+
     Organization findTopByName(String name);
 
     Organization findTopByAuthType(AuthType authType);
 
+    List<Organization> findByAuthType(AuthType authType);
+
     Organization findTopByCode(String code);
 
     List<Organization> findByAuthTypeAndStateOrderByCreateTimeDesc(AuthType authType, OrganizationState state);

+ 6 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/WalletRecharge.java

@@ -34,6 +34,12 @@ public class WalletRecharge {
     @Schema(description = "充值类型:")
     private RechargeType rechargeType;
 
+    @Schema(description = "年份,如:2024")
+    private String year;
+
+    @Schema(description = "月份,如06")
+    private String month;
+
     @Schema(description = "充值金额")
     private BigDecimal amount;
 

+ 3 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/event/ProjectSyncEvent.java

@@ -13,10 +13,10 @@ import java.util.List;
 public class ProjectSyncEvent extends ApplicationEvent {
 
     @Getter
-    private List<String> projectIds = new ArrayList<String>();
+    private List<String> projectOIds = new ArrayList<String>();
 
-    public ProjectSyncEvent(Object source, List<String> projectIds) {
+    public ProjectSyncEvent(Object source, List<String> projectOIds) {
         super(source);
-        this.projectIds = projectIds;
+        this.projectOIds = projectOIds;
     }
 }

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/httpRequest/conf/IotCenterAPIConfig.java

@@ -18,12 +18,16 @@ public class IotCenterAPIConfig {
 
     public static final String ping = "/test/free/ping";
 
+    // 项目同步
+    public static final String syncFromFullCardProjects = "/projectSync/free/syncFromFullCardProjects";
+
     public static final HashMap<String, ApiConfParam> map = new HashMap<>();
 
     static {
         map.put(sendMessage, ApiConfParam.builder().apiName(sendMessage).methodType(MethodType.Json).build());
         map.put(ping, ApiConfParam.builder().apiName(ping).methodType(MethodType.Get).build());
 
+        map.put(syncFromFullCardProjects, ApiConfParam.builder().apiName(syncFromFullCardProjects).methodType(MethodType.Json).build());
 
 
     }

+ 12 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/fix/FixDataService.java

@@ -1,12 +1,17 @@
 package com.zhongshu.card.server.core.service.fix;
 
+import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.service.sync.ProjectSyncIotCenterService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/6/28
@@ -27,8 +32,13 @@ public class FixDataService {
      * @return
      */
     public ResultContent fixSyncProjectToIot() {
-
-        return ResultContent.buildSuccess();
+        int count = 0;
+        List<Organization> list = organizationDao.findByAuthType(AuthType.Project);
+        if (ObjectUtils.isNotEmpty(list)) {
+            count = list.size();
+            projectSyncIotCenterService.noticeSyncProjects(list);
+        }
+        return ResultContent.buildSuccess(String.format("同步项目:%d", count));
     }
 
 }

+ 39 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/sync/ProjectSyncIotCenterService.java

@@ -1,10 +1,16 @@
 package com.zhongshu.card.server.core.service.sync;
 
 import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.models.project.ProjectSyncParam;
+import com.github.microservice.models.type.CommonState;
 import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.utils.type.OrganizationState;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.event.ProjectSyncEvent;
+import com.zhongshu.card.server.core.httpRequest.ApiRequestService;
+import com.zhongshu.card.server.core.httpRequest.apiConf.APIResponseModel;
+import com.zhongshu.card.server.core.httpRequest.conf.IotCenterAPIConfig;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -31,10 +37,13 @@ public class ProjectSyncIotCenterService {
     @Autowired
     ApplicationContext applicationContext;
 
+    @Autowired
+    ApiRequestService apiRequestService;
+
     public ResultContent noticeSyncProjects(List<Organization> list) {
         if (ObjectUtils.isNotEmpty(list)) {
-            List<String> projectIds = list.stream().map(it -> it.getOid()).collect(Collectors.toList());
-            ProjectSyncEvent event = new ProjectSyncEvent(this, projectIds);
+            List<String> projectOIds = list.stream().map(it -> it.getOid()).collect(Collectors.toList());
+            ProjectSyncEvent event = new ProjectSyncEvent(this, projectOIds);
             applicationContext.publishEvent(event);
         }
         return ResultContent.buildSuccess();
@@ -42,8 +51,8 @@ public class ProjectSyncIotCenterService {
 
     public ResultContent noticeSyncProject(Organization organization) {
         if (ObjectUtils.isNotEmpty(organization) && organization.getAuthType() == AuthType.Project) {
-            List<String> projectIds = List.of(organization.getOid());
-            ProjectSyncEvent event = new ProjectSyncEvent(this, projectIds);
+            List<String> projectOIds = List.of(organization.getOid());
+            ProjectSyncEvent event = new ProjectSyncEvent(this, projectOIds);
             applicationContext.publishEvent(event);
         }
         return ResultContent.buildSuccess();
@@ -53,6 +62,31 @@ public class ProjectSyncIotCenterService {
     @Async
     @SneakyThrows
     public void syncProjectInfo(ProjectSyncEvent event) {
-
+        List<String> projectOIds = event.getProjectOIds();
+        log.info("syncProjectInfo: {}", projectOIds.size());
+        if (ObjectUtils.isNotEmpty(projectOIds)) {
+            List<Organization> organizations = organizationDao.findByOidIn(projectOIds);
+            List<ProjectSyncParam.ProjectSyncInfo> list = organizations.stream().map(it -> {
+                ProjectSyncParam.ProjectSyncInfo info = new ProjectSyncParam.ProjectSyncInfo();
+                info.setCode(it.getCode());
+                info.setName(it.getName());
+                OrganizationState state = it.getState();
+                if (state == OrganizationState.Normal) {
+                    info.setState(CommonState.Enable);
+                } else {
+                    info.setState(CommonState.Disable);
+                }
+                return info;
+            }).collect(Collectors.toList());
+            ProjectSyncParam param = new ProjectSyncParam();
+            param.setList(list);
+            // 请求iot平台
+            APIResponseModel api = apiRequestService.sendIotCenterAPI(IotCenterAPIConfig.syncFromFullCardProjects, param);
+            if (api.isSuccess()) {
+                log.info("同步项目成功");
+            } else {
+                log.error("同步项目失败:{}", api.getMsg());
+            }
+        }
     }
 }