TRX hace 1 año
padre
commit
afcb603e6d
Se han modificado 22 ficheros con 151 adiciones y 553 borrados
  1. 2 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/payConfig/LaKaLaCollectionConfig.java
  2. 1 1
      FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/ProjectPaySettingConfig.java
  3. 6 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/ProjectPaySettingModel.java
  4. 1 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/WxPayConfigParam.java
  5. 0 26
      FullCardClient/src/main/java/com/zhongshu/card/client/service/feign/ProjectPaySettingService.java
  6. 0 3
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/paySetting/ProjectChannelController.java
  7. 4 26
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/paySetting/ProjectPaySettingController.java
  8. 0 78
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/paySetting/UnionFrictionlessSettingController.java
  9. 0 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectIotInfoDao.java
  10. 7 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectPaySettingDao.java
  11. 0 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectWeChatInfoDao.java
  12. 0 24
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/UnionFrictionlessSettingDao.java
  13. 0 49
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/DirectPaySetting.java
  14. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/OrgPayAccount.java
  15. 7 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/ProjectPaySetting.java
  16. 0 62
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/UnionFrictionlessSetting.java
  17. 5 4
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/OrgPayAccountService.java
  18. 9 9
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectChannelConfigService.java
  19. 106 95
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectPaySettingServiceImpl.java
  20. 0 170
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/UnionFrictionlessSettingService.java
  21. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java
  22. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/setting/PlatFormConfigInfoService.java

+ 2 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/payConfig/LaKaLaCollectionConfig.java

@@ -15,6 +15,8 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class LaKaLaCollectionConfig {
 
+    private String projectOid;
+
     // 接入方唯一编号(appid):OP00000003
     private String appId;
 

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

@@ -22,6 +22,6 @@ public class ProjectPaySettingConfig {
     private PaymentType channelType;
 
     @Schema(description = "关联的微信支付配置")
-    WxPayConfigModel wxPayConfig;
+    private WxPayConfigModel wxPayConfig;
 
 }

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

@@ -15,6 +15,9 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class ProjectPaySettingModel {
 
+    @Schema(description = "数据ID")
+    private String id;
+
     @Schema(description = "项目id")
     private String projectOid;
 
@@ -29,4 +32,7 @@ public class ProjectPaySettingModel {
         }
         return "";
     }
+
+    @Schema(description = "支付渠道的参数配置")
+    private Object payConfig;
 }

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

@@ -14,6 +14,7 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @NoArgsConstructor
 public class WxPayConfigParam {
+
     @Schema(description = "项目id", required = true)
     private String projectOid;
 

+ 0 - 26
FullCardClient/src/main/java/com/zhongshu/card/client/service/feign/ProjectPaySettingService.java

@@ -1,26 +0,0 @@
-package com.zhongshu.card.client.service.feign;
-
-import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
-import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.paySetting.paySetting.*;
-
-
-public interface ProjectPaySettingService {
-
-    /**
-     * 项目关联的微信支付配置
-     *
-     * @param param
-     * @return
-     */
-    ResultContent<WxPayConfigModel> getProjectWxPayConfig(ProjectWxPayParam param);
-
-    ResultContent setProjectPaySetting(ProjectPaySettingParam param);
-
-    ResultContent<ProjectPaySettingModel> getProjectPaySetting(ProjectPaySettingSearch param);
-
-    ResultContent saveWxPayConfig(WxPayConfigParam param);
-
-    ResultContent<WxPayConfigModel> getWxPayConfig(ProjectPaySettingSearch param);
-
-}

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

@@ -4,12 +4,9 @@ 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.feign.ProjectWxPayParam;
-import com.zhongshu.card.client.model.paySetting.paySetting.WxPayConfigModel;
 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.service.feign.ProjectPaySettingService;
 import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.service.paySetting.ProjectChannelConfigService;
 import io.swagger.v3.oas.annotations.Operation;

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

@@ -5,7 +5,7 @@ import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.paySetting.paySetting.*;
-import com.zhongshu.card.client.service.feign.ProjectPaySettingService;
+import com.zhongshu.card.server.core.service.paySetting.ProjectPaySettingServiceImpl;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,22 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
 public class ProjectPaySettingController {
 
     @Autowired
-    private 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);
-    }
+    private ProjectPaySettingServiceImpl projectPaySettingService;
 
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "保存项目的微信支付设置", description = "保存项目的微信支付设置")
@@ -51,15 +36,8 @@ public class ProjectPaySettingController {
     @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);
