From fbed0598a846d327fd69260bab7555b7d1eb4628 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 19 May 2025 09:51:31 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=E9=A3=9F=E5=A0=82=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java | 2 ++ .../src/main/resources/mapper/order/HardCarMapper.xml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java index eb65e6775..e246c21de 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java @@ -19,4 +19,6 @@ public class HardCarDto extends HardCarEntity { private String hourType; + private Long merchantId; + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 048463a03..35e52ed68 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -138,6 +138,9 @@ and o.hour_type = #{dto.hourType} + + and o.merchant_id = #{dto.merchantId} + group by a.product_id order by SUM(a.product_count) desc From 80e859781b2bfc2705bedc09092f87a41d4c884b Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 19 May 2025 17:42:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=E7=A6=BB=E8=81=8C=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=BD=AC=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_wallet.sql | 1 + .../controller/order/HardOrderController.java | 2 +- .../order/HardOrderTotalController.java | 4 +- .../service/impl/spu/HardSpuServiceImpl.java | 3 +- .../api/feign/RemoteUserTransaction.java | 17 +++++ ...mework.cloud.openfeign.FeignClient.imports | 1 + .../SysUserTransactionController.java | 7 ++ .../mapper/SysUserTransactionMapper.java | 4 ++ .../service/SysUserTransactionService.java | 5 ++ .../impl/SysUserTransactionServiceImpl.java | 66 +++++++++++++++++++ .../mapper/SysUserTransactionMapper.xml | 24 ++++++- .../pjcloud/daemon/quartz/task/UmpsTask.java | 35 ++++++++++ .../rule/WalletRuleTransationTypeEnum.java | 35 ++++++++++ .../rule/WalletRuleTransactionEntity.java | 6 ++ .../RemoteWalletRuleTransactionService.java | 21 ++++++ ...mework.cloud.openfeign.FeignClient.imports | 1 + .../controller/WalletManageController.java | 3 +- .../WalletTransactionController.java | 3 +- .../rule/WalletRuleTransactionController.java | 12 ++++ .../service/WalletRuleTransactionService.java | 5 ++ .../WalletRuleTransactionServiceImpl.java | 53 +++++++++++++++ .../rule/WalletRuleTransactionMapper.xml | 6 +- 22 files changed, 303 insertions(+), 11 deletions(-) create mode 100644 pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserTransaction.java create mode 100644 pjcloud-visual/pjcloud-daemon-quartz/src/main/java/com/bsd/pjcloud/daemon/quartz/task/UmpsTask.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/rule/WalletRuleTransationTypeEnum.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletRuleTransactionService.java diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index 90511ebe5..b8bcbc595 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -259,6 +259,7 @@ DROP TABLE IF EXISTS wallet_rule_transaction; CREATE TABLE wallet_rule_transaction ( id BIGINT(19) not null comment '主键', + biz_type VARCHAR(32) default null comment '转账类型', source_wallet_id BIGINT(19) not null comment '源钱包id', target_wallet_id BIGINT(19) not null comment '目标钱包id', source_wallet_balance int not null comment '源钱包余额', diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index f2a7e616b..ac7c979e2 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -143,7 +143,7 @@ public class HardOrderController { // 判断是否为合作超市管理员工 if (!hardManagerService.isSuperMarketAdmin(user)) return R.ok(new Page()); // 查询用户属于的商户 - MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.CANTEEN).getData(); + MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.SUPERMARKET).getData(); if (ObjectUtil.isEmpty(mch)) throw new RuntimeException("该用户下不存在商户"); // 查询商户和下面的子商户 List mchDtoIds = new java.util.ArrayList<>(List.of(mch.getId())); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java index 7d55dd36b..a94a150da 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java @@ -75,7 +75,7 @@ public class HardOrderTotalController { // 判断是否为合作超市管理员工 if (!hardManagerService.isSuperMarketAdmin(user)) return R.ok(new Page()); // 查询用户属于的商户 - MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.CANTEEN).getData(); + MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.SUPERMARKET).getData(); if (ObjectUtil.isEmpty(mch)) throw new RuntimeException("该用户下不存在商户"); List mchDtoIds = new ArrayList<>(List.of(mch.getId())); // 查询商户和下面的子商户 @@ -97,7 +97,7 @@ public class HardOrderTotalController { // 判断是否为合作超市管理员工 if (!hardManagerService.isSuperMarketAdmin(user)) return R.ok(new Page()); // 查询用户属于的商户 - MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.CANTEEN).getData(); + MchManageVo mch = mchService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.SUPERMARKET).getData(); if (ObjectUtil.isEmpty(mch)) throw new RuntimeException("该用户下不存在商户"); List mchDtoIds = new ArrayList<>(List.of(mch.getId())); // 查询商户和下面的子商户 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java index 1621aa9e4..d1bb409bf 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java @@ -115,7 +115,8 @@ public class HardSpuServiceImpl extends ServiceImpl { Page scopePageJoin(Page page, @Param("dto") SysUserTransactionDto dto, DataScope dataScope); SysUserTransactionVo join(@Param("id") Long userTransactionId); + + List lastTransationList(@Param("dateStr") String dateStr); } \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserTransactionService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserTransactionService.java index 28988cb2d..e9d2c0bb6 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserTransactionService.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserTransactionService.java @@ -38,4 +38,9 @@ public interface SysUserTransactionService extends IService list = baseMapper.lastTransationList(dateStr); + if (ObjectUtil.isEmpty(list)) { + log.info("|{}|离职退休自动转到消费钱包,没有需要处理的数据", TAG); + return; + } + // 用户转账逻辑,把饭卡钱包的钱自动转入到消费钱包 + + // 离职人员部门id + List leaveDeptIds = List.of(ParamResolver.getStr("USER_TRANSACTION_LEAVE"), ParamResolver.getStr("USER_TRANSACTION_TRANSFER")); + List updateList = new ArrayList<>(); + for (SysUserTransactionEntity v : list) { + try { + // 判断用户是否有"自动创建钱包权限" + SysUser user = sysUserService.getOne(Wrappers.query().lambda().eq(SysUser::getUserId, v.getUserId())); + if (ObjectUtil.isEmpty(user)) { + log.error("|{}|离职退休自动转到消费钱包,用户<{}>不存在", TAG, v.getUserId()); + continue; + } + UserInfo userInfo = sysUserService.findUserInfo(user); + String[] roleCodes = userInfo.getRoleCodes(); + if (!ArrayUtil.contains(roleCodes, CommonRoleConstant.AUTO_CREATE_WALLET)) { + log.error("|{}|离职退休自动转到消费钱包,用户<{}>没有自动创建钱包权限", TAG, v.getUserId()); + continue; + } + // 判断用户现在是否在退休或者离职部门 + if (!ArrayUtil.contains(leaveDeptIds.toArray(), String.valueOf(user.getDeptId()))) { + log.error("|{}|离职退休自动转到消费钱包,用户<{}>不是离职或者退休部门", TAG, v.getUserId()); + continue; + } + // 执行转账逻辑 + Boolean success = walletRuleTransactionService.userAutoWalletTransation(v.getUserId()).getData(); + if (success) { + SysUserTransactionEntity updateObj = new SysUserTransactionEntity(); + updateObj.setId(v.getId()); + updateObj.setWalletTransactionTime(LocalDateTime.now()); + updateList.add(updateObj); + } + } catch (Exception e) { + log.error("|{}|离职退休自动转到消费钱包,用户<{}>自动转账失败,error:{}", TAG, v.getUserId(), e.getMessage()); + e.printStackTrace(); + } + } + if (ObjectUtil.isNotEmpty(updateList)) { + baseMapper.updateById(updateList); + } + } } \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml index 568235e56..9e22075e8 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml @@ -73,7 +73,8 @@ and a.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} - and a.wallet_transaction_time between #{dto.walletTransactionTimeList[0]} and #{dto.walletTransactionTimeList[1]} + and a.wallet_transaction_time between #{dto.walletTransactionTimeList[0]} and + #{dto.walletTransactionTimeList[1]} and a.create_time between #{dto.processTimeList[0]} and #{dto.processTimeList[1]} @@ -97,7 +98,7 @@ + + \ No newline at end of file diff --git a/pjcloud-visual/pjcloud-daemon-quartz/src/main/java/com/bsd/pjcloud/daemon/quartz/task/UmpsTask.java b/pjcloud-visual/pjcloud-daemon-quartz/src/main/java/com/bsd/pjcloud/daemon/quartz/task/UmpsTask.java new file mode 100644 index 000000000..22cc4a5ef --- /dev/null +++ b/pjcloud-visual/pjcloud-daemon-quartz/src/main/java/com/bsd/pjcloud/daemon/quartz/task/UmpsTask.java @@ -0,0 +1,35 @@ +package com.bsd.pjcloud.daemon.quartz.task; + + +import com.bsd.pjcloud.admin.api.feign.RemoteUserTransaction; +import com.bsd.pjcloud.daemon.quartz.constants.PjcloudQuartzEnum; +import lombok.AllArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +@Slf4j +@Component("umps") +@AllArgsConstructor +public class UmpsTask { + + private final RemoteUserTransaction remoteUserTransaction; + + /** + * 离职退休自动转到消费钱包 + */ + @SneakyThrows + public String userWalletTransaction(String para) { + log.info("离职退休自动转到消费钱包:{},输入参数{}", LocalDateTime.now(), para); + try { + remoteUserTransaction.walletTransationCallback(para); + log.info("离职退休自动转到消费钱包成功:{}", LocalDateTime.now()); + } catch (Exception e) { + log.error("离职退休自动转到消费钱包错误error:{},时间:{}", e.getMessage(), LocalDateTime.now(), e); + } + return PjcloudQuartzEnum.JOB_LOG_STATUS_SUCCESS.getType(); + } + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/rule/WalletRuleTransationTypeEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/rule/WalletRuleTransationTypeEnum.java new file mode 100644 index 000000000..3501b0a3a --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/rule/WalletRuleTransationTypeEnum.java @@ -0,0 +1,35 @@ +package com.bsd.pjcloud.wallet.api.constant.rule; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 用户转账类型 + */ +@Getter +@AllArgsConstructor +public enum WalletRuleTransationTypeEnum { + + USER_CHANGE("10", "用户手动转账"), + LEAVE_AUTO("20", "离职退休自动转账"), + ; + + private final String code; + private final String desc; + + public static WalletRuleTransationTypeEnum valueOfByType(String code) { + return Arrays.stream(WalletRuleTransationTypeEnum.values()) + .filter(v -> ObjectUtil.equal(v.getCode(), code)) + .findFirst().get(); + } + + public static WalletRuleTransationTypeEnum descOf(String description) { + return Arrays.stream(WalletRuleTransationTypeEnum.values()) + .filter(v -> ObjectUtil.equal(v.getDesc(), description)) + .findFirst().get(); + } + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java index 3f4f83dbf..2e0e899bb 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/rule/WalletRuleTransactionEntity.java @@ -27,6 +27,12 @@ public class WalletRuleTransactionEntity extends Model userAutoWalletTransation(@RequestParam Long userId); + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports b/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports index c093ca935..340953b8b 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports @@ -2,6 +2,7 @@ com.bsd.pjcloud.wallet.api.feign.RemoteWalletService com.bsd.pjcloud.wallet.api.feign.RemoteMchRuleJoinService com.bsd.pjcloud.wallet.api.feign.RemoteCodeUseService com.bsd.pjcloud.wallet.api.feign.RemoteWalletRechargeService +com.bsd.pjcloud.wallet.api.feign.RemoteWalletRuleTransactionService com.bsd.pjcloud.wallet.api.feign.RemoteMchService com.bsd.pjcloud.wallet.api.feign.RemoteWalletSettingService com.bsd.pjcloud.wallet.api.feign.RemoteWalletThirdZyService diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index 757b02e1b..ec4fc31d3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -160,8 +160,7 @@ public class WalletManageController { PjcloudUser user = SecurityUtils.getUser(); WalletManageDto dto = new WalletManageDto(); dto.setUserId(user.getId()); - DataScope dataScope = new DataScope(); - dataScope.func(DataScopeFuncEnum.ALL); + DataScope dataScope = null; return R.ok(walletManageService.scopePageList(page, dto, dataScope)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index 59ba83ba3..f07c6b76d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -79,8 +79,7 @@ public class WalletTransactionController { public R appGetAll(@ParameterObject Page page, @ParameterObject WalletTransactionDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); - DataScope dataScope = new DataScope(); - dataScope.func(DataScopeFuncEnum.ALL); + DataScope dataScope = null; return R.ok(walletTransactionService.scopePageList(page, dto, dataScope)); } /* ************************************* end app end ************************************* */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java index 16dcb7f0d..0ab63623c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/rule/WalletRuleTransactionController.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.DataScopeFuncEnum; 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.constant.WalletTypeEnum; @@ -50,6 +51,17 @@ public class WalletRuleTransactionController { private final WalletRuleTransactionService walletRuleTransactionService; private final WalletTypeService walletTypeService; + /* ************************************* start 远程调用 start ************************************* */ + + @Inner + @Operation(summary = "离职退休自动转到消费钱包", description = "离职退休自动转到消费钱包") + @PostMapping("/inner/auto-transation") + public R userAutoWalletTransation(@RequestParam Long userId) { + return R.ok(walletRuleTransactionService.userAutoWalletTransation(userId)); + } + + /* ************************************* end 远程调用 end ************************************* */ + /* ************************************* start app start ************************************* */ @Operation(summary = "app转账", description = "app转账") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java index 354858a87..dc5298f9f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRuleTransactionService.java @@ -16,6 +16,11 @@ public interface WalletRuleTransactionService extends IService scopePageList(Page page, WalletRuleTransactionDto dto, DataScope dataScope); + /** + * 离职退休自动转到消费钱包 + */ + Boolean userAutoWalletTransation(Long userId); + /** * 转账 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java index 82f250e76..0d22c7d67 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/rule/WalletRuleTransactionServiceImpl.java @@ -11,8 +11,10 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.constant.rule.WalletRuleTransationTypeEnum; import com.bsd.pjcloud.wallet.api.dto.rule.WalletRuleTransactionDto; import com.bsd.pjcloud.wallet.api.dto.rule.WalletRuleTransferAccountsDto; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.rule.WalletRuleTransactionEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.rule.WalletRuleJoinUserConfigVo; @@ -41,6 +43,8 @@ import java.util.List; @Service public class WalletRuleTransactionServiceImpl extends ServiceImpl implements WalletRuleTransactionService { + static private final String TAG = "钱包转账记录"; + private final WalletRuleJoinService walletRuleJoinService; private final WalletManageService walletManageService; private final WalletTransactionService walletTransactionService; @@ -57,6 +61,54 @@ public class WalletRuleTransactionServiceImpl extends ServiceImpl userConfig.getMaxTransferBalance()) { throw new RuntimeException("已经超过最大转账金额限制"); } + entity.setBizType(WalletRuleTransationTypeEnum.USER_CHANGE.getCode()); entity.setSourceWalletId(userConfig.getSourceWalletId()); entity.setTargetWalletId(userConfig.getTargetWalletId()); entity.setSourceWalletBalance(userConfig.getSourceWalletBalance()); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml index c09fe7df2..b4749d032 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml @@ -23,6 +23,7 @@ select a.id, + a.biz_type, a.source_wallet_id, a.target_wallet_id, a.source_wallet_balance, @@ -42,6 +43,9 @@ a.del_flag = 0 + + and a.biz_type = #{dto.bizType} + and a.source_wallet_id = #{dto.sourceWalletId} @@ -68,7 +72,7 @@ targetWalletType.name as targetWalletTypeName, targetWalletType.unique_code as targetWalletTypeCode from wallet_rule_transaction a - left join wallet_transaction t on t.biz_id = a.id and biz_type = '6' + left join wallet_transaction t on t.biz_id = a.id and t.biz_type = '6' left join wallet_manage sourceWallet on sourceWallet.id = a.source_wallet_id left join wallet_type sourceWalletType on sourceWalletType.id = sourceWallet.wallet_type_id left join wallet_manage targetWallet on targetWallet.id = a.target_wallet_id From d7615c1bdee44674279b22dc12078a9b4f909151 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 19 May 2025 19:02:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=E8=BD=AC=E8=B4=A6=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/SysUserTransactionMapper.xml | 1 - .../main/resources/mapper/rule/WalletRuleTransactionMapper.xml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml index 9e22075e8..e11e33308 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml @@ -123,7 +123,6 @@ AND t2.user_id = t1.user_id AND t2.is_wallet_transaction = '1' AND t2.process_status = '2' - AND t2.wallet_transaction_time is null ORDER BY t2.create_time DESC LIMIT 1) and DATE_FORMAT(t1.create_time, '%Y-%m-%d') <= #{dateStr} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml index b4749d032..0936e2be4 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/rule/WalletRuleTransactionMapper.xml @@ -100,5 +100,6 @@ group by a.id + order by a.create_time desc,a.id desc \ No newline at end of file From 73efbfc4c9cee2fcff2a7255504ac056dd45ad4a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 20 May 2025 10:17:42 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=E5=85=85=E5=80=BC=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WalletRechargeApplyController.java | 3 +- .../service/WalletRechargeApplyService.java | 6 ++++ .../WalletRechargeApplyServiceImpl.java | 30 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java index 6a48a2c5b..3caa85ad5 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java @@ -117,7 +117,8 @@ public class WalletRechargeApplyController { @DeleteMapping @PreAuthorize("@pms.hasPermission('wallet_walletRechargeApply_del')") public R removeById(@RequestBody Long[] ids) { - return R.ok(walletRechargeApplyService.removeBatchByIds(CollUtil.toList(ids))); + walletRechargeApplyService.delByIds(CollUtil.toList(ids)); + return R.ok(); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java index dabffccd0..3923c7493 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletRechargeApplyService.java @@ -12,6 +12,7 @@ import com.bsd.pjcloud.wallet.api.vo.recharge.WalletRechargeApplyVo; import com.bsd.pjcloud.wallet.api.vo.recharge.excel.WalletRechargeByApplyExcelVo; import org.springframework.validation.BindingResult; +import java.util.ArrayList; import java.util.List; public interface WalletRechargeApplyService extends IService { @@ -20,6 +21,11 @@ public interface WalletRechargeApplyService extends IService list); + Page pageJoin(Page page, WalletRechargeApplyDto dto); Page scopePageList(Page page, WalletRechargeApplyDto dto); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java index 3ae2f4f98..ff59b5813 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargeApplyServiceImpl.java @@ -29,6 +29,7 @@ import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; import com.bsd.pjcloud.flow.task.dto.TaskDto; +import com.bsd.pjcloud.flow.task.dto.TaskParamDto; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletBizRechargeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; @@ -37,6 +38,7 @@ import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto; import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeImportDto; import com.bsd.pjcloud.wallet.api.dto.recharge.excel.WalletRechargeExcelDto; +import com.bsd.pjcloud.wallet.api.entity.WalletFreezeEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity; @@ -118,6 +120,34 @@ public class WalletRechargeApplyServiceImpl extends ServiceImpl list) { + if (ObjectUtil.isEmpty(list)) return; + for (Long v : list) { + // 只有未审批和审核中能删除 + WalletRechargeApplyEntity detail = baseMapper.selectById(v); + if (ObjectUtil.isEmpty(detail)) continue; + if (ObjectUtil.isNotEmpty(detail.getProcessStatus()) && ObjectUtil.notEqual(detail.getProcessStatus(), TaskCheckStatusEnum.PADDING.getCode())) { + UserInfo userInfo = userService.getByUserId(detail.getUserId()).getData(); + throw new RuntimeException("用户<" + userInfo.getSysUser().getName() + ">发起的审批不能删除"); + } + // 如果是审批中就取消审批 + if (ObjectUtil.equals(detail.getProcessStatus(), TaskCheckStatusEnum.PADDING.getCode())) { + TaskParamDto dto = new TaskParamDto(); + dto.setProcessInstanceIdList(List.of(detail.getProcessId())); + flowEngineService.stopProcessInstance(dto).getData(); + } + // 删除申请记录 + baseMapper.deleteById(v); + // 删除申请记录条目 + rechargeImportService.remove(new LambdaQueryWrapper().eq(WalletRechargeImportEntity::getApplyId, v)); + } + } + @Override public Page pageJoin(Page page, WalletRechargeApplyDto dto) { Page list = baseMapper.pageJoin(page, dto);