16 changed files with 459 additions and 0 deletions
Unified 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