/*
|
* Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
*
|
* https://www.mall4j.com/
|
*
|
* 未经允许,不可做商业用途!
|
*
|
* 版权所有,侵权必究!
|
*/
|
package com.yami.shop.api.controller;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.yami.shop.bean.model.ShopBankCard;
|
import com.yami.shop.bean.model.ShopDetail;
|
import com.yami.shop.bean.model.ShopWithdrawCash;
|
import com.yami.shop.common.config.Constant;
|
import com.yami.shop.common.exception.YamiShopBindException;
|
import com.yami.shop.common.response.ServerResponseEntity;
|
import com.yami.shop.security.api.util.SecurityUtils;
|
import com.yami.shop.service.ShopBankCardService;
|
import com.yami.shop.service.ShopDetailService;
|
import com.yami.shop.service.ShopWithdrawCashService;
|
import com.yami.shop.sys.common.model.ShopEmployee;
|
import com.yami.shop.sys.common.service.ShopEmployeeService;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import lombok.AllArgsConstructor;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.validation.Valid;
|
import java.util.List;
|
import java.util.Objects;
|
|
|
/**
|
* 商家提现申请信息
|
*
|
* @author YXF
|
* * @date 2020-04-07 14:22:08
|
*/
|
@RestController
|
@AllArgsConstructor
|
@RequestMapping("/p/shop/shopBankCard" )
|
@Tag(name = "银行卡接口")
|
public class ShopBankCardController {
|
|
private final ShopBankCardService shopBankCardService;
|
private final ShopWithdrawCashService shopWithdrawCashService;
|
private final ShopDetailService shopDetailService;
|
private final ShopEmployeeService shopEmployeeService;
|
|
@GetMapping("/getShopBankCardList")
|
@Operation(summary = "获取店铺下的银行卡列表" , description = "获取店铺下的银行卡列表")
|
public ServerResponseEntity<List<ShopBankCard>> getShopBankCardList() {
|
ShopDetail shopDetail = shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId());
|
if (Objects.isNull(shopDetail)){{
|
return ServerResponseEntity.success();
|
}}
|
Long shopId = shopDetail.getShopId();
|
List<ShopBankCard> list = shopBankCardService.list(new LambdaQueryWrapper<ShopBankCard>().eq(ShopBankCard::getShopId, shopId).eq(ShopBankCard::getStatus,1));
|
return ServerResponseEntity.success(list);
|
}
|
|
@GetMapping
|
@Operation(summary = "根据银行卡id获取银行卡信息" , description = "根据银行卡id获取银行卡信息")
|
public ServerResponseEntity<ShopBankCard> getById(@RequestParam("shopBankCardId") Long shopBankCardId) {
|
ShopDetail shopDetail = shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId());
|
if (Objects.isNull(shopDetail)){{
|
return ServerResponseEntity.success();
|
}}
|
Long shopId = shopDetail.getShopId();
|
ShopBankCard shopBankCard = shopBankCardService.getOne(Wrappers.lambdaQuery(ShopBankCard.class)
|
.eq(ShopBankCard::getShopBankCardId, shopBankCardId)
|
.eq(ShopBankCard::getShopId, shopId)
|
);
|
return ServerResponseEntity.success(shopBankCard);
|
}
|
|
@PutMapping
|
@Operation(summary = "更新银行卡信息" , description = "更新银行卡信息")
|
@PreAuthorize("@pms.hasPermission('shop:shopBankCard:update')")
|
public ServerResponseEntity<Void> update(@RequestBody @Valid ShopBankCard shopBankCard) {
|
shopBankCardService.updateByShopId(shopBankCard, shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId()).getShopId());
|
return ServerResponseEntity.success();
|
}
|
|
@PostMapping
|
@Operation(summary = "添加单个银行卡信息" , description = "添加单个银行卡信息")
|
@PreAuthorize("@pms.hasPermission('shop:shopBankCard:save')")
|
public ServerResponseEntity<Long> save(@RequestBody @Valid ShopBankCard shopBankCard) {
|
ShopDetail shopDetail = shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId());
|
if (Objects.isNull(shopDetail)){{
|
return ServerResponseEntity.success();
|
}}
|
Long shopId = shopDetail.getShopId();
|
shopBankCard.setShopId(shopId);
|
int count = shopBankCardService.count(new LambdaQueryWrapper<ShopBankCard>().eq(ShopBankCard::getShopId, shopId).eq(ShopBankCard::getStatus, 1));
|
if (count >= Constant.MAX_SHOP_BANK_CARD) {
|
throw new YamiShopBindException("yami.shop.max.card.num");
|
}
|
return ServerResponseEntity.success(shopBankCardService.insertSelective(shopBankCard));
|
}
|
|
@PutMapping("/setDefault")
|
@Operation(summary = "设置为默认银行卡" , description = "设置为默认银行卡")
|
@PreAuthorize("@pms.hasPermission('shop:shopBankCard:default')")
|
public ServerResponseEntity<Void> setDefault(@RequestBody @Valid ShopBankCard shopBankCard) {
|
ShopDetail shopDetail = shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId());
|
if (Objects.isNull(shopDetail)){{
|
return ServerResponseEntity.success();
|
}}
|
Long shopId = shopDetail.getShopId();
|
shopBankCardService.setDefault(shopBankCard.getShopBankCardId(),shopId);
|
return ServerResponseEntity.success();
|
}
|
|
@PutMapping("/setNotDefault")
|
@Operation(summary = "取消默认银行卡" , description = "取消默认银行卡")
|
@PreAuthorize("@pms.hasPermission('shop:shopBankCard:noDefault')")
|
public ServerResponseEntity<Void> setNotDefault(@RequestParam(value = "shopBankCardId") Long shopBankCardId) {
|
shopBankCardService.setNotDefault(shopBankCardId, shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId()).getShopId());
|
return ServerResponseEntity.success();
|
}
|
|
@DeleteMapping("/{shopBankCardId}")
|
@Operation(summary = "根据银行卡id删除银行卡信息" , description = "根据银行卡id删除银行卡信息")
|
@PreAuthorize("@pms.hasPermission('shop:shopBankCard:delete')")
|
public ServerResponseEntity<Void> removeById(@PathVariable("shopBankCardId") Long shopBankCardId) {
|
ShopDetail shopDetail = shopDetailService.getShopDetailByUserId(SecurityUtils.getUser().getUserId());
|
if (Objects.isNull(shopDetail)){{
|
return ServerResponseEntity.success();
|
}}
|
Long shopId = shopDetail.getShopId();
|
ShopBankCard shopBankCard = shopBankCardService.getById(shopBankCardId);
|
if (Objects.equals(shopBankCard.getIsDefault(),1)){
|
// 不能删除默认银行卡
|
throw new YamiShopBindException("yami.shop.cannot.delete.card");
|
}
|
// 检查是否是最后一张银行卡
|
if (shopBankCardService.count(Wrappers.lambdaQuery(ShopBankCard.class).eq(ShopBankCard::getShopId, shopId).eq(ShopBankCard::getStatus, 1)) == 1) {
|
throw new YamiShopBindException("yami.shop.least.one.card");
|
}
|
int count = shopWithdrawCashService.count(new LambdaQueryWrapper<ShopWithdrawCash>()
|
.eq(ShopWithdrawCash::getShopBankCardId, shopBankCardId).eq(ShopWithdrawCash::getStatus, 0));
|
if(count > 0){
|
// 正在用于申请提现的银行卡不能删除
|
throw new YamiShopBindException("yami.shop.cannot.delete.check");
|
}
|
// 进行逻辑删除
|
shopBankCardService.update(new LambdaUpdateWrapper<ShopBankCard>().set(ShopBankCard::getStatus,-1).eq(ShopBankCard::getShopBankCardId,shopBankCardId).eq(ShopBankCard::getShopId, shopId));
|
return ServerResponseEntity.success();
|
}
|
|
@PostMapping("/saveAndApplyShop")
|
@Operation(summary = "批量保存店铺银行卡信息并提交店铺审核信息" , description = "批量保存店铺银行卡信息并提交店铺审核信息")
|
public ServerResponseEntity<Void> saveAndApplyShop(@Valid @RequestBody List<ShopBankCard> shopBankCards) {
|
String id = SecurityUtils.getUser().getUserId();
|
ShopDetail shopDetail = shopDetailService.getShopDetailByUserId(id);
|
Long shopId = shopDetail.getShopId();
|
Long employeeId = shopEmployeeService.getShopEmployeeByUserId(shopId);
|
shopBankCardService.insertBatchAndSubmitApply(shopBankCards, shopId, employeeId,id);
|
return ServerResponseEntity.success();
|
}
|
}
|