update 分成功能

This commit is contained in:
Guoqs
2024-09-26 17:19:17 +08:00
parent e42bd1ebd0
commit 9b963613a5
6 changed files with 50 additions and 20 deletions

View File

@@ -50,6 +50,11 @@ public class StationSplitConfig {
*/
private BigDecimal serviceSplitRatio;
/**
* 是否手续费承担方N-否Y-是,手续费承担方有且只能有一个
*/
private String feeFlag;
/**
* 创建人
*/

View File

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

View File

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

View File

@@ -10,6 +10,7 @@
<result column="adapay_member_id" jdbcType="VARCHAR" property="adapayMemberId" />
<result column="electricity_split_ratio" jdbcType="DECIMAL" property="electricitySplitRatio" />
<result column="service_split_ratio" jdbcType="DECIMAL" property="serviceSplitRatio" />
<result column="fee_flag" jdbcType="VARCHAR" property="feeFlag" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
@@ -18,7 +19,7 @@
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
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
</sql>
@@ -33,13 +34,13 @@
<insert id="batchInsert" parameterType="map">
<!--@mbg.generated-->
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
<foreach collection="list" item="item" separator=",">
(#{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})
</foreach>
@@ -47,8 +48,9 @@
<update id="deleteByMerchantIdAndStationId">
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}
</update>
</mapper>