diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/StationSplitConfigController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/StationSplitConfigController.java index 61f344ba5..76e629d3f 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/StationSplitConfigController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/StationSplitConfigController.java @@ -2,6 +2,7 @@ package com.jsowell.web.controller.pile; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.domain.AjaxResult; +import com.jsowell.common.exception.BusinessException; import com.jsowell.pile.dto.SplitConfigDTO; import com.jsowell.pile.service.StationSplitConfigService; import org.springframework.beans.factory.annotation.Autowired; @@ -22,7 +23,15 @@ public class StationSplitConfigController extends BaseController { @RequestMapping("/insertSplitConfig") public AjaxResult insertSplitConfig(HttpServletRequest request, @RequestBody SplitConfigDTO splitDetailDTO) { - int result = stationSplitConfigService.insertSplitConfig(splitDetailDTO); - return result > 0 ? success() : error(); + AjaxResult ajaxResult; + try { + int result = stationSplitConfigService.insertSplitConfig(splitDetailDTO); + ajaxResult = result > 0 ? success() : error(); + } catch (BusinessException e) { + ajaxResult = error(e.getMessage()); + } catch (Exception e) { + ajaxResult = error("系统异常"); + } + return ajaxResult; } } diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index f6510e125..a36e1d5e6 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -1103,10 +1103,10 @@ public class SpringBootTestController { */ @Test public void createPaymentReverseRequestTest() { - String paymentId = "002212024080610282310666722484828160000"; - BigDecimal refundAmount = new BigDecimal("20.28"); - String memberId = "25994783"; - String orderCode = "C61883385858"; + String paymentId = "002212024092220492810683911016616513536"; + BigDecimal refundAmount = new BigDecimal("33.58"); + String memberId = "84630475"; + String orderCode = "C40138347581"; // 延迟分账未确认调撤销调撤销接口退款 PaymentReverseOperation operation = new PaymentReverseOperation(); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/StationSplitConfig.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/StationSplitConfig.java index 05b167877..30883e197 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/StationSplitConfig.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/StationSplitConfig.java @@ -50,6 +50,11 @@ public class StationSplitConfig { */ private BigDecimal serviceSplitRatio; + /** + * 是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个 + */ + private String feeFlag; + /** * 创建人 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/StationSplitConfigMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/StationSplitConfigMapper.java index 7a88b5ee3..469535aee 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/StationSplitConfigMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/StationSplitConfigMapper.java @@ -3,6 +3,7 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.StationSplitConfig; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; public interface StationSplitConfigMapper { @@ -22,5 +23,5 @@ public interface StationSplitConfigMapper { /** * 根据运营商id和站点id逻辑删除 */ - int deleteByMerchantIdAndStationId(@Param("merchantId") String merchantId, @Param("stationId") String stationId); + int deleteByMerchantIdAndStationId(@Param("merchantId") String merchantId, @Param("stationId") String stationId, @Param("updateBy") String updateBy, @Param("updateTime") Date updateTime); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/StationSplitConfigServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/StationSplitConfigServiceImpl.java index a622df0db..5d0588845 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/StationSplitConfigServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/StationSplitConfigServiceImpl.java @@ -1,7 +1,9 @@ package com.jsowell.pile.service.impl; import com.google.common.collect.Lists; +import com.jsowell.common.constant.Constants; 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.StationSplitConfig; @@ -31,8 +33,10 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{ public int insertSplitConfig(SplitConfigDTO splitConfigDTO) { // 参与分成的用户不能超过7位 if (splitConfigDTO.getSplitUserDetailList().size() > 7) { - return 0; + throw new BusinessException("", "参与分成的用户不能超过7位"); } + // 只能有一位手续费承担方, 超过则报错 + int feeFlagCount = 0; // 校验分成比例相加是否为100.0% List splitUserDetailList = splitConfigDTO.getSplitUserDetailList(); BigDecimal totalElectricitySplitRatio = BigDecimal.ZERO; @@ -40,17 +44,25 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{ for (SplitUserDetailDTO splitUserDetailDTO : splitUserDetailList) { totalElectricitySplitRatio = totalElectricitySplitRatio.add(splitUserDetailDTO.getElectricitySplitRatio()); totalServiceSplitRatio = totalServiceSplitRatio.add(splitUserDetailDTO.getServiceSplitRatio()); + if (Constants.Y.equals(splitUserDetailDTO.getFeeFlag())) { + feeFlagCount++; + } } - if (totalElectricitySplitRatio.compareTo(BigDecimal.valueOf(100)) != 0 || totalServiceSplitRatio.compareTo(BigDecimal.valueOf(100)) != 0) { - return 0; + if (feeFlagCount > 1) { + throw new BusinessException("", "只能有一位手续费承担方"); } - + if (totalElectricitySplitRatio.compareTo(BigDecimal.valueOf(100)) != 0) { + throw new BusinessException("", "电费分成比例相加必须为100.0%"); + } + if (totalServiceSplitRatio.compareTo(BigDecimal.valueOf(100)) != 0) { + throw new BusinessException("", "服务费分成比例相加必须为100.0%"); + } + String userName = SecurityUtils.getLoginUser().getUsername(); // 先删除该充电站的所有分成配置 - stationSplitConfigMapper.deleteByMerchantIdAndStationId(splitConfigDTO.getMerchantId(), splitConfigDTO.getStationId()); + stationSplitConfigMapper.deleteByMerchantIdAndStationId(splitConfigDTO.getMerchantId(), splitConfigDTO.getStationId(), userName, DateUtils.getNowDate()); // 保存到数据库 - String createBy = SecurityUtils.getLoginUser().getUsername(); - Date nowDate = DateUtils.getNowDate(); List splitConfigList = Lists.newArrayList(); + Date nowDate = DateUtils.getNowDate(); for (SplitUserDetailDTO splitUserDetailDTO : splitUserDetailList) { StationSplitConfig splitConfig = StationSplitConfig.builder() .merchantId(splitConfigDTO.getMerchantId()) @@ -58,7 +70,8 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{ .adapayMemberId(splitUserDetailDTO.getAdapayMemberId()) .electricitySplitRatio(splitUserDetailDTO.getElectricitySplitRatio()) .serviceSplitRatio(splitUserDetailDTO.getServiceSplitRatio()) - .createBy(createBy) + .feeFlag(splitUserDetailDTO.getFeeFlag()) + .createBy(userName) .createTime(nowDate) .delFlag(DelFlagEnum.NORMAL.getValue()) .build(); diff --git a/jsowell-pile/src/main/resources/mapper/pile/StationSplitConfigMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/StationSplitConfigMapper.xml index dac7ea914..94a4ff903 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/StationSplitConfigMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/StationSplitConfigMapper.xml @@ -10,6 +10,7 @@ + @@ -18,7 +19,7 @@ - id, merchant_id, station_id, adapay_member_id, electricity_split_ratio, service_split_ratio, + id, merchant_id, station_id, adapay_member_id, electricity_split_ratio, service_split_ratio, fee_flag, create_by, create_time, update_by, update_time, del_flag @@ -33,13 +34,13 @@ insert into station_split_config - (id, merchant_id, station_id, adapay_member_id, electricity_split_ratio, service_split_ratio, + (id, merchant_id, station_id, adapay_member_id, electricity_split_ratio, service_split_ratio, fee_flag, create_by, create_time, update_by, update_time, del_flag) values (#{item.id,jdbcType=INTEGER}, #{item.merchantId,jdbcType=VARCHAR}, #{item.stationId,jdbcType=VARCHAR}, #{item.adapayMemberId,jdbcType=VARCHAR}, #{item.electricitySplitRatio,jdbcType=DECIMAL}, - #{item.serviceSplitRatio,jdbcType=DECIMAL}, #{item.createBy,jdbcType=VARCHAR}, + #{item.serviceSplitRatio,jdbcType=DECIMAL}, #{item.feeFlag,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateBy,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP}, #{item.delFlag,jdbcType=CHAR}) @@ -47,8 +48,9 @@ update station_split_config - set del_flag = '1' - where merchant_id = #{merchantId} + set del_flag = '1', update_by = #{updateBy}, update_time = #{updateTime} + where del_flag = '0' + and merchant_id = #{merchantId} and station_id = #{stationId} \ No newline at end of file