mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-11 10:49:52 +08:00
Compare commits
3 Commits
0eb026365e
...
f87f2f5176
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f87f2f5176 | ||
|
|
b2ec3fb29c | ||
|
|
0eac2ab06a |
@@ -38,6 +38,8 @@ public interface MemberWalletInfoMapper {
|
|||||||
*/
|
*/
|
||||||
MemberWalletInfo selectByMemberId(@Param("memberId") String memberId, @Param("merchantId") String merchantId);
|
MemberWalletInfo selectByMemberId(@Param("memberId") String memberId, @Param("merchantId") String merchantId);
|
||||||
|
|
||||||
|
List<MemberWalletInfo> selectByMemberIdList(@Param("memberId") String memberId, @Param("merchantId") String merchantId);
|
||||||
|
|
||||||
List<MemberWalletInfo> selectByMemberWalletList(@Param("memberId") String memberId);
|
List<MemberWalletInfo> selectByMemberWalletList(@Param("memberId") String memberId);
|
||||||
|
|
||||||
MemberWalletInfo selectByWalletCode(@Param("walletCode") String walletCode);
|
MemberWalletInfo selectByWalletCode(@Param("walletCode") String walletCode);
|
||||||
|
|||||||
@@ -46,7 +46,15 @@ public class MemberWalletInfoServiceImpl implements MemberWalletInfoService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MemberWalletInfo selectByMemberId(String memberId, String merchantId) {
|
public MemberWalletInfo selectByMemberId(String memberId, String merchantId) {
|
||||||
return memberWalletInfoMapper.selectByMemberId(memberId, merchantId);
|
List<MemberWalletInfo> list = memberWalletInfoMapper.selectByMemberIdList(memberId, merchantId);
|
||||||
|
if (CollectionUtils.isEmpty(list)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// 优先返回 merchantId 不为空的记录,避免脏数据干扰
|
||||||
|
return list.stream()
|
||||||
|
.filter(w -> w.getMerchantId() != null)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(list.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1084,9 +1084,11 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
|||||||
|
|
||||||
// 需要退回本金的金额
|
// 需要退回本金的金额
|
||||||
BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal");
|
BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal");
|
||||||
|
returnPrincipal = returnPrincipal == null ? BigDecimal.ZERO : returnPrincipal;
|
||||||
|
|
||||||
// 需要退回赠送金的金额
|
// 需要退回赠送金的金额
|
||||||
BigDecimal returnGift = returnAmountMap.get("returnGift");
|
BigDecimal returnGift = returnAmountMap.get("returnGift");
|
||||||
|
returnGift = returnGift == null ? BigDecimal.ZERO : returnGift;
|
||||||
|
|
||||||
// 更新会员钱包/余额退回到钱包
|
// 更新会员钱包/余额退回到钱包
|
||||||
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
|
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
|
||||||
@@ -1101,17 +1103,22 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
|||||||
|
|
||||||
// 判断消费金额,如果消费金额 - 折扣金额小于 1 元,则将保险费也进行退回
|
// 判断消费金额,如果消费金额 - 折扣金额小于 1 元,则将保险费也进行退回
|
||||||
if (orderBasicInfo.getOrderAmount().subtract(orderBasicInfo.getDiscountAmount()).compareTo(BigDecimal.ONE) < 0) {
|
if (orderBasicInfo.getOrderAmount().subtract(orderBasicInfo.getDiscountAmount()).compareTo(BigDecimal.ONE) < 0) {
|
||||||
// orderBasicInfoService.refundInsurance(orderBasicInfo);
|
|
||||||
// 判断是否需要退保险费用
|
// 判断是否需要退保险费用
|
||||||
boolean checkResult = orderBasicInfoService.checkRefundInsuranceAmount(orderBasicInfo);
|
boolean checkResult = orderBasicInfoService.checkRefundInsuranceAmount(orderBasicInfo);
|
||||||
if (checkResult) {
|
if (checkResult) {
|
||||||
// 退保险, 计算退保金额
|
// 退保险, 使用 calculateBalanceRefund 重新计算完整的退款金额(电费退款+保险费退款)
|
||||||
|
// 注意:不能在 calculateReturnAmount 的基础上叠加保险费,因为 calculateReturnAmount 不感知保险费,
|
||||||
|
// 算出的退款金额中已包含保险费部分,叠加会导致保险费被重复退还
|
||||||
Map<String, BigDecimal> refundMap = calculateBalanceRefund(principalPay, giftPay, orderBasicInfo.getOrderAmount(), orderBasicInfo.getDiscountAmount(), orderBasicInfo.getInsuranceAmount());
|
Map<String, BigDecimal> refundMap = calculateBalanceRefund(principalPay, giftPay, orderBasicInfo.getOrderAmount(), orderBasicInfo.getDiscountAmount(), orderBasicInfo.getInsuranceAmount());
|
||||||
|
BigDecimal refundPrincipal = refundMap.get("returnPrincipal");
|
||||||
|
BigDecimal refundGift = refundMap.get("returnGift");
|
||||||
BigDecimal returnPrincipalForInsurance = refundMap.get("returnPrincipalForInsurance");
|
BigDecimal returnPrincipalForInsurance = refundMap.get("returnPrincipalForInsurance");
|
||||||
BigDecimal returnGiftForInsurance = refundMap.get("returnGiftForInsurance");
|
BigDecimal returnGiftForInsurance = refundMap.get("returnGiftForInsurance");
|
||||||
|
refundPrincipal = refundPrincipal == null ? BigDecimal.ZERO : refundPrincipal;
|
||||||
|
refundGift = refundGift == null ? BigDecimal.ZERO : refundGift;
|
||||||
|
|
||||||
updateMemberBalanceDTO.setUpdatePrincipalBalance(returnPrincipal.add(returnPrincipalForInsurance));
|
updateMemberBalanceDTO.setUpdatePrincipalBalance(refundPrincipal.add(returnPrincipalForInsurance));
|
||||||
updateMemberBalanceDTO.setUpdateGiftBalance(returnGift.add(returnGiftForInsurance));
|
updateMemberBalanceDTO.setUpdateGiftBalance(refundGift.add(returnGiftForInsurance));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 统一退款
|
// 统一退款
|
||||||
|
|||||||
@@ -528,6 +528,17 @@
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectByMemberIdList" resultMap="BaseResultMap">
|
||||||
|
select
|
||||||
|
<include refid="Base_Column_List" />
|
||||||
|
from member_wallet_info
|
||||||
|
where del_flag = '0'
|
||||||
|
and member_id = #{memberId,jdbcType=INTEGER}
|
||||||
|
<if test="merchantId != null">
|
||||||
|
and merchant_id = #{merchantId,jdbcType=VARCHAR}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectByMemberWalletList" resultMap="BaseResultMap">
|
<select id="selectByMemberWalletList" resultMap="BaseResultMap">
|
||||||
select
|
select
|
||||||
<include refid="Base_Column_List" />
|
<include refid="Base_Column_List" />
|
||||||
|
|||||||
Reference in New Issue
Block a user