瀏覽代碼

更新!

TRX 1 年之前
父節點
當前提交
7aab61ea92

+ 9 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/ProjectPaySettingModel.java

@@ -39,4 +39,13 @@ public class ProjectPaySettingModel {
 
     @Schema(description = "关联的支付产品信息")
     private PayChannelConfigModel payChannelConfigModel;
+
+    private Boolean isConfig = Boolean.FALSE;
+
+    public Boolean getIsConfig() {
+        if (payConfig != null) {
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
 }

+ 1 - 2
FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/ProjectPaySettingParam.java

@@ -17,6 +17,5 @@ public class ProjectPaySettingParam {
     @Schema(description = "项目id")
     private String projectOid;
 
-    @Schema(description = "项目的支付渠道设置")
-    private PaymentType channelType;
+    private String id;
 }

+ 21 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/PayChannelConfigAllPayModel.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/9/27
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PayChannelConfigAllPayModel extends PayChannelConfigModel {
+
+    private List<PaymentChannelTypeModel> paymentChannelTypes = new ArrayList<PaymentChannelTypeModel>();
+
+}

+ 0 - 4
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/PayChannelConfigModel.java

@@ -2,7 +2,6 @@ package com.zhongshu.card.client.model.projectAbout;
 
 import com.github.microservice.types.payment.PaymentChannelType;
 import com.github.microservice.types.payment.PaymentType;
-import com.github.microservice.types.payment.PaymentTypeModel;
 import com.zhongshu.card.client.model.base.SuperModel;
 import com.zhongshu.card.client.type.DataState;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -10,9 +9,6 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * 项目的 支付渠道配置模型
  *

+ 33 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/PaymentChannelTypeModel.java

@@ -0,0 +1,33 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.github.microservice.types.payment.PaymentChannelType;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.internal.build.AllowPrintStacktrace;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/10/22
+ */
+@Data
+@AllowPrintStacktrace
+@NoArgsConstructor
+public class PaymentChannelTypeModel {
+
+    private PaymentChannelType paymentChannelType;
+
+    private String paymentChannelTypeStr;
+
+    public String getPaymentChannelTypeStr() {
+        if (paymentChannelType != null) {
+            return paymentChannelType.getRemark();
+        }
+        return "";
+    }
+
+    private List<PaymentTypeInfoModel> paymentTypes = new ArrayList<PaymentTypeInfoModel>();
+
+}

+ 27 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/PaymentTypeInfoModel.java

@@ -0,0 +1,27 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.github.microservice.types.payment.PaymentType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/10/22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PaymentTypeInfoModel {
+
+    private PaymentType paymentType;
+
+    private String paymentTypeStr;
+
+    public String getPaymentTypeStr() {
+        if (paymentType != null) {
+            return paymentType.getRemark();
+        }
+        return "";
+    }
+}

+ 12 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/paySetting/ProjectPaySettingController.java

@@ -2,13 +2,15 @@ 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.base.IDParam;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
-import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
-import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.paySetting.payConfig.LaKaLaCollectionConfig;
 import com.zhongshu.card.client.model.paySetting.payConfig.LaKaLaCollectionConfigParam;
-import com.zhongshu.card.client.model.paySetting.paySetting.*;
+import com.zhongshu.card.client.model.paySetting.paySetting.ProjectPaySettingModel;
+import com.zhongshu.card.client.model.paySetting.paySetting.ProjectPaySettingParam;
+import com.zhongshu.card.client.model.paySetting.paySetting.WxPayConfigModel;
+import com.zhongshu.card.client.model.paySetting.paySetting.WxPayConfigParam;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.service.paySetting.ProjectPaySettingServiceImpl;
 import io.swagger.v3.oas.annotations.Operation;
@@ -34,6 +36,13 @@ public class ProjectPaySettingController {
     @Autowired
     private ProjectPaySettingServiceImpl projectPaySettingService;
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "关联支付产品", description = "关联支付产品")
+    @RequestMapping(value = "savePayChannel", method = {RequestMethod.POST})
+    public ResultContent savePayChannel(@RequestBody ProjectPaySettingParam param) {
+        return projectPaySettingService.savePayChannel(param);
+    }
+
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "得到项目所有的支付渠道参数配置", description = "得到项目所有的支付渠道参数配置")
     @RequestMapping(value = "getAllProjectPaySetting", method = {RequestMethod.POST})

+ 33 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectChannelConfigService.java

@@ -5,14 +5,10 @@ import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
 import com.github.microservice.types.payment.PaymentChannelType;
 import com.github.microservice.types.payment.PaymentType;
-import com.github.microservice.types.payment.PaymentTypeModel;
-import com.zhongshu.card.client.model.projectAbout.PayChannelConfigModel;
-import com.zhongshu.card.client.model.projectAbout.PayChannelConfigParam;
-import com.zhongshu.card.client.model.projectAbout.PayChannelConfigSearch;
+import com.zhongshu.card.client.model.projectAbout.*;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.projectAbout.PayChannelConfigDao;
-import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.paySetting.PayChannelConfig;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.util.BeanUtils;
@@ -223,4 +219,36 @@ public class ProjectChannelConfigService extends SuperService {
         return model;
     }
 
+    public PayChannelConfigAllPayModel toAllModel(PayChannelConfig entity) {
+        PayChannelConfigAllPayModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new PayChannelConfigAllPayModel();
+            BeanUtils.copyProperties(entity, model);
+
+            // 支付渠道
+            model.setPaymentChannelTypes(buildTypes());
+        }
+        return model;
+    }
+
+    /**
+     * 创建平台支持的渠道
+     *
+     * @return
+     */
+    public List<PaymentChannelTypeModel> buildTypes() {
+        List<PaymentChannelTypeModel> paymentChannelTypes = new ArrayList<>();
+        for (PaymentChannelType channelType : PaymentChannelType.values()) {
+            PaymentChannelTypeModel model = new PaymentChannelTypeModel();
+            model.setPaymentChannelType(channelType);
+
+            List<PaymentTypeInfoModel> paymentTypes = new ArrayList<PaymentTypeInfoModel>();
+            for (PaymentType paymentType : PaymentType.values()) {
+
+            }
+            paymentChannelTypes.add(model);
+        }
+        return paymentChannelTypes;
+    }
+
 }

