update 分成功能

This commit is contained in:
Guoqs
2024-09-27 17:30:52 +08:00
parent 69282a7960
commit be53631df7
2 changed files with 24 additions and 8 deletions

View File

@@ -18,6 +18,6 @@ public class SplitUserDetailDTO {
// 服务费分成比例
private BigDecimal serviceSplitRatio;
// 是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个
// 是否手续费承担方,0-否,1-是,手续费承担方有且只能有一个
private String feeFlag;
}

View File

@@ -6,11 +6,14 @@ import com.jsowell.common.enums.DelFlagEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.SecurityUtils;
import com.jsowell.pile.domain.AdapayMemberAccount;
import com.jsowell.pile.domain.StationSplitConfig;
import com.jsowell.pile.dto.SplitConfigDTO;
import com.jsowell.pile.dto.SplitUserDetailDTO;
import com.jsowell.pile.mapper.StationSplitConfigMapper;
import com.jsowell.pile.service.AdapayMemberAccountService;
import com.jsowell.pile.service.StationSplitConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -24,6 +27,9 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
@Resource
private StationSplitConfigMapper stationSplitConfigMapper;
@Autowired
private AdapayMemberAccountService adapayMemberAccountService;
@Override
public List<StationSplitConfig> queryByStationId(String stationId) {
return stationSplitConfigMapper.queryByStationId(stationId);
@@ -35,21 +41,31 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
if (splitConfigDTO.getSplitUserDetailList().size() > 7) {
throw new BusinessException("", "参与分成的用户不能超过7位");
}
// 只能有一位手续费承担方, 超过则报错
int feeFlagCount = 0;
// 根据运营商查询汇付会员信息
AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectByMerchantId(splitConfigDTO.getMerchantId());
if (adapayMemberAccount == null) {
throw new BusinessException("", "未查询到该运营商的汇付会员信息");
}
if (!Constants.ONE.equals(adapayMemberAccount.getStatus())) {
throw new BusinessException("", "该运营商的汇付会员信息未审核通过");
}
// 校验分成比例相加是否为100.0%
List<SplitUserDetailDTO> splitUserDetailList = splitConfigDTO.getSplitUserDetailList();
int feeFlagCount = 0; // 手续费承担方数
BigDecimal totalElectricitySplitRatio = BigDecimal.ZERO;
BigDecimal totalServiceSplitRatio = BigDecimal.ZERO;
for (SplitUserDetailDTO splitUserDetailDTO : splitUserDetailList) {
totalElectricitySplitRatio = totalElectricitySplitRatio.add(splitUserDetailDTO.getElectricitySplitRatio());
totalServiceSplitRatio = totalServiceSplitRatio.add(splitUserDetailDTO.getServiceSplitRatio());
if (Constants.Y.equals(splitUserDetailDTO.getFeeFlag())) {
if (Constants.ONE.equals(splitUserDetailDTO.getFeeFlag())) {
feeFlagCount++;
}
totalElectricitySplitRatio = totalElectricitySplitRatio.add(splitUserDetailDTO.getElectricitySplitRatio());
totalServiceSplitRatio = totalServiceSplitRatio.add(splitUserDetailDTO.getServiceSplitRatio());
}
if (feeFlagCount > 1) {
throw new BusinessException("", "只能有一位手续费承担方");
if (feeFlagCount != 1) {
// 只能有一位手续费承担方, 超过则报错
throw new BusinessException("", "手续费承担方设置错误, 有且只能有1位手续费承担方");
}
if (totalElectricitySplitRatio.compareTo(BigDecimal.valueOf(100)) != 0) {
throw new BusinessException("", "电费分成比例相加必须为100.0%");