Browse Source

20260306充值钱包明细查询

huangqizheng/feature-20260309142559-钱包退款
wangguorui 1 month ago
parent
commit
0effaf6691
  1. 84
      src/main/java/com/example/demo/controller/cash/CashCollectionController.java
  2. 36
      src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java
  3. 3
      src/main/java/com/example/demo/domain/vo/coin/Page.java
  4. 6
      src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
  5. 4
      src/main/java/com/example/demo/service/cash/CashCollectionService.java
  6. 10
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  7. 27
      src/main/resources/cashMapper/CashCollectionMapper.xml

84
src/main/java/com/example/demo/controller/cash/CashCollectionController.java

@ -3,12 +3,10 @@ package com.example.demo.controller.cash;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.LanguageTranslationUtil;
import com.example.demo.domain.DTO.PerformanceDTO;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.entity.RechargeActivity;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.*;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.PerformanceVO;
import com.example.demo.domain.vo.cash.UserWalletRecordVO;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.cash.CashCollectionService;
@ -322,6 +320,44 @@ public class CashCollectionController {
}
}
// 根据精网号和钱包 ID 查询用户钱包明细列表
@PostMapping("/selectWalletRecords")
public Result selectWalletRecords(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
String errorMsg = languageTranslationUtil.translate("页码数为空!", lang);
return Result.error(errorMsg);
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
String errorMsg = languageTranslationUtil.translate("页大小为空!", lang);
return Result.error(errorMsg);
}
// 校验精网号是否为空
if (page.getUserWalletRecord() == null || page.getUserWalletRecord().getJwcode() == null) {
String errorMsg = languageTranslationUtil.translate("精网号不能为空", lang);
return Result.error(errorMsg);
}
Result result = Result.success(cashCollectionService.selectWalletRecordsByJwcodeAndWalletId(
page.getPageNum(),
page.getPageSize(),
page.getUserWalletRecord().getJwcode(),
page.getUserWalletRecord().getWalletId()
));
// 对返回结果进行多语言转换
if (result.getCode() == 200 && result.getData() instanceof PageInfo) {
PageInfo<UserWalletRecordVO> pageInfo = (PageInfo<UserWalletRecordVO>) result.getData();
translateWalletRecordVOs(pageInfo, lang);
}
return result;
} catch (Exception e) {
String errorMsg = languageTranslationUtil.translate("查询失败", lang);
return Result.error(errorMsg + ": " + e.getMessage());
}
}
/**
* 转换现金收款订单的多语言字段
@ -577,4 +613,44 @@ public class CashCollectionController {
}
}
/**
* 转换用户钱包明细 VO 列表的多语言字段
*/
private void translateWalletRecordVOs(PageInfo<UserWalletRecordVO> pageInfo, String lang) {
if (pageInfo != null && pageInfo.getList() != null) {
for (UserWalletRecordVO vo : pageInfo.getList()) {
translateWalletRecordVO(vo, lang);
}
}
}
/**
* 转换用户钱包明细 VO 的多语言字段
*/
private void translateWalletRecordVO(UserWalletRecordVO vo, String lang) {
if (vo != null) {
// 翻译地区名称
if (vo.getMarketName() != null) {
vo.setMarketName(languageTranslationUtil.translate(vo.getMarketName(), lang));
}
// 翻译钱包名称
if (vo.getWalletName() != null) {
vo.setWalletName(languageTranslationUtil.translate(vo.getWalletName(), lang));
}
// 翻译交易说明
if (vo.getDescription() != null) {
vo.setDescription(languageTranslationUtil.translate(vo.getDescription(), lang));
}
// 翻译交易类型
if (vo.getType() != null) {
String typeText = vo.getType() == 0 ? "充值" : (vo.getType() == 1 ? "消耗" : "退款");
vo.setTypeText(languageTranslationUtil.translate(typeText, lang));
}
// 翻译状态
if (vo.getStatus() != null) {
String statusText = vo.getStatus() == 0 ? "正常" : "已退款";
vo.setStatusText(languageTranslationUtil.translate(statusText, lang));
}
}
}
}

36
src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java

@ -0,0 +1,36 @@
package com.example.demo.domain.vo.cash;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName UserWalletRecordVO
* @description: 用户钱包明细 VO包含用户信息
* @author: Ethan
* @create: 2026-03-05
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserWalletRecordVO {
private Integer id; // 明细 ID
private Integer jwcode; // 精网号
private String userName; // 用户名
private String market; // 地区 ID
private String marketName; // 地区名称
private Integer walletId; // 钱包 ID
private String walletName; // 钱包名称
private Integer type; // 交易类型0=充值1=消耗2=退款
private Integer amount; // 交易金额
private String orderCode; // 交易单号
private String description; // 交易说明
private Integer status; // 状态0=正常1=已退款
private Date createTime; // 创建时间
private String typeText; // 交易类型文本多语言
private String statusText; // 状态文本多语言
}

