diff --git a/src/main/java/com/example/demo/mapper/coin/WalletMapper.java b/src/main/java/com/example/demo/mapper/coin/WalletMapper.java new file mode 100644 index 0000000..4243dbc --- /dev/null +++ b/src/main/java/com/example/demo/mapper/coin/WalletMapper.java @@ -0,0 +1,24 @@ +package com.example.demo.mapper.coin; + +import com.example.demo.domain.entity.UserRegionWallet; +import com.example.demo.domain.entity.UserWalletRecord; +import com.example.demo.domain.entity.Wallet; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @program: GOLD + * @ClassName WalletMapper + * @description: + * @author: huangqizhen + * @create: 2026−03-06 13:56 + * @Version 1.0 + **/ +@Mapper +public interface WalletMapper { + void updateWallet(UserRegionWallet userRegionWallet); + UserRegionWallet selectWallet(Integer jwcode, Integer walletId); + List selectWalletRecord(Integer jwcode, String orderCode); + void updateWalletRecord(Integer id); +} diff --git a/src/main/java/com/example/demo/service/Wallet/WalletService.java b/src/main/java/com/example/demo/service/Wallet/WalletService.java new file mode 100644 index 0000000..f89d4cd --- /dev/null +++ b/src/main/java/com/example/demo/service/Wallet/WalletService.java @@ -0,0 +1,23 @@ +package com.example.demo.service.Wallet; + +import com.example.demo.domain.entity.UserGoldRecord; +import com.example.demo.domain.entity.UserRegionWallet; +import com.example.demo.domain.entity.UserWalletRecord; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @program: GOLD + * @ClassName WalletService + * @description: + * @author: huangqizhen + * @create: 2026−03-05 14:00 + * @Version 1.0 + **/ +public interface WalletService { + void updateUserGoldRecord(UserRegionWallet userRegionWallet); + List selectUserWalletRecord(Integer jwcode, String orderCode); + void updateUserWalletRecord(Integer id); +// void MysqlConnection(); +} diff --git a/src/main/java/com/example/demo/serviceImpl/Wallet/WalletServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/Wallet/WalletServiceImpl.java new file mode 100644 index 0000000..1bc44d8 --- /dev/null +++ b/src/main/java/com/example/demo/serviceImpl/Wallet/WalletServiceImpl.java @@ -0,0 +1,60 @@ +package com.example.demo.serviceImpl.Wallet; + +import com.example.demo.Util.BusinessException; +import com.example.demo.domain.entity.UserGoldRecord; +import com.example.demo.domain.entity.UserRegionWallet; +import com.example.demo.domain.entity.UserWalletRecord; +import com.example.demo.exception.SystemException; +import com.example.demo.mapper.coin.WalletMapper; +import com.example.demo.service.Wallet.WalletService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @program: GOLD + * @ClassName WalletServiceImpl + * @description: + * @author: huangqizhen + * @create: 2026−03-06 13:53 + * @Version 1.0 + **/ +@Service +@RequiredArgsConstructor +public class WalletServiceImpl implements WalletService { + @Autowired + private WalletMapper walletMapper; + + @Override + public void updateUserGoldRecord(UserRegionWallet userRegionWallet) { + BigDecimal currentPermanentGold = userRegionWallet.getCurrentPermanentGold(); + if (currentPermanentGold == null|| currentPermanentGold.compareTo(BigDecimal.ZERO) <= 0) + throw new SystemException("钱包金币传参错误"); + if (userRegionWallet.getJwcode()!= null|| userRegionWallet.getWalletId() != null){ + UserRegionWallet wallet = walletMapper.selectWallet(userRegionWallet.getJwcode(), userRegionWallet.getWalletId()); + if (wallet == null){ + throw new BusinessException("该用户钱包不存在"); + } + else { + userRegionWallet.setCurrentPermanentGold(wallet.getCurrentPermanentGold().add(currentPermanentGold)); + walletMapper.updateWallet(userRegionWallet); + } + } + } + + @Override + public List selectUserWalletRecord(Integer jwcode, String orderCode) { + if (jwcode == null){ + throw new SystemException("精网号传参错误"); + } + return walletMapper.selectWalletRecord(jwcode, orderCode); + } + + @Override + public void updateUserWalletRecord(Integer id) { + walletMapper.updateWalletRecord(id); + } +} diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index 1b8a28b..ced185b 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -2,13 +2,10 @@ package com.example.demo.serviceImpl.cash; import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.Util.SimpleIdGenerator; -import com.example.demo.domain.entity.Admin; +import com.example.demo.domain.entity.*; import com.example.demo.Util.BusinessException; import com.example.demo.Util.GoldTistV2; import com.example.demo.config.RabbitMQConfig; -import com.example.demo.domain.entity.Market; -import com.example.demo.domain.entity.User; -import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.bean.Region; import com.example.demo.domain.vo.cash.*; import com.example.demo.domain.vo.coin.Messages; @@ -20,6 +17,7 @@ import com.example.demo.mapper.coin.AuditMapper; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.OperationLogMapper; import com.example.demo.mapper.coin.RefundMapper; +import com.example.demo.service.Wallet.WalletService; import com.example.demo.service.cash.RefundService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -67,6 +65,8 @@ public class CashRefundServiceImpl implements RefundService { private CashCollectionMapper cashCollectionMapper; @Autowired private LanguageTranslationUtil languageTranslationUtil; + @Autowired + private WalletService walletService; @Override public PageInfo select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { @@ -426,6 +426,18 @@ public class CashRefundServiceImpl implements RefundService { user.setCurrentFreeJune(BigDecimal.valueOf(-userGoldRecord.getFreeJune())); //当前六月免费金币 user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币 auditMapper.updateUserGold(user); + + //钱包更新 + List userWalletList = walletService.selectUserWalletRecord(userGoldRecord.getJwcode(), orderCode); + UserRegionWallet userRegionWallet = new UserRegionWallet(); + for (UserWalletRecord userWalletRecord : userWalletList){ + userRegionWallet.setJwcode(userWalletRecord.getJwcode()); + userRegionWallet.setWalletId(userWalletRecord.getWalletId()); + userRegionWallet.setCurrentPermanentGold(BigDecimal.valueOf(userWalletRecord.getAmount())); + walletService.updateUserGoldRecord(userRegionWallet); + walletService.updateUserWalletRecord(userWalletRecord.getId()); + } + GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值 (double) (userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getPermanentGold()) / 100, SimpleIdGenerator.generateId(), userGoldRecord.getRemark(), (double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值"); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index 2d9e8b8..6d93471 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -6,13 +6,17 @@ import com.example.demo.config.GlobalExceptionHandler; import com.example.demo.config.RabbitMQConfig; import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.UserGoldRecord; +import com.example.demo.domain.entity.UserRegionWallet; +import com.example.demo.domain.entity.UserWalletRecord; import com.example.demo.domain.vo.coin.*; import com.example.demo.exception.RedCheckException; import com.example.demo.mapper.Temporary.RedMapper; import com.example.demo.mapper.coin.AuditMapper; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; +import com.example.demo.mapper.coin.WalletMapper; import com.example.demo.service.Temporary.RedService; +import com.example.demo.service.Wallet.WalletService; import com.example.demo.service.coin.AdminService; import com.example.demo.service.coin.AuditService; import com.example.demo.service.coin.GeneralService; @@ -58,7 +62,11 @@ public class AuditServiceImpl implements AuditService { @Autowired private RedService redService; @Autowired + private WalletMapper walletMapper; + @Autowired private RabbitTemplate rabbitTemplate; + @Autowired + private WalletService walletService; /* 审核订单并修改用户余额等 @@ -202,6 +210,17 @@ public class AuditServiceImpl implements AuditService { update.setCurrentTaskGold(BigDecimal.valueOf(order.getTaskGold())); //当前任务金币 auditMapper.updateUserGold(update); + //钱包更新 + List userWalletList = walletService.selectUserWalletRecord(order.getJwcode(), oldOrderCode); + UserRegionWallet userRegionWallet = new UserRegionWallet(); + for (UserWalletRecord userWalletRecord : userWalletList){ + userRegionWallet.setJwcode(userWalletRecord.getJwcode()); + userRegionWallet.setWalletId(userWalletRecord.getWalletId()); + userRegionWallet.setCurrentPermanentGold(BigDecimal.valueOf(userWalletRecord.getAmount())); + walletService.updateUserGoldRecord(userRegionWallet); + walletService.updateUserWalletRecord(userWalletRecord.getId()); + } + //商品消费退款 //erp增加退款数据 if (oldOrder.getType() == 1) { diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index a8c3cb2..90ae516 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -79,11 +79,11 @@ spring: trusted-packages: com.example.demo.domain.DTO data: -# redis: -# database: 0 -# host: localhost -# port: 6379 -# password: 123456 + redis: + database: 0 + host: localhost + port: 6379 + password: 123456 lettuce: pool: diff --git a/src/main/resources/mapper/WalletMapper.xml b/src/main/resources/mapper/WalletMapper.xml new file mode 100644 index 0000000..65a0557 --- /dev/null +++ b/src/main/resources/mapper/WalletMapper.xml @@ -0,0 +1,27 @@ + + + + + update user_region_wallet set current_permanent_gold = {currentPermanentGold} where jwcode = {jwcode} and wallet_id = {walletId}} + + + update user_wallet_record set status = 1 where id = {id} + + + + \ No newline at end of file