Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
d68836e3fb
15 changed files with 320 additions and 3 deletions
  1. 16
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditAuditedEvent.java
  2. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java
  3. 27
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserAuditWithdrawAuditDto.java
  4. 34
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java
  5. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/request/UserPageWithdrawAuditQueryParams.java
  6. 40
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java
  7. 30
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/walletaccount/WalletAccountApplicationService.java
  8. 37
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java
  9. 24
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java
  10. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/withdrawaudit/WithdrawAuditAggregate.java
  11. 1
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WithdrawAuditDao.java
  12. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/WithdrawAuditViewDao.java
  13. 10
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java
  14. 24
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java
  15. 26
      dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml

16
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/withdrawaudit/event/WithdrawAuditAuditedEvent.java

@ -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;
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/WithdrawAuditUserCommandController.java

@ -1,6 +1,7 @@
package com.qniao.dam.api.command.withdrawaudit.user;
import com.qniao.dam.api.command.withdrawaudit.user.request.UserApplyWalletAccountWithdrawDto;
import com.qniao.dam.api.command.withdrawaudit.user.request.UserAuditWithdrawAuditDto;
import com.qniao.dam.application.service.withdrawaudit.WithdrawAuditApplicationService;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import io.swagger.annotations.Api;
@ -27,4 +28,11 @@ public class WithdrawAuditUserCommandController {
withdrawAuditApplicationService.applyWithdraw(withdrawAudit);
}
@ApiOperation("审核提现申请")
@PostMapping("audit/withdraw-audit")
public void userAuditWithdrawAudit(@RequestBody @Valid UserAuditWithdrawAuditDto dto,
@RequestParam("userId") Long userId) {
withdrawAuditApplicationService.audit(dto.trans2Domain());
}
}

27
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/withdrawaudit/user/request/UserAuditWithdrawAuditDto.java

@ -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);
}
}

34
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/WithdrawAuditUserQueryController.java

@ -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);
}
}

23
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/request/UserPageWithdrawAuditQueryParams.java

@ -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;
}

40
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/withdrawaudit/user/response/UserPageWithdrawAuditVo.java

@ -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;
}

30
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/walletaccount/WalletAccountApplicationService.java

@ -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);
}
}

37
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java

@ -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("提现申请审核事件处理异常");
}
}
}

24
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java

@ -1,9 +1,14 @@
package com.qniao.dam.application.service.withdrawaudit;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.withdrawaudit.WithdrawAuditAggregate;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domain.service.withdrawaudit.ApplyWithdrawAuditDomainService;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus;
import com.qniao.dam.infrastructure.persistent.dao.domain.WithdrawAuditDao;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.exception.BizException;
import org.springframework.stereotype.Service;
@ -11,11 +16,16 @@ import javax.annotation.Resource;
import java.util.Objects;
@Service
public class WithdrawAuditApplicationService {
public class WithdrawAuditApplicationService extends BaseApplicationService {
@Resource
private WalletAccountQueryService walletAccountQueryService;
@Resource
private ApplyWithdrawAuditDomainService applyWithdrawAuditDomainService;
@Resource
private WithdrawAuditAggregate withdrawAuditAggregate;
@Resource
private WithdrawAuditDao withdrawAuditDao;
public void applyWithdraw(WithdrawAudit withdrawAudit) {
synchronized (withdrawAudit.getWalletAccountUserId().toString().intern()) {
@ -26,7 +36,17 @@ public class WithdrawAuditApplicationService {
withdrawAudit.setWalletAccountId(walletAccount.getId());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(withdrawAudit.getWithdrawAmount()));
walletAccount.setFrozenBalance(walletAccount.getFrozenBalance().add(withdrawAudit.getWithdrawAmount()));
applyWithdrawAuditDomainService.handle(withdrawAudit,walletAccount);
applyWithdrawAuditDomainService.handle(withdrawAudit, walletAccount);
}
}
public void audit(WithdrawAudit withdrawAudit) {
WithdrawAudit existWithdrawAudit = withdrawAuditDao.selectById(withdrawAudit.getId());
if (Objects.nonNull(existWithdrawAudit)) {
if (WithdrawAuditStatus.TO_BE_REVIEWED.equals(existWithdrawAudit.getStatus())) {
BaseDomainEvent event = withdrawAuditAggregate.audit(withdrawAudit);
this.sendEvent(event);
}
}
}
}

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

@ -3,6 +3,9 @@ package com.qniao.dam.domain.aggregate.withdrawaudit;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domain.aggregate.withdrawaudit.repository.WithdrawAuditRepository;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus;
import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditAuditedEvent;
import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -17,4 +20,9 @@ public class WithdrawAuditAggregate {
withdrawAudit.setStatus(WithdrawAuditStatus.TO_BE_REVIEWED);
withdrawAuditRepository.save(withdrawAudit);
}
public BaseDomainEvent audit(WithdrawAudit withdrawAudit) {
withdrawAuditRepository.save(withdrawAudit);
return TypeConvertUtils.convert(withdrawAudit, WithdrawAuditAuditedEvent.class);
}
}

1
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WithdrawAuditDao.java

@ -2,6 +2,5 @@ package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
public interface WithdrawAuditDao extends BaseMapper<WithdrawAudit> {
}

15
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/WithdrawAuditViewDao.java

@ -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);
}

10
dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/WithdrawAuditQueryService.java

@ -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);
}

24
dating-agency-mall-server/src/main/java/com/qniao/dam/query/withdrawaudit/impl/WithdrawAuditQueryServiceImpl.java

@ -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());
}
}

26
dating-agency-mall-server/src/main/resources/mapper/withdrawaudit/WithdrawAuditViewMapper.xml

@ -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>
Loading…
Cancel
Save