Browse Source

银行卡

master
张彭杰 1 year ago
parent
commit
43f3b8f39f
16 changed files with 459 additions and 0 deletions
  1. 38
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/BankCardUserCommandController.java
  2. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java
  3. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserDeleteBankCardDto.java
  4. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserEditBankCardDto.java
  5. 30
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/bankcard/user/BankCardUserQueryController.java
  6. 27
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/bankcard/user/response/BankCardVo.java
  7. 36
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java
  8. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/BankCardAggregate.java
  9. 44
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/entity/BankCard.java
  10. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/repository/BankCardRepository.java
  11. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/bankcard/BankCardDao.java
  12. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/BankCardViewDao.java
  13. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/BankCardRepositoryImpl.java
  14. 14
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/bankcard/BankCardQueryService.java
  15. 42
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/bankcard/impl/BankCardQueryServiceImpl.java
  16. 25
      dating-agency-mall-server/src/main/resources/mapper/bankcard/BankCardMapper.xml

38
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/BankCardUserCommandController.java

@ -0,0 +1,38 @@
package com.qniao.dam.api.command.bankcard.user;
import com.qniao.dam.api.command.bankcard.user.request.*;
import com.qniao.dam.application.service.bankcard.BankCardApplicationService;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
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 BankCardUserCommandController {
@Resource
private BankCardApplicationService bankCardApplicationService;
@ApiOperation("用户个人创建银行卡")
@PostMapping("create/bank-card/by-individual")
public void userCreateBankCardByIndividual(@RequestBody @Valid UserCreateBankCardDto dto,
@RequestParam("userId") Long userId) {
BankCard bankCard = dto.trans2Domain();
bankCard.setUserId(userId);
bankCard.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
bankCardApplicationService.create(dto.trans2Domain());
}
@ApiOperation("用户删除银行卡")
@PostMapping("delete/bank-card")
public void userDeleteBankCard(@RequestBody @Valid UserDeleteBankCardDto dto,
@RequestParam("userId") Long userId) {
bankCardApplicationService.delete(dto.getId());
}
}

39
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java

@ -0,0 +1,39 @@
package com.qniao.dam.api.command.bankcard.user.request;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.domain.Trans2DomainAssembler;
import io.swagger.annotations.ApiModelProperty;
import com.qniao.framework.utils.TypeConvertUtils;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Data
public class UserCreateBankCardDto implements Trans2DomainAssembler<BankCard> {
@ApiModelProperty("持卡人姓名")
@NotNull(message = "持卡人姓名不能为空")
@Size(max = 32, message = "持卡人姓名不超过32个字符")
private String ownerName;
@ApiModelProperty("银行")
@NotNull(message = "银行不能为空")
@Size(max = 32, message = "银行不超过32个字符")
private String bankName;
@ApiModelProperty("卡号")
@NotNull(message = "卡号不能为空")
@Size(max = 32, message = "卡号不超过32个字符")
private String cardNum;
@ApiModelProperty("开户支行")
@NotNull(message = "开户支行不能为空")
@Size(max = 100, message = "开户支行不超过100个字符")
private String openingBank;
@Override
public BankCard trans2Domain() {
return TypeConvertUtils.convert(this, BankCard.class);
}
}

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

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

41
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserEditBankCardDto.java

@ -0,0 +1,41 @@
package com.qniao.dam.api.command.bankcard.user.request;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.domain.Trans2DomainAssembler;
import io.swagger.annotations.ApiModelProperty;
import com.qniao.framework.utils.TypeConvertUtils;
import lombok.Data;
@Data
public class UserEditBankCardDto implements Trans2DomainAssembler<BankCard> {
@ApiModelProperty("")
private Long id;
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("组织唯一标识")
private Long orgId;
@ApiModelProperty("身份类型(个人、组织)")
private Integer identityType;
@ApiModelProperty("持卡人姓名")
private String ownerName;
@ApiModelProperty("银行")
private String bankName;
@ApiModelProperty("卡号")
private String cardNum;
@ApiModelProperty("开户支行")
private String openingBank;
@Override
public BankCard trans2Domain() {
return TypeConvertUtils.convert(this, BankCard.class);
}
}

