TRX 1 år sedan
förälder
incheckning
2594a08f9f

+ 21 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/config/UserProjectFinishConfig.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.client.model.config;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 用户在项目是否完成 某些配置的 结果
+ *
+ * @author TRX
+ * @date 2025/3/5
+ */
+@Data
+public class UserProjectFinishConfig {
+
+    @Schema(description = "配置")
+    private Map<String, Object> config = new HashMap<String, Object>();
+
+}

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

@@ -56,4 +56,7 @@ public class ProjectUserConfigController {
         return this.projectUserConfigService.xcxGetUserConfig(param);
     }
 
+    //------------------用户在项目的完成 必要性的配置 start -----------------
+
+
 }

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

@@ -3,6 +3,8 @@ 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;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/3/21
@@ -12,4 +14,7 @@ public interface ProjectUserConfigDao extends MongoDao<ProjectUserConfig> {
     ProjectUserConfig findTopById(String id);
 
     ProjectUserConfig findTopByProjectOidAndUserIdAndKey(String projectOid, String userId, String key);
+
+    List<ProjectUserConfig> findByProjectOidAndUserIdAndKeyIn(String projectOid, String userId, List<String> keys);
+
 }

+ 15 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dataConfig/UserProjectTaskConfig.java

@@ -0,0 +1,15 @@
+package com.zhongshu.card.server.core.dataConfig;
+
+/**
+ * @author TRX
+ * @date 2025/3/5
+ */
+public class UserProjectTaskConfig {
+
+    // 是否完成绑定卡片任务
+    public static final String userBindCardKey = "userBindCardKey";
+
+    // 是否完成开通无感支付
+    public static final String userOpenUnconsciousPayment = "userOpenUnconsciousPayment";
+
+}

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

@@ -4,15 +4,22 @@ 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.dataConfig.UserProjectTaskConfig;
 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 com.zhongshu.card.server.core.util.CommonUtil;
 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;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * @author TRX
  * @date 2024/11/26
