Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

wujiefeng 1 yıl önce
ebeveyn
işleme
878714bb81

+ 14 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/PayOrderSettingModel.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.client.model.paySetting.paySetting;
 
+import com.github.microservice.types.payment.PaymentChannelType;
 import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.type.DataState;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -37,10 +38,22 @@ public class PayOrderSettingModel {
         return "";
     }
 
+    @Schema(description = "支付类型")
+    private PaymentChannelType paymentChannelType;
+
+    private String paymentChannelTypeStr;
+
+    public String getPaymentChannelTypeStr() {
+        if (paymentChannelType != null) {
+            return paymentChannelType.getRemark();
+        }
+        return "";
+    }
+
     @Schema(description = "排序")
     private Long sort = 1l;
 
     @Schema(description = "是否启用")
     private DataState state = DataState.Enable;
-    
+
 }

+ 5 - 15
FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/PayOrderSettingParam.java

@@ -7,6 +7,9 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author TRX
  * @date 2024/11/12
@@ -15,19 +18,6 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @NoArgsConstructor
 public class PayOrderSettingParam {
-
-    @Schema(description = "数据ID")
-    private String id;
-
-    @Schema(description = "支付渠道")
-    private PaymentType paymentType;
-
-    @Schema(description = "所属用户userId")
-    private String userId;
-
-    @Schema(description = "是否启用")
-    private DataState state = DataState.Enable;
-
-    @Schema(description = "排序")
-    private Long sort = 1l;
+    @Schema(description = "排序数据")
+    private Map<String, Long> data = new HashMap<>();
 }

+ 53 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/paySetting/PayOrderSettingController.java