30
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/bankcard/user/BankCardUserQueryController.java

@ -0,0 +1,30 @@
package com.qniao.dam.api.query.bankcard.user;
import com.qniao.dam.api.query.bankcard.user.response.BankCardVo;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.query.bankcard.BankCardQueryService;
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;
import java.util.List;
@Api(tags = "银行卡")
@RestController
@RequestMapping("user")
public class BankCardUserQueryController {
@Resource
private BankCardQueryService bankCardQueryService;
@GetMapping("list/bank-card/by-individual")
@ApiOperation("用户银行卡列表")
public List<BankCardVo> userListBankCardByIndividual(@RequestParam("userId") Long userId) {
return bankCardQueryService.listBankCardVo(userId, null, IdentityTypeEnum.INDIVIDUAL);
}
}

27
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/bankcard/user/response/BankCardVo.java

@ -0,0 +1,27 @@
package com.qniao.dam.api.query.bankcard.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;
@Data
public class BankCardVo {
@ApiModelProperty("唯一标识")
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@ApiModelProperty("持卡人姓名")
private String ownerName;
@ApiModelProperty("银行")
private String bankName;
@ApiModelProperty("卡号")
private String cardNum;
@ApiModelProperty("开户支行")
private String openingBank;
}

36
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java

@ -0,0 +1,36 @@
package com.qniao.dam.application.service.bankcard;
import com.qniao.dam.domain.aggregate.bankcard.BankCardAggregate;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.dam.query.bankcard.BankCardQueryService;
import com.qniao.framework.exception.BizException;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class BankCardApplicationService {
@Resource
private BankCardAggregate bankCardAggregate;
@Resource
private BankCardQueryService bankCardQueryService;
public void create(BankCard bankCard) {
BankCard existBankCard = bankCardQueryService.queryBy(bankCard.getUserId(), bankCard.getOrgId(), bankCard.getIdentityType(), bankCard.getCardNum());
if (Objects.nonNull(existBankCard)) {
throw new BizException("银行卡已存在");
} else {
bankCardAggregate.create(bankCard);
}
}
public void edit(BankCard bankCard) {
bankCardAggregate.edit(bankCard);
}
public void delete(Long id) {
bankCardAggregate.delete(id);
}
}

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

@ -0,0 +1,31 @@
package com.qniao.dam.domain.aggregate.bankcard;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.dam.domain.aggregate.bankcard.repository.BankCardRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 银行卡
*
* @date 2024/11/14
*/
@Service
public class BankCardAggregate {
@Resource
private BankCardRepository repository;
public void create(BankCard entity) {
repository.save(entity);
}
public void edit(BankCard entity) {
repository.save(entity);
}
public void delete(Long id) {
repository.delete(id);
}
}

44
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/entity/BankCard.java

@ -0,0 +1,44 @@
package com.qniao.dam.domain.aggregate.bankcard.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.qniao.domain.Entity;
import java.time.LocalDateTime;
/**
* 银行卡
*
* @date 2024/11/14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_bank_card")
public class BankCard extends Entity<BankCard> {
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("组织唯一标识")
private Long orgId;
@ApiModelProperty("身份类型(个人、组织)")
private IdentityTypeEnum identityType;
@ApiModelProperty("持卡人姓名")
private String ownerName;
@ApiModelProperty("银行")
private String bankName;
@ApiModelProperty("卡号")
private String cardNum;
@ApiModelProperty("开户支行")
private String openingBank;
}

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

@ -0,0 +1,12 @@
package com.qniao.dam.domain.aggregate.bankcard.repository;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.domain.Repository;
/**
* 银行卡
*
* @date 2024/11/14
*/
public interface BankCardRepository extends Repository<BankCard, Long> {
}

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

