TRX 1 年間 前
コミット
cebf644d5f
14 ファイル変更544 行追加5 行削除
  1. 28 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingConfig.java
  2. 32 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingModel.java
  3. 23 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingParam.java
  4. 20 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingSearch.java
  5. 43 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/WxPayConfigModel.java
  6. 43 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/WxPayConfigParam.java
  7. 12 5
      FullCardClient/src/main/java/com/zhongshu/card/client/service/ProjectPaySettingService.java
  8. 19 0
      FullCardClient/src/main/java/com/zhongshu/card/client/utils/type/payment/ProjectPayChannelType.java
  9. 65 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/payment/ProjectPaySettingController.java
  10. 11 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/ProjectPaySettingDao.java
  11. 14 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/WxPayConfigDao.java
  12. 31 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/ProjectPaySetting.java
  13. 50 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/WxPayConfig.java
  14. 153 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ProjectPaySettingServiceImpl.java

+ 28 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingConfig.java

@@ -0,0 +1,28 @@
+package com.zhongshu.card.client.model.payment.paySetting;
+
+import com.zhongshu.card.client.utils.type.payment.ProjectPayChannelType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPaySettingConfig {
+
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "项目的支付渠道设置")
+    private ProjectPayChannelType channelType;
+
+    @Schema(description = "关联的微信支付配置")
+    WxPayConfigModel wxPayConfig;
+
+}

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

@@ -0,0 +1,32 @@
+package com.zhongshu.card.client.model.payment.paySetting;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.utils.type.payment.ProjectPayChannelType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPaySettingModel {
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "项目的支付渠道设置")
+    private ProjectPayChannelType channelType;
+
+    private String channelTypeStr;
+
+    public String getChannelTypeStr() {
+        if (channelType != null) {
+            return channelType.getRemark();
+        }
+        return "";
+    }
+}

+ 23 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingParam.java

@@ -0,0 +1,23 @@
+package com.zhongshu.card.client.model.payment.paySetting;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.utils.type.payment.ProjectPayChannelType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPaySettingParam {
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "项目的支付渠道设置")
+    private ProjectPayChannelType channelType;
+}

+ 20 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/ProjectPaySettingSearch.java

@@ -0,0 +1,20 @@
+package com.zhongshu.card.client.model.payment.paySetting;
+
+import com.zhongshu.card.client.utils.type.payment.ProjectPayChannelType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPaySettingSearch{
+    @Schema(description = "项目id")
+    private String projectOid;
+
+}

+ 43 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/WxPayConfigModel.java

@@ -0,0 +1,43 @@
+package com.zhongshu.card.client.model.payment.paySetting;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WxPayConfigModel {
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "appid")
+    private String appid;
+
+    @Schema(description = "商户证书序列号")
+    public String mchSerialNo;
+
+    @Schema(description = "商户id")
+    public String mchId;
+
+    @Schema(description = "API V3密钥")
+    public String apiV3Key;
+
+    @Schema(description = "认证类型")
+    public String AuthenticationType;
+
+    @Schema(description = "私钥地址")
+    public String privateKeyPath;
+
+    @Schema(description = "支付成功回调地址")
+    private String notifyUrl;
+
+    @Schema(description = "证书地址")
+    private String pemFileUrl;
+}

+ 43 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/paySetting/WxPayConfigParam.java

@@ -0,0 +1,43 @@
+package com.zhongshu.card.client.model.payment.paySetting;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WxPayConfigParam {
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "appid")
+    private String appid;
+
+    @Schema(description = "商户证书序列号")
+    public String mchSerialNo;
+
+    @Schema(description = "商户id")
+    public String mchId;
+
+    @Schema(description = "API V3密钥")
+    public String apiV3Key;
+
+    @Schema(description = "认证类型")
+    public String AuthenticationType;
+
+    @Schema(description = "私钥地址")
+    public String privateKeyPath;
+
+    @Schema(description = "支付成功回调地址")
+    private String notifyUrl;
+
+    @Schema(description = "证书地址")
+    private String pemFileUrl;
+}

+ 12 - 5
FullCardClient/src/main/java/com/zhongshu/card/client/service/OrganizationFeignService.java → FullCardClient/src/main/java/com/zhongshu/card/client/service/ProjectPaySettingService.java

@@ -1,10 +1,9 @@
 package com.zhongshu.card.client.service;
 
-import com.github.microservice.auth.client.model.RoleModel;
 import com.zhongshu.card.client.model.feign.ProjectWxPayModel;
 import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
+import com.zhongshu.card.client.model.payment.paySetting.*;
 import com.zhongshu.card.client.ret.ResultContent;
-import com.zhongshu.card.client.ret.ResultException;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -12,11 +11,19 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
 
