|
@@ -1107,15 +1107,16 @@ public Map<String, String> submitRecharge(RechargeInfoVo rechargeInfoVo) {
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 用户微信支付成功后,完成充值核心业务
|
|
|
+ * 用户付款后处理充值成功业务
|
|
|
+ *
|
|
|
* @param orderNo
|
|
|
* @return
|
|
|
*/
|
|
|
-@Operation(summary = "用户微信支付成功后,完成充值核心业务")
|
|
|
+@Operation(summary = "用户付款后处理充值成功业务")
|
|
|
@GetMapping("/rechargeInfo/rechargePaySuccess/{orderNo}")
|
|
|
-public Result rechargePaySuccess(@PathVariable String orderNo){
|
|
|
- rechargeInfoService.rechargePaySuccess(orderNo);
|
|
|
- return Result.ok();
|
|
|
+public Result rechargePaySuccess(@PathVariable String orderNo) {
|
|
|
+ rechargeInfoService.rechargePaySuccess(orderNo);
|
|
|
+ return Result.ok();
|
|
|
}
|
|
|
```
|
|
|
|
|
@@ -1123,9 +1124,9 @@ public Result rechargePaySuccess(@PathVariable String orderNo){
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 用户微信支付成功后,完成充值核心业务
|
|
|
+ * 用户付款后处理充值成功业务
|
|
|
+ *
|
|
|
* @param orderNo
|
|
|
- * @return
|
|
|
*/
|
|
|
void rechargePaySuccess(String orderNo);
|
|
|
```
|
|
@@ -1136,69 +1137,39 @@ void rechargePaySuccess(String orderNo);
|
|
|
@Autowired
|
|
|
private UserAccountService userAccountService;
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * 用户微信支付成功后,完成充值核心业务
|
|
|
+ * 用户付款后处理充值成功业务
|
|
|
*
|
|
|
- * @param orderNo 充值订单编号
|
|
|
- * @return
|
|
|
+ * @param orderNo
|
|
|
*/
|
|
|
@Override
|
|
|
public void rechargePaySuccess(String orderNo) {
|
|
|
- //1.根据订单编号查询充值记录 更新充值记录状态
|
|
|
+ //1.修改充值状态
|
|
|
+ //1.1. 根据充值订单编号查询充值记录
|
|
|
LambdaQueryWrapper<RechargeInfo> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(RechargeInfo::getOrderNo, orderNo);
|
|
|
RechargeInfo rechargeInfo = rechargeInfoMapper.selectOne(queryWrapper);
|
|
|
+
|
|
|
if (SystemConstant.ORDER_STATUS_UNPAID.equals(rechargeInfo.getRechargeStatus())) {
|
|
|
+ //1.2 修改充值状态:已支付
|
|
|
rechargeInfo.setRechargeStatus(SystemConstant.ORDER_STATUS_PAID);
|
|
|
rechargeInfoMapper.updateById(rechargeInfo);
|
|
|
+
|
|
|
//2.余额充值
|
|
|
- userAccountService.recharge(rechargeInfo.getUserId(), rechargeInfo.getRechargeAmount());
|
|
|
+ LambdaUpdateWrapper<UserAccount> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
+ BigDecimal amount = rechargeInfo.getRechargeAmount();
|
|
|
+ updateWrapper.setSql("total_amount = total_amount + " + amount + ", available_amount = available_amount + " + amount + ", total_income_amount = total_income_amount + " + amount);
|
|
|
+ updateWrapper.eq(UserAccount::getUserId, rechargeInfo.getUserId());
|
|
|
+ userAccountService.update(updateWrapper);
|
|
|
+
|
|
|
//3.新增账户变动日志
|
|
|
- userAccountService.saveUserAccountDetail(rechargeInfo.getUserId(), "用户充值:"+rechargeInfo.getRechargeAmount(), SystemConstant.ACCOUNT_TRADE_TYPE_DEPOSIT, rechargeInfo.getRechargeAmount(), orderNo);
|
|
|
+ userAccountService.saveUserAccountDetail(rechargeInfo.getUserId(), "充值:" + amount, SystemConstant.ACCOUNT_TRADE_TYPE_DEPOSIT, amount, orderNo);
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-### 2.1.2 账户充值
|
|
|
-
|
|
|
-**UserAccountService**
|
|
|
-
|
|
|
-```java
|
|
|
-/**
|
|
|
- * 余额充值
|
|
|
- * @param userId
|
|
|
- * @param rechargeAmount
|
|
|
- */
|
|
|
-void recharge(Long userId, BigDecimal rechargeAmount);
|
|
|
-```
|
|
|
-
|
|
|
-**UserAccountServiceImpl**
|
|
|
-
|
|
|
-```java
|
|
|
-/**
|
|
|
- * 余额充值
|
|
|
- * @param userId
|
|
|
- * @param amount
|
|
|
- */
|
|
|
-void recharge(@Param("userId") Long userId, @Param("amount") BigDecimal amount);
|
|
|
-```
|
|
|
-
|
|
|
-**UserAccountMapper.xml**
|
|
|
-
|
|
|
-```xml
|
|
|
-<!--余额充值-->
|
|
|
-<update id="recharge">
|
|
|
- UPDATE user_account
|
|
|
- SET total_amount = total_amount + #{amount},
|
|
|
- available_amount = available_amount + #{amount},
|
|
|
- total_income_amount = total_income_amount + #{amount}
|
|
|
- WHERE
|
|
|
- user_id = #{userId}
|
|
|
- AND is_deleted = 0
|
|
|
-</update>
|
|
|
-```
|
|
|
-
|
|
|
-### 2.1.3 提供Feign接口
|
|
|
+### 2.1.2 提供Feign接口
|
|
|
|
|
|
在`service-account-client`模块中提供远程调用Feign接口
|
|
|
|
|
@@ -1206,7 +1177,7 @@ void recharge(@Param("userId") Long userId, @Param("amount") BigDecimal amount);
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 用户微信支付成功后,完成充值核心业务
|
|
|
+ * 用户付款后处理充值成功业务
|
|
|
* @param orderNo
|
|
|
* @return
|
|
|
*/
|
|
@@ -1234,22 +1205,19 @@ public Result rechargePaySuccess(String orderNo) {
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 查询当前用户充值记录
|
|
|
+ * 查询用户充值记录
|
|
|
*
|
|
|
* @param page
|
|
|
* @param limit
|
|
|
* @return
|
|
|
*/
|
|
|
@GuiGuLogin
|
|
|
-@Operation(summary = "查询当前用户充值记录")
|
|
|
+@Operation(summary = "查询用户充值记录")
|
|
|
@GetMapping("/userAccount/findUserRechargePage/{page}/{limit}")
|
|
|
public Result<Page<UserAccountDetail>> getUserRechargePage(@PathVariable int page, @PathVariable int limit) {
|
|
|
- //1.获取登录用户ID
|
|
|
Long userId = AuthContextHolder.getUserId();
|
|
|
- //2.封装分页对象
|
|
|
Page<UserAccountDetail> pageInfo = new Page<>(page, limit);
|
|
|
- //3.执行查询
|
|
|
- userAccountService.getUserAccountDetailPage(pageInfo, userId, SystemConstant.ACCOUNT_TRADE_TYPE_DEPOSIT);
|
|
|
+ rechargeInfoService.getUserAccountDetailPage(pageInfo, SystemConstant.ACCOUNT_TRADE_TYPE_DEPOSIT, userId);
|
|
|
return Result.ok(pageInfo);
|
|
|
}
|
|
|
```
|
|
@@ -1258,61 +1226,37 @@ UserAccountService接口:
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 查询当前用户充值记录
|
|
|
+ * 根据交易类型分页查询账户变动日志
|
|
|
* @param pageInfo
|
|
|
+ * @param tradeType
|
|
|
* @param userId
|
|
|
- * @param tradeType 交易类型
|
|
|
+ * @return
|
|
|
*/
|
|
|
-void getUserAccountDetailPage(Page<UserAccountDetail> pageInfo, Long userId, String tradeType);
|
|
|
+void getUserAccountDetailPage(Page<UserAccountDetail> pageInfo, String tradeType, Long userId);
|
|
|
```
|
|
|
|
|
|
UserAccountServiceImpl实现类:
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 查询用户账户变动明细
|
|
|
+ * 根据交易类型分页查询账户变动日志
|
|
|
+ *
|
|
|
* @param pageInfo
|
|
|
+ * @param tradeType
|
|
|
* @param userId
|
|
|
- * @param tradeType 交易类型
|
|
|
+ * @return
|
|
|
*/
|
|
|
@Override
|
|
|
-public void getUserAccountDetailPage(Page<UserAccountDetail> pageInfo, Long userId, String tradeType) {
|
|
|
- userAccountMapper.getUserAccountDetail(pageInfo, userId, tradeType);
|
|
|
+public void getUserAccountDetailPage(Page<UserAccountDetail> pageInfo, String tradeType, Long userId) {
|
|
|
+ //1.创建分页查询条件对象
|
|
|
+ LambdaQueryWrapper<UserAccountDetail> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(UserAccountDetail::getUserId, userId);
|
|
|
+ queryWrapper.eq(UserAccountDetail::getTradeType, tradeType);
|
|
|
+ queryWrapper.select(UserAccountDetail::getOrderNo, UserAccountDetail::getTradeType, UserAccountDetail::getTitle, UserAccountDetail::getAmount);
|
|
|
+ userAccountDetailMapper.selectPage(pageInfo, queryWrapper);
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-```java
|
|
|
-/**
|
|
|
- * 查询账户变动日志
|
|
|
- * @param page 分页对象
|
|
|
- * @param userId 用户
|
|
|
- * @param tradeType 交易类型
|
|
|
- * @return
|
|
|
- */
|
|
|
-Page<UserAccountDetail> getUserAccountDetail(Page<UserAccountDetail> page, @Param("userId") Long userId, @Param("tradeType") String tradeType);
|
|
|
-```
|
|
|
-
|
|
|
-xml 配置文件
|
|
|
-
|
|
|
-```xml
|
|
|
-<!--分页查询当前用户充值/消费记录-->
|
|
|
-<select id="getUserAccountDetail" resultType="com.atguigu.tingshu.model.account.UserAccountDetail">
|
|
|
- SELECT
|
|
|
- title,
|
|
|
- amount,
|
|
|
- create_time,
|
|
|
- order_no
|
|
|
- FROM
|
|
|
- user_account_detail
|
|
|
- WHERE
|
|
|
- user_id = #{userId}
|
|
|
- AND trade_type = #{tradeType}
|
|
|
- AND is_deleted = 0
|
|
|
- ORDER BY
|
|
|
- id DESC
|
|
|
-</select>
|
|
|
-```
|
|
|
-
|
|
|
## 2.3 消费记录
|
|
|
|
|
|
![](assets/tingshu046.png)
|
|
@@ -1325,33 +1269,28 @@ xml 配置文件
|
|
|
|
|
|
```java
|
|
|
/**
|
|
|
- * 查询当前用户消费记录
|
|
|
+ * 查询用户消费记录
|
|
|
*
|
|
|
* @param page
|
|
|
* @param limit
|
|
|
* @return
|
|
|
*/
|
|
|
@GuiGuLogin
|
|
|
-@Operation(summary = "查询当前用户消费记录")
|
|
|
+@Operation(summary = "查询用户消费记录")
|
|
|
@GetMapping("/userAccount/findUserConsumePage/{page}/{limit}")
|
|
|
public Result<Page<UserAccountDetail>> getUserConsumePage(@PathVariable int page, @PathVariable int limit) {
|
|
|
- //1.获取登录用户ID
|
|
|
Long userId = AuthContextHolder.getUserId();
|
|
|
- //2.封装分页对象
|
|
|
Page<UserAccountDetail> pageInfo = new Page<>(page, limit);
|
|
|
- //3.执行查询
|
|
|
- userAccountService.getUserAccountDetailPage(pageInfo, userId, SystemConstant.ACCOUNT_TRADE_TYPE_MINUS);
|
|
|
+ rechargeInfoService.getUserAccountDetailPage(pageInfo, SystemConstant.ACCOUNT_TRADE_TYPE_MINUS, userId);
|
|
|
return Result.ok(pageInfo);
|
|
|
}
|
|
|
```
|
|
|
|
|
|
|
|
|
-测试:充值一百元之后,查看余额与
|
|
|
+测试:充值一百元之后,查看余额与充值记录:
|
|
|
|
|
|
![](assets/tingshu047.png)
|
|
|
|
|
|
|
|
|
|
|
|
-充值记录:
|
|
|
-
|
|
|
![](assets/tingshu048.png)
|