@@ -0,0 +1,53 @@
+package com.zhongshu.card.server.core.controller.paySetting;
+
+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.paySetting.paySetting.PayOrderSettingModel;
+import com.zhongshu.card.client.model.paySetting.paySetting.PayOrderSettingParam;
+import com.zhongshu.card.server.core.service.paySetting.PayOrderSettingService;
+import com.zhongshu.card.server.core.service.paySetting.ProjectChannelConfigService;
+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;
+import java.util.List;
+
+/**
+ * 项目支付顺序设置
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@RestController
+@RequestMapping("/projectPayOrder")
+@Tag(name = "支付管理-支付顺序")
+public class PayOrderSettingController {
+
+    @Autowired
+    private ProjectChannelConfigService projectChannelConfigService;
+
+    @Autowired
+    private PayOrderSettingService payOrderSettingService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到用户的支付渠道排序数据", description = "得到用户的支付渠道排序数据")
+    @RequestMapping(value = "getUserPayOrderSetting", method = {RequestMethod.GET})
+    public ResultContent<List<PayOrderSettingModel>> getUserPayOrderSetting() {
+        return payOrderSettingService.getUserPayOrderSetting();
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "保存用户的支付顺序", description = "保存用户的支付顺序")
+    @RequestMapping(value = "saveOrder", method = {RequestMethod.POST})
+    public ResultContent saveOrder(@RequestBody @Valid PayOrderSettingParam param) {
+        return payOrderSettingService.saveOrder(param);
+    }
+
+
+}

+ 88 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/PayOrderSettingService.java

@@ -3,18 +3,26 @@ package com.zhongshu.card.server.core.service.paySetting;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.model.paySetting.paySetting.PayOrderSettingModel;
+import com.zhongshu.card.client.model.paySetting.paySetting.PayOrderSettingParam;
+import com.zhongshu.card.client.model.projectAbout.PayChannelConfigModel;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.projectAbout.PayOrderSettingDao;
 import com.zhongshu.card.server.core.dao.projectAbout.ProjectPaySettingDao;
+import com.zhongshu.card.server.core.domain.paySetting.PayOrderSetting;
 import com.zhongshu.card.server.core.domain.paySetting.ProjectPaySetting;
 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;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author TRX
@@ -30,6 +38,9 @@ public class PayOrderSettingService extends SuperService {
     @Autowired
     private ProjectPaySettingDao projectPaySettingDao;
 
+    @Autowired
+    private ProjectChannelConfigService projectChannelConfigService;
+
     /**
      * 得到用户的支付服务
      *
@@ -38,9 +49,56 @@ public class PayOrderSettingService extends SuperService {
     public ResultContent<List<PayOrderSettingModel>> getUserPayOrderSetting() {
         String userId = getCurrentUserId();
         String projectOid = getCurrentProjectOid();
+        if (StringUtils.isEmpty(userId) || StringUtils.isEmpty(projectOid)) {
+            return ResultContent.buildFail("项目信息失败");
+        }
 
+        List<PayOrderSetting> payOrderSettings = getUserPayOrderSettings(userId, projectOid);
+        List<PayOrderSettingModel> models = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(payOrderSettings)) {
+            models = payOrderSettings.stream().map(this::toModel).collect(Collectors.toUnmodifiableList());
+        }
+        return ResultContent.buildSuccess(models);
+    }
 
-        return ResultContent.buildSuccess();
+
+    public List<PayOrderSetting> getUserPayOrderSettings(String userId, String projectOid) {
+        // 已有的数据
+        List<PayOrderSetting> payOrderSettings = payOrderSettingDao.findByUserIdAndProjectOidOrderBySortAsc(userId, projectOid);
+        long max = 1;
+        HashMap<PaymentType, PayOrderSetting> map = new HashMap<>();
+        if (ObjectUtils.isNotEmpty(payOrderSettings)) {
+            for (PayOrderSetting temp : payOrderSettings) {
+                long sort = temp.getSort();
+                if (sort > max) {
+                    max = sort;
+                }
+                map.put(temp.getPaymentType(), temp);
+            }
+        }
+        // 所有的支付渠道
+        List<PaymentType> paymentTypes = getProjectPayment(projectOid);
+        List<PayOrderSetting> newList = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(paymentTypes)) {
+            long i = max;
+            for (PaymentType paymentType : paymentTypes) {
+                PayOrderSetting payOrderSetting = null;
+                if (map.containsKey(paymentType)) {
+                    payOrderSetting = map.get(paymentType);
+                } else {
+                    payOrderSetting = new PayOrderSetting();
+                    i++;
+                    payOrderSetting.setSort(i);
+                }
+                payOrderSetting.setProjectOid(projectOid);
+                payOrderSetting.setUserId(userId);
+                payOrderSetting.setPaymentType(paymentType);
+                payOrderSettings.add(payOrderSetting);
+                newList.add(payOrderSetting);
+            }
+            payOrderSettingDao.saveAll(newList);
+        }
+        return newList;
     }
 
     public List<PaymentType> getProjectPayment(String projectOid) {
@@ -52,13 +110,39 @@ public class PayOrderSettingService extends SuperService {
                     continue;
                 }
                 PaymentType channelType = projectPaySetting.getChannelType();
-//                if (channelType == PaymentType.WeChat) {
-//                    channelType = PaymentType.UserWallet;
-//                }
                 paymentTypes.add(channelType);
             }
         }
         return paymentTypes;
     }
 
+    public ResultContent saveOrder(PayOrderSettingParam param) {
+        String userId = getCurrentUserId();
+        String projectOid = getCurrentProjectOid();
+
+        Map<String, Long> sortMap = param.getData();
+        List<PayOrderSetting> payOrderSettings = payOrderSettingDao.findByUserIdAndProjectOidOrderBySortAsc(userId, projectOid);
+        if (ObjectUtils.isNotEmpty(payOrderSettings)) {
+            for (PayOrderSetting payOrderSetting : payOrderSettings) {
+                if (sortMap.containsKey(payOrderSetting.getId())) {
+                    payOrderSetting.setSort(sortMap.get(payOrderSetting.getId()));
+                }
+            }
+            payOrderSettingDao.saveAll(payOrderSettings);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    public PayOrderSettingModel toModel(PayOrderSetting entity) {
+        PayOrderSettingModel model = new PayOrderSettingModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+            PayChannelConfigModel channelConfigModel = projectChannelConfigService.getProjectPayChannelModel(entity.getPaymentType());
+            model.setName(channelConfigModel.getName());
+            model.setLogo(channelConfigModel.getLogo());
+            model.setPaymentChannelType(channelConfigModel.getPaymentChannelType());
+        }
+        return model;
+    }
+
 }