15 changed files with 320 additions and 3 deletions
Split View
Diff Options
-
16dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditAuditedEvent.java
-
8dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java
-
27dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserAuditWithdrawAuditDto.java
-
34dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java
-
23dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/request/UserPageWithdrawAuditQueryParams.java
-
40dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java
-
30dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/walletaccount/WalletAccountApplicationService.java
-
37dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java
-
24dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java
-
8dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java
-
1dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WithdrawAuditDao.java
-
15dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/WithdrawAuditViewDao.java
-
10dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java
-
24dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java
-
26dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml
@ -0,0 +1,16 @@ |
|||
package com.qniao.dam.domian.aggregate.withdrawaudit.event; |
|||
|
|||
|
|||
import com.qniao.domain.BaseDomainEvent; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class WithdrawAuditAuditedEvent extends BaseDomainEvent { |
|||
|
|||
private Long id; |
|||
|
|||
} |
|||
@ -0,0 +1,27 @@ |
|||
package com.qniao.dam.api.command.withdrawaudit.user.request; |
|||
|
|||
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; |
|||
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; |
|||
import com.qniao.domain.Trans2DomainAssembler; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
@Data |
|||
public class UserAuditWithdrawAuditDto implements Trans2DomainAssembler<WithdrawAudit> { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
@NotNull(message = "唯一标识不能为空") |
|||
private Long id; |
|||
|
|||
@ApiModelProperty("提现状态") |
|||
@NotNull(message = "提现状态不能为空") |
|||
private WithdrawAuditStatus status; |
|||
|
|||
@Override |
|||
public WithdrawAudit trans2Domain() { |
|||
return TypeConvertUtils.convert(this, WithdrawAudit.class); |
|||
} |
|||
} |
|||
@ -0,0 +1,34 @@ |
|||
package com.qniao.dam.api.query.withdrawaudit.user; |
|||
|
|||
import com.qniao.dam.api.query.withdrawaudit.user.request.UserPageWithdrawAuditQueryParams; |
|||
import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; |
|||
import com.qniao.dam.query.withdrawaudit.WithdrawAuditQueryService; |
|||
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.GetMapping; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestParam; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@RestController |
|||
@RequestMapping("user") |
|||
@Api(tags = "提现审核") |
|||
public class WithdrawAuditUserQueryController { |
|||
|
|||
@Resource |
|||
private WithdrawAuditQueryService withdrawAuditQueryService; |
|||
|
|||
@GetMapping("page/withdraw-audit") |
|||
@ApiOperation("用户获取钱包账号记录") |
|||
public QnPage<UserPageWithdrawAuditVo> userPageWithdrawAudit(@RequestParam("userId") Long userId, |
|||
PageUtil pageUtil, |
|||
UserPageWithdrawAuditQueryParams queryParams) { |
|||
return PageUtil.convert(withdrawAuditQueryService.pageWithdrawAudit(queryParams, pageUtil), UserPageWithdrawAuditVo.class); |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
package com.qniao.dam.api.query.withdrawaudit.user.request; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
@Data |
|||
public class UserPageWithdrawAuditQueryParams { |
|||
|
|||
@ApiModelProperty("申请开始时间") |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
private LocalDateTime applyTimeFrom; |
|||
|
|||
@ApiModelProperty("申请结束时间") |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
private LocalDateTime applyTimeTo; |
|||
|
|||
@ApiModelProperty("提现状态") |
|||
private Integer status; |
|||
|
|||
} |
|||
@ -0,0 +1,40 @@ |
|||
package com.qniao.dam.api.query.withdrawaudit.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.withdrawaudit.constant.WithdrawAuditStatus; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.time.LocalDateTime; |
|||
|
|||
@Data |
|||
public class UserPageWithdrawAuditVo { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long id; |
|||
|
|||
@ApiModelProperty("用户唯一标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long walletAccountUserId; |
|||
|
|||
@ApiModelProperty("钱包用户名称") |
|||
private String walletAccountUserName; |
|||
|
|||
@ApiModelProperty("钱包账号标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long walletAccountId; |
|||
|
|||
@ApiModelProperty("提现金额") |
|||
private BigDecimal withdrawAmount; |
|||
|
|||
@ApiModelProperty("提现状态") |
|||
private WithdrawAuditStatus status; |
|||
|
|||
@ApiModelProperty("申请时间") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
private LocalDateTime applyTime; |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
package com.qniao.dam.application.handler.walletaccount; |
|||
|
|||
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; |
|||
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; |
|||
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.math.BigDecimal; |
|||
import java.util.Collections; |
|||
|
|||
@Service |
|||
public class WalletAccountApplicationService { |
|||
|
|||
@Resource |
|||
private WalletAccountDao walletAccountDao; |
|||
@Resource |
|||
private WalletAccountAggregate walletAccountAggregate; |
|||
|
|||
public void confirmWithdraw(Long walletAccountId, BigDecimal withdrawAmount) { |
|||
WalletAccount walletAccount = walletAccountDao.selectById(walletAccountId); |
|||
walletAccount.setFrozenBalance(walletAccount.getFrozenBalance().subtract(withdrawAmount)); |
|||
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|||
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.WITHDRAW, withdrawAmount, false); |
|||
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); |
|||
walletAccountAggregate.save(walletAccount); |
|||
} |
|||
} |
|||
@ -0,0 +1,37 @@ |
|||
package com.qniao.dam.application.handler.withdrawaudit; |
|||
|
|||
import com.google.common.eventbus.Subscribe; |
|||
import com.qniao.dam.application.handler.walletaccount.WalletAccountApplicationService; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; |
|||
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; |
|||
import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditAuditedEvent; |
|||
import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao; |
|||
import com.qniao.domain.BaseApplicationService; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class WithdrawAuditEventHandler extends BaseApplicationService { |
|||
|
|||
@Resource |
|||
private WithdrawAuditDao withdrawAuditDao; |
|||
@Resource |
|||
private WalletAccountApplicationService walletAccountApplicationService; |
|||
|
|||
@Subscribe |
|||
private void handle(WithdrawAuditAuditedEvent event) { |
|||
try { |
|||
WithdrawAudit withdrawAudit = withdrawAuditDao.selectById(event.getId()); |
|||
if (WithdrawAuditStatus.PASS_VERIFICATION.equals(withdrawAudit.getStatus())) { |
|||
walletAccountApplicationService.confirmWithdraw(withdrawAudit.getWalletAccountId(), withdrawAudit.getWithdrawAmount()); |
|||
} |
|||
} catch (Exception e) { |
|||
log.error("提现申请审核事件处理异常"); |
|||
} |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
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.withdrawaudit.user.request.UserPageWithdrawAuditQueryParams; |
|||
import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
@Mapper |
|||
public interface WithdrawAuditViewDao { |
|||
|
|||
IPage<UserPageWithdrawAuditVo> pageWithdrawAudit(@Param("queryParams") UserPageWithdrawAuditQueryParams queryParams, |
|||
Page<Object> pageWithoutOrders); |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
package com.qniao.dam.query.withdrawaudit; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.qniao.dam.api.query.withdrawaudit.user.request.UserPageWithdrawAuditQueryParams; |
|||
import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
|
|||
public interface WithdrawAuditQueryService { |
|||
IPage<UserPageWithdrawAuditVo> pageWithdrawAudit(UserPageWithdrawAuditQueryParams queryParams, PageUtil pageUtil); |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package com.qniao.dam.query.withdrawaudit.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.qniao.dam.api.query.withdrawaudit.user.request.UserPageWithdrawAuditQueryParams; |
|||
import com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo; |
|||
import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao; |
|||
import com.qniao.dam.infrastructure.persistent.dao.view.WithdrawAuditViewDao; |
|||
import com.qniao.dam.query.withdrawaudit.WithdrawAuditQueryService; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Service |
|||
public class WithdrawAuditQueryServiceImpl implements WithdrawAuditQueryService { |
|||
|
|||
@Resource |
|||
private WithdrawAuditViewDao withdrawAuditViewDao; |
|||
|
|||
@Override |
|||
public IPage<UserPageWithdrawAuditVo> pageWithdrawAudit(UserPageWithdrawAuditQueryParams queryParams, PageUtil pageUtil) { |
|||
return withdrawAuditViewDao.pageWithdrawAudit(queryParams, pageUtil.toPageWithoutOrders()); |
|||
} |
|||
} |
|||
@ -0,0 +1,26 @@ |
|||
<?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.WithdrawAuditViewDao"> |
|||
|
|||
<select id="pageWithdrawAudit" |
|||
resultType="com.qniao.dam.api.query.withdrawaudit.user.response.UserPageWithdrawAuditVo"> |
|||
select |
|||
dwa.id, |
|||
dwa.wallet_account_id, |
|||
dwa.wallet_account_user_id, |
|||
dm.`name` as walletAccountUserName, |
|||
dwa.withdraw_amount, |
|||
dwa.`status`, |
|||
dwa.`create_time` as applyTime |
|||
from da_withdraw_audit as dwa |
|||
LEFT JOIN da_matchmaker as dm on dwa.wallet_account_user_id=dm.user_id and dm.is_delete=0 |
|||
where dwa.is_delete=0 |
|||
<if test="queryParams.status != null"> |
|||
and dwa.`status` = #{queryParams.status} |
|||
</if> |
|||
<if test="queryParams.applyTimeFrom != null and queryParams.applyTimeTo != null"> |
|||
and dwa.`create_time` BETWEEN #{queryParams.applyTimeFrom} and #{queryParams.applyTimeTo} |
|||
</if> |
|||
order by dwa.`create_time` dsec |
|||
</select> |
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save