15 changed files with 314 additions and 42 deletions
Split 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