TRX 1 rok pred
rodič
commit
7675c3fdb4

+ 2 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/PaymentTypeParam.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.payment;
 
 import com.github.microservice.types.payment.PaymentType;
+import com.zhongshu.card.client.model.base.ProjectOidParam;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -13,7 +14,7 @@ import lombok.NoArgsConstructor;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class PaymentTypeParam {
+public class PaymentTypeParam extends ProjectOidParam {
 
     @Schema(description = "支付渠道")
     private PaymentType paymentType;

+ 6 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/paySetting/ProjectMainPaySettingController.java

@@ -6,6 +6,7 @@ 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.paySetting.paySetting.*;
+import com.zhongshu.card.client.model.payment.PaymentTypeParam;
 import com.zhongshu.card.server.core.service.paySetting.ProjectMainPaySettingService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -44,8 +45,11 @@ public class ProjectMainPaySettingController {
     @Operation(summary = "得到项目配置", description = "得到项目配置")
     @RequestMapping(value = "getMainPaySetting", method = {RequestMethod.POST})
     public ResultContent<ProjectMainPaySettingModel> getMainPaySetting(
-            @RequestBody ProjectOidParam param) {
-        return projectMainPaySettingService.getMainPaySetting(param.getProjectOid());
+            @RequestBody PaymentTypeParam param) {
+        if (param.getPaymentType() == null) {
+            return ResultContent.buildFail("paymentType不能为空");
+        }
+        return projectMainPaySettingService.getMainPaySetting(param.getProjectOid(), param.getPaymentType());
     }
 
     //------------------------------灵活分账规则 start ------------------------

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

@@ -46,7 +46,41 @@ 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})
+    public ResultContent<List<ProjectPaySettingModel>> getAllProjectPaySetting(@RequestBody ProjectOidParam param) {
+        return projectPaySettingService.getAllProjectPaySetting(param.getProjectOid());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "删除参数配置", description = "删除参数配置")
+    @RequestMapping(value = "deleteInfo", method = {RequestMethod.POST})
+    public ResultContent deleteInfo(@RequestBody IDParam param) {
+        return projectPaySettingService.deleteInfo(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "启用支付方式", description = "启用支付方式")
+    @RequestMapping(value = "enablePay", method = {RequestMethod.POST})
+    public ResultContent enablePay(@RequestBody IDParam param) {
+        return projectPaySettingService.changeState(param.getId(), DataState.Enable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "停用支付方式", description = "停用支付方式")
+    @RequestMapping(value = "disablePay", method = {RequestMethod.POST})
+    public ResultContent disablePay(@RequestBody IDParam param) {
+        return projectPaySettingService.changeState(param.getId(), DataState.Disable);
+    }
 
     //------------------------------------------------机构支付参数配置 start-----------------------
 

+ 2 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectMainPaySettingDao.java

@@ -1,6 +1,7 @@
 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.dao.projectAbout.extend.ProjectMainPaySettingDaoExtend;
 import com.zhongshu.card.server.core.domain.paySetting.ProjectMainPaySetting;
 
@@ -8,6 +9,5 @@ public interface ProjectMainPaySettingDao extends MongoDao<ProjectMainPaySetting
 
     ProjectMainPaySetting findTopById(String id);
 
-    ProjectMainPaySetting findTopByProjectOid(String projectOid);
-
+    ProjectMainPaySetting findTopByProjectOidAndChannelType(String projectOid, PaymentType channelType);
 }

+ 7 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/paySetting/ProjectMainPaySettingService.java

@@ -1,6 +1,7 @@
 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.*;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.projectAbout.PayShareListDao;
@@ -58,6 +59,7 @@ public class ProjectMainPaySettingService extends SuperService {
         if (StringUtils.isEmpty(param.getProjectOid())) {
             return ResultContent.buildFail("projectOid不能为空");
         }
+
         ProjectOrgPaySettingInfo orgPaySettingInfo = projectPaySettingInfoDao.findTopById(param.getPaySettingInfoId());
         if (ObjectUtils.isEmpty(orgPaySettingInfo)) {
             return ResultContent.buildFail("主账号数据不存在");
@@ -66,7 +68,8 @@ public class ProjectMainPaySettingService extends SuperService {
             return ResultContent.buildFail("选择的不是主账户类型");
         }
 
-        ProjectMainPaySetting mainPaySetting = projectMainPaySettingDao.findTopByProjectOid(param.getProjectOid());
+        ProjectMainPaySetting mainPaySetting = projectMainPaySettingDao.findTopByProjectOidAndChannelType(
+                param.getProjectOid(), orgPaySettingInfo.getChannelType());
         if (ObjectUtils.isEmpty(mainPaySetting)) {
             mainPaySetting = new ProjectMainPaySetting();
         }
@@ -90,8 +93,9 @@ public class ProjectMainPaySettingService extends SuperService {
      * @param projectOid
      * @return
      */
-    public ResultContent<ProjectMainPaySettingModel> getMainPaySetting(String projectOid) {
-        ProjectMainPaySetting mainPaySetting = projectMainPaySettingDao.findTopByProjectOid(projectOid);
+    public ResultContent<ProjectMainPaySettingModel> getMainPaySetting(String projectOid, PaymentType paymentType) {
+        ProjectMainPaySetting mainPaySetting = projectMainPaySettingDao.findTopByProjectOidAndChannelType(
+                projectOid, paymentType);
         return ResultContent.buildSuccess(toMainModel(mainPaySetting));
     }
 

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

@@ -18,10 +18,12 @@ import com.zhongshu.card.client.model.payment.PaymentTypeParam;
 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.ProjectMainPaySettingDao;
 import com.zhongshu.card.server.core.dao.projectAbout.ProjectOrgPaySettingInfoDao;
 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;
+import com.zhongshu.card.server.core.domain.paySetting.ProjectMainPaySetting;
 import com.zhongshu.card.server.core.domain.paySetting.ProjectOrgPaySettingInfo;
 import com.zhongshu.card.server.core.domain.paySetting.ProjectPaySetting;
 import com.zhongshu.card.server.core.service.base.SuperService;
@@ -72,13 +74,93 @@ public class ProjectPaySettingServiceImpl extends SuperService {
     @Autowired
     private OrgPayAccountService orgPayAccountService;
 
+    @Autowired
+    private ProjectChannelConfigService projectChannelConfigService;
+
+    @Autowired
+    private ProjectMainPaySettingDao projectMainPaySettingDao;
+
     /**
-     * 保存项目支付渠道 配置
+     * 关联支付渠道
      *
      * @return
      */
-    public ResultContent savePaySetting() {
+    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();
+    }
+
+    /**
+     * 项目得到所有的支付渠道配置
+     *
+     * @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 ResultContent.buildSuccess(models);
+    }
+
+    public ResultContent deleteInfo(String id) {
+        ProjectPaySetting paySetting = projectPaySettingDao.findTopById(id);
+        if (ObjectUtils.isEmpty(paySetting)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        projectPaySettingDao.delete(paySetting);
+        // 编辑账户不可用
+
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent changeState(String id, DataState state) {
+        ProjectPaySetting paySetting = projectPaySettingDao.findTopById(id);
+        if (ObjectUtils.isEmpty(paySetting)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        //TODO  检查是否可以启用
+        if (state != null && state == DataState.Enable) {
+            ProjectMainPaySetting mainPaySetting = projectMainPaySettingDao.findTopByProjectOidAndChannelType(paySetting.getProjectOid(), paySetting.getChannelType());
+            if (ObjectUtils.isEmpty(mainPaySetting)) {
+                return ResultContent.buildFail("未配置账户信息和结算规则等,不能启用");
+            }
+        }
+        paySetting.setState(state);
+        projectPaySettingDao.save(paySetting);
+
+        // 更新支付中心的账号信息
+        upsertPayAccount(paySetting.getProjectOid(), paySetting.getChannelType());
         return ResultContent.buildSuccess();
     }
 
@@ -497,4 +579,20 @@ public class ProjectPaySettingServiceImpl extends SuperService {
         }
         return ResultContent.buildSuccess();
     }
+
+    public ProjectPaySettingModel toModel(ProjectPaySetting entity) {
+        ProjectPaySettingModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new ProjectPaySettingModel();
+            BeanUtils.copyProperties(entity, model);
+            // 关联的支付产品信息
+            model.setPayChannelConfigModel(projectChannelConfigService.getProjectPayChannelModel(entity.getChannelType()));
+            // 判断是否完成配置
+            ProjectOrgPaySettingInfo settingInfo = projectPaySettingInfoDao.findTopByProjectOidAndChannelTypeAndIsDefault(entity.getProjectOid(), entity.getChannelType(), Boolean.TRUE);
+            if (ObjectUtils.isNotEmpty(settingInfo)) {
+                model.setIsConfig(Boolean.TRUE);
+            }
+        }
+        return model;
+    }
 }