TRX 1 gadu atpakaļ
vecāks
revīzija
8bf6ead4c7

+ 23 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/config/ProjectUserConfigModel.java

@@ -0,0 +1,23 @@
+package com.zhongshu.card.client.model.config;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectUserConfigModel {
+
+    @Schema(description = "key")
+    private String key;
+
+    @Schema(description = "关联数据")
+    private Object data;
+
+}

+ 31 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/config/ProjectUserConfigParam.java

@@ -0,0 +1,31 @@
+package com.zhongshu.card.client.model.config;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectUserConfigParam {
+
+    @Schema(description = "项目oid")
+    private String projectOid;
+
+    @Schema(description = "用户userId")
+    private String userId;
+
+    @Schema(description = "key")
+    @NotEmpty
+    private String key;
+
+    @Schema(description = "关联数据")
+    private Object data;
+
+}

+ 48 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/config/ProjectUserConfigController.java

@@ -0,0 +1,48 @@
+package com.zhongshu.card.server.core.controller.config;
+
+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.config.ProjectUserConfigParam;
+import com.zhongshu.card.server.core.service.config.CommonConfigService;
+import com.zhongshu.card.server.core.service.config.ProjectUserConfigService;
+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/6/5
+ */
+@RestController
+@RequestMapping("/projectUserConfig")
+@Tag(name = "项目用户配置")
+public class ProjectUserConfigController {
+
+    @Autowired
+    private CommonConfigService commonConfigService;
+
+    @Autowired
+    private ProjectUserConfigService projectUserConfigService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "保存小程序用户配置", description = "保存小程序用户配置")
+    @RequestMapping(value = "xcxSaveUserConfig", method = {RequestMethod.POST})
+    public ResultContent xcxSaveUserConfig(@RequestBody @Valid ProjectUserConfigParam param) {
+        return this.projectUserConfigService.xcxSaveUserConfig(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到小程序用户配置", description = "得到小程序用户配置")
+    @RequestMapping(value = "xcxGetUserConfig", method = {RequestMethod.POST})
+    public ResultContent xcxGetUserConfig(@RequestBody @Valid ProjectUserConfigParam param) {
+        return this.projectUserConfigService.xcxGetUserConfig(param);
+    }
+
+}

+ 15 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/config/ProjectUserConfigDao.java

@@ -0,0 +1,15 @@
+package com.zhongshu.card.server.core.dao.config;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.domain.config.ProjectUserConfig;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface ProjectUserConfigDao extends MongoDao<ProjectUserConfig> {
+
+    ProjectUserConfig findTopById(String id);
+
+    ProjectUserConfig findTopByProjectOidAndUserIdAndKey(String projectOid, String userId, String key);
+}

+ 30 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/config/ProjectUserConfig.java

@@ -0,0 +1,30 @@
+package com.zhongshu.card.server.core.domain.config;
+
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.common.aliasing.qual.NonLeaked;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @author TRX
+ * @date 2024/11/26
+ */
+@Data
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+@NonLeaked
+public class ProjectUserConfig extends SuperMain {
+
+    @Schema(description = "用户userId")
+    private String userId;
+
+    @Schema(description = "key")
+    private String key;
+
+    @Schema(description = "关联数据")
+    private Object data;
+}

+ 94 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/config/ProjectUserConfigService.java

@@ -0,0 +1,94 @@
+package com.zhongshu.card.server.core.service.config;
+
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.config.ProjectUserConfigModel;
+import com.zhongshu.card.client.model.config.ProjectUserConfigParam;
+import com.zhongshu.card.server.core.dao.config.ProjectUserConfigDao;
+import com.zhongshu.card.server.core.domain.config.ProjectUserConfig;
+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.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2024/11/26
+ */
+@Slf4j
+@Service
+public class ProjectUserConfigService extends SuperService {
+
+    @Autowired
+    private ProjectUserConfigDao projectUserConfigDao;
+
+    public ResultContent xcxSaveUserConfig(ProjectUserConfigParam param) {
+        if (StringUtils.isEmpty(param.getUserId())) {
+            param.setUserId(getCurrentUserId());
+        }
+        if (StringUtils.isEmpty(param.getProjectOid())) {
+            param.setProjectOid(getCurrentProjectOid());
+        }
+        return saveUserConfig(param);
+    }
+
+    private ResultContent saveUserConfig(ProjectUserConfigParam param) {
+        if (StringUtils.isEmpty(param.getUserId())) {
+            return ResultContent.buildFail("userId为空");
+        }
+        if (StringUtils.isEmpty(param.getProjectOid())) {
+            return ResultContent.buildFail("projectOid为空");
+        }
+        if (StringUtils.isEmpty(param.getKey())) {
+            return ResultContent.buildFail("key为空");
+        }
+        ProjectUserConfig entity = projectUserConfigDao.findTopByProjectOidAndUserIdAndKey(param.getProjectOid(), param.getUserId(), param.getKey());
+        if (ObjectUtils.isEmpty(entity)) {
+            entity = new ProjectUserConfig();
+        }
+        entity.setProjectOid(param.getProjectOid());
+        entity.setUserId(param.getUserId());
+        entity.setKey(param.getKey());
+        entity.setData(param.getData());
+        projectUserConfigDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<ProjectUserConfigModel> xcxGetUserConfig(ProjectUserConfigParam param) {
+        if (StringUtils.isEmpty(param.getUserId())) {
+            param.setUserId(getCurrentUserId());
+        }
+        if (StringUtils.isEmpty(param.getProjectOid())) {
+            param.setProjectOid(getCurrentProjectOid());
+        }
+        return getUserConfig(param);
+    }
+
+    public ResultContent<ProjectUserConfigModel> getUserConfig(ProjectUserConfigParam param) {
+        if (StringUtils.isEmpty(param.getUserId())) {
+            return ResultContent.buildFail("userId为空");
+        }
+        if (StringUtils.isEmpty(param.getProjectOid())) {
+            return ResultContent.buildFail("projectOid为空");
+        }
+        if (StringUtils.isEmpty(param.getKey())) {
+            return ResultContent.buildFail("key为空");
+        }
+        ProjectUserConfig entity = projectUserConfigDao.findTopByProjectOidAndUserIdAndKey(param.getProjectOid(), param.getUserId(), param.getKey());
+        ProjectUserConfigModel model = toModel(entity);
+        if (StringUtils.isEmpty(model.getKey())) {
+            model.setKey(param.getKey());
+        }
+        return ResultContent.buildSuccess(model);
+    }
+
+    private ProjectUserConfigModel toModel(ProjectUserConfig entity) {
+        ProjectUserConfigModel model = new ProjectUserConfigModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+}