+    public ResultContent<WxPayConfigParam> getWxPayConfig(@RequestBody ProjectPaySettingSearch param) {
+        return projectPaySettingService.getWxPayConfig(param.getProjectOid());
     }
 
-    //------------------------------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);
-    }
 }

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

@@ -1,78 +0,0 @@
-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.zhongshu.card.client.model.paySetting.paySetting.UnionFrictionlessSettingParam;
-import com.zhongshu.card.client.model.paySetting.paySetting.WxPayConfigModel;
-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.service.feign.ProjectPaySettingService;
-import com.zhongshu.card.server.core.service.paySetting.ProjectChannelConfigService;
-import com.zhongshu.card.server.core.service.paySetting.UnionFrictionlessSettingService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.web.PageableDefault;
-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/7/26
- */
-@RestController
-@RequestMapping("/project/unionFrictionless")
-@Tag(name = "项目-无感支付产品配置设置")
-public class UnionFrictionlessSettingController {
-
-    @Autowired
-    private ProjectPaySettingService projectPaySettingService;
-
-    @Autowired
-    private UnionFrictionlessSettingService unionFrictionlessSettingService;
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "保存无感支付信息", description = "保存无感支付信息")
-    @RequestMapping(value = "saveInfo", method = {RequestMethod.POST})
-    public ResultContent saveInfo(
-            @RequestBody @Valid UnionFrictionlessSettingParam param) {
-        return unionFrictionlessSettingService.saveInfo(param);
-    }
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "删除无感支付数据", description = "删除无感支付数据")
-    @RequestMapping(value = "deleteInfo", method = {RequestMethod.POST})
-    public ResultContent deleteInfo(
-            @RequestBody @Valid IDParam param) {
-        return unionFrictionlessSettingService.deleteInfo(param.getId());
-    }
-
-    @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "得到项目所有的无感支付配置", description = "得到项目所有的无感支付配置")
-    @RequestMapping(value = "getProjectSecretFree", method = {RequestMethod.POST})
-    public ResultContent getProjectSecretFree(
-            @RequestBody @Valid ProjectOidParam param) {
-        return unionFrictionlessSettingService.getProjectSecretFree(param.getProjectOid());
-    }
-
-    //------------------------------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);
-    }
-}

+ 0 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectIotInfoDao.java

@@ -2,7 +2,6 @@ package com.zhongshu.card.server.core.dao.projectAbout;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.server.core.domain.projectAbout.ProjectIotInfo;
-import com.zhongshu.card.server.core.domain.projectAbout.ProjectWeChatInfo;
 
 /**
  * 项目关联的 物联网设置

+ 7 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectPaySettingDao.java

@@ -1,10 +1,16 @@
 package com.zhongshu.card.server.core.dao.projectAbout;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
-import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
+import com.github.microservice.types.payment.PaymentType;
+import com.zhongshu.card.server.core.domain.paySetting.ProjectPaySetting;
+
+import java.util.List;
 
 public interface ProjectPaySettingDao extends MongoDao<ProjectPaySetting> {
 
     ProjectPaySetting findTopByProjectOid(String projectOid);
 
+    ProjectPaySetting findTopByProjectOidAndChannelType(String projectOid, PaymentType channelType);
+
+    List<ProjectPaySetting> findByProjectOid(String projectOid);
 }

+ 0 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectWeChatInfoDao.java

@@ -1,7 +1,6 @@
 package com.zhongshu.card.server.core.dao.projectAbout;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
-import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
 import com.zhongshu.card.server.core.domain.projectAbout.ProjectWeChatInfo;
 
 /**

+ 0 - 24
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/UnionFrictionlessSettingDao.java

@@ -1,24 +0,0 @@
-package com.zhongshu.card.server.core.dao.projectAbout;
-
-import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
-import com.github.microservice.types.payment.PaymentChannelType;
-import com.github.microservice.types.payment.PaymentType;
-import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.paySetting.UnionFrictionlessSetting;
-
-import java.util.List;
-
-/**
- * 项目的无感支付设置
- */
-public interface UnionFrictionlessSettingDao extends MongoDao<UnionFrictionlessSetting> {
-
-    UnionFrictionlessSetting findTopById(String id);
-
-    List<UnionFrictionlessSetting> findByProjectInfo(Organization projectInfo);
-
-    UnionFrictionlessSetting findTopByProjectInfoAndPaymentType(Organization projectInfo, PaymentType paymentType);
-
-    Integer countByPaymentChannelType(PaymentChannelType paymentChannelType);
-
-}

