TRX 1 년 전
부모
커밋
38a156b391

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/ProjectOrgModel.java

@@ -28,4 +28,7 @@ public class ProjectOrgModel extends OrganizationModel {
     @Schema(description = "是否完成项目管理的物联网设置")
     private Boolean isFinishIot = Boolean.FALSE;
 
+    @Schema(description = "是否完成通用设置")
+    private Boolean isFinishCommon = Boolean.FALSE;
+
 }

+ 56 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectCommonConfigModel.java

@@ -0,0 +1,56 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.zhongshu.card.client.type.PassWordDefaultType;
+import com.zhongshu.card.client.type.PassWordType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectCommonConfigModel {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "项目ID")
+    private String projectOid;
+
+    @Schema(description = "最小密码长度")
+    private Integer minPassWordLength = 6;
+
+    @Schema(description = "最小密码长度")
+    private Integer maxPassWordLength = 20;
+
+    @Schema(description = "密码字符组合类型")
+    private PassWordType passWordType;
+
+    @Schema(description = "默认密码设置类型")
+    private PassWordDefaultType passWordDefaultType;
+
+    @Schema(description = "这样的默认密码")
+    private String defaultPassWord;
+
+    @Schema(description = "默认用户头像")
+    private String defaultUserHead;
+
+    // --------------游客许可 ---------------
+    @Schema(description = "允许游客注册")
+    private Boolean isAllowRegister = Boolean.FALSE;
+
+    @Schema(description = "允许游客消费")
+    private Boolean isAllowConsume = Boolean.FALSE;
+
+    @Schema(description = "用户协议")
+    private String userAgreement = "";
+
+    @Schema(description = "隐私政策")
+    private String privacyPolicy = "";
+
+}

+ 68 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectCommonConfigParam.java

@@ -0,0 +1,68 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.zhongshu.card.client.type.PassWordDefaultType;
+import com.zhongshu.card.client.type.PassWordType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectCommonConfigParam {
+
+    @NotEmpty
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "最小密码长度")
+    @Min(value = 4)
+    @Max(value = 20)
+    private Integer minPassWordLength = 6;
+
+    @Schema(description = "最小密码长度")
+    @Min(value = 4)
+    @Max(value = 20)
+    private Integer maxPassWordLength = 20;
+
+    @Schema(description = "密码字符组合类型")
+    @NotNull
+    private PassWordType passWordType;
+
+    @Schema(description = "默认密码设置类型")
+    private PassWordDefaultType passWordDefaultType;
+
+    @Schema(description = "这样的默认密码")
+    private String defaultPassWord;
+
+    @Schema(description = "默认用户头像")
+    private String defaultUserHead;
+
+    // --------------游客许可 ---------------
+    @Schema(description = "允许游客注册")
+    private Boolean isAllowRegister = Boolean.FALSE;
+
+    @Schema(description = "允许游客消费")
+    private Boolean isAllowConsume = Boolean.FALSE;
+
+    @Schema(description = "用户协议")
+    @NotEmpty
+    private String userAgreement = "";
+
+    @NotEmpty
+    @Schema(description = "隐私政策")
+    private String privacyPolicy = "";
+
+    @Schema(description = "")
+    private String remark;
+
+}

+ 19 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/type/PassWordDefaultType.java

@@ -0,0 +1,19 @@
+package com.zhongshu.card.client.type;
+
+import lombok.Getter;
+
+/**
+ * 密码限制类型
+ */
+public enum PassWordDefaultType {
+    CardNumberLast6("身份证后6位"),
+    Cosuom("自定义初始密码"),
+    ;
+
+    @Getter
+    private String remark;
+
+    PassWordDefaultType(String remark) {
+        this.remark = remark;
+    }
+}

+ 22 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/type/PassWordType.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.client.type;
+
+import lombok.Getter;
+
+/**
+ * 密码限制类型
+ */
+public enum PassWordType {
+    NotLimit("不限制"),
+    ChartAndNumber("必须包含子母+数字"),
+    ChartUpAndChartLowAndNumber("必须包含大写字母+小写字母+数字组合"),
+    ChartAndSpecialAndNumber("必须包含字母+特殊字符+数字组合"),
+    ChartUpAndChartLowAndSpecialAndNumber("必须包含大写字母+小写字母+特殊字符+数字组合"),
+    ;
+
+    @Getter
+    private String remark;
+
+    PassWordType(String remark) {
+        this.remark = remark;
+    }
+}

+ 58 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectCommonConfigController.java