@@ -24,6 +31,55 @@ public class ProjectUserConfigService extends SuperService {
     @Autowired
     private ProjectUserConfigDao projectUserConfigDao;
 
+    /**
+     * 得到项目中用户所有的配置
+     *
+     * @param userId
+     * @param projectId
+     * @return
+     */
+    public Map<String, Object> getProjectUserConfigs(String userId, String projectId) {
+        if (StringUtils.isEmpty(userId)) {
+            userId = getCurrentUserId();
+        }
+        if (StringUtils.isEmpty(projectId)) {
+            projectId = getCurrentProjectOid();
+        }
+        Map<String, Object> map = new HashMap<String, Object>();
+        List<String> keys = CommonUtil.getClassAllStringStatic(UserProjectTaskConfig.class);
+        List<ProjectUserConfig> list = getUserProjectConfigs(userId, projectId, keys);
+        Map<String, Object> tempMap = new HashMap<>();
+        if (ObjectUtils.isNotEmpty(list)) {
+            tempMap = list.stream().collect(Collectors.toMap(
+                    it -> it.getKey(),
+                    it -> it.getData(),
+                    (v1, v2) -> v1
+            ));
+        }
+        for (String key : keys) {
+            if (tempMap.containsKey(key)) {
+                map.put(key, tempMap.get(key));
+            } else {
+                map.put(key, Boolean.FALSE);
+            }
+        }
+        return map;
+    }
+
+
+    public ResultContent saveUserConfig(String key, Object data) {
+        ProjectUserConfigParam param = new ProjectUserConfigParam();
+        if (StringUtils.isEmpty(param.getUserId())) {
+            param.setUserId(getCurrentUserId());
+        }
+        if (StringUtils.isEmpty(param.getProjectOid())) {
+            param.setProjectOid(getCurrentProjectOid());
+        }
+        param.setKey(key);
+        param.setData(data);
+        return saveUserConfig(param);
+    }
+
     /**
      * 保存小程序用户配置
      *
@@ -88,7 +144,7 @@ public class ProjectUserConfigService extends SuperService {
         if (StringUtils.isEmpty(param.getKey())) {
             return ResultContent.buildFail("key为空");
         }
-        ProjectUserConfig entity = projectUserConfigDao.findTopByProjectOidAndUserIdAndKey(param.getProjectOid(), param.getUserId(), param.getKey());
+        ProjectUserConfig entity = getUserProjectConfig(param.getUserId(), param.getProjectOid(), param.getKey());
         ProjectUserConfigModel model = toModel(entity);
         if (StringUtils.isEmpty(model.getKey())) {
             if (ObjectUtils.isEmpty(model)) {
@@ -99,6 +155,32 @@ public class ProjectUserConfigService extends SuperService {
         return ResultContent.buildSuccess(model);
     }
 
+    public ProjectUserConfig getUserProjectConfig(String userId, String projectOid, String key) {
+        if (StringUtils.isEmpty(userId)) {
+            return null;
+        }
+        if (StringUtils.isEmpty(projectOid)) {
+            return null;
+        }
+        if (StringUtils.isEmpty(key)) {
+            return null;
+        }
+        return projectUserConfigDao.findTopByProjectOidAndUserIdAndKey(projectOid, userId, key);
+    }
+
+    public List<ProjectUserConfig> getUserProjectConfigs(String userId, String projectOid, List<String> keys) {
+        if (StringUtils.isEmpty(userId)) {
+            return null;
+        }
+        if (StringUtils.isEmpty(projectOid)) {
+            return null;
+        }
+        if (ObjectUtils.isEmpty(keys)) {
+            return null;
+        }
+        return projectUserConfigDao.findByProjectOidAndUserIdAndKeyIn(projectOid, userId, keys);
+    }
+
     private ProjectUserConfigModel toModel(ProjectUserConfig entity) {
         ProjectUserConfigModel model = new ProjectUserConfigModel();
         if (ObjectUtils.isNotEmpty(entity)) {

+ 5 - 12
FullCardServer/src/main/java/com/zhongshu/card/server/core/test/Test.java

@@ -1,19 +1,9 @@
 package com.zhongshu.card.server.core.test;
 
-import cn.hutool.core.lang.Snowflake;
-import cn.hutool.json.JSONUtil;
-import com.zhongshu.card.client.utils.DateUtils;
+import com.zhongshu.card.server.core.dataConfig.UserProjectTaskConfig;
 import com.zhongshu.card.server.core.util.CommonUtil;
-import com.zhongshu.card.server.core.util.ValidateResult;
-import com.zhongshu.card.server.core.util.ValidateUtils;
-import groovy.lang.GroovyShell;
 
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.Base64;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author TRX
@@ -55,6 +45,9 @@ public class Test {
 //            e.printStackTrace();
 //        }
 
+        List<String> keys = CommonUtil.getClassAllStringStatic(UserProjectTaskConfig.class);
+        System.out.println(keys);
+
         Calendar calendar = Calendar.getInstance();
         calendar.add(Calendar.DATE, 5);
         System.out.println(calendar.get(Calendar.DAY_OF_WEEK));

+ 31 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/util/CommonUtil.java

@@ -33,6 +33,7 @@ import org.springframework.data.domain.Pageable;
 
 import java.io.ByteArrayOutputStream;
 import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -693,4 +694,34 @@ public class CommonUtil {
         };
     }
 
+    /**
+     * 得到类的所有字符串类型的静态变量的值
+     *
+     * @param clazz
+     * @return
+     */
+    public static List<String> getClassAllStringStatic(Class<?> clazz) {
+        if (clazz != null) {
+            List<String> list = new ArrayList<>();
+            Field[] fields = clazz.getDeclaredFields();
+            try {
+                for (Field field : fields) {
+                    int modifiers = field.getModifiers();
+                    if (Modifier.isStatic(modifiers)) {
+                        Object value = field.get(null);
+                        if (value != null) {
+                            if (value instanceof String) {
+                                list.add((String) value);
+                            }
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                log.error("getClassAllStringStatic: {}", e.getMessage());
+            }
+            return list;
+        }
+        return Lists.newArrayList();
+    }
+
 }