|
|
@@ -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();
|
|
|
}
|
|
|
|
|
|
}
|