@@ -0,0 +1,58 @@
+package com.zhongshu.card.server.core.controller.projectAbout;
+
+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.model.base.ProjectOidParam;
+import com.zhongshu.card.client.model.projectAbout.ProjectCommonConfigModel;
+import com.zhongshu.card.client.model.projectAbout.ProjectCommonConfigParam;
+import com.zhongshu.card.server.core.service.projectAbout.ProjectCommonConfigService;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * 项目的 通用设置
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@RestController
+@RequestMapping("/project/projectCommonConfig")
+@Tag(name = "项目-通用设置")
+public class ProjectCommonConfigController {
+
+    @Autowired
+    ProjectCommonConfigService projectCommonConfigService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "保存项目的通用设置", description = "保存项目的通用设置")
+    @RequestMapping(value = "saveInfo", method = {RequestMethod.POST})
+    public ResultContent saveInfo(@RequestBody @Valid ProjectCommonConfigParam param) {
+        return projectCommonConfigService.saveInfo(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到项目的通用配置", description = "得到项目的通用配置")
+    @RequestMapping(value = "getInfo", method = {RequestMethod.POST})
+    public ResultContent<ProjectCommonConfigModel> getProjectWeChatInfo(@RequestBody ProjectOidParam param) {
+        return projectCommonConfigService.getInfo(param.getProjectOid());
+    }
+
+    //------------------------------feign start -----------------------
+    @Operation(hidden = true, summary = "得到项目的通用配置", description = "得到项目的通用配置")
+    @RequestMapping(value = "manager/getProjectIotInfo", method = {RequestMethod.POST})
+    @Hidden
+    public ResultContent<ProjectCommonConfigModel> getProjectIotInfo(
+            @RequestBody ProjectOidParam param) {
+        return projectCommonConfigService.getInfo(param.getProjectOid());
+    }
+
+}

+ 16 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectCommonConfigDao.java

@@ -0,0 +1,16 @@
+package com.zhongshu.card.server.core.dao.projectAbout;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectCommonConfig;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectIotInfo;
+
+/**
+ * 项目关联的 通用设置
+ */
+public interface ProjectCommonConfigDao extends MongoDao<ProjectCommonConfig> {
+
+    ProjectCommonConfig findTopById(String id);
+
+    ProjectCommonConfig findTopByProjectOid(String projectOid);
+
+}

+ 70 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectCommonConfig.java

@@ -0,0 +1,70 @@
+package com.zhongshu.card.server.core.domain.projectAbout;
+
+import com.zhongshu.card.client.type.PassWordDefaultType;
+import com.zhongshu.card.client.type.PassWordType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 项目相关的 通用设置
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectCommonConfig extends SuperMain {
+
+    @Schema(description = "项目信息")
+    @DBRef(lazy = true)
+    private Organization projectInfo;
+
+    @Schema(description = "项目名称")
+    private String projectName;
+
+    @Schema(description = "项目编码")
+    private String projectCode;
+
+    //----------------------------业务信息 start-----------------
+
+    @Schema(description = "最小密码长度")
+    private Integer minPassWordLength = 6;
+
+    @Schema(description = "最小密码长度")
+    private Integer maxPassWordLength = 20;
+
+    @Schema(description = "密码字符组合类型")
+    private PassWordType passWordType;
+
+    @Schema(description = "默认密码设置类型")
+    private PassWordDefaultType passWordDefaultType;
+
+    @Schema(description = "这样的默认密码")
+    private String defaultPassWord;
+
+    @Schema(description = "默认用户头像")
+    private String defaultUserHead;
+
+    // --------------游客许可 ---------------
+    @Schema(description = "允许游客注册")
+    private Boolean isAllowRegister = Boolean.FALSE;
+
+    @Schema(description = "允许游客消费")
+    private Boolean isAllowConsume = Boolean.FALSE;
+
+    @Schema(description = "用户协议")
+    private String userAgreement = "";
+
+    @Schema(description = "隐私政策")
+    private String privacyPolicy = "";
+}

+ 5 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java

@@ -24,6 +24,7 @@ import com.zhongshu.card.server.core.dao.org.*;
 import com.zhongshu.card.server.core.dataConfig.CardSystemDefault;
 import com.zhongshu.card.server.core.domain.org.*;
 import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.service.projectAbout.ProjectCommonConfigService;
 import com.zhongshu.card.server.core.service.projectAbout.ProjectIotInfoService;
 import com.zhongshu.card.server.core.service.projectAbout.ProjectWeChatInfoService;
 import com.zhongshu.card.server.core.service.sync.ProjectSyncIotCenterService;
@@ -108,6 +109,9 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
     @Autowired
     ProjectWeChatInfoService projectWeChatInfoService;
 
+    @Autowired
+    ProjectCommonConfigService projectCommonConfigService;
+
     /**
      * 保存项目信息
      *
@@ -1104,7 +1108,7 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
             // 是否完成配置
             model.setIsFinishWeChat(projectWeChatInfoService.isFinishConfig(entity.getOid()));
             model.setIsFinishIot(projectIotInfoService.isFinishConfig(entity.getOid()));
-
+            model.setIsFinishCommon(projectCommonConfigService.isFinishConfig(entity.getOid()));
         }
         return model;
     }

+ 105 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectCommonConfigService.java

@@ -0,0 +1,105 @@
+package com.zhongshu.card.server.core.service.projectAbout;
+
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.projectAbout.ProjectCommonConfigModel;
+import com.zhongshu.card.client.model.projectAbout.ProjectCommonConfigParam;
+import com.zhongshu.card.client.model.projectAbout.ProjectIotInfoModel;
+import com.zhongshu.card.client.model.projectAbout.ProjectIotInfoParam;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectCommonConfigDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectCommonConfig;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectIotInfo;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目的 关联的物联网 ak sk 设置
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Slf4j
+@Service
+public class ProjectCommonConfigService extends SuperService {
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    @Autowired
+    ProjectCommonConfigDao commonConfigDao;
+
+    /**
+     * 保存配置信息
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent saveInfo(ProjectCommonConfigParam param) {
+        String projectOid = param.getProjectOid();
+        Organization projectInfo = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(projectInfo)) {
+            return ResultContent.buildFail(String.format("项目oid不存在:%s", projectOid));
+        }
+        ProjectCommonConfig entity = commonConfigDao.findTopByProjectOid(projectOid);
+        if (ObjectUtils.isEmpty(entity)) {
+            entity = new ProjectCommonConfig();
+            entity.setIsDelete(Boolean.FALSE);
+            initEntityNoOid(entity);
+        } else {
+            initUpdateEntity(entity);
+        }
+        BeanUtils.copyProperties(param, entity);
+        entity.setProjectInfo(projectInfo);
+        entity.setProjectName(projectInfo.getName());
+        entity.setProjectCode(projectInfo.getCode());
+        entity.setOid(projectOid);
+        entity.setAboutOid(projectOid);
+        entity.setAboutAuthType(projectInfo.getAuthType());
+        commonConfigDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 得到项目
+     *
+     * @param projectOid
+     * @return
+     */
+    public ResultContent<ProjectCommonConfigModel> getInfo(String projectOid) {
+        ProjectCommonConfig entity = commonConfigDao.findTopByProjectOid(projectOid);
+        ProjectCommonConfigModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = toModel(entity);
+        }
+        return ResultContent.buildSuccess(model);
+    }
+
+    /**
+     * 项目是否完成配置
+     *
+     * @param projectOid
+     * @return
+     */
+    public boolean isFinishConfig(String projectOid) {
+        ProjectCommonConfig entity = commonConfigDao.findTopByProjectOid(projectOid);
+        if (ObjectUtils.isNotEmpty(entity)) {
+            return true;
+        }
+        return false;
+    }
+
+    public ProjectCommonConfigModel toModel(ProjectCommonConfig entity) {
+        ProjectCommonConfigModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new ProjectCommonConfigModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}

