diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java index bf966e841..8a111fb35 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java @@ -72,7 +72,8 @@ public enum HardPayTypeEnum { // 简单支付(没有购物车) public static final List isSimplePayList = List.of( WALLET_QR_CODE_SCAN, - ACT_CANCEL + ACT_CANCEL, + WALLET_CARD ); public static HardPayTypeEnum valueOfByType(String type) { diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java index b557aa849..4c227e42b 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java @@ -17,6 +17,11 @@ public class HardXfjFastCreateOrderDto { */ private Long hardId; + /** + * 订单编号 + */ + private String orderNo; + /** * 支付金额(分) */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjWhiteListDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjWhiteListDto.java index d88c81dec..364fc66c8 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjWhiteListDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjWhiteListDto.java @@ -13,11 +13,11 @@ public class XfjWhiteListDto { /** * 页数 */ - private Integer Page; + private Long Page; /** * 页个数(一页最多有多少个名单) */ - private Integer PageNumber; + private Long PageNumber; } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java index 0f1f7b4b4..4c9c96c93 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java @@ -35,7 +35,7 @@ public class HardOrderEntity extends Model { /** * 订单编号 */ - @Schema(description = "订单编号 目前正元、微信支付、支付宝支付正在使用") + @Schema(description = "订单编号 目前正元、微信支付、云消费机、支付宝支付正在使用") private String orderNo; /** diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java index 2c2423276..d16942560 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java @@ -8,17 +8,17 @@ public class XfjWhiteListVo extends XfjBaseVo { /** * 返回设备提交的序号 */ - private String CommID; + private Integer CommID; /** * 页数(获取那一页的数据) */ - private String Page; + private Long Page; /** * 名单个数 */ - private String PageLen; + private Long PageLen; /** * 白名单数据(1|0000000001|1,序号|卡号|操作) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java index b4352d6e6..c44fef668 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java @@ -113,7 +113,7 @@ public class HardXfjController { return hardXfjService.offLines(httpEntity.getBody(), headers); } - @Operation(summary = "获取白名单接口") + @Operation(summary = "获取卡号白名单接口") @PostMapping("/v1/WhiteList") @Inner(value = false) public Object whiteList(HttpEntity httpEntity, @RequestHeader Map headers) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index a8669ca12..031122336 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -824,6 +824,7 @@ public class HardOrderServiceImpl extends ServiceImpl headers) { HardXfjLogEntity logger = initLogger(body, headers, "获取服务器时间接口"); + XfjServerTimeVo result = new XfjServerTimeVo(); try { HardManagerEntity entity = checkSignAndReturnConfig(body, headers); logger.setUniqueCode(entity.getUniqueCode()); @@ -137,8 +141,6 @@ public class HardXfjServiceImpl implements HardXfjService { } timeStr += dayOfWeek; - XfjServerTimeVo result = new XfjServerTimeVo(); - result.setTime(timeStr); result.setWLUptate(1); result.setWLPage(0); @@ -148,10 +150,12 @@ public class HardXfjServiceImpl implements HardXfjService { logger.setError(e.getMessage()); e.printStackTrace(); log.error("|获取服务器时间接口|意外的错误error:{}", e.getMessage()); + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg(e.getMessage()); + return result; } finally { saveLogger(logger); } - return null; } /** @@ -159,14 +163,116 @@ public class HardXfjServiceImpl implements HardXfjService { */ @Override public XfjConsumTransactionsVo consumTransactions(String body, Map headers) { - HardManagerEntity entity = checkSignAndReturnConfig(body, headers); + HardXfjLogEntity logger = initLogger(body, headers, "用户刷卡综合接口"); + XfjConsumTransactionsVo result = new XfjConsumTransactionsVo(); try { + HardManagerEntity entity = checkSignAndReturnConfig(body, headers); + logger.setUniqueCode(entity.getUniqueCode()); + // 获取参数 + XfjConsumTransactionsDto dto = JSONUtil.toBean(body, XfjConsumTransactionsDto.class); + if (ObjectUtil.isEmpty(dto)) { + throw new RuntimeException("解析参数为空"); + } + if (!ObjectUtil.isAllNotEmpty(dto.getMode(), dto.getCardNo(), dto.getCardMode(), dto.getOrder())) { + throw new RuntimeException("解析参数错误"); + } + // 刷卡扣费 + if (ObjectUtil.equals(dto.getMode(), 0)) { + WalletManageEntity wallet = walletService.getWalletByCardNumber(dto.getCardNo()).getData(); + if (ObjectUtil.isEmpty(wallet)) { + throw new RuntimeException("非本单位饭卡"); + } + // 查询用户 + String username = "未知用户"; + UserInfo user = remoteUserService.getInnerByUserId(wallet.getUserId()).getData(); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getSysUser().getName())) { + username = user.getSysUser().getName(); + } + // 解析金额 + int price = BigDecimal.valueOf(Double.valueOf(dto.getAmount())).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue(); + HardXfjFastCreateOrderDto payDto = new HardXfjFastCreateOrderDto(); + payDto.setUserId(user.getSysUser().getUserId()); + payDto.setHardId(entity.getId()); + payDto.setPrice(price); + payDto.setOrderNo(dto.getOrder()); + payDto.setWalletType(WalletTypeEnum.EAT); + payDto.setXfjPayType(HardXfjTypeEnum.CARD_PAY); + Long orderId = hardOrderService.xfjFastCreateOrder(payDto); + + result.setName(username); + result.setCardNo(wallet.getCardNumber()); + result.setMoney(fenToYuan(BigDecimal.valueOf(wallet.getBalance()))); + result.setSubsidy("0"); + result.setTimes("0"); + result.setIntegral("0"); + result.setInTime(""); + result.setOutTime(""); + result.setCumulativeTime(""); + result.setAmount(dto.getAmount()); + result.setVoiceID(""); + result.setText("购买成功\r\n总消费" + dto.getAmount() + "元"); + return result; + } + // 现金充值 + else if (ObjectUtil.equals(dto.getMode(), 1)) { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("不支持现金充值"); + return result; + } + // 余额查询 + else if (ObjectUtil.equals(dto.getMode(), 2)) { + WalletManageEntity wallet = walletService.getWalletByCardNumber(dto.getCardNo()).getData(); + if (ObjectUtil.isEmpty(wallet)) { + throw new RuntimeException("非本单位饭卡"); + } + // 查询用户 + String username = "未知用户"; + UserInfo user = remoteUserService.getInnerByUserId(wallet.getUserId()).getData(); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getSysUser().getName())) { + username = user.getSysUser().getName(); + } + result.setName(username); + result.setCardNo(wallet.getCardNumber()); + result.setMoney(fenToYuan(BigDecimal.valueOf(wallet.getBalance()))); + result.setSubsidy("0"); + result.setTimes("0"); + result.setIntegral("0"); + result.setInTime(""); + result.setOutTime(""); + result.setCumulativeTime(""); + result.setAmount(""); + result.setVoiceID(""); + result.setText("购买成功\r\n总消费" + dto.getAmount() + "元"); + return result; + } + // 钱包转账 + else if (ObjectUtil.equals(dto.getMode(), 3)) { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("不支持钱包转账"); + return result; + } + // 现金退款 + else if (ObjectUtil.equals(dto.getMode(), 4)) { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("不支持现金退款"); + return result; + } else { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("不支持的操作"); + return result; + } } catch (Exception e) { + logger.setError(e.getMessage()); e.printStackTrace(); log.error("|用户刷卡综合接口|意外的错误error:{}", e.getMessage()); + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg(e.getMessage()); + return result; + } finally { + logger.setRes(JSONUtil.toJsonStr(result)); + saveLogger(logger); } - return null; } /** @@ -231,11 +337,13 @@ public class HardXfjServiceImpl implements HardXfjService { logger.setError(e.getMessage()); e.printStackTrace(); log.error("|终端查询日统计接口|意外的错误error:{}", e.getMessage()); + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg(e.getMessage()); + return result; } finally { logger.setRes(JSONUtil.toJsonStr(result)); saveLogger(logger); } - return null; } /** @@ -339,12 +447,14 @@ public class HardXfjServiceImpl implements HardXfjService { } catch (Exception e) { logger.setError(e.getMessage()); e.printStackTrace(); - log.error("|终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细(或者退款接口)|意外的错误error:{}", e.getMessage()); + log.error("|终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细|意外的错误error:{}", e.getMessage()); + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg(e.getMessage()); + return result; } finally { logger.setRes(JSONUtil.toJsonStr(result)); saveLogger(logger); } - return null; } /** @@ -573,17 +683,66 @@ public class HardXfjServiceImpl implements HardXfjService { } /** - * 获取白名单接口 + * 获取卡号白名单接口 */ @Override public XfjWhiteListVo whiteList(String body, Map headers) { - HardManagerEntity entity = checkSignAndReturnConfig(body, headers); + HardXfjLogEntity logger = initLogger(body, headers, "获取卡号白名单接口"); + XfjWhiteListVo result = new XfjWhiteListVo(); try { - + HardManagerEntity entity = checkSignAndReturnConfig(body, headers); + logger.setUniqueCode(entity.getUniqueCode()); + // 获取参数 + XfjWhiteListDto dto = JSONUtil.toBean(body, XfjWhiteListDto.class); + if (ObjectUtil.isEmpty(dto)) { + throw new RuntimeException("解析参数为空"); + } + if (!ObjectUtil.isAllNotEmpty(dto.getPage(), dto.getPageNumber(), dto.getCommID())) { + throw new RuntimeException("解析参数错误"); + } + // 查询开卡数据 + Page walletActivePage = walletService.remoteOpenCardList(dto.getPage(), dto.getPageNumber()).getData(); + if (ObjectUtil.isEmpty(walletActivePage) || ObjectUtil.isEmpty(walletActivePage.getRecords())) { + throw new RuntimeException("查询开卡数据为空"); + } + List walletActiveRecords = walletActivePage.getRecords(); + List whiteCarList = new ArrayList<>(); + // 是否查询结束 + boolean isSelectEnd = false; + if (walletActiveRecords.size() < dto.getPageNumber()) { + isSelectEnd = true; + } + for (WalletActiveEntity item : walletActiveRecords) { + String whiteCarNumber = generateWhiteCarNumber(String.valueOf(item.getCardSort()), item.getCardNumber(), ObjectUtil.equals(item.getDelFlag(), YesNoEnum.YES.getCode()) ? "0" : "1"); + whiteCarList.add(whiteCarNumber); + } + result.setCommID(dto.getCommID()); + result.setPage(dto.getPage()); + result.setPageLen(dto.getPageNumber()); + result.setUptate(isSelectEnd ? "0" : "1"); + result.setWLData(whiteCarList.stream().collect(Collectors.joining(","))); + return result; } catch (Exception e) { + logger.setError(e.getMessage()); e.printStackTrace(); - log.error("|获取白名单接口|意外的错误error:{}", e.getMessage()); + log.error("|获取卡号白名单接口|意外的错误error:{}", e.getMessage()); + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg(e.getMessage()); + return result; + } finally { + saveLogger(logger); } - return null; } + + /** + * 生成白名单需要的卡号格式 + * + * @param serialNumber 序号(1、2、3) + * @param carNumber 卡号(0000000001) + * @param operationType 操作类型(1:添加;0:删除;) + */ + private String generateWhiteCarNumber(String serialNumber, String carNumber, String operationType) { + return String.format("%s|%s|%s", serialNumber, carNumber, operationType); + } + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index eae2620a9..89983ce2d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -1,11 +1,13 @@ package com.bsd.pjcloud.wallet.api.feign; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.feign.annotation.NoToken; -import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; +import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -64,4 +66,8 @@ public interface RemoteWalletService { @GetMapping("/wallet-manage/inner/is-use-door") R innserIsUseDoor(@RequestParam Long userId); + + @NoToken + @GetMapping("/wallet-active/remote/open-card-list") + R> remoteOpenCardList(@RequestParam Long current, @RequestParam Long pageSize); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java index 0de68261b..46a24cbf2 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -9,6 +9,7 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.core.validation.Group; import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; @@ -46,6 +47,22 @@ public class WalletActiveController { private final WalletActiveService walletActiveService; + + /* ************************************* start 远程调用 start ************************************* */ + + @Inner() + @GetMapping("/remote/open-card-list") + @Operation(summary = "远程调用开卡并且绑定用户的列表") + public R> remoteOpenCardList(@RequestParam Long current, @RequestParam Long pageSize) { + Page page = new Page(); + page.setCurrent(current); + page.setSize(pageSize); + WalletActiveDto dto = new WalletActiveDto(); + return R.ok(walletActiveService.openCardList(page, dto)); + } + + /* ************************************* end 远程调用 end ************************************* */ + /* ************************************* start android start ************************************* */ @GetMapping("/ad/open-card-list") @Operation(summary = "android开卡列表") @@ -151,7 +168,7 @@ public class WalletActiveController { @PutMapping @PreAuthorize("@pms.hasPermission('wallet_walletActive_edit')") public R updateById(@RequestBody WalletActiveEntity walletActive) { - return R.ok(walletActiveService.updateById(walletActive)); + return R.ok(walletActiveService.edit(walletActive)); } @Operation(summary = "通过id删除钱包开卡", description = "通过id删除钱包开卡") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java index c964a0d16..90715edf5 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java @@ -12,6 +12,7 @@ import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; import com.github.yulichang.query.MPJLambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; @Mapper public interface WalletActiveMapper extends PjcloudBaseMapper { @@ -56,4 +57,6 @@ public interface WalletActiveMapper extends PjcloudBaseMapper openCardList(Page page, @Param("dto") WalletActiveDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java index 8f83c7791..811e5f68c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java @@ -67,4 +67,14 @@ public interface WalletActiveService extends IService { Page pageJoin(Page page, WalletActiveDto dto); Page scopePageList(Page page, WalletActiveDto dto); + + /** + * 远程调用开卡并且绑定用户的列表 + */ + Page openCardList(Page page, WalletActiveDto dto); + + /** + * 更新 + */ + Long edit(WalletActiveEntity walletActive); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java index 611791588..efeb79b31 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -26,6 +26,7 @@ import com.bsd.pjcloud.wallet.api.entity.mch.MchManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.entity.mch.MchRulePriceConfigEntity; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; @@ -84,7 +85,7 @@ public class WalletActiveServiceImpl extends ServiceImpl openCardList(Page page, WalletActiveDto dto) { + return baseMapper.openCardList(page, dto); + } + + /** + * 更新 + */ + @Override + public Long edit(WalletActiveEntity walletActive) { + // 查询详情 + WalletActiveEntity detail = baseMapper.selectById(walletActive.getId()); + if (ObjectUtil.isEmpty(detail)) { + throw new RuntimeException("饭卡不存在"); + } + if (ObjectUtil.isNotEmpty(walletActive.getCardNumber())) { + if (existWalletCarNumber(walletActive.getCardNumber(), walletActive.getId())) { + throw new RuntimeException("饭卡<" + walletActive.getCardNumber() + ">已存在"); + } + if (ObjectUtil.notEqual(walletActive.getCardNumber(), detail.getCardNumber()) && ObjectUtil.isNotEmpty(detail.getUserId()) && ObjectUtil.isNotEmpty(detail.getWalletId())) { + // 查询钱包 + WalletManageEntity wallet = walletManageService.getWallet(walletActive.getWalletId()); + if (ObjectUtil.isNotEmpty(wallet)) { + WalletManageEntity updateWallet = new WalletManageEntity(); + updateWallet.setId(wallet.getId()); + updateWallet.setCardNumber(walletActive.getCardNumber()); + walletManageService.updateById(updateWallet); + } + } + } + baseMapper.updateById(walletActive); + return walletActive.getId(); + } + + private boolean existWalletCarNumber(String cardNumber, Long id) { + Long count = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(cardNumber), WalletActiveEntity::getCardNumber, cardNumber) + .ne(ObjectUtil.isNotEmpty(id), WalletActiveEntity::getId, id) + ); + if (ObjectUtil.isNotEmpty(id)) { + return count >= 1; + } + return count > 0; + } + private WalletActiveServiceImpl getSelf() { return SpringUtil.getBean(getClass()); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml index 8f6ff1f0d..7ab39dabc 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletActiveMapper.xml @@ -2,25 +2,47 @@ + + select a.id, + a.user_id, + a.wallet_id, + a.wallet_type_id, + a.dept_id, + a.merchant_id, + a.card_number, + a.card_sort, + a.is_active_hardware, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id + - - - - - - - - - - - - - - - - + + + + + + - \ No newline at end of file