Bladeren bron

更新!

TRX 1 jaar geleden
bovenliggende
commit
a9e55bf4b4

+ 29 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/paySetting/paySetting/UnionFrictionlessSettingParam.java

@@ -1,6 +1,16 @@
 package com.zhongshu.card.client.model.paySetting.paySetting;
 
+import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
+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.LaKaLaCollectionConf;
+import com.zhongshu.card.client.model.paySetting.payConfig.PaySharingConfig;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * 项目无感支付的配置
@@ -8,6 +18,25 @@ import com.zhongshu.card.client.model.base.ProjectOidParam;
  * @author TRX
  * @date 2024/10/9
  */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class UnionFrictionlessSettingParam extends ProjectOidParam {
 
+    @NotNull
+    @Schema(description = "具体的支付方式")
+    private PaymentType paymentType;
+
+    @Schema(description = "银联的无感支付 参数配置")
+    private FrictionlessUnionConfig frictionlessUnionConfig;
+
+    @Schema(description = "无感支付--微信关联配置")
+    private FrictionlessWeChatConfig frictionlessWeChatConfig;
+
+    @Schema(description = "拉卡拉无感支付--参数配置")
+    private LaKaLaCollectionConf laKaLaCollectionConf;
+
+    @Schema(description = "分账规则")
+    private PaySharingConfig paySharingConfig;
+
 }

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

@@ -0,0 +1,62 @@
+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.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/projectChannel")
+@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);
+    }
+
+
+    //------------------------------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);
+    }
+}

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

@@ -1,6 +1,8 @@
 package com.zhongshu.card.server.core.dao.projectAbout;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+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;
 
 /**
@@ -10,4 +12,8 @@ public interface UnionFrictionlessSettingDao extends MongoDao<UnionFrictionlessS
 
     UnionFrictionlessSetting findTopById(String id);
 
+    UnionFrictionlessSetting findTopByProjectInfo(Organization projectInfo);
+
+    UnionFrictionlessSetting findTopByProjectInfoAndPaymentType(Organization projectInfo, PaymentType paymentType);
+
 }

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

@@ -76,6 +76,7 @@ public class ProjectChannelConfigService extends SuperService {
         entity.setProjectInfo(projectInfo);
         entity.setProjectName(projectInfo.getName());
         entity.setProjectCode(projectInfo.getCode());
+        entity.setProjectOid(projectInfo.getOid());
 
         entity.setOid(projectOid);
         entity.setAboutOid(projectOid);
@@ -126,6 +127,13 @@ public class ProjectChannelConfigService extends SuperService {
         return ResultContent.buildSuccess(toModel(entity));
     }
 
+    /**
+     * 得到项目渠道配置
+     *
+     * @param projectOid
+     * @param paymentChannelType
+     * @return
+     */
     public PayChannelConfig getProjectPayChannel(String projectOid, PaymentChannelType paymentChannelType) {
         PayChannelConfig entity = payChannelConfigDao.findTopByProjectOidAndPaymentChannelType(projectOid, paymentChannelType);
         return entity;

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

@@ -1,11 +1,21 @@
 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.LaKaLaCollectionConf;
+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.base.SuperMain;
+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;
 
@@ -25,15 +35,51 @@ public class UnionFrictionlessSettingService extends SuperService {
     @Autowired
     private ProjectChannelConfigService projectChannelConfigService;
 
+    @Autowired
+    private OrganizationDao organizationDao;
+
     /**
      * 保存数据
      *
      * @param param
      * @return
      */
-    public ResultContent saveInfo(UnionFrictionlessSetting param) {
+    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(projectOid, 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) {
+            LaKaLaCollectionConf laKaLaCollectionConf = param.getLaKaLaCollectionConf();
+            // 检查数据
+        }
+        if (entity == null) {
+            entity = new UnionFrictionlessSetting();
+            initEntity(entity);
+        }
+        entity.setProjectInfo(projectInfo);
+        entity.setProjectName(projectInfo.getName());
+        entity.setProjectCode(projectInfo.getCode());
 
+        BeanUtils.copyProperties(param, entity);
+        unionFrictionlessSettingDao.save(entity);
         return ResultContent.buildSuccess();
     }