|
|
@@ -13,9 +13,11 @@ 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.ProjectPaySettingDao;
|
|
|
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectPaySettingInfoDao;
|
|
|
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.ProjectPaySetting;
|
|
|
+import com.zhongshu.card.server.core.domain.paySetting.ProjectPaySettingInfo;
|
|
|
import com.zhongshu.card.server.core.service.base.SuperService;
|
|
|
import com.zhongshu.card.server.core.util.AesUtils;
|
|
|
import com.zhongshu.card.server.core.util.BeanUtils;
|
|
|
@@ -45,6 +47,9 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
@Autowired
|
|
|
ProjectPaySettingDao projectPaySettingDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProjectPaySettingInfoDao projectPaySettingInfoDao;
|
|
|
+
|
|
|
@Autowired
|
|
|
OrganizationDao organizationDao;
|
|
|
|
|
|
@@ -57,8 +62,6 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
@Autowired
|
|
|
PayChannelConfigDao payChannelConfigDao;
|
|
|
|
|
|
- //-----------------------------微信支付的配置 start------------------
|
|
|
-
|
|
|
/**
|
|
|
* 关联支付渠道
|
|
|
*
|
|
|
@@ -79,8 +82,7 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
}
|
|
|
PaymentType paymentType = payChannelConfig.getPaymentType();
|
|
|
|
|
|
- ProjectPaySetting projectPaySetting = projectPaySettingDao.findTopByProjectOidAndChannelType(
|
|
|
- projectOid, paymentType);
|
|
|
+ ProjectPaySetting projectPaySetting = projectPaySettingDao.findTopByProjectOidAndChannelType(projectOid, paymentType);
|
|
|
if (ObjectUtils.isNotEmpty(projectPaySetting)) {
|
|
|
return ResultContent.buildFail(String.format("%s已存在", paymentType.name()));
|
|
|
}
|
|
|
@@ -98,6 +100,117 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
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));
|
|
|
+ }
|
|
|
+ // 判断是否可以删除
|
|
|
+ int count = projectPaySettingInfoDao.countByProjectOidAndChannelType(paySetting.getProjectOid(), paySetting.getChannelType());
|
|
|
+ if (count > 0) {
|
|
|
+ return ResultContent.buildFail(String.format("%s有账户信息,不能删除", paySetting.getChannelType().getRemark()));
|
|
|
+ }
|
|
|
+ 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) {
|
|
|
+ List<ProjectPaySettingInfo> list = projectPaySettingInfoDao.findByProjectOidAndChannelType(paySetting.getProjectOid(), paySetting.getChannelType());
|
|
|
+ if (ObjectUtils.isEmpty(list)) {
|
|
|
+ return ResultContent.buildFail(String.format("没有账户信息,不能启用"));
|
|
|
+ }
|
|
|
+ boolean hasDefault = false;
|
|
|
+ for (ProjectPaySettingInfo entity : list) {
|
|
|
+ if (entity.getIsDefault() != null && entity.getIsDefault()) {
|
|
|
+ hasDefault = true;
|
|
|
+ if (entity.getPayConfig() == null) {
|
|
|
+ return ResultContent.buildFail(String.format("默认账户参数信息未配置"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasDefault) {
|
|
|
+ return ResultContent.buildFail("没有默认账户信息,不能启用");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ paySetting.setState(state);
|
|
|
+ projectPaySettingDao.save(paySetting);
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
+ //-----------------------------通用配置方法 start----------------------------
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 得到项目的支付产品的 账户配置
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent<List<ProjectPaySettingInfoModel>> getProjectPaySettingInfo(String id) {
|
|
|
+ List<ProjectPaySettingInfoModel> models = new ArrayList<>();
|
|
|
+ ProjectPaySetting projectPaySetting = projectPaySettingDao.findTopById(id);
|
|
|
+ if (ObjectUtils.isEmpty(projectPaySetting)) {
|
|
|
+ return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
|
|
|
+ }
|
|
|
+ List<ProjectPaySettingInfo> list = projectPaySettingInfoDao.findByProjectOidAndChannelType(projectPaySetting.getProjectOid(), projectPaySetting.getChannelType());
|
|
|
+ if (ObjectUtils.isNotEmpty(list)) {
|
|
|
+ models = list.stream().map(this::toModel).collect(Collectors.toUnmodifiableList());
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess(models);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除账户
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent deletePaySettingInfo(String id) {
|
|
|
+ ProjectPaySettingInfo entity = projectPaySettingInfoDao.findTopById(id);
|
|
|
+ if (ObjectUtils.isEmpty(entity)) {
|
|
|
+ return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
|
|
|
+ }
|
|
|
+ projectPaySettingInfoDao.delete(entity);
|
|
|
+ initChangeDefault(null, entity.getProjectOid(), entity.getChannelType());
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 账户详情
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent getPaySettingInfo(String id) {
|
|
|
+ ProjectPaySettingInfo entity = projectPaySettingInfoDao.findTopById(id);
|
|
|
+ if (ObjectUtils.isEmpty(entity)) {
|
|
|
+ return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess(toModel(entity));
|
|
|
+ }
|
|
|
+
|
|
|
+ //-----------------------------微信支付的配置 start------------------
|
|
|
+
|
|
|
/**
|
|
|
* 保存项目的微信支付设置
|
|
|
*
|
|
|
@@ -106,15 +219,18 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
*/
|
|
|
public ResultContent saveWxPayConfig(WxPayConfigParam param) {
|
|
|
//TODO 检查微信支付参数等
|
|
|
- ResultContent<WxPayConfigModel> resultContent = getWxPayConfig(param.getProjectOid());
|
|
|
- WxPayConfigModel configModel = null;
|
|
|
- if (resultContent.isSuccess()) {
|
|
|
- configModel = resultContent.getContent();
|
|
|
+ ResultContent<ProjectPaySettingInfo> content = initProjectPayInfo(param);
|
|
|
+ if (content.isFailed()) {
|
|
|
+ return ResultContent.buildFail(content.getMsg());
|
|
|
}
|
|
|
+ ProjectPaySettingInfo settingInfo = content.getContent();
|
|
|
+
|
|
|
+ WxPayConfigModel configModel = (WxPayConfigModel) settingInfo.getPayConfig();
|
|
|
if (ObjectUtils.isEmpty(configModel)) {
|
|
|
configModel = new WxPayConfigModel();
|
|
|
}
|
|
|
BeanUtils.copyProperties(param, configModel);
|
|
|
+
|
|
|
String privateKeyStr = AesUtils.turnMultipartFileToString(param.getPrivateKeyFile());
|
|
|
if (StringUtils.isNotEmpty(privateKeyStr)) {
|
|
|
configModel.setPrivateKeyStr(privateKeyStr);
|
|
|
@@ -123,25 +239,65 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
if (StringUtils.isNotEmpty(configModel.getPrivateKeyStr())) {
|
|
|
return ResultContent.buildFail("证书文件为空");
|
|
|
}
|
|
|
- return saveProjectPaySetting(param.getProjectOid(), PaymentType.WeChat, configModel);
|
|
|
+ settingInfo.setPayConfig(configModel);
|
|
|
+ projectPaySettingInfoDao.save(settingInfo);
|
|
|
+ // 如果当前设置为默认,把其他的取消默认
|
|
|
+ initChangeDefault(settingInfo.getId(), settingInfo.getProjectOid(), settingInfo.getChannelType());
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 得到项目的微信支付配置
|
|
|
+ * 得到微信小程序支付的参数配置
|
|
|
*
|
|
|
* @param projectOid
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent<WxPayConfigModel> getWxPayConfig(String projectOid) {
|
|
|
- WxPayConfigModel model = null;
|
|
|
- ProjectPaySetting paySetting = getProjectPaySetting(projectOid, PaymentType.WeChat);
|
|
|
- if (ObjectUtils.isNotEmpty(paySetting)) {
|
|
|
+ public ResultContent<WxPayConfigModel> getProjectWxConfig(String projectOid) {
|
|
|
+ // 平台的
|
|
|
+ String payName = PaymentType.WeChat.getRemark();
|
|
|
+ PayChannelConfig channelConfig = payChannelConfigDao.findTopByPaymentType(PaymentType.WeChat);
|
|
|
+ if (ObjectUtils.isEmpty(channelConfig)) {
|
|
|
+ return ResultContent.buildFail(String.format("平台不支持%s", payName));
|
|
|
+ }
|
|
|
+ if (channelConfig.getState() == null || channelConfig.getState() != DataState.Enable) {
|
|
|
+ return ResultContent.buildFail(String.format("平台%s未启用", payName));
|
|
|
+ }
|
|
|
+ // 项目的
|
|
|
+ ProjectPaySetting paySetting = projectPaySettingDao.findTopByProjectOidAndChannelType(projectOid, PaymentType.WeChat);
|
|
|
|
|
|
- model = (WxPayConfigModel) paySetting.getPayConfig();
|
|
|
+ // 配置的
|
|
|
+ List<ProjectPaySettingInfo> list = projectPaySettingInfoDao.findByProjectOidAndChannelType(projectOid, PaymentType.WeChat);
|
|
|
+ if (ObjectUtils.isEmpty(list)) {
|
|
|
+ return ResultContent.buildFail(String.format("项目未配置%s", payName));
|
|
|
}
|
|
|
+ WxPayConfigModel model = new WxPayConfigModel();
|
|
|
return ResultContent.buildSuccess(model);
|
|
|
}
|
|
|
|
|
|
+ public ResultContent<ProjectPaySettingInfo> getProjectConfig(String projectOid, PaymentType paymentType) {
|
|
|
+ if (paymentType == null) {
|
|
|
+ return ResultContent.buildFail("PaymentType未指定");
|
|
|
+ }
|
|
|
+ // 平台的
|
|
|
+ String payName = PaymentType.WeChat.getRemark();
|
|
|
+ PayChannelConfig channelConfig = payChannelConfigDao.findTopByPaymentType(PaymentType.WeChat);
|
|
|
+ if (ObjectUtils.isEmpty(channelConfig)) {
|
|
|
+ return ResultContent.buildFail(String.format("平台不支持%s", payName));
|
|
|
+ }
|
|
|
+ if (channelConfig.getState() == null || channelConfig.getState() != DataState.Enable) {
|
|
|
+ return ResultContent.buildFail(String.format("平台%s未启用", payName));
|
|
|
+ }
|
|
|
+ // 项目的
|
|
|
+ ProjectPaySetting paySetting = projectPaySettingDao.findTopByProjectOidAndChannelType(projectOid, PaymentType.WeChat);
|
|
|
+
|
|
|
+ // 配置的
|
|
|
+ List<ProjectPaySettingInfo> list = projectPaySettingInfoDao.findByProjectOidAndChannelType(projectOid, PaymentType.WeChat);
|
|
|
+ if (ObjectUtils.isEmpty(list)) {
|
|
|
+ return ResultContent.buildFail(String.format("项目未配置%s", payName));
|
|
|
+ }
|
|
|
+ ProjectPaySettingInfo paySettingInfo = list.get(0);
|
|
|
+ return ResultContent.buildSuccess(paySettingInfo);
|
|
|
+ }
|
|
|
//-----------------------------拉卡拉配置 start-------------------
|
|
|
|
|
|
/**
|
|
|
@@ -151,12 +307,14 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
* @return
|
|
|
*/
|
|
|
public ResultContent saveLaKaLaConfig(LaKaLaCollectionConfigParam param) {
|
|
|
- //TODO 检查支付参数等
|
|
|
- LaKaLaCollectionConfig laKaLaCollectionConfig = null;
|
|
|
- ResultContent<LaKaLaCollectionConfig> resultContent = getLaKaLaConfig(param.getProjectOid());
|
|
|
- if (resultContent.isSuccess()) {
|
|
|
- laKaLaCollectionConfig = resultContent.getContent();
|
|
|
+ ResultContent<ProjectPaySettingInfo> content = initProjectPayInfo(param);
|
|
|
+ if (content.isFailed()) {
|
|
|
+ return ResultContent.buildFail(content.getMsg());
|
|
|
}
|
|
|
+ ProjectPaySettingInfo settingInfo = content.getContent();
|
|
|
+
|
|
|
+ //TODO 检查支付参数等
|
|
|
+ LaKaLaCollectionConfig laKaLaCollectionConfig = (LaKaLaCollectionConfig) settingInfo.getPayConfig();
|
|
|
if (ObjectUtils.isEmpty(laKaLaCollectionConfig)) {
|
|
|
laKaLaCollectionConfig = new LaKaLaCollectionConfig();
|
|
|
}
|
|
|
@@ -171,96 +329,77 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
String lklNotifyCerBase64 = AesUtils.turnMultipartFileToBase64(param.getLklNotifyCerFile());
|
|
|
laKaLaCollectionConfig.setLklNotifyCerBase64(lklNotifyCerBase64);
|
|
|
|
|
|
- return saveProjectPaySetting(param.getProjectOid(), PaymentType.LakalaFrictionlessPay, laKaLaCollectionConfig);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 得到项目的微信支付配置
|
|
|
- *
|
|
|
- * @param projectOid
|
|
|
- * @return
|
|
|
- */
|
|
|
- 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);
|
|
|
+ settingInfo.setPayConfig(laKaLaCollectionConfig);
|
|
|
+ projectPaySettingInfoDao.save(settingInfo);
|
|
|
+ // 如果当前设置为默认,把其他的取消默认
|
|
|
+ initChangeDefault(settingInfo.getId(), settingInfo.getProjectOid(), settingInfo.getChannelType());
|
|
|
+ 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());
|
|
|
+ public ResultContent<ProjectPaySettingInfo> initProjectPayInfo(PayConfigParam param) {
|
|
|
+ Organization project = organizationDao.findTopByOid(param.getProjectOid());
|
|
|
+ if (ObjectUtils.isEmpty(project)) {
|
|
|
+ return ResultContent.buildFail("projectOid不存在");
|
|
|
}
|
|
|
- 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));
|
|
|
+ ProjectPaySettingInfo projectPaySettingInfo = null;
|
|
|
+ if (StringUtils.isNotEmpty(param.getId())) {
|
|
|
+ projectPaySettingInfo = projectPaySettingInfoDao.findTopById(param.getId());
|
|
|
+ if (ObjectUtils.isEmpty(projectPaySettingInfo)) {
|
|
|
+ return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isEmpty(param.getProjectPaySettingId())) {
|
|
|
+ return ResultContent.buildFail("projectPaySettingId不能为空");
|
|
|
+ }
|
|
|
+ ProjectPaySetting paySetting = projectPaySettingDao.findTopById(param.getProjectPaySettingId());
|
|
|
+ if (ObjectUtils.isEmpty(paySetting)) {
|
|
|
+ return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getProjectPaySettingId()));
|
|
|
+ }
|
|
|
+ projectPaySettingInfo = new ProjectPaySettingInfo();
|
|
|
+ projectPaySettingInfo.setProjectPaySetting(paySetting);
|
|
|
+ projectPaySettingInfo.setChannelType(paySetting.getChannelType());
|
|
|
+ projectPaySettingInfo.setPaymentChannelType(paySetting.getPaymentChannelType());
|
|
|
+ projectPaySettingInfo.setState(DataState.Enable);
|
|
|
+ projectPaySettingInfo.setProjectOid(project.getOid());
|
|
|
+ projectPaySettingInfo.setProjectName(project.getName());
|
|
|
+ projectPaySettingInfo.setProjectCode(project.getCode());
|
|
|
+ int total = projectPaySettingInfoDao.countByProjectOidAndChannelType(project.getOid(), paySetting.getChannelType());
|
|
|
+ if (total <= 0) {
|
|
|
+ param.setIsDefault(Boolean.TRUE);
|
|
|
+ }
|
|
|
}
|
|
|
- projectPaySettingDao.delete(paySetting);
|
|
|
- return ResultContent.buildSuccess();
|
|
|
+ projectPaySettingInfo.setName(param.getName());
|
|
|
+ projectPaySettingInfo.setIsDefault(param.getIsDefault());
|
|
|
+ return ResultContent.buildSuccess(projectPaySettingInfo);
|
|
|
}
|
|
|
|
|
|
- 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));
|
|
|
- }
|
|
|
- if (state == DataState.Enable && paySetting.getPayConfig() == null) {
|
|
|
- return ResultContent.buildFail("参数未配置,不能启用");
|
|
|
+ public ResultContent initChangeDefault(String id, String projectOid, PaymentType paymentType) {
|
|
|
+ List<ProjectPaySettingInfo> list = projectPaySettingInfoDao.findByProjectOidAndChannelType(projectOid, paymentType);
|
|
|
+ if (ObjectUtils.isNotEmpty(list)) {
|
|
|
+ List<ProjectPaySettingInfo> _tempList = list.stream().filter(it -> it.getIsDefault() != null && it.getIsDefault()).collect(Collectors.toList());
|
|
|
+ if (ObjectUtils.isNotEmpty(_tempList)) {
|
|
|
+ if (_tempList.size() > 1 && StringUtils.isNotEmpty(id)) {
|
|
|
+ // 其他的设置为 非默认
|
|
|
+ _tempList.stream().forEach(it -> {
|
|
|
+ if (!it.getId().equals(id)) {
|
|
|
+ it.setIsDefault(Boolean.FALSE);
|
|
|
+ projectPaySettingInfoDao.save(it);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ProjectPaySettingInfo first = list.get(0);
|
|
|
+ first.setIsDefault(Boolean.TRUE);
|
|
|
+ projectPaySettingInfoDao.save(first);
|
|
|
+ }
|
|
|
}
|
|
|
- paySetting.setState(state);
|
|
|
- projectPaySettingDao.save(paySetting);
|
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
|
|
|
|
- //-----------------------------通用配置方法 start----------------------------
|
|
|
-
|
|
|
public ProjectPaySetting getProjectPaySetting(String projectOid, PaymentType paymentType) {
|
|
|
- return projectPaySettingDao.findTopByProjectOidAndChannelType(
|
|
|
- projectOid, paymentType);
|
|
|
+ return projectPaySettingDao.findTopByProjectOidAndChannelType(projectOid, paymentType);
|
|
|
}
|
|
|
|
|
|
- // 通用保存参数配置
|
|
|
- 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());
|
|
|
- projectPaySetting.setState(DataState.Enable);
|
|
|
- } else {
|
|
|
- initUpdateEntity(projectPaySetting);
|
|
|
- }
|
|
|
- projectPaySetting.setPayConfig(payConfig);
|
|
|
- projectPaySettingDao.save(projectPaySetting);
|
|
|
- return ResultContent.buildSuccess(projectPaySetting);
|
|
|
- }
|
|
|
|
|
|
public ProjectPaySettingModel toModel(ProjectPaySetting entity) {
|
|
|
ProjectPaySettingModel model = null;
|
|
|
@@ -303,8 +442,7 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
ResultContent.buildFail(String.format("平台未配置%s", paymentType.getChannelType().getRemark()));
|
|
|
}
|
|
|
if (ObjectUtils.isEmpty(payChannelConfig)) {
|
|
|
- return ResultContent.buildFail(String.format("%s支付产品不支持%s", payChannelConfig.getName(),
|
|
|
- paymentType.getRemark()));
|
|
|
+ return ResultContent.buildFail(String.format("%s支付产品不支持%s", payChannelConfig.getName(), paymentType.getRemark()));
|
|
|
}
|
|
|
if (payChannelConfig.getState() != DataState.Enable) {
|
|
|
return ResultContent.buildFail(String.format("支付产品%s%s", payChannelConfig.getName(), payChannelConfig.getState().getRemark()));
|
|
|
@@ -317,6 +455,29 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 得到字段
|
|
|
+ *
|
|
|
+ * @param configId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent<PayConfigFieldModel> getFieldByConfigId(String configId) {
|
|
|
+ ProjectPaySetting paySetting = projectPaySettingDao.findTopById(configId);
|
|
|
+ if (ObjectUtils.isEmpty(paySetting)) {
|
|
|
+ return ResultContent.buildFail("数据不存在");
|
|
|
+ }
|
|
|
+ return getField(paySetting.getChannelType());
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResultContent<PayConfigFieldModel> getField(PaymentType paymentType) {
|
|
|
+ PayConfigFieldModel model = new PayConfigFieldModel();
|
|
|
+ if (paymentType == PaymentType.WeChat) {
|
|
|
+ model.setApiName("saveWxPayConfig");
|
|
|
+ model.setFields(getWxConfig());
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess(model);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 得到微信支付需要的字段
|
|
|
*
|
|
|
@@ -324,9 +485,25 @@ public class ProjectPaySettingServiceImpl extends SuperService {
|
|
|
*/
|
|
|
public List<PayConfigField> getWxConfig() {
|
|
|
List<PayConfigField> fields = new ArrayList<>(4);
|
|
|
- PayConfigField.builder().name("").key("").type(PayFieldType.Str).isMust(Boolean.TRUE).build();
|
|
|
-
|
|
|
-
|
|
|
+ fields.add(PayConfigField.builder().name("appid").key("appId").type(PayFieldType.Str).isMust(Boolean.TRUE).maxLength(100).build());
|
|
|
+ fields.add(PayConfigField.builder().name("商户证书序列号").key("mchSerialNo").type(PayFieldType.Str).isMust(Boolean.TRUE).maxLength(100).build());
|
|
|
+ fields.add(PayConfigField.builder().name("商户id").key("mchId").type(PayFieldType.Str).isMust(Boolean.TRUE).maxLength(100).build());
|
|
|
+ fields.add(PayConfigField.builder().name("V3密钥").key("apiV3Key").type(PayFieldType.Str).isMust(Boolean.TRUE).maxLength(100).build());
|
|
|
+ fields.add(PayConfigField.builder().name("证书文件").key("privateKeyFile").type(PayFieldType.File).isMust(Boolean.FALSE).build());
|
|
|
+ fields.add(PayConfigField.builder().name("支付成功回调地址").key("notifyUrl").type(PayFieldType.Str).isMust(Boolean.TRUE).maxLength(500).build());
|
|
|
return fields;
|
|
|
}
|
|
|
+
|
|
|
+ public ProjectPaySettingInfoModel toModel(ProjectPaySettingInfo entity) {
|
|
|
+ ProjectPaySettingInfoModel model = null;
|
|
|
+ if (ObjectUtils.isNotEmpty(entity)) {
|
|
|
+ model = new ProjectPaySettingInfoModel();
|
|
|
+ BeanUtils.copyProperties(entity, model);
|
|
|
+ if (entity.getProjectPaySetting() != null) {
|
|
|
+ model.setProjectPaySettingId(entity.getProjectPaySetting().getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+
|
|
|
}
|