@ -0,0 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.bankcard;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
/**
* 银行卡
*
* @date 2024/11/14
*/
public interface BankCardDao extends BaseMapper<BankCard> {
}

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

@ -0,0 +1,15 @@
package com.qniao.dam.infrastructure.persistent.dao.view;
import com.qniao.dam.api.query.bankcard.user.response.BankCardVo;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface BankCardViewDao {
List<BankCardVo> listBankCard(@Param("userId") Long userId,
@Param("orgId") Long orgId,
@Param("identityType") IdentityTypeEnum identityType);
}

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

@ -0,0 +1,41 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.dam.domain.aggregate.bankcard.repository.BankCardRepository;
import com.qniao.dam.infrastructure.persistent.dao.bankcard.BankCardDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
* 银行卡
*
* @date 2024/11/14
*/
@Service
public class BankCardRepositoryImpl implements BankCardRepository {
@Resource
private BankCardDao dao;
@Override
public BankCard load(Long id) {
return dao.selectById(id);
}
@Override
public Long save(BankCard entity) {
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) {
dao.insert(entity);
} else {
dao.updateById(entity);
}
return entity.getId();
}
@Override
public void delete(Long id) {
dao.deleteById(id);
}
}

14
dating-agency-mall-server/src/main/java/com/qniao/dam/query/bankcard/BankCardQueryService.java

@ -0,0 +1,14 @@
package com.qniao.dam.query.bankcard;
import com.qniao.dam.api.query.bankcard.user.response.BankCardVo;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import java.util.List;
public interface BankCardQueryService {
BankCard queryBy(Long userId, Long orgId, IdentityTypeEnum identityType, String cardNum);
List<BankCardVo> listBankCardVo(Long userId, Long orgId, IdentityTypeEnum identityType);
}

42
dating-agency-mall-server/src/main/java/com/qniao/dam/query/bankcard/impl/BankCardQueryServiceImpl.java

@ -0,0 +1,42 @@
package com.qniao.dam.query.bankcard.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.api.query.bankcard.user.response.BankCardVo;
import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.bankcard.BankCardDao;
import com.qniao.dam.infrastructure.persistent.dao.view.BankCardViewDao;
import com.qniao.dam.query.bankcard.BankCardQueryService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class BankCardQueryServiceImpl implements BankCardQueryService {
@Resource
private BankCardDao bankCardDao;
@Resource
private BankCardViewDao bankCardViewDao;
@Override
public BankCard queryBy(Long userId, Long orgId, IdentityTypeEnum identityType, String cardNum) {
if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) {
return bankCardDao.selectOne(new LambdaQueryWrapper<BankCard>()
.eq(BankCard::getUserId, userId)
.eq(BankCard::getCardNum, cardNum)
.last("limit 1"));
} else {
return bankCardDao.selectOne(new LambdaQueryWrapper<BankCard>()
.eq(BankCard::getOrgId, orgId)
.eq(BankCard::getCardNum, cardNum)
.last("limit 1"));
}
}
@Override
public List<BankCardVo> listBankCardVo(Long userId, Long orgId, IdentityTypeEnum identityType) {
return bankCardViewDao.listBankCard(userId,orgId,identityType);
}
}

25
dating-agency-mall-server/src/main/resources/mapper/bankcard/BankCardMapper.xml

@ -0,0 +1,25 @@
<?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.BankCardViewDao">
<select id="listBankCard" resultType="com.qniao.dam.api.query.bankcard.user.response.BankCardVo">
select
id,
owner_name,
bank_name,
card_num,
opening_bank
from da_bank_card
where is_delete=0
<if test="userId != null">
and user_id = #{userId}
</if>
<if test="orgId != null">
and org_id = #{orgId}
</if>
<if test="identityType != null">
and identity_type = #{identityType}
</if>
ORDER BY create_time desc
</select>
</mapper>
Loading…
Cancel
Save