+ 0 - 49
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/DirectPaySetting.java

@@ -1,49 +0,0 @@
-package com.zhongshu.card.server.core.domain.paySetting;
-
-import com.zhongshu.card.client.model.paySetting.payConfig.DirectPayAliPayConfig;
-import com.zhongshu.card.client.model.paySetting.payConfig.DirectPayWeChatConfig;
-import com.zhongshu.card.server.core.domain.base.SuperMain;
-import com.zhongshu.card.server.core.domain.org.Organization;
-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.DBRef;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-/**
- * 自营支付
- *
- * @author TRX
- * @date 2024/9/25
- */
-@Data
-@Builder
-@Document
-@AllArgsConstructor
-@NoArgsConstructor
-public class DirectPaySetting extends SuperMain {
-
-    @Schema(description = "项目信息")
-    @DBRef(lazy = true)
-    private Organization projectInfo;
-
-    @Schema(description = "项目名称")
-    private String projectName;
-
-    @Schema(description = "项目编码")
-    private String projectCode;
-
-    @Schema(description = "是否开启微信支付")
-    private Boolean isOpenWeChat = Boolean.FALSE;
-
-    private DirectPayWeChatConfig weChatConfig;
-
-    @Schema(description = "是否开启支付宝支付")
-    private Boolean isOpenAliPay = Boolean.FALSE;
-
-    @Schema(description = "支付宝配置")
-    private DirectPayAliPayConfig aliPayConfig;
-
-}

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/OrgPayAccount.java