+ 48 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectPaySettingServiceImpl.java

@@ -10,6 +10,7 @@ import com.zhongshu.card.client.model.paySetting.paySetting.*;
 import com.zhongshu.card.client.model.projectAbout.PayChannelConfigModel;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.dao.projectAbout.PayChannelConfigDao;
 import com.zhongshu.card.server.core.dao.projectAbout.ProjectPaySettingDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.paySetting.PayChannelConfig;
@@ -19,6 +20,7 @@ import com.zhongshu.card.server.core.util.AesUtils;
 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.data.mongodb.gridfs.GridFsTemplate;
 import org.springframework.stereotype.Service;
@@ -51,8 +53,50 @@ public class ProjectPaySettingServiceImpl extends SuperService {
     @Autowired
     ProjectChannelConfigService projectChannelConfigService;
 
+    @Autowired
+    PayChannelConfigDao payChannelConfigDao;
+
     //-----------------------------微信支付的配置 start------------------
 
+    /**
+     * 关联支付渠道
+     *
+     * @return
+     */
+    public ResultContent savePayChannel(ProjectPaySettingParam param) {
+        String projectOid = param.getProjectOid();
+        if (StringUtils.isEmpty(projectOid)) {
+            return ResultContent.buildFail("projectOid不能为空");
+        }
+        Organization project = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(project)) {
+            return ResultContent.buildFail("项目不存在");
+        }
+        PayChannelConfig payChannelConfig = payChannelConfigDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(payChannelConfig)) {
+            return ResultContent.buildFail("支付产品不存在");
+        }
+        PaymentType paymentType = payChannelConfig.getPaymentType();
+
+        ProjectPaySetting projectPaySetting = projectPaySettingDao.findTopByProjectOidAndChannelType(
+                projectOid, paymentType);
+        if (ObjectUtils.isNotEmpty(projectPaySetting)) {
+            return ResultContent.buildFail(String.format("%s已存在", paymentType.name()));
+        }
+        projectPaySetting = new ProjectPaySetting();
+        initEntityNoCheckOid(projectPaySetting);
+        projectPaySetting.setProjectOid(projectOid);
+        projectPaySetting.setProjectInfo(project);
+        projectPaySetting.setProjectCode(project.getCode());
+        projectPaySetting.setProjectName(project.getName());
+        projectPaySetting.setChannelType(paymentType);
+        projectPaySetting.setPaymentChannelType(payChannelConfig.getPaymentChannelType());
+
+        projectPaySetting.setState(DataState.Disable);
+        projectPaySettingDao.save(projectPaySetting);
+        return ResultContent.buildSuccess();
+    }
+
     /**
      * 保存项目的微信支付设置
      *
@@ -166,6 +210,9 @@ public class ProjectPaySettingServiceImpl extends SuperService {
         if (ObjectUtils.isEmpty(paySetting)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
         }
+        if (state == DataState.Enable && paySetting.getPayConfig() == null) {
+            return ResultContent.buildFail("参数未配置,不能启用");
+        }
         paySetting.setState(state);
         projectPaySettingDao.save(paySetting);
         return ResultContent.buildSuccess();
@@ -212,6 +259,7 @@ public class ProjectPaySettingServiceImpl extends SuperService {
         if (ObjectUtils.isNotEmpty(entity)) {
             model = new ProjectPaySettingModel();
             BeanUtils.copyProperties(entity, model);
+            // 关联的支付产品信息
             model.setPayChannelConfigModel(projectChannelConfigService.getProjectPayChannelModel(entity.getChannelType()));
         }
         return model;