16 changed files with 459 additions and 0 deletions
Split View
Diff Options
-
38dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/BankCardUserCommandController.java
-
39dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserDeleteBankCardDto.java
-
41dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserEditBankCardDto.java
-
30dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/bankcard/user/BankCardUserQueryController.java
-
27dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/bankcard/user/response/BankCardVo.java
-
36dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java
-
31dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/BankCardAggregate.java
-
44dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/entity/BankCard.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/bankcard/repository/BankCardRepository.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/bankcard/BankCardDao.java
-
15dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/BankCardViewDao.java
-
41dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/BankCardRepositoryImpl.java
-
14dating-agency-mall-server/src/main/java/com/qniao/dam/query/bankcard/BankCardQueryService.java
-
42dating-agency-mall-server/src/main/java/com/qniao/dam/query/bankcard/impl/BankCardQueryServiceImpl.java
-
25dating-agency-mall-server/src/main/resources/mapper/bankcard/BankCardMapper.xml
@ -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()); |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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; |
|||
|
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
|
|||
} |
|||
@ -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; |
|||
|
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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; |
|||
|
|||
|
|||
} |
|||
@ -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> { |
|||
} |
|||
@ -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> { |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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> |
|||
Write
Preview
Loading…
Cancel
Save