@@ -33,7 +33,7 @@ public class OrgPayAccount extends SuperMain {
     private PaymentType paymentType;
 
     @Schema(description = "支付中心的支付方式")
-    PayProductChannelType productChannelType;
+    private PayProductChannelType productChannelType;
 
     @Schema(description = "是否禁用")
     private Boolean disable = Boolean.FALSE;

+ 7 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectPaySetting.java → FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/ProjectPaySetting.java

@@ -1,5 +1,6 @@
-package com.zhongshu.card.server.core.domain.projectAbout;
+package com.zhongshu.card.server.core.domain.paySetting;
 
+import com.github.microservice.types.payment.PaymentChannelType;
 import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.server.core.domain.base.SuperMain;
 import com.zhongshu.card.server.core.domain.org.Organization;
@@ -38,4 +39,9 @@ public class ProjectPaySetting extends SuperMain {
     @Schema(description = "项目的支付渠道设置:微信支付、银联支付")
     private PaymentType channelType;
 
+    @Schema(description = "支付产品")
+    private PaymentChannelType paymentChannelType;
+
+    @Schema(description = "支付渠道的参数配置")
+    private Object payConfig;
 }

+ 0 - 62
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/paySetting/UnionFrictionlessSetting.java

@@ -1,62 +0,0 @@
-package com.zhongshu.card.server.core.domain.paySetting;
-
-import com.github.microservice.types.payment.PaymentChannelType;
-import com.github.microservice.types.payment.PaymentType;
-import com.zhongshu.card.client.model.paySetting.payConfig.FrictionlessUnionConfig;
-import com.zhongshu.card.client.model.paySetting.payConfig.FrictionlessWeChatConfig;
-import com.zhongshu.card.client.model.paySetting.payConfig.LaKaLaCollectionConfig;
-import com.zhongshu.card.client.model.paySetting.payConfig.PaySharingConfig;
-import com.zhongshu.card.server.core.domain.base.SuperMain;
-import com.zhongshu.card.server.core.domain.org.Organization;
-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.DBRef;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-/**
- * 项目的无感支付设置
- *
- * @author TRX
- * @date 2024/9/25
- */
-@Data
-@Builder
-@Document
-@AllArgsConstructor
-@NoArgsConstructor
-public class UnionFrictionlessSetting extends SuperMain {
-
-    @Schema(description = "项目信息")
-    @DBRef(lazy = true)
-    private Organization projectInfo;
-
-    @Schema(description = "项目名称")
-    private String projectName;
-
-    @Schema(description = "项目编码")
-    private String projectCode;
-
-    @Schema(description = "具体的支付方式")
-    private PaymentType paymentType;
-
-    @Schema(description = "支付渠道类型")
-    private PaymentChannelType paymentChannelType;
-
-    //----------------------------业务信息 start-----------------
-
-    @Schema(description = "银联的无感支付 参数配置")
-    private FrictionlessUnionConfig frictionlessUnionConfig;
-
-    @Schema(description = "无感支付--微信关联配置")
-    private FrictionlessWeChatConfig frictionlessWeChatConfig;
-
-    @Schema(description = "拉卡拉无感支付--参数配置")
-    private LaKaLaCollectionConfig laKaLaCollectionConf;
-
-    @Schema(description = "分账规则")
-    private PaySharingConfig paySharingConfig;
-
-}

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

@@ -12,7 +12,7 @@ import com.zhongshu.card.client.model.paySetting.payConfig.LaKaLaCollectionConfi
 import com.zhongshu.card.server.core.dao.projectAbout.OrgPayAccountDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.paySetting.OrgPayAccount;
-import com.zhongshu.card.server.core.domain.paySetting.UnionFrictionlessSetting;
+import com.zhongshu.card.server.core.domain.paySetting.ProjectPaySetting;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -42,19 +42,20 @@ public class OrgPayAccountService extends SuperService {
      * @param entity
      * @return
      */
-    public ResultContent initUnionFrictionPayAccount(UnionFrictionlessSetting entity) {
+    public ResultContent initUnionFrictionPayAccount(ProjectPaySetting entity) {
+
         if (ObjectUtils.isNotEmpty(entity)) {
             Organization projectInfo = entity.getProjectInfo();
             String projectOid = projectInfo.getOid();
 
             PayProductChannelType productChannelType = null;
-            PaymentType paymentType = entity.getPaymentType();
+            PaymentType paymentType = entity.getChannelType();
             PayProductChannelConf conf = null;
             if (paymentType == PaymentType.LakalaFrictionlessPay) {
                 productChannelType = PayProductChannelType.LaKaLaCollection;
                 LaKaLaCollectionConf laKaLaCollectionConf = new LaKaLaCollectionConf();
 
-                LaKaLaCollectionConfig laKaLaCollectionConfig = entity.getLaKaLaCollectionConf();
+                LaKaLaCollectionConfig laKaLaCollectionConfig = (LaKaLaCollectionConfig) entity.getPayConfig();
                 BeanUtils.copyProperties(laKaLaCollectionConfig, laKaLaCollectionConf);
                 conf = laKaLaCollectionConf;
             }

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

@@ -12,7 +12,6 @@ import com.zhongshu.card.client.model.projectAbout.PayChannelConfigSearch;
 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.UnionFrictionlessSettingDao;
 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;
@@ -45,9 +44,6 @@ public class ProjectChannelConfigService extends SuperService {
     @Autowired
     PayChannelConfigDao payChannelConfigDao;
 
-    @Autowired
-    private UnionFrictionlessSettingDao unionFrictionlessSettingDao;
-
     /**
      * 保存信息
      *
@@ -148,11 +144,7 @@ public class ProjectChannelConfigService extends SuperService {
         if (ObjectUtils.isEmpty(entity)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
         }
-        // 判断是否可以删除
-        int number = unionFrictionlessSettingDao.countByPaymentChannelType(entity.getPaymentChannelType());
-        if (number > 0) {
-            return ResultContent.buildFail("已有机构使用该支付产品,不能删除");
-        }
+
         payChannelConfigDao.delete(entity);
         return ResultContent.buildSuccess();
     }
@@ -182,6 +174,14 @@ public class ProjectChannelConfigService extends SuperService {
         return entity;
     }
 
+    public PayChannelConfig getProjectPayChannel(PaymentType paymentType) {
+        if (paymentType == null) {
+            return null;
+        }
+        PayChannelConfig entity = payChannelConfigDao.findTopByPaymentChannelType(paymentType.getChannelType());
+        return entity;
+    }
+
     public ResultContent changeState(String id, DataState state) {
         PayChannelConfig entity = payChannelConfigDao.findTopById(id);
         if (ObjectUtils.isEmpty(entity)) {

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

@@ -1,16 +1,17 @@
 package com.zhongshu.card.server.core.service.paySetting;
 
 import com.github.microservice.auth.security.type.AuthType;
-import com.zhongshu.card.client.model.feign.ProjectWxPayParam;
+import com.github.microservice.types.payment.PaymentType;
 import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.paySetting.payConfig.LaKaLaCollectionConfig;
 import com.zhongshu.card.client.model.paySetting.paySetting.*;
-import com.zhongshu.card.client.service.feign.ProjectPaySettingService;
+import com.zhongshu.card.client.type.DataState;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.projectAbout.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.projectAbout.ProjectPaySetting;
-import com.zhongshu.card.server.core.domain.projectAbout.WxPayConfig;
+import com.zhongshu.card.server.core.domain.paySetting.PayChannelConfig;
+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;
@@ -19,6 +20,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.gridfs.GridFsTemplate;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 项目支付设置
  *
@@ -27,7 +32,7 @@ import org.springframework.stereotype.Service;
  */
 @Slf4j
 @Service
-public class ProjectPaySettingServiceImpl extends SuperService implements ProjectPaySettingService {
+public class ProjectPaySettingServiceImpl extends SuperService {
 
     @Autowired
     WxPayConfigDao wxPayConfigDao;
@@ -41,142 +46,148 @@ public class ProjectPaySettingServiceImpl extends SuperService implements Projec
     @Autowired
     GridFsTemplate gridFsTemplate;
 
+    @Autowired
+    ProjectChannelConfigService projectChannelConfigService;
+
+    //-----------------------------微信支付的配置 start------------------
+
     /**
-     * 设置项目的支付类型
+     * 保存项目的微信支付设置
      *
      * @param param
      * @return
      */
-    @Override
-    public ResultContent setProjectPaySetting(ProjectPaySettingParam param) {
-        String projectOid = param.getProjectOid();
-        // 项目信息
-        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);
-        setting.setProjectInfo(projectOrg);
-        setting.setProjectName(projectOrg.getName());
-        setting.setProjectCode(projectOrg.getCode());
-        setting.setProjectOid(projectOrg.getOid());
-
-        setting.setOid(projectOid);
-        setting.setAboutOid(projectOid);
-        setting.setAboutAuthType(projectOrg.getAuthType());
-
-        projectPaySettingDao.save(setting);
-        return ResultContent.buildSuccess();
+    public ResultContent saveWxPayConfig(WxPayConfigParam param) {
+        //TODO 检查微信支付参数等
+        return saveProjectPaySetting(param.getProjectOid(), PaymentType.WeChat, param);
     }
 
     /**
-     * 得到项目的支付方式配置
+     * 得到项目的微信支付配置
      *
-     * @param param
+     * @param projectOid
      * @return
      */
-    @Override
-    public ResultContent<ProjectPaySettingModel> getProjectPaySetting(ProjectPaySettingSearch param) {
-        ProjectPaySetting setting = projectPaySettingDao.findTopByProjectOid(param.getProjectOid());
-        ProjectPaySettingModel model = null;
-        if (ObjectUtils.isNotEmpty(setting)) {
-            model = toModel(setting);
+    public ResultContent<WxPayConfigParam> getWxPayConfig(String projectOid) {
+        WxPayConfigParam model = null;
+        ProjectPaySetting paySetting = getProjectPaySetting(projectOid, PaymentType.WeChat);
+        if (ObjectUtils.isNotEmpty(paySetting)) {
+            model = (WxPayConfigParam) paySetting.getPayConfig();
         }
         return ResultContent.buildSuccess(model);
     }
 
+    //-----------------------------拉卡拉配置 start-------------------
+
     /**
      * 保存项目的微信支付设置
      *
      * @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());
-        WxPayConfig temp = wxPayConfigDao.findTopByAppId(param.getAppId());
-        if (ObjectUtils.isEmpty(wxPayConfig)) {
-            wxPayConfig = new WxPayConfig();
-            initEntity(wxPayConfig);
-        } else {
-            // 编辑
-            if (ObjectUtils.isNotEmpty(temp) && !temp.getId().equals(wxPayConfig.getId())) {
-                return ResultContent.buildFail(String.format("appId已存在:%s", wxPayConfig.getAppId()));
-            }
-        }
-
-        BeanUtils.copyProperties(param, wxPayConfig);
-        wxPayConfigDao.save(wxPayConfig);
-        return ResultContent.buildSuccess();
+    public ResultContent saveLaKaLaConfig(LaKaLaCollectionConfig param) {
+        //TODO 检查微信支付参数等
+        return saveProjectPaySetting(param.getProjectOid(), PaymentType.LakalaFrictionlessPay, param);
     }
 
     /**
      * 得到项目的微信支付配置
      *
-     * @param param
+     * @param projectOid
      * @return
      */
-    @Override
-    public ResultContent<WxPayConfigModel> getWxPayConfig(ProjectPaySettingSearch param) {
-        WxPayConfig entity = wxPayConfigDao.findTopByProjectOid(param.getProjectOid());
-        WxPayConfigModel model = null;
-        if (ObjectUtils.isNotEmpty(entity)) {
-            model = toModel(entity);
+    public ResultContent<LaKaLaCollectionConfig> getLaKaLaConfig(String projectOid) {
+        LaKaLaCollectionConfig model = null;
+        ProjectPaySetting paySetting = getProjectPaySetting(projectOid, PaymentType.LakalaFrictionlessPay);
+        if (ObjectUtils.isNotEmpty(paySetting)) {
+            model = (LaKaLaCollectionConfig) paySetting.getPayConfig();
         }
         return ResultContent.buildSuccess(model);
     }
 
-    public ProjectPaySettingModel toModel(ProjectPaySetting entity) {
-        ProjectPaySettingModel model = null;
-        if (ObjectUtils.isNotEmpty(entity)) {
-            model = new ProjectPaySettingModel();
-            BeanUtils.copyProperties(entity, model);
+    /**
+     * 项目得到所有的支付渠道配置
+     *
+     * @param projectOid
+     * @return
+     */
+    public ResultContent<List<ProjectPaySettingModel>> getAllProjectPaySetting(String projectOid) {
+        List<ProjectPaySetting> list = projectPaySettingDao.findByProjectOid(projectOid);
+        List<ProjectPaySettingModel> models = new ArrayList<>(list.size());
+        if (ObjectUtils.isNotEmpty(list)) {
+            models = list.stream().map(this::toModel).collect(Collectors.toUnmodifiableList());
         }
-        return model;
+        return ResultContent.buildSuccess(models);
+    }
+
+    //-----------------------------通用配置方法 start----------------------------
+
+    private ProjectPaySetting getProjectPaySetting(String projectOid, PaymentType paymentType) {
+        return projectPaySettingDao.findTopByProjectOidAndChannelType(
+                projectOid, paymentType);
     }
 
-    public WxPayConfigModel toModel(WxPayConfig entity) {
-        WxPayConfigModel model = null;
+    // 通用保存参数配置
+    private ResultContent<ProjectPaySetting> saveProjectPaySetting(String projectOid, PaymentType paymentType, Object payConfig) {
+        Organization projectOrg = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(projectOrg)) {
+            return ResultContent.buildFail(String.format("oid不存在:%s", projectOid));
+        }
+        if (projectOrg.getAuthType() != AuthType.Project) {
+            return ResultContent.buildFail(String.format("%s 结构不属于项目类型", projectOrg.getName()));
+        }
+        ProjectPaySetting projectPaySetting = projectPaySettingDao.findTopByProjectOidAndChannelType(
+                projectOid, paymentType);
+        if (ObjectUtils.isEmpty(projectPaySetting)) {
+            projectPaySetting = new ProjectPaySetting();
+            initEntityNoCheckOid(projectPaySetting);
+            projectPaySetting.setProjectOid(projectOid);
+            projectPaySetting.setProjectInfo(projectOrg);
+            projectPaySetting.setProjectName(projectOrg.getName());
+            projectPaySetting.setProjectCode(projectOrg.getCode());
+            projectPaySetting.setChannelType(paymentType);
+            projectPaySetting.setPaymentChannelType(paymentType.getChannelType());
+        } else {
+            initUpdateEntity(projectPaySetting);
+        }
+        projectPaySetting.setPayConfig(payConfig);
+        projectPaySettingDao.save(projectPaySetting);
+        return ResultContent.buildSuccess(projectPaySetting);
+    }
+
+    public ProjectPaySettingModel toModel(ProjectPaySetting entity) {
+        ProjectPaySettingModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {
-            model = new WxPayConfigModel();
+            model = new ProjectPaySettingModel();
             BeanUtils.copyProperties(entity, model);
-            Organization projectOrg = organizationDao.findTopByOid(entity.getProjectOid());
-            if (ObjectUtils.isNotEmpty(projectOrg)) {
-                model.setProjectName(projectOrg.getName());
-            }
         }
         return model;
     }
 
     /**
-     * 得到appId关联的支付信息
+     * 检查是否项目是否正常付款方式
      *
-     * @param param
      * @return
      */
-    @Override
-    public ResultContent<WxPayConfigModel> getProjectWxPayConfig(ProjectWxPayParam param) {
-        String appId = param.getAppId();
-        WxPayConfigModel model = null;
-        WxPayConfig wxPayConfig = wxPayConfigDao.findTopByAppId(appId);
-        if (ObjectUtils.isNotEmpty(wxPayConfig)) {
-            model = toModel(wxPayConfig);
+    public ResultContent checkProjectSupportPayment(String projectOid, PaymentType paymentType) {
+        if (paymentType == null) {
+            return ResultContent.buildFail("支付方式为空");
         }
-        return ResultContent.buildSuccess(model);
+        PayChannelConfig payChannelConfig = projectChannelConfigService.getProjectPayChannel(paymentType);
+        if (ObjectUtils.isEmpty(payChannelConfig)) {
+            ResultContent.buildFail(String.format("平台未配置%s", paymentType.getChannelType().getRemark()));
+        }
+        List<PaymentType> paymentTypes = payChannelConfig.getPaymentTypes();
+        if (ObjectUtils.isEmpty(paymentTypes) || !paymentTypes.contains(paymentType)) {
+            return ResultContent.buildFail(String.format("%s支付产品不支持%s", payChannelConfig.getName(),
+                    paymentType.getRemark()));
+        }
+        if (payChannelConfig.getState() != DataState.Enable) {
+            return ResultContent.buildFail(String.format("", payChannelConfig.getName(), payChannelConfig.getState().getRemark()));
+        }
+        // 检查项目配置参数没
+
+        return ResultContent.buildSuccess();
     }
 
 }

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

@@ -1,170 +0,0 @@
-package com.zhongshu.card.server.core.service.paySetting;
-
-import com.github.microservice.net.ResultContent;
-import com.github.microservice.types.payment.PaymentChannelType;
-import com.github.microservice.types.payment.PaymentType;
-import com.zhongshu.card.client.model.paySetting.payConfig.LaKaLaCollectionConfig;
-import com.zhongshu.card.client.model.paySetting.paySetting.UnionFrictionlessSettingModel;
-import com.zhongshu.card.client.model.paySetting.paySetting.UnionFrictionlessSettingParam;
-import com.zhongshu.card.server.core.dao.org.OrganizationDao;
-import com.zhongshu.card.server.core.dao.projectAbout.UnionFrictionlessSettingDao;
-import com.zhongshu.card.server.core.domain.org.Organization;
-import com.zhongshu.card.server.core.domain.paySetting.PayChannelConfig;
-import com.zhongshu.card.server.core.domain.paySetting.UnionFrictionlessSetting;
-import com.zhongshu.card.server.core.service.base.SuperService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 项目的无感支付设置
- *
- * @author TRX
- * @date 2024/10/9
- */
-@Slf4j
-@Service
-public class UnionFrictionlessSettingService extends SuperService {
-
-    @Autowired
-    private UnionFrictionlessSettingDao unionFrictionlessSettingDao;
-
-    @Autowired
-    private ProjectChannelConfigService projectChannelConfigService;
-
-    @Autowired
-    private OrganizationDao organizationDao;
-
-    @Autowired
-    private OrgPayAccountService orgPayAccountService;
-
-    /**
-     * 保存无感支付数据
-     *
-     * @param param
-     * @return
-     */
-    public ResultContent saveInfo(UnionFrictionlessSettingParam param) {
-        PaymentType paymentType = param.getPaymentType();
-        if (paymentType == null) {
-            return ResultContent.buildFail("paymentType不能为空");
-        }
-        String projectOid = param.getProjectOid();
-        if (StringUtils.isEmpty(projectOid)) {
-            return ResultContent.buildFail(String.format("projectOid不能为空"));
-        }
-        PayChannelConfig payChannelConfig = projectChannelConfigService
-                .getProjectPayChannel(PaymentChannelType.SecretFreePayment);
-        if (ObjectUtils.isEmpty(payChannelConfig)) {
-            return ResultContent.buildFail(String.format("当前项目未配置%s",
-                    PaymentChannelType.SecretFreePayment.getRemark()));
-        }
-
-        Organization projectInfo = organizationDao.findTopByOid(projectOid);
-        if (ObjectUtils.isEmpty(projectInfo)) {
-            return ResultContent.buildFail(String.format("projectOid数据不存在:%s", projectOid));
-        }
-        // 查询已存在的 支付类型的无感支付配置数据
-        UnionFrictionlessSetting entity = unionFrictionlessSettingDao
-                .findTopByProjectInfoAndPaymentType(projectInfo, paymentType);
-        if (paymentType == PaymentType.LakalaFrictionlessPay) {
-            LaKaLaCollectionConfig laKaLaCollectionConf = param.getLaKaLaCollectionConf();
-            // 检查数据
-        }
-        if (entity == null) {
-            entity = new UnionFrictionlessSetting();
-            initEntity(entity);
-        }
-        entity.setProjectInfo(projectInfo);
-        entity.setProjectName(projectInfo.getName());
-        entity.setProjectCode(projectInfo.getCode());
-        entity.setOid(projectOid);
-        entity.setPaymentChannelType(payChannelConfig.getPaymentChannelType());
-
-        BeanUtils.copyProperties(param, entity);
-        unionFrictionlessSettingDao.save(entity);
-
-        // 在支付中心 初始账号
-        orgPayAccountService.initUnionFrictionPayAccount(entity);
-
-        return ResultContent.buildSuccess();
-    }
-
-    public ResultContent deleteInfo(String id) {
-        UnionFrictionlessSetting entity = unionFrictionlessSettingDao.findTopById(id);
-        if (ObjectUtils.isEmpty(entity)) {
-            return ResultContent.buildFail(String.format("数据不存在:%s", id));
-        }
-        unionFrictionlessSettingDao.delete(entity);
-        return ResultContent.buildSuccess();
-    }
-
-    /**
-     * 得到项目所有的无感支付配置
-     *
-     * @param projectOid
-     * @return
-     */
-    public ResultContent<List<UnionFrictionlessSettingModel>> getProjectSecretFree(String projectOid) {
-        List<UnionFrictionlessSettingModel> models = new ArrayList<>();
-        Organization projectInfo = organizationDao.findTopByOid(projectOid);
-        if (ObjectUtils.isNotEmpty(projectInfo)) {
-            List<UnionFrictionlessSetting> list = unionFrictionlessSettingDao.findByProjectInfo(projectInfo);
-            if (ObjectUtils.isNotEmpty(list)) {
-                models = list.stream().map(this::toModel).collect(Collectors.toList());
-            }
-        }
-        return ResultContent.buildSuccess(models);
-    }
-
-    /**
-     * 得到项目的指定类型的  无感支付配置
-     *
-     * @param projectOid
-     * @param paymentType
-     * @return
-     */
-    public UnionFrictionlessSetting getProjectPayment(String projectOid, PaymentType paymentType) {
-        Organization projectInfo = organizationDao.findTopByOid(projectOid);
-        if (ObjectUtils.isEmpty(projectInfo)) {
-            return null;
-        }
-        return unionFrictionlessSettingDao.findTopByProjectInfoAndPaymentType(projectInfo, paymentType);
-    }
-
-    /**
-     * 得到项目的 拉卡拉无感支付配置信息
-     *
-     * @param projectOid
-     * @return
-     */
-    public LaKaLaCollectionConfig getLakaLaConf(String projectOid) {
-        Organization projectInfo = organizationDao.findTopByOid(projectOid);
-        if (ObjectUtils.isEmpty(projectInfo)) {
-            return null;
-        }
-        UnionFrictionlessSetting entity = unionFrictionlessSettingDao.findTopByProjectInfoAndPaymentType(
-                projectInfo, PaymentType.LakalaFrictionlessPay);
-        if (ObjectUtils.isNotEmpty(entity)) {
-            return entity.getLaKaLaCollectionConf();
-        }
-        return null;
-    }
-
-    public UnionFrictionlessSettingModel toModel(UnionFrictionlessSetting entity) {
-        UnionFrictionlessSettingModel model = null;
-        if (ObjectUtils.isNotEmpty(entity)) {
-            model = new UnionFrictionlessSettingModel();
-            BeanUtils.copyProperties(entity, model);
-        }
-        return model;
-    }
-
-}

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -41,7 +41,7 @@ import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationRelation;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
-import com.zhongshu.card.server.core.domain.projectAbout.ProjectPaySetting;
+import com.zhongshu.card.server.core.domain.paySetting.ProjectPaySetting;
 import com.zhongshu.card.server.core.domain.school.CardInfo;
 import com.zhongshu.card.server.core.domain.devices.DeviceBind;
 import com.zhongshu.card.server.core.httpRequest.ApiRequestService;

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/setting/PlatFormConfigInfoService.java

@@ -63,6 +63,7 @@ public class PlatFormConfigInfoService extends SuperService {
             initUpdateEntity(entity);
         }
         entity.setInfo(info);
+        entity.setSettingType(settingType);
         platFormConfigInfoDao.save(entity);
         return true;
     }