15 changed files with 314 additions and 42 deletions
Unified View
Diff Options
-
11dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java
-
9dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java
-
1dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/WalletAccountQueryService.java
-
23dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/impl/WalletAccountQueryServiceImpl.java
-
45dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java
-
46dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/response/UserGetWalletAccountRecordVo.java
-
26dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/response/UserGetWalletAccountVo.java
-
23dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/response/WalletAccountAssociateOrderRecordVo.java
-
20dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
-
20dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/WalletAccountViewDao.java
-
14dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java
-
62dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java
-
37dating-agency-mall-server/src/main/resources/mapper/walletaccount/WalletAccountViewMapper.xml
@ -1,7 +0,0 @@ |
|||||
package com.qniao.dam.api.query.walletaccount; |
|
||||
|
|
||||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|
||||
|
|
||||
public interface WalletAccountQueryService { |
|
||||
WalletAccount queryByUserId(Long userId); |
|
||||
} |
|
||||
@ -1,23 +0,0 @@ |
|||||
package com.qniao.dam.api.query.walletaccount.impl; |
|
||||
|
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
||||
import com.qniao.dam.api.query.walletaccount.WalletAccountQueryService; |
|
||||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|
||||
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao; |
|
||||
import org.springframework.stereotype.Service; |
|
||||
|
|
||||
import javax.annotation.Resource; |
|
||||
|
|
||||
@Service |
|
||||
public class WalletAccountQueryServiceImpl implements WalletAccountQueryService { |
|
||||
|
|
||||
@Resource |
|
||||
private WalletAccountDao walletAccountDao; |
|
||||
|
|
||||
@Override |
|
||||
public WalletAccount queryByUserId(Long userId) { |
|
||||
return walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>() |
|
||||
.eq(WalletAccount::getUserId, userId) |
|
||||
.last("limit 1")); |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,45 @@ |
|||||
|
package com.qniao.dam.api.query.walletaccount.user; |
||||
|
|
||||
|
import com.qniao.dam.api.query.walletaccount.user.request.UserPageWalletAccountRecordQueryParam; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountVo; |
||||
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
||||
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
||||
|
import com.qniao.domain.QnPage; |
||||
|
import com.qniao.framework.utils.PageUtil; |
||||
|
import com.qniao.framework.utils.TypeConvertUtils; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.util.Objects; |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("user") |
||||
|
@Api(tags = "权益") |
||||
|
public class WalletAccountUserQueryController { |
||||
|
|
||||
|
@Resource |
||||
|
private WalletAccountQueryService walletAccountQueryService; |
||||
|
|
||||
|
@PostMapping("get/wallet-account") |
||||
|
@ApiOperation("用户获取钱包账号") |
||||
|
public UserGetWalletAccountVo userGetWalletAccount(@RequestParam("userId") Long userId) { |
||||
|
UserGetWalletAccountVo vo = new UserGetWalletAccountVo(); |
||||
|
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(userId); |
||||
|
if (Objects.nonNull(walletAccount)) { |
||||
|
vo = TypeConvertUtils.convert(walletAccount, UserGetWalletAccountVo.class); |
||||
|
} |
||||
|
return vo; |
||||
|
} |
||||
|
|
||||
|
@PostMapping("get/wallet-account-record/page") |
||||
|
@ApiOperation("用户获取钱包账号记录") |
||||
|
public QnPage<UserGetWalletAccountRecordVo> userPageWalletAccountRecord(@RequestParam("userId") Long userId, |
||||
|
PageUtil pageUtil, |
||||
|
UserPageWalletAccountRecordQueryParam queryParam) { |
||||
|
return PageUtil.convert(walletAccountQueryService.pageWalletAccountRecord(userId, queryParam, pageUtil), UserGetWalletAccountRecordVo.class); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
package com.qniao.dam.api.query.walletaccount.user.request; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class UserPageWalletAccountRecordQueryParam { |
||||
|
|
||||
|
@ApiModelProperty("交易收益类型 1推荐 2平台服务费") |
||||
|
private Integer tradeType; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
package com.qniao.dam.api.query.walletaccount.user.response; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.time.LocalDateTime; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class UserGetWalletAccountRecordVo { |
||||
|
|
||||
|
@ApiModelProperty("唯一标识") |
||||
|
@JsonSerialize(using = ToStringSerializer.class) |
||||
|
private Long id; |
||||
|
|
||||
|
@ApiModelProperty("用户钱包账号标识") |
||||
|
@JsonSerialize(using = ToStringSerializer.class) |
||||
|
private Long walletAccountId; |
||||
|
|
||||
|
@ApiModelProperty("时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
|
private LocalDateTime createTime; |
||||
|
|
||||
|
@ApiModelProperty("交易类型") |
||||
|
private TradeTypeEnum tradeType; |
||||
|
|
||||
|
@ApiModelProperty("交易金额") |
||||
|
private BigDecimal tradeAmount; |
||||
|
|
||||
|
@ApiModelProperty("是否收入") |
||||
|
private Boolean isIncome; |
||||
|
|
||||
|
@ApiModelProperty("内容") |
||||
|
private String content; |
||||
|
|
||||
|
@ApiModelProperty("备注") |
||||
|
private String remark; |
||||
|
|
||||
|
@ApiModelProperty("关联订单") |
||||
|
private List<WalletAccountAssociateOrderRecordVo> associateOrderRecordList; |
||||
|
} |
||||
@ -0,0 +1,26 @@ |
|||||
|
package com.qniao.dam.api.query.walletaccount.user.response; |
||||
|
|
||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
@Data |
||||
|
public class UserGetWalletAccountVo { |
||||
|
|
||||
|
@ApiModelProperty("钱包账户标识") |
||||
|
@JsonSerialize(using = ToStringSerializer.class) |
||||
|
private Long id; |
||||
|
|
||||
|
@ApiModelProperty("总余额") |
||||
|
private BigDecimal totalBalance = BigDecimal.ZERO; |
||||
|
|
||||
|
@ApiModelProperty("可用余额") |
||||
|
private BigDecimal availableBalance = BigDecimal.ZERO; |
||||
|
|
||||
|
@ApiModelProperty("冻结余额") |
||||
|
private BigDecimal frozenBalance = BigDecimal.ZERO; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,23 @@ |
|||||
|
package com.qniao.dam.api.query.walletaccount.user.response; |
||||
|
|
||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
|
||||
|
@Data |
||||
|
public class WalletAccountAssociateOrderRecordVo { |
||||
|
|
||||
|
@ApiModelProperty("钱包记录标识") |
||||
|
@JsonSerialize(using = ToStringSerializer.class) |
||||
|
private Long walletAccountRecordId; |
||||
|
|
||||
|
@ApiModelProperty("有关联的订单") |
||||
|
@JsonSerialize(using = ToStringSerializer.class) |
||||
|
private Long associateOrderId; |
||||
|
|
||||
|
@ApiModelProperty("有关联的金额") |
||||
|
private BigDecimal associateOrderAmount; |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
package com.qniao.dam.infrastructure.persistent.dao.view; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.request.UserPageWalletAccountRecordQueryParam; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.WalletAccountAssociateOrderRecordVo; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Mapper |
||||
|
public interface WalletAccountViewDao { |
||||
|
IPage<UserGetWalletAccountRecordVo> pageWalletAccountRecord(Page<Object> pageWithoutOrders, |
||||
|
@Param("queryParam") UserPageWalletAccountRecordQueryParam queryParam, |
||||
|
@Param("userId") Long userId); |
||||
|
|
||||
|
List<WalletAccountAssociateOrderRecordVo> listAssociateOrderRecordBy(@Param("recordIdList") List<Long> recordIdList); |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
package com.qniao.dam.query.walletaccount; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.request.UserPageWalletAccountRecordQueryParam; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo; |
||||
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
||||
|
import com.qniao.framework.utils.PageUtil; |
||||
|
|
||||
|
|
||||
|
public interface WalletAccountQueryService { |
||||
|
WalletAccount queryByUserId(Long userId); |
||||
|
|
||||
|
IPage<UserGetWalletAccountRecordVo> pageWalletAccountRecord(Long userId, UserPageWalletAccountRecordQueryParam queryParam, PageUtil pageUtil); |
||||
|
} |
||||
@ -0,0 +1,62 @@ |
|||||
|
package com.qniao.dam.query.walletaccount.impl; |
||||
|
|
||||
|
import cn.hutool.core.collection.CollUtil; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.request.UserPageWalletAccountRecordQueryParam; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo; |
||||
|
import com.qniao.dam.api.query.walletaccount.user.response.WalletAccountAssociateOrderRecordVo; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.view.WalletAccountViewDao; |
||||
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
||||
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
||||
|
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao; |
||||
|
import com.qniao.framework.utils.PageUtil; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
@Service |
||||
|
public class WalletAccountQueryServiceImpl implements WalletAccountQueryService { |
||||
|
|
||||
|
@Resource |
||||
|
private WalletAccountDao walletAccountDao; |
||||
|
@Resource |
||||
|
private WalletAccountViewDao walletAccountViewDao; |
||||
|
|
||||
|
@Override |
||||
|
public WalletAccount queryByUserId(Long userId) { |
||||
|
return walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>() |
||||
|
.eq(WalletAccount::getUserId, userId) |
||||
|
.last("limit 1")); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public IPage<UserGetWalletAccountRecordVo> pageWalletAccountRecord(Long userId, UserPageWalletAccountRecordQueryParam queryParam, PageUtil pageUtil) { |
||||
|
IPage<UserGetWalletAccountRecordVo> page = walletAccountViewDao.pageWalletAccountRecord(pageUtil.toPageWithoutOrders(), queryParam, userId); |
||||
|
if (page.getRecords().size() > 0) { |
||||
|
List<Long> recordIdList = page.getRecords().stream().map(UserGetWalletAccountRecordVo::getWalletAccountId).collect(Collectors.toList()); |
||||
|
Map<Long, List<WalletAccountAssociateOrderRecordVo>> associateOrderRecordMap = mapAssociateOrderRecordBy(recordIdList); |
||||
|
page.getRecords().forEach(record -> { |
||||
|
record.setAssociateOrderRecordList(associateOrderRecordMap.get(record.getId())); |
||||
|
}); |
||||
|
} |
||||
|
return page; |
||||
|
} |
||||
|
|
||||
|
private Map<Long, List<WalletAccountAssociateOrderRecordVo>> mapAssociateOrderRecordBy(List<Long> recordIdList) { |
||||
|
List<WalletAccountAssociateOrderRecordVo> list = listAssociateOrderRecordBy(recordIdList); |
||||
|
return list.stream().collect(Collectors.groupingBy(WalletAccountAssociateOrderRecordVo::getAssociateOrderId)); |
||||
|
} |
||||
|
|
||||
|
private List<WalletAccountAssociateOrderRecordVo> listAssociateOrderRecordBy(List<Long> recordIdList) { |
||||
|
List<WalletAccountAssociateOrderRecordVo> list = new ArrayList<>(); |
||||
|
if (CollUtil.isNotEmpty(recordIdList)) { |
||||
|
list = walletAccountViewDao.listAssociateOrderRecordBy(recordIdList); |
||||
|
} |
||||
|
return list; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,37 @@ |
|||||
|
<?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.view.WalletAccountViewDao"> |
||||
|
|
||||
|
|
||||
|
<select id="pageWalletAccountRecord" |
||||
|
resultType="com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo"> |
||||
|
SELECT |
||||
|
dwar.create_time, |
||||
|
dwar.wallet_account_id, |
||||
|
dwar.trade_type, |
||||
|
dwar.trade_amount, |
||||
|
dwar.is_income, |
||||
|
dwar.content, |
||||
|
dwar.remark |
||||
|
FROM da_wallet_account_record as dwar |
||||
|
INNER JOIN da_wallet_account as dwa on dwa.id=dwar.wallet_account_id |
||||
|
where dwa.is_delete=0 and dwa.user_id=#{userId} |
||||
|
<if test="queryParam.tradeType != null"> |
||||
|
and dwar.trade_type = #{queryParam.tradeType} |
||||
|
</if> |
||||
|
order by dwar.create_time desc |
||||
|
</select> |
||||
|
|
||||
|
<select id="listAssociateOrderRecordBy" |
||||
|
resultType="com.qniao.dam.api.query.walletaccount.user.response.WalletAccountAssociateOrderRecordVo"> |
||||
|
select |
||||
|
wallet_account_record_id, |
||||
|
associate_order_id, |
||||
|
associate_order_amount |
||||
|
FROM da_wallet_account_associate_order_record |
||||
|
where wallet_account_record_id in |
||||
|
<foreach collection="recordIdList" item="recordId" open="(" close=")" separator=","> |
||||
|
#{recordId} |
||||
|
</foreach> |
||||
|
</select> |
||||
|
</mapper> |
||||
Write
Preview
Loading…
Cancel
Save