Browse Source

虚拟账号

master
188814092560 4 months ago
parent
commit
89f3fb09ae
14 changed files with 324 additions and 0 deletions
  1. 30
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/entity/VirtualAccount.java
  2. 36
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/valobj/VirtualAccountRecord.java
  3. 40
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java
  4. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserCreateVirtualAccountDto.java
  5. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserDeleteVirtualAccountDto.java
  6. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserEditVirtualAccountDto.java
  7. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  8. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java
  9. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/repository/VirtualAccountRepository.java
  10. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/virtualaccount/VirtualAccountDao.java
  11. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/virtualaccount/VirtualAccountRecordDao.java
  12. 51
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/VirtualAccountRepositoryImpl.java
  13. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/VirtualAccountQueryService.java
  14. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/impl/VirtualAccountQueryServiceImpl.java

30
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/entity/VirtualAccount.java

@ -0,0 +1,30 @@
package com.qniao.dam.domain.aggregate.virtualaccount.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domain.aggregate.virtualaccount.valobj.VirtualAccountRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.qniao.domain.Entity;
import java.util.List;
/**
* 虚拟账号
*
* @date 2025/11/09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_virtual_account")
public class VirtualAccount extends Entity<VirtualAccount> {
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("数量")
private Integer balance;
private transient List<VirtualAccountRecord> recordList;
}

36
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/valobj/VirtualAccountRecord.java

@ -0,0 +1,36 @@
package com.qniao.dam.domain.aggregate.virtualaccount.valobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author Zpj
* @date 2025/11/9
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_virtual_account_record")
public class VirtualAccountRecord extends ValueObject<VirtualAccountRecord> {
@ApiModelProperty("用户钱包账号标识")
private Long virtualAccountId;
@ApiModelProperty("交易类型")
private Integer tradeType;
@ApiModelProperty("交易数量")
private Integer tradeBalance;
@ApiModelProperty("原始数量")
private Integer originalBalance;
@ApiModelProperty("当前数量")
private Integer currentBalance;
@ApiModelProperty("备注")
private String remark;
}

40
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java

@ -0,0 +1,40 @@
package com.qniao.dam.api.command.virtualaccount.user;
import com.qniao.dam.api.command.virtualaccount.user.request.*;
import com.qniao.dam.application.service.virtualaccount.VirtualAccountApplicationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
@Api(tags = "虚拟账号")
@RestController
@RequestMapping("user")
public class VirtualAccountUserCommandController {
@Resource
private VirtualAccountApplicationService virtualAccountApplicationService;
@ApiOperation("用户创建虚拟账号")
@PostMapping("create/virtual-account")
public void userCreateVirtualAccount(@RequestBody @Valid UserCreateVirtualAccountDto dto,
@RequestParam("userId") Long userId) {
virtualAccountApplicationService.create(dto.trans2Domain());
}
@ApiOperation("用户编辑虚拟账号")
@PostMapping("edit/virtual-account")
public void userEditVirtualAccount(@RequestBody @Valid UserEditVirtualAccountDto dto,
@RequestParam("userId") Long userId) {
virtualAccountApplicationService.edit(dto.trans2Domain());
}
@ApiOperation("用户删除虚拟账号")
@PostMapping("delete/virtual-account")
public void userDeleteVirtualAccount(@RequestBody @Valid UserDeleteVirtualAccountDto dto,
@RequestParam("userId") Long userId) {
virtualAccountApplicationService.delete(dto.getId());
}
}

23
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserCreateVirtualAccountDto.java

@ -0,0 +1,23 @@
package com.qniao.dam.api.command.virtualaccount.user.request;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.domain.Trans2DomainAssembler;
import io.swagger.annotations.ApiModelProperty;
import com.qniao.framework.utils.TypeConvertUtils;
import lombok.Data;
@Data
public class UserCreateVirtualAccountDto implements Trans2DomainAssembler<VirtualAccount> {
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("数量")
private Integer balance;
@Override
public VirtualAccount trans2Domain() {
return TypeConvertUtils.convert(this, VirtualAccount.class);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserDeleteVirtualAccountDto.java

@ -0,0 +1,12 @@
package com.qniao.dam.api.command.virtualaccount.user.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserDeleteVirtualAccountDto {
@ApiModelProperty("唯一标识")
private Long id;
}

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

@ -0,0 +1,26 @@
package com.qniao.dam.api.command.virtualaccount.user.request;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.domain.Trans2DomainAssembler;
import io.swagger.annotations.ApiModelProperty;
import com.qniao.framework.utils.TypeConvertUtils;
import lombok.Data;
@Data
public class UserEditVirtualAccountDto implements Trans2DomainAssembler<VirtualAccount> {
@ApiModelProperty("唯一标识")
private Long id;
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("数量")
private Integer balance;
@Override
public VirtualAccount trans2Domain() {
return TypeConvertUtils.convert(this, VirtualAccount.class);
}
}

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

@ -0,0 +1,26 @@
package com.qniao.dam.application.service.virtualaccount;
import com.qniao.dam.domain.aggregate.virtualaccount.VirtualAccountAggregate;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class VirtualAccountApplicationService {
@Resource
private VirtualAccountAggregate virtualAccountAggregate;
public void create(VirtualAccount virtualAccount) {
virtualAccountAggregate.create(virtualAccount);
}
public void edit(VirtualAccount virtualAccount) {
virtualAccountAggregate.edit(virtualAccount);
}
public void delete(Long id) {
virtualAccountAggregate.delete(id);
}
}

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

@ -0,0 +1,31 @@
package com.qniao.dam.domain.aggregate.virtualaccount;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.domain.aggregate.virtualaccount.repository.VirtualAccountRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 虚拟账号
*
* @date 2025/11/09
*/
@Service
public class VirtualAccountAggregate {
@Resource
private VirtualAccountRepository repository;
public void create(VirtualAccount entity) {
repository.save(entity);
}
public void edit(VirtualAccount entity) {
repository.save(entity);
}
public void delete(Long id) {
repository.delete(id);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/repository/VirtualAccountRepository.java

@ -0,0 +1,12 @@
package com.qniao.dam.domain.aggregate.virtualaccount.repository;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.domain.Repository;
/**
* 虚拟账号
*
* @date 2025/11/09
*/
public interface VirtualAccountRepository extends Repository<VirtualAccount, Long> {
}

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

@ -0,0 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.virtualaccount;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
/**
* 虚拟账号
*
* @date 2025/11/09
*/
public interface VirtualAccountDao extends BaseMapper<VirtualAccount> {
}

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

@ -0,0 +1,11 @@
package com.qniao.dam.infrastructure.persistent.dao.virtualaccount;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.virtualaccount.valobj.VirtualAccountRecord;
/**
* @author Zpj
* @date 2025/11/9
*/
public interface VirtualAccountRecordDao extends BaseMapper<VirtualAccountRecord> {
}

51
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/VirtualAccountRepositoryImpl.java

@ -0,0 +1,51 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import cn.hutool.core.collection.CollUtil;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.domain.aggregate.virtualaccount.repository.VirtualAccountRepository;
import com.qniao.dam.infrastructure.persistent.dao.virtualaccount.VirtualAccountDao;
import com.qniao.dam.infrastructure.persistent.dao.virtualaccount.VirtualAccountRecordDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
* 虚拟账号
*
* @date 2025/11/09
*/
@Service
public class VirtualAccountRepositoryImpl implements VirtualAccountRepository {
@Resource
private VirtualAccountDao dao;
@Resource
private VirtualAccountRecordDao recordDao;
@Override
public VirtualAccount load(Long id) {
return dao.selectById(id);
}
@Override
public Long save(VirtualAccount entity) {
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) {
dao.insert(entity);
} else {
dao.updateById(entity);
}
if (CollUtil.isNotEmpty(entity.getRecordList())) {
entity.getRecordList().forEach(record -> {
record.setVirtualAccountId(entity.getId());
recordDao.insert(record);
});
}
return entity.getId();
}
@Override
public void delete(Long id) {
dao.deleteById(id);
}
}

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

@ -0,0 +1,5 @@
package com.qniao.dam.query.virtualaccount;
public interface VirtualAccountQueryService {
}

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

@ -0,0 +1,9 @@
package com.qniao.dam.query.virtualaccount.impl;
import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService;
import org.springframework.stereotype.Service;
@Service
public class VirtualAccountQueryServiceImpl implements VirtualAccountQueryService {
}
Loading…
Cancel
Save