+ 14 - 11
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectIotInfoService.java

@@ -42,19 +42,22 @@ public class ProjectIotInfoService extends SuperService {
         if (ObjectUtils.isEmpty(projectInfo)) {
             return ResultContent.buildFail(String.format("项目oid不存在:%s", projectOid));
         }
-        ProjectIotInfo ProjectIotInfo = projectIotInfoDao.findTopByProjectOid(projectOid);
-        if (ObjectUtils.isEmpty(ProjectIotInfo)) {
-            ProjectIotInfo = new ProjectIotInfo();
-            ProjectIotInfo.setIsDelete(Boolean.FALSE);
-            initEntityNoOid(ProjectIotInfo);
+        ProjectIotInfo entity = projectIotInfoDao.findTopByProjectOid(projectOid);
+        if (ObjectUtils.isEmpty(entity)) {
+            entity = new ProjectIotInfo();
+            entity.setIsDelete(Boolean.FALSE);
+            initEntityNoOid(entity);
         } else {
-            initUpdateEntity(ProjectIotInfo);
+            initUpdateEntity(entity);
         }
-        BeanUtils.copyProperties(param, ProjectIotInfo);
-        ProjectIotInfo.setOid(projectOid);
-        ProjectIotInfo.setAboutOid(projectOid);
-        ProjectIotInfo.setAboutAuthType(projectInfo.getAuthType());
-        projectIotInfoDao.save(ProjectIotInfo);
+        BeanUtils.copyProperties(param, entity);
+        entity.setProjectInfo(projectInfo);
+        entity.setProjectName(projectInfo.getName());
+        entity.setProjectCode(projectInfo.getCode());
+        entity.setOid(projectOid);
+        entity.setAboutOid(projectOid);
+        entity.setAboutAuthType(projectInfo.getAuthType());
+        projectIotInfoDao.save(entity);
         return ResultContent.buildSuccess();
     }
 

+ 4 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectWeChatInfoService.java

@@ -51,6 +51,10 @@ public class ProjectWeChatInfoService extends SuperService {
             initUpdateEntity(projectWeChatInfo);
         }
         BeanUtils.copyProperties(param, projectWeChatInfo);
+        projectWeChatInfo.setProjectInfo(projectInfo);
+        projectWeChatInfo.setProjectName(projectInfo.getName());
+        projectWeChatInfo.setProjectCode(projectInfo.getCode());
+
         projectWeChatInfo.setOid(projectOid);
         projectWeChatInfo.setAboutOid(projectOid);
         projectWeChatInfo.setAboutAuthType(projectInfo.getAuthType());