3
src/main/java/com/example/demo/domain/vo/coin/Page.java

@ -3,6 +3,7 @@ package com.example.demo.domain.vo.coin;
import com.example.demo.domain.DTO.BeanConsumeCartDTO;
import com.example.demo.domain.DTO.PerformanceDTO;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserWalletRecord;
import com.example.demo.domain.vo.bean.*;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.CashRecordDTO;
@ -56,5 +57,5 @@ public class Page {
private PerformanceDTO performanceDTO;//业绩归属
private FundsDTO fundsDTO;//现金收款
private PerformanceVO performanceVO;//业绩归属
private UserWalletRecord userWalletRecord; //用户钱包明细查询条件
}

6
src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java

@ -5,6 +5,7 @@ import com.example.demo.domain.DTO.*;
import com.example.demo.domain.entity.*;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.PerformanceVO;
import com.example.demo.domain.vo.cash.UserWalletRecordVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -110,4 +111,9 @@ public interface CashCollectionMapper {
// 插入用户钱包明细记录
void insertUserWalletRecord(UserWalletRecord userWalletRecord);
// 根据精网号和钱包 ID 查询用户钱包明细列表
List<UserWalletRecordVO> selectWalletRecordsByJwcodeAndWalletId(
@Param("jwcode") Integer jwcode,
@Param("walletId") Integer walletId);
}

4
src/main/java/com/example/demo/service/cash/CashCollectionService.java

@ -6,6 +6,7 @@ import com.example.demo.domain.entity.GOrder;
import com.example.demo.domain.entity.RechargeActivity;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.PerformanceVO;
import com.example.demo.domain.vo.cash.UserWalletRecordVO;
import com.example.demo.domain.vo.coin.Result;
import com.github.pagehelper.PageInfo;
@ -48,4 +49,7 @@ public interface CashCollectionService {
PageInfo<PerformanceVO> performanceSelect(Integer pageNum, Integer pageSize, PerformanceDTO performanceDTO);
// 根据精网号和钱包 ID 查询用户钱包明细列表分页
PageInfo<UserWalletRecordVO> selectWalletRecordsByJwcodeAndWalletId(
Integer pageNum, Integer pageSize, Integer jwcode, Integer walletId);
}

10
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -8,6 +8,7 @@ import com.example.demo.domain.entity.*;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.cash.CashCollectionMessage;
import com.example.demo.domain.vo.cash.PerformanceVO;
import com.example.demo.domain.vo.cash.UserWalletRecordVO;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Messages;
import com.example.demo.domain.vo.coin.Result;
@ -601,5 +602,12 @@ public class CashCollectionServiceImpl implements CashCollectionService {
return new PageInfo<>(performanceVOs);
}
// 根据精网号和钱包 ID 查询用户钱包明细列表分页
@Override
public PageInfo<UserWalletRecordVO> selectWalletRecordsByJwcodeAndWalletId(
Integer pageNum, Integer pageSize, Integer jwcode, Integer walletId) {
PageHelper.startPage(pageNum, pageSize);
List<UserWalletRecordVO> records = cashCollectionMapper.selectWalletRecordsByJwcodeAndWalletId(jwcode, walletId);
return new PageInfo<>(records);
}
}

27
src/main/resources/cashMapper/CashCollectionMapper.xml

@ -420,6 +420,33 @@
VALUES (#{jwcode}, #{walletId}, #{type}, #{amount}, #{orderCode}, #{description}, #{status}, NOW())
</insert>
<!-- 根据精网号和钱包 ID 查询用户钱包明细列表 -->
<select id="selectWalletRecordsByJwcodeAndWalletId" resultType="com.example.demo.domain.vo.cash.UserWalletRecordVO">
SELECT
uwr.id,
uwr.jwcode,
u.name as userName,
u.market,
m.name as marketName,
uwr.wallet_id,
w.wallet_name as walletName,
uwr.type,
uwr.amount,
uwr.order_code as orderCode,
uwr.description,
uwr.status,
uwr.create_time as createTime
FROM user_wallet_record uwr
LEFT JOIN user u ON uwr.jwcode = u.jwcode
LEFT JOIN market m ON u.market = m.id
LEFT JOIN wallet w ON uwr.wallet_id = w.id
WHERE uwr.jwcode = #{jwcode}
<if test="walletId != null">
AND uwr.wallet_id = #{walletId}
</if>
ORDER BY uwr.create_time DESC
</select>
<!--根据OrderCode订单号更新收款订单-->
<update id="updateByGoldCoinOrderCodeByPayment">
update cash_record_collection

Loading…
Cancel
Save