mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-27 09:23:49 +08:00
Merge branch 'dev' of http://192.168.2.2:8099/jsowell/jsowell-charger-web into dev
This commit is contained in:
@@ -41,13 +41,14 @@ import com.jsowell.pile.dto.*;
|
||||
import com.jsowell.pile.service.*;
|
||||
import com.jsowell.pile.service.programlogic.AbstractProgramLogic;
|
||||
import com.jsowell.pile.service.programlogic.ProgramLogicFactory;
|
||||
import com.jsowell.pile.util.MerchantUtils;
|
||||
import com.jsowell.pile.util.UserUtils;
|
||||
import com.jsowell.pile.vo.OrderPayRecordVO;
|
||||
import com.jsowell.pile.vo.base.*;
|
||||
import com.jsowell.pile.vo.base.OrderAmountDetailVO;
|
||||
import com.jsowell.pile.vo.base.OrderPeriodAmountVO;
|
||||
import com.jsowell.pile.vo.base.PileInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.customer.*;
|
||||
import com.jsowell.pile.vo.base.StationInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.customer.InvoiceRecordVO;
|
||||
import com.jsowell.pile.vo.uniapp.customer.*;
|
||||
import com.jsowell.pile.vo.web.*;
|
||||
import com.jsowell.thirdparty.common.CommonService;
|
||||
import com.jsowell.wxpay.response.WechatPayNotifyParameter;
|
||||
@@ -840,23 +841,22 @@ public class OrderService {
|
||||
);
|
||||
}
|
||||
// 如果是希晓的会员,将余额支付添加进去
|
||||
if (MerchantUtils.isXiXiaoMerchant(String.valueOf(memberBasicInfo.getMerchantId()))) { // 35-希晓
|
||||
// 余额支付
|
||||
result.add(
|
||||
PayModeVO.builder()
|
||||
.payModeCode(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())
|
||||
.payModeName(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getLabel())
|
||||
.build()
|
||||
);
|
||||
} else {
|
||||
// 2024年9月27日09点49分 开启余额支付
|
||||
result.add(
|
||||
PayModeVO.builder()
|
||||
.payModeCode(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())
|
||||
.payModeName(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getLabel())
|
||||
.build()
|
||||
);
|
||||
}
|
||||
// if (MerchantUtils.isXiXiaoMerchant(String.valueOf(memberBasicInfo.getMerchantId()))) { // 35-希晓
|
||||
// // 余额支付
|
||||
// result.add(
|
||||
// PayModeVO.builder()
|
||||
// .payModeCode(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())
|
||||
// .payModeName(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getLabel())
|
||||
// .build()
|
||||
// );
|
||||
// }
|
||||
// 2024年9月27日09点49分 开启余额支付
|
||||
result.add(
|
||||
PayModeVO.builder()
|
||||
.payModeCode(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())
|
||||
.payModeName(OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getLabel())
|
||||
.build()
|
||||
);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -1279,7 +1279,7 @@ public class OrderService {
|
||||
if (StringUtils.isBlank(memberId)) {
|
||||
return;
|
||||
}
|
||||
AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectByMemberId(memberId);
|
||||
AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectByAdapayMemberId(memberId);
|
||||
if (adapayMemberAccount == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -21,11 +21,18 @@ public class StationSplitConfigController extends BaseController {
|
||||
@Autowired
|
||||
private StationSplitConfigService stationSplitConfigService;
|
||||
|
||||
@RequestMapping("/insertSplitConfig")
|
||||
public AjaxResult insertSplitConfig(HttpServletRequest request, @RequestBody SplitConfigDTO splitDetailDTO) {
|
||||
/**
|
||||
* 设置站点配置
|
||||
* /station/splitconfig/settingSplitConfig
|
||||
* @param request
|
||||
* @param splitDetailDTO
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/settingSplitConfig")
|
||||
public AjaxResult settingSplitConfig(HttpServletRequest request, @RequestBody SplitConfigDTO splitDetailDTO) {
|
||||
AjaxResult ajaxResult;
|
||||
try {
|
||||
int result = stationSplitConfigService.insertSplitConfig(splitDetailDTO);
|
||||
int result = stationSplitConfigService.settingSplitConfig(splitDetailDTO);
|
||||
ajaxResult = result > 0 ? success() : error();
|
||||
} catch (BusinessException e) {
|
||||
ajaxResult = error(e.getMessage());
|
||||
|
||||
@@ -18,6 +18,6 @@ public class SplitUserDetailDTO {
|
||||
// 服务费分成比例
|
||||
private BigDecimal serviceSplitRatio;
|
||||
|
||||
// 是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个
|
||||
// 是否手续费承担方,0-否,1-是,手续费承担方有且只能有一个
|
||||
private String feeFlag;
|
||||
}
|
||||
|
||||
@@ -59,9 +59,26 @@ public interface AdapayMemberAccountService {
|
||||
*/
|
||||
int deleteAdapayMemberAccountByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 根据运营商id查询汇付会员信息
|
||||
* @param merchantId 运营商id
|
||||
* @return
|
||||
*/
|
||||
AdapayMemberAccount selectByMerchantId(String merchantId);
|
||||
|
||||
AdapayMemberAccount selectByMemberId(String memberId);
|
||||
/**
|
||||
* 根据充电站id查询汇付会员信息
|
||||
* @param stationId 站点id
|
||||
* @return
|
||||
*/
|
||||
AdapayMemberAccount selectByStationId(String stationId);
|
||||
|
||||
/**
|
||||
* 根据汇付会员id查询会员信息
|
||||
* @param adapayMemberId 汇付会员id
|
||||
* @return
|
||||
*/
|
||||
AdapayMemberAccount selectByAdapayMemberId(String adapayMemberId);
|
||||
|
||||
|
||||
void updateAdapayMemberAccountByMemberId(AdapayMemberAccount adapayMemberAccount);
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.pile.domain.StationSplitConfig;
|
||||
import com.jsowell.pile.dto.SplitConfigDTO;
|
||||
import com.jsowell.pile.vo.web.ShareMemberVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,7 +14,16 @@ public interface StationSplitConfigService{
|
||||
// 根据站点id查询站点分账配置信息
|
||||
List<StationSplitConfig> queryByStationId(String stationId);
|
||||
|
||||
/**
|
||||
* 根据站点id查询站点分成用户信息
|
||||
* 如果没有配置分账用户,并且站点对应的运营商设置了结算账户, 返回本站对应的结算账户, 电费和服务费分成比例都为100%
|
||||
* 如果没有配置分账用户, 并且站点对应的运营商没有设置结算账户, 返回默认结算账户(举视的账户)
|
||||
* @param stationId
|
||||
* @return
|
||||
*/
|
||||
List<ShareMemberVO> queryShareMembersByStationId(String stationId);
|
||||
|
||||
// 插入站点分账配置信息
|
||||
int insertSplitConfig(SplitConfigDTO splitConfigDTO);
|
||||
int settingSplitConfig(SplitConfigDTO splitConfigDTO);
|
||||
|
||||
}
|
||||
|
||||
@@ -4,11 +4,14 @@ import com.google.common.collect.Lists;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.DelFlagEnum;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.pile.domain.AdapayMemberAccount;
|
||||
import com.jsowell.pile.domain.PileStationInfo;
|
||||
import com.jsowell.pile.mapper.AdapayMemberAccountMapper;
|
||||
import com.jsowell.pile.service.AdapayMemberAccountService;
|
||||
import com.jsowell.pile.service.PileStationInfoService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -32,6 +35,9 @@ public class AdapayMemberAccountServiceImpl implements AdapayMemberAccountServic
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Autowired
|
||||
private PileStationInfoService pileStationInfoService;
|
||||
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
*
|
||||
@@ -112,9 +118,24 @@ public class AdapayMemberAccountServiceImpl implements AdapayMemberAccountServic
|
||||
return adapayMemberAccount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据站点id查询汇付会员账户信息, 只查询生效的
|
||||
* @param stationId 站点id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AdapayMemberAccount selectByStationId(String stationId) {
|
||||
PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(Long.parseLong(stationId));
|
||||
AdapayMemberAccount adapayMemberAccount = selectByMerchantId(String.valueOf(pileStationInfo.getMerchantId()));
|
||||
if (adapayMemberAccount == null || !StringUtils.equals(adapayMemberAccount.getStatus(), Constants.ONE)) {
|
||||
return null;
|
||||
}
|
||||
return adapayMemberAccount;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AdapayMemberAccount selectByMemberId(String memberId) {
|
||||
public AdapayMemberAccount selectByAdapayMemberId(String memberId) {
|
||||
return adapayMemberAccountMapper.selectByMemberId(memberId);
|
||||
}
|
||||
|
||||
@@ -143,6 +164,7 @@ public class AdapayMemberAccountServiceImpl implements AdapayMemberAccountServic
|
||||
List<AdapayMemberAccount> accountList = this.selectAdapayMemberAccountList(merchantId);
|
||||
if (CollectionUtils.isNotEmpty(accountList)) {
|
||||
List<String> ids = accountList.stream()
|
||||
.filter(x -> StringUtils.equals(x.getDelFlag(), DelFlagEnum.NORMAL.getValue()))
|
||||
.filter(x -> StringUtils.equals(x.getStatus(), Constants.TWO))
|
||||
.map(x -> x.getId() + "")
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -185,7 +185,8 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
@Autowired
|
||||
private IThirdpartySnRelationService snRelationService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private StationSplitConfigService stationSplitConfigService;
|
||||
|
||||
@Override
|
||||
public int deleteByPrimaryKey(Integer id) {
|
||||
@@ -1523,7 +1524,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
}
|
||||
|
||||
// 根据站点id查询该站点配置的分账信息, 如果为空表示本运营商分100%
|
||||
List<ShareMemberVO> shareMemberList = Lists.newArrayList();
|
||||
List<ShareMemberVO> shareMemberList = stationSplitConfigService.queryShareMembersByStationId(orderBasicInfo.getStationId());
|
||||
|
||||
// 计算每个账户 订单分账金额
|
||||
List<DivMember> divMemberList = splitAmount(shareMemberList, settleAmount, paymentInfos);
|
||||
|
||||
@@ -135,10 +135,10 @@ public class PileStationInfoServiceImpl implements PileStationInfoService {
|
||||
CurrentTimePriceDetails currentTimePriceDetails = pileBillingTemplateService.getCurrentTimePriceDetails(stationId);
|
||||
if (currentTimePriceDetails != null) {
|
||||
String electricityPrice = currentTimePriceDetails.getElectricityPrice();
|
||||
electricityPrice = StringUtils.isBlank(electricityPrice) ? "0" : electricityPrice;
|
||||
electricityPrice = StringUtils.isBlank(electricityPrice) ? Constants.ZERO : electricityPrice;
|
||||
|
||||
String servicePrice = currentTimePriceDetails.getServicePrice();
|
||||
servicePrice = StringUtils.isBlank(servicePrice) ? "0" : servicePrice;
|
||||
servicePrice = StringUtils.isBlank(servicePrice) ? Constants.ZERO : servicePrice;
|
||||
|
||||
vo.setElectricityPrice(new BigDecimal(electricityPrice));
|
||||
vo.setServicePrice(new BigDecimal(servicePrice));
|
||||
|
||||
@@ -6,11 +6,17 @@ 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.common.util.StringUtils;
|
||||
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 com.jsowell.pile.vo.web.ShareMemberVO;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -24,32 +30,91 @@ public class StationSplitConfigServiceImpl implements StationSplitConfigService{
|
||||
@Resource
|
||||
private StationSplitConfigMapper stationSplitConfigMapper;
|
||||
|
||||
@Autowired
|
||||
private AdapayMemberAccountService adapayMemberAccountService;
|
||||
|
||||
@Override
|
||||
public List<StationSplitConfig> queryByStationId(String stationId) {
|
||||
return stationSplitConfigMapper.queryByStationId(stationId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertSplitConfig(SplitConfigDTO splitConfigDTO) {
|
||||
public List<ShareMemberVO> queryShareMembersByStationId(String stationId) {
|
||||
List<ShareMemberVO> resultList = Lists.newArrayList();
|
||||
List<StationSplitConfig> stationSplitConfigs = queryByStationId(stationId);
|
||||
if (CollectionUtils.isEmpty(stationSplitConfigs)) {
|
||||
// 如果为空的话,说明没有配置站点分账
|
||||
AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectByStationId(stationId);
|
||||
if (adapayMemberAccount != null) {
|
||||
ShareMemberVO shareMemberVO = new ShareMemberVO();
|
||||
shareMemberVO.setAdapayMemberId(adapayMemberAccount.getAdapayMemberId());
|
||||
shareMemberVO.setElectricityShareRatio(BigDecimal.valueOf(100));
|
||||
shareMemberVO.setServiceShareRatio(BigDecimal.valueOf(100));
|
||||
shareMemberVO.setFeeFlag(Constants.Y);
|
||||
resultList.add(shareMemberVO);
|
||||
} else {
|
||||
// 如果没有配置站点分账,则默认为举视账户
|
||||
AdapayMemberAccount aDefault = adapayMemberAccountService.getDefault();
|
||||
ShareMemberVO shareMemberVO = new ShareMemberVO();
|
||||
shareMemberVO.setAdapayMemberId(aDefault.getAdapayMemberId());
|
||||
shareMemberVO.setElectricityShareRatio(BigDecimal.valueOf(100));
|
||||
shareMemberVO.setServiceShareRatio(BigDecimal.valueOf(100));
|
||||
shareMemberVO.setFeeFlag(Constants.Y);
|
||||
resultList.add(shareMemberVO);
|
||||
}
|
||||
} else {
|
||||
for (StationSplitConfig stationSplitConfig : stationSplitConfigs) {
|
||||
ShareMemberVO shareMemberVO = new ShareMemberVO();
|
||||
shareMemberVO.setAdapayMemberId(stationSplitConfig.getAdapayMemberId());
|
||||
shareMemberVO.setElectricityShareRatio(stationSplitConfig.getElectricitySplitRatio());
|
||||
shareMemberVO.setServiceShareRatio(stationSplitConfig.getServiceSplitRatio());
|
||||
shareMemberVO.setFeeFlag(StringUtils.equals(Constants.ONE, stationSplitConfig.getFeeFlag()) ? Constants.Y : Constants.N);
|
||||
resultList.add(shareMemberVO);
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int settingSplitConfig(SplitConfigDTO splitConfigDTO) {
|
||||
// 参与分成的用户不能超过7位
|
||||
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;
|
||||
boolean haveTheMerchant = false; // 有本运营商的汇付账户
|
||||
for (SplitUserDetailDTO splitUserDetailDTO : splitUserDetailList) {
|
||||
totalElectricitySplitRatio = totalElectricitySplitRatio.add(splitUserDetailDTO.getElectricitySplitRatio());
|
||||
totalServiceSplitRatio = totalServiceSplitRatio.add(splitUserDetailDTO.getServiceSplitRatio());
|
||||
if (Constants.Y.equals(splitUserDetailDTO.getFeeFlag())) {
|
||||
if (StringUtils.equals(splitUserDetailDTO.getAdapayMemberId(), adapayMemberAccount.getAdapayMemberId())) {
|
||||
haveTheMerchant = true;
|
||||
}
|
||||
if (Constants.ONE.equals(splitUserDetailDTO.getFeeFlag())) {
|
||||
feeFlagCount++;
|
||||
}
|
||||
totalElectricitySplitRatio = totalElectricitySplitRatio.add(splitUserDetailDTO.getElectricitySplitRatio());
|
||||
totalServiceSplitRatio = totalServiceSplitRatio.add(splitUserDetailDTO.getServiceSplitRatio());
|
||||
}
|
||||
if (feeFlagCount > 1) {
|
||||
throw new BusinessException("", "只能有一位手续费承担方");
|
||||
if (!haveTheMerchant) {
|
||||
// 没有本运营商的汇付账户, 抛出异常
|
||||
throw new BusinessException("", "参与分成的用户中未包含本运营商的汇付账户");
|
||||
}
|
||||
if (feeFlagCount != 1) {
|
||||
// 只能有一位手续费承担方, 超过则报错
|
||||
throw new BusinessException("", "手续费承担方设置错误, 有且只能有1位手续费承担方");
|
||||
}
|
||||
if (totalElectricitySplitRatio.compareTo(BigDecimal.valueOf(100)) != 0) {
|
||||
throw new BusinessException("", "电费分成比例相加必须为100.0%");
|
||||
|
||||
@@ -14,11 +14,6 @@ public class ShareMemberVO {
|
||||
*/
|
||||
private String adapayMemberId;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String memberPhoneNumber;
|
||||
|
||||
/**
|
||||
* 电费分润比例
|
||||
*/
|
||||
@@ -28,4 +23,9 @@ public class ShareMemberVO {
|
||||
* 服务费分润比例
|
||||
*/
|
||||
private BigDecimal serviceShareRatio;
|
||||
|
||||
/**
|
||||
* 手续费承担方
|
||||
*/
|
||||
private String feeFlag;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
from station_split_config
|
||||
where del_flag = '0'
|
||||
and station_id = #{stationId}
|
||||
order by fee_flag
|
||||
</select>
|
||||
|
||||
<insert id="batchInsert" parameterType="map">
|
||||
|
||||
Reference in New Issue
Block a user