-@FeignClient(name = "fullcardserver-trx/organizationFeign")
-public interface OrganizationFeignService {
+@FeignClient(name = "fullcardserver-trx/project/paySetting")
+public interface ProjectPaySettingService {
 
     @Operation(summary = "项目关联的微信支付配置", description = "项目关联的微信支付配置")
     @RequestMapping(value = "manager/getProjectWxPayConfig", method = RequestMethod.POST)
-    ResultContent<ProjectWxPayModel> getProjectWxPayConfig(@RequestBody ProjectWxPayParam param);
+    ResultContent<WxPayConfigModel> getProjectWxPayConfig(@RequestBody ProjectWxPayParam param);
+
+    ResultContent setProjectPaySetting(ProjectPaySettingParam param);
+
+    ResultContent<ProjectPaySettingModel> getProjectPaySetting(ProjectPaySettingSearch param);
+
+    ResultContent saveWxPayConfig(WxPayConfigParam param);
+
+    ResultContent<WxPayConfigModel> getWxPayConfig(ProjectPaySettingSearch param);
 
 }

+ 19 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/utils/type/payment/ProjectPayChannelType.java

@@ -0,0 +1,19 @@
+package com.zhongshu.card.client.utils.type.payment;
+
+import lombok.Getter;
+
+/**
+ * 项目的支付渠道类型
+ */
+public enum ProjectPayChannelType {
+    WxPay("微信支付"),
+    UniPay("银联支付"),
+    ;
+
+    @Getter
+    private String remark;
+
+    ProjectPayChannelType(String remark) {
+        this.remark = remark;
+    }
+}

+ 65 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/payment/ProjectPaySettingController.java

@@ -0,0 +1,65 @@
+package com.zhongshu.card.server.core.controller.payment;
+
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.IDParam;
+import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
+import com.zhongshu.card.client.model.payment.ExpenseFlowModel;
+import com.zhongshu.card.client.model.payment.paySetting.*;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.service.ProjectPaySettingService;
+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;
+
+/**
+ * @author TRX
+ * @date 2024/7/26
+ */
+@RestController
+@RequestMapping("/project/paySetting")
+@Tag(name = "项目-支付设置")
+public class ProjectPaySettingController {
+
+    @Autowired
+    ProjectPaySettingService projectPaySettingService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "设置项目的支付类型", description = "设置项目的支付类型")
+    @RequestMapping(value = "setProjectPaySetting", method = {RequestMethod.POST})
+    public ResultContent setProjectPaySetting(@RequestBody ProjectPaySettingParam param) {
+        return projectPaySettingService.setProjectPaySetting(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到项目的支付方式配置", description = "得到项目的支付方式配置")
+    @RequestMapping(value = "getProjectPaySetting", method = {RequestMethod.POST})
+    public ResultContent<ProjectPaySettingModel> getProjectPaySetting(@RequestBody ProjectPaySettingSearch param) {
+        return projectPaySettingService.getProjectPaySetting(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "保存项目的微信支付设置", description = "保存项目的微信支付设置")
+    @RequestMapping(value = "saveWxPayConfig", method = {RequestMethod.POST})
+    public ResultContent saveWxPayConfig(@RequestBody WxPayConfigParam param) {
+        return projectPaySettingService.saveWxPayConfig(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到项目的微信支付配置", description = "得到项目的微信支付配置")
+    @RequestMapping(value = "getWxPayConfig", method = {RequestMethod.POST})
+    public ResultContent<WxPayConfigModel> getWxPayConfig(@RequestBody ProjectPaySettingSearch param) {
+        return projectPaySettingService.getWxPayConfig(param);
+    }
+
+    //------------------------------feign start -----------------------
+    @Operation(hidden = true, summary = "根据小程序appId得到配置", description = "根据小程序appId得到配置")
+    @RequestMapping(value = "manager/getProjectWxPayConfig", method = {RequestMethod.POST})
+    public ResultContent<WxPayConfigModel> getProjectWxPayConfig(@RequestBody ProjectWxPayParam param) {
+        return projectPaySettingService.getProjectWxPayConfig(param);
+    }
+}

+ 11 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/ProjectPaySettingDao.java

@@ -0,0 +1,11 @@
+package com.zhongshu.card.server.core.dao.payment;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.domain.payment.ProjectPaySetting;
+import com.zhongshu.card.server.core.domain.payment.WxPayConfig;
+
+public interface ProjectPaySettingDao extends MongoDao<ProjectPaySetting> {
+
+    ProjectPaySetting findTopByProjectOid(String projectOid);
+
+}

+ 14 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/WxPayConfigDao.java

@@ -0,0 +1,14 @@
+package com.zhongshu.card.server.core.dao.payment;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.payment.extend.ComplexDaoExtend;
+import com.zhongshu.card.server.core.domain.payment.Complex;
+import com.zhongshu.card.server.core.domain.payment.WxPayConfig;
+
+import java.util.List;
+
+public interface WxPayConfigDao extends MongoDao<WxPayConfig> {
+
+    WxPayConfig findTopByProjectOid(String projectOid);
+
+}

+ 31 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/ProjectPaySetting.java

@@ -0,0 +1,31 @@
+package com.zhongshu.card.server.core.domain.payment;
+
+import com.zhongshu.card.client.utils.type.payment.ProjectPayChannelType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+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.Document;
+
+/**
+ * 项目的支付设置
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectPaySetting extends SuperMain {
+
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "项目的支付渠道设置")
+    private ProjectPayChannelType channelType;
+
+}

+ 50 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/WxPayConfig.java

@@ -0,0 +1,50 @@
+package com.zhongshu.card.server.core.domain.payment;
+
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+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.Document;
+
+/**
+ * 项目的微信支付配置信息
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class WxPayConfig extends SuperMain {
+
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @Schema(description = "appid")
+    private String appid;
+
+    @Schema(description = "商户证书序列号")
+    public String mchSerialNo;
+
+    @Schema(description = "商户id")
+    public String mchId;
+
+    @Schema(description = "API V3密钥")
+    public String apiV3Key;
+
+    @Schema(description = "认证类型")
+    public String AuthenticationType;
+
+    @Schema(description = "私钥地址")
+    public String privateKeyPath;
+
+    @Schema(description = "支付成功回调地址")
+    private String notifyUrl;
+
+    @Schema(description = "证书地址")
+    private String pemFileUrl;
+}

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

@@ -0,0 +1,153 @@
+package com.zhongshu.card.server.core.service.payment;
+
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.feign.ProjectWxPayModel;
+import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
+import com.zhongshu.card.client.model.payment.paySetting.*;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.service.ProjectPaySettingService;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.dao.payment.ProjectPaySettingDao;
+import com.zhongshu.card.server.core.dao.payment.WxPayConfigDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.payment.ProjectPaySetting;
+import com.zhongshu.card.server.core.domain.payment.WxPayConfig;
+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;
+
+/**
+ * 项目支付设置
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@Slf4j
+@Service
+public class ProjectPaySettingServiceImpl extends SuperService implements ProjectPaySettingService {
+
+    @Autowired
+    WxPayConfigDao wxPayConfigDao;
+
+    @Autowired
+    ProjectPaySettingDao projectPaySettingDao;
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    /**
+     * 设置项目的支付类型
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent setProjectPaySetting(ProjectPaySettingParam param) {
+        Organization projectOrg = organizationDao.findTopByOid(param.getProjectOid());
+        if (ObjectUtils.isEmpty(projectOrg)) {
+            return ResultContent.buildFail(String.format("oid不存在:%s", param.getProjectOid()));
+        }
+        if (projectOrg.getAuthType() != AuthType.Project) {
+            return ResultContent.buildFail(String.format("%s 结构不属于项目类型", projectOrg.getName()));
+        }
+        ProjectPaySetting setting = projectPaySettingDao.findTopByProjectOid(param.getProjectOid());
+        if (ObjectUtils.isEmpty(setting)) {
+            setting = new ProjectPaySetting();
+        }
+        BeanUtils.copyProperties(param, setting);
+        projectPaySettingDao.save(setting);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 得到项目的支付方式配置
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent<ProjectPaySettingModel> getProjectPaySetting(ProjectPaySettingSearch param) {
+        ProjectPaySetting setting = projectPaySettingDao.findTopByProjectOid(param.getProjectOid());
+        ProjectPaySettingModel model = null;
+        if (ObjectUtils.isNotEmpty(setting)) {
+            model = toModel(setting);
+        }
+        return ResultContent.buildSuccess(model);
+    }
+
+    /**
+     * 保存项目的微信支付设置
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent saveWxPayConfig(WxPayConfigParam param) {
+        Organization projectOrg = organizationDao.findTopByOid(param.getProjectOid());
+        if (ObjectUtils.isEmpty(projectOrg)) {
+            return ResultContent.buildFail(String.format("oid不存在:%s", param.getProjectOid()));
+        }
+        if (projectOrg.getAuthType() != AuthType.Project) {
+            return ResultContent.buildFail(String.format("%s 结构不属于项目类型", projectOrg.getName()));
+        }
+        WxPayConfig wxPayConfig = wxPayConfigDao.findTopByProjectOid(param.getProjectOid());
+        if (ObjectUtils.isEmpty(wxPayConfig)) {
+            wxPayConfig = new WxPayConfig();
+            initEntity(wxPayConfig);
+        }
+        BeanUtils.copyProperties(param, wxPayConfig);
+        wxPayConfigDao.save(wxPayConfig);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 得到项目的微信支付配置
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent<WxPayConfigModel> getWxPayConfig(ProjectPaySettingSearch param) {
+        WxPayConfig entity = wxPayConfigDao.findTopByProjectOid(param.getProjectOid());
+        WxPayConfigModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = toModel(entity);
+        }
+        return ResultContent.buildSuccess(model);
+    }
+
+    public ProjectPaySettingModel toModel(ProjectPaySetting entity) {
+        ProjectPaySettingModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new ProjectPaySettingModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+    public WxPayConfigModel toModel(WxPayConfig entity) {
+        WxPayConfigModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new WxPayConfigModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+    /**
+     * 得到appId关联的支付信息
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent<WxPayConfigModel> getProjectWxPayConfig(ProjectWxPayParam param) {
+
+
+        return null;
+    }
+
+}