Browse Source

玫瑰

master
张彭杰 4 months ago
parent
commit
4e6410282e
9 changed files with 121 additions and 7 deletions
  1. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/virtualaccount/user/VirtualAccountUserQueryController.java
  2. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/virtualaccount/user/request/UserPageVirtualAccountRecordQueryParams.java
  3. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/virtualaccount/user/response/VirtualAccountRecordVo.java
  4. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  5. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java
  6. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/virtualaccount/VirtualAccountRecordDao.java
  7. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/VirtualAccountQueryService.java
  8. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/impl/VirtualAccountQueryServiceImpl.java
  9. 25
      dating-agency-mall-server/src/main/resources/mapper/virtualaccount/VirtualAccountRecordDao.xml

13
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/virtualaccount/user/VirtualAccountUserQueryController.java

@ -1,7 +1,11 @@
package com.qniao.dam.api.query.virtualaccount.user;
import com.qniao.dam.api.query.virtualaccount.user.request.UserGetVirtualAccountVo;
import com.qniao.dam.api.query.virtualaccount.user.request.UserPageVirtualAccountRecordQueryParams;
import com.qniao.dam.api.query.virtualaccount.user.response.VirtualAccountRecordVo;
import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService;
import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@ -22,4 +26,13 @@ public class VirtualAccountUserQueryController {
return virtualAccountQueryService.getVirtualAccountView(userId);
}
@GetMapping("page/virtual-account-record")
@ApiOperation("用户获取虚拟账号记录")
public QnPage<VirtualAccountRecordVo> userPageVirtualAccountRecord(@RequestParam("userId") Long userId,
PageUtil pageUtil,
UserPageVirtualAccountRecordQueryParams queryParams) {
queryParams.setQueryUserId(userId);
return PageUtil.convert(virtualAccountQueryService.pageVirtualAccountRecord(queryParams, pageUtil), VirtualAccountRecordVo.class);
}
}

26
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/virtualaccount/user/request/UserPageVirtualAccountRecordQueryParams.java

@ -0,0 +1,26 @@
package com.qniao.dam.api.query.virtualaccount.user.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
public class UserPageVirtualAccountRecordQueryParams {
@ApiModelProperty(hidden = true)
private Long queryUserId;
@ApiModelProperty("交易类型")
private Integer tradeType;
@ApiModelProperty("开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTimeFrom;
@ApiModelProperty("结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTimeTo;
}

23
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/virtualaccount/user/response/VirtualAccountRecordVo.java

@ -0,0 +1,23 @@
package com.qniao.dam.api.query.virtualaccount.user.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class VirtualAccountRecordVo {
@ApiModelProperty("交易类型")
private VirtualAccountTradeTypeEnum tradeType;
@ApiModelProperty("交易数量")
private Integer tradeBalance;
@ApiModelProperty("时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

3
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java

@ -12,7 +12,6 @@ import com.qniao.dam.domain.service.virtualaccount.ConsumeVirtualAccountDomainSe
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
@ -61,7 +60,7 @@ public class VirtualAccountApplicationService {
//余额充足 创建消费订单+扣除余额
Order order = handleOrder(dto.getUserId(), productSpec);
//虚拟账户处理
virtualAccountAggregate.handleData(virtualAccount, order.getSettlementAmount().intValue(), dto.getTradeType());
virtualAccountAggregate.handleConsumeData(virtualAccount, order.getSettlementAmount().intValue(), dto.getTradeType());
//保存
consumeVirtualAccountDomainService.handle(virtualAccount, order);
vo.setSuccess(true);

8
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java

@ -32,14 +32,14 @@ public class VirtualAccountAggregate {
repository.delete(id);
}
public void handleData(VirtualAccount virtualAccount,
Integer tradeBalance,
VirtualAccountTradeTypeEnum tradeType) {
public void handleConsumeData(VirtualAccount virtualAccount,
Integer tradeBalance,
VirtualAccountTradeTypeEnum tradeType) {
Integer originalBalance = virtualAccount.getBalance();
virtualAccount.setBalance(originalBalance - tradeBalance);
VirtualAccountRecord record = new VirtualAccountRecord();
record.setTradeType(tradeType);
record.setTradeBalance(tradeBalance);
record.setTradeBalance(-tradeBalance);
record.setOriginalBalance(originalBalance);
record.setCurrentBalance(virtualAccount.getBalance());
virtualAccount.setRecordList(Collections.singletonList(record));

9
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/virtualaccount/VirtualAccountRecordDao.java

@ -1,11 +1,20 @@
package com.qniao.dam.infrastructure.persistent.dao.virtualaccount;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qniao.dam.api.query.virtualaccount.user.request.UserPageVirtualAccountRecordQueryParams;
import com.qniao.dam.api.query.virtualaccount.user.response.VirtualAccountRecordVo;
import com.qniao.dam.domain.aggregate.virtualaccount.valobj.VirtualAccountRecord;
import org.apache.ibatis.annotations.Param;
/**
* @author Zpj
* @date 2025/11/9
*/
public interface VirtualAccountRecordDao extends BaseMapper<VirtualAccountRecord> {
IPage<VirtualAccountRecordVo> page(Page<Object> pageWithoutOrders,
@Param("queryParams") UserPageVirtualAccountRecordQueryParams queryParams);
}

6
dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/VirtualAccountQueryService.java

@ -1,11 +1,17 @@
package com.qniao.dam.query.virtualaccount;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.virtualaccount.user.request.UserGetVirtualAccountVo;
import com.qniao.dam.api.query.virtualaccount.user.request.UserPageVirtualAccountRecordQueryParams;
import com.qniao.dam.api.query.virtualaccount.user.response.VirtualAccountRecordVo;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.framework.utils.PageUtil;
public interface VirtualAccountQueryService {
UserGetVirtualAccountVo getVirtualAccountView(Long userId);
VirtualAccount queryBy(Long userId);
IPage<VirtualAccountRecordVo> pageVirtualAccountRecord(UserPageVirtualAccountRecordQueryParams queryParams, PageUtil pageUtil);
}

15
dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/impl/VirtualAccountQueryServiceImpl.java

@ -1,10 +1,15 @@
package com.qniao.dam.query.virtualaccount.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.virtualaccount.user.request.UserGetVirtualAccountVo;
import com.qniao.dam.api.query.virtualaccount.user.request.UserPageVirtualAccountRecordQueryParams;
import com.qniao.dam.api.query.virtualaccount.user.response.VirtualAccountRecordVo;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.infrastructure.persistent.dao.virtualaccount.VirtualAccountDao;
import com.qniao.dam.infrastructure.persistent.dao.virtualaccount.VirtualAccountRecordDao;
import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService;
import com.qniao.framework.utils.PageUtil;
import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
@ -16,12 +21,14 @@ public class VirtualAccountQueryServiceImpl implements VirtualAccountQueryServic
@Resource
private VirtualAccountDao virtualAccountDao;
@Resource
private VirtualAccountRecordDao virtualAccountRecordDao;
@Override
public UserGetVirtualAccountVo getVirtualAccountView(Long userId) {
UserGetVirtualAccountVo vo = null;
VirtualAccount virtualAccount = queryBy(userId);
if (Objects.nonNull(virtualAccount)){
if (Objects.nonNull(virtualAccount)) {
vo = TypeConvertUtils.convert(virtualAccount, UserGetVirtualAccountVo.class);
}
return vo;
@ -34,4 +41,10 @@ public class VirtualAccountQueryServiceImpl implements VirtualAccountQueryServic
.last("limit 1"));
}
@Override
public IPage<VirtualAccountRecordVo> pageVirtualAccountRecord(UserPageVirtualAccountRecordQueryParams queryParams,
PageUtil pageUtil) {
return virtualAccountRecordDao.page(pageUtil.toPageWithoutOrders(), queryParams);
}
}

25
dating-agency-mall-server/src/main/resources/mapper/virtualaccount/VirtualAccountRecordDao.xml

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qniao.dam.infrastructure.persistent.dao.virtualaccount.VirtualAccountRecordDao">
<select id="page" resultType="com.qniao.dam.api.query.virtualaccount.user.response.VirtualAccountRecordVo">
SELECT
davar.trade_type,
davar.trade_balance,
davar.create_time
from da_virtual_account as dava
LEFT JOIN da_virtual_account_record as davar on davar.virtual_account_id=dava.id
WHERE dava.is_delete=0
<if test="queryParams.queryUserId != null">
and dava.user_id = #{queryParams.queryUserId}
</if>
<if test="queryParams.tradeType != null">
and davar.trade_type = #{queryParams.tradeType}
</if>
<if test="queryParams.createTimeFrom != null and queryParams.createTimeTo != null">
and davar.create_time BETWEEN #{queryParams.createTimeFrom} and #{queryParams.createTimeTo}
</if>
ORDER BY davar.create_time desc
</select>
</mapper>
Loading…
Cancel
Save