mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	Merge remote-tracking branch 'origin/feature/mall_product' into feature/mall_product
This commit is contained in:
		@@ -2,7 +2,8 @@ package cn.iocoder.yudao.module.pay.controller.app.wallet;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletRespVO;
 | 
			
		||||
import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.wallet.AppPayWalletRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.convert.wallet.PayWalletConvert;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.wallet.PayWalletService;
 | 
			
		||||
@@ -34,9 +35,10 @@ public class AppPayWalletController {
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/get")
 | 
			
		||||
    @Operation(summary = "获取钱包")
 | 
			
		||||
    @PreAuthenticated
 | 
			
		||||
    public CommonResult<AppPayWalletRespVO> getPayWallet() {
 | 
			
		||||
        PayWalletDO payWallet = payWalletService.getPayWallet(getLoginUserId(), UserTypeEnum.MEMBER.getValue());
 | 
			
		||||
        return success(PayWalletConvert.INSTANCE.convert(payWallet));
 | 
			
		||||
        PayWalletDO wallet = payWalletService.getPayWallet(getLoginUserId(), UserTypeEnum.MEMBER.getValue());
 | 
			
		||||
        return success(PayWalletConvert.INSTANCE.convert(wallet));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.pay.controller.app.wallet;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletTransactionRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.convert.wallet.PayWalletTransactionConvert;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.service.wallet.PayWalletTransactionService;
 | 
			
		||||
@@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import javax.validation.Valid;
 | 
			
		||||
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 | 
			
		||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 | 
			
		||||
 | 
			
		||||
@@ -33,11 +35,19 @@ public class AppPayWalletTransactionController {
 | 
			
		||||
    private PayWalletTransactionService payWalletTransactionService;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @Operation(summary = "获得钱包余额明细分页")
 | 
			
		||||
    public CommonResult<PageResult<AppPayWalletTransactionRespVO>> pageWalletTransaction(
 | 
			
		||||
            @Valid AppPayWalletTransactionPageReqVO pageVO) {
 | 
			
		||||
    @Operation(summary = "获得钱包流水分页")
 | 
			
		||||
    public CommonResult<PageResult<AppPayWalletTransactionRespVO>> getWalletTransactionPage(
 | 
			
		||||
            @Valid AppPayWalletTransactionPageReqVO pageReqVO) {
 | 
			
		||||
        if (true) {
 | 
			
		||||
            PageResult<AppPayWalletTransactionRespVO> result = new PageResult<>(10L);
 | 
			
		||||
            result.getList().add(new AppPayWalletTransactionRespVO().setPrice(1L)
 | 
			
		||||
                    .setTitle("测试").setCreateTime(LocalDateTime.now()));
 | 
			
		||||
            result.getList().add(new AppPayWalletTransactionRespVO().setPrice(-1L)
 | 
			
		||||
                    .setTitle("测试2").setCreateTime(LocalDateTime.now()));
 | 
			
		||||
            return success(result);
 | 
			
		||||
        }
 | 
			
		||||
        PageResult<PayWalletTransactionDO> result = payWalletTransactionService.getWalletTransactionPage(getLoginUserId(),
 | 
			
		||||
                UserTypeEnum.MEMBER.getValue(), pageVO);
 | 
			
		||||
                UserTypeEnum.MEMBER.getValue(), pageReqVO);
 | 
			
		||||
        return success(PayWalletTransactionConvert.INSTANCE.convertPage(result));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.controller.app.wallet.vo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.WalletTransactionQueryTypeEnum;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "用户 APP - 钱包流水分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AppPayWalletTransactionPageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "流水查询分类",  example = "1")
 | 
			
		||||
    @InEnum(value = WalletTransactionQueryTypeEnum.class, message = "查询类型必须是 {value}")
 | 
			
		||||
    private Integer type;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,23 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "用户 APP - 钱包流水分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AppPayWalletTransactionPageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 类型 - 收入
 | 
			
		||||
     */
 | 
			
		||||
    public static final Integer TYPE_INCOME = 1;
 | 
			
		||||
    /**
 | 
			
		||||
     * 类型 - 支出
 | 
			
		||||
     */
 | 
			
		||||
    public static final Integer TYPE_EXPENSE = 2;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "类型",  example = "1")
 | 
			
		||||
    private Integer type;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.controller.app.wallet.vo;
 | 
			
		||||
package cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
@@ -8,6 +8,7 @@ import java.time.LocalDateTime;
 | 
			
		||||
@Schema(description = "用户 APP - 钱包流水分页 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AppPayWalletTransactionRespVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "交易金额, 单位分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
 | 
			
		||||
    private Integer amount;
 | 
			
		||||
 | 
			
		||||
@@ -16,4 +17,14 @@ public class AppPayWalletTransactionRespVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "交易时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
 | 
			
		||||
    private LocalDateTime transactionTime;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "交易金额,单位分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
 | 
			
		||||
    private Long price;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "流水标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "土豆土豆")
 | 
			
		||||
    private String title;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "交易时间", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    private LocalDateTime createTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,11 +1,8 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.controller.app.wallet.vo;
 | 
			
		||||
package cn.iocoder.yudao.module.pay.controller.app.wallet.vo.wallet;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Schema(description = "用户 APP - 获取用户钱包 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class AppPayWalletRespVO {
 | 
			
		||||
@@ -16,6 +13,7 @@ public class AppPayWalletRespVO {
 | 
			
		||||
    @Schema(description = "累计支出, 单位分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
 | 
			
		||||
    private Long totalExpense;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "累计充值, 单位分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
 | 
			
		||||
    @Schema(description = "累计充值, 单位分", requiredMode = Schema.RequiredMode.REQUIRED, example = "2000")
 | 
			
		||||
    private Long totalRecharge;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.convert.wallet;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.wallet.AppPayWalletRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.convert.wallet;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletTransactionRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionRespVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,7 @@ public class PayWalletTransactionDO extends BaseDO {
 | 
			
		||||
     */
 | 
			
		||||
    private Long bizId;
 | 
			
		||||
 | 
			
		||||
    // TODO @jason:想了下,改成 title;流水标题;因为账户明细那,会看到这个;
 | 
			
		||||
    /**
 | 
			
		||||
     * 附加说明
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,8 @@ import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
 | 
			
		||||
 | 
			
		||||
    default PayWalletDO selectByUserIdAndType(Long userId, Integer userType) {
 | 
			
		||||
        return selectOne(PayWalletDO::getUserId, userId, PayWalletDO::getUserType, userType);
 | 
			
		||||
        return selectOne(PayWalletDO::getUserId, userId,
 | 
			
		||||
                PayWalletDO::getUserType, userType);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,30 +1,29 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.dal.mysql.wallet;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.WalletTransactionQueryTypeEnum;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface PayWalletTransactionMapper extends BaseMapperX<PayWalletTransactionDO> {
 | 
			
		||||
 | 
			
		||||
    default PageResult<PayWalletTransactionDO> selectPageByWalletIdAndQueryType(Long walletId,
 | 
			
		||||
                                                                                WalletTransactionQueryTypeEnum queryType,
 | 
			
		||||
                                                                                PageParam pageParam) {
 | 
			
		||||
    default PageResult<PayWalletTransactionDO> selectPage(Long walletId,
 | 
			
		||||
                                                          AppPayWalletTransactionPageReqVO pageReqVO) {
 | 
			
		||||
        LambdaQueryWrapperX<PayWalletTransactionDO> query = new LambdaQueryWrapperX<PayWalletTransactionDO>()
 | 
			
		||||
                .eq(PayWalletTransactionDO::getWalletId, walletId);
 | 
			
		||||
        if (WalletTransactionQueryTypeEnum.RECHARGE == queryType ) {
 | 
			
		||||
            query.ge(PayWalletTransactionDO::getAmount, 0);
 | 
			
		||||
        }
 | 
			
		||||
        if (WalletTransactionQueryTypeEnum.EXPENSE == queryType ) {
 | 
			
		||||
        if (Objects.equals(pageReqVO.getType(), AppPayWalletTransactionPageReqVO.TYPE_INCOME)) {
 | 
			
		||||
            query.gt(PayWalletTransactionDO::getAmount, 0);
 | 
			
		||||
        } else if (Objects.equals(pageReqVO.getType(), AppPayWalletTransactionPageReqVO.TYPE_EXPENSE)) {
 | 
			
		||||
            query.lt(PayWalletTransactionDO::getAmount, 0);
 | 
			
		||||
        }
 | 
			
		||||
        query.orderByDesc(PayWalletTransactionDO::getId);
 | 
			
		||||
        return selectPage(pageParam, query);
 | 
			
		||||
        return selectPage(pageReqVO, query);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default PayWalletTransactionDO selectByNo(String no) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.service.wallet;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,11 @@
 | 
			
		||||
package cn.iocoder.yudao.module.pay.service.wallet;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.transaction.AppPayWalletTransactionPageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletTransactionDO;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.dal.mysql.wallet.PayWalletTransactionMapper;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.PayWalletBizTypeEnum;
 | 
			
		||||
import cn.iocoder.yudao.module.pay.enums.member.WalletTransactionQueryTypeEnum;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
@@ -35,12 +34,10 @@ public class PayWalletTransactionServiceImpl implements PayWalletTransactionServ
 | 
			
		||||
                                                                       AppPayWalletTransactionPageReqVO pageVO) {
 | 
			
		||||
        PayWalletDO wallet = payWalletService.getPayWallet(userId, userType);
 | 
			
		||||
        if (wallet == null) {
 | 
			
		||||
            log.error("[pageWalletTransaction] 用户 {} 钱包不存在", userId);
 | 
			
		||||
            log.error("[getWalletTransactionPage][用户({}/{}) 钱包不存在", userId, userType);
 | 
			
		||||
            throw exception(WALLET_NOT_FOUND);
 | 
			
		||||
        }
 | 
			
		||||
        // TODO @jason:不用 WalletTransactionQueryTypeEnum.valueOf(pageVO.getType()) 哈,直接 pageVO 里面判断值比对就好啦;
 | 
			
		||||
        return payWalletTransactionMapper.selectPageByWalletIdAndQueryType(wallet.getId(),
 | 
			
		||||
                WalletTransactionQueryTypeEnum.valueOf(pageVO.getType()), pageVO);
 | 
			
		||||
        return payWalletTransactionMapper.selectPage(wallet.getId(), pageVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user