|
|
@@ -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;
|
|
|
+ }
|
|
|
}
|