diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java index a4c483d4f..15086c6d4 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java @@ -141,6 +141,9 @@ public interface CacheConstants { String WALLET_RULE_PRICE_CONFIG_DETAIL = "wallet:detail:rule_price_config"; + // 用户消费机的额外价格 + String WALLET_USER_DISCOUNTS_LIST = "wallet:detail:user_discounts_list"; + /* ************************************* end 钱包相关 end ************************************* */ /* ************************************* start 第三方对接相关 start ************************************* */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index d19a3954d..b01f5da88 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -461,7 +461,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl usrList = remoteUserService.getUserDeptByIds(List.of(detail.getUserId())).getData(); + List usrList = remoteUserService.getInnerUserDeptByIds(List.of(detail.getUserId())).getData(); if (ObjectUtil.isNotEmpty(usrList)) { DataUtil.convertUserDept(detail, usrList.get(0)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index caf10e3b3..bc316ef56 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -444,9 +444,11 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { } } // 商户 - MchManageVo mchDetail = remoteMchService.getById(totalList.getMerchantId()).getData(); - if (ObjectUtil.isNotEmpty(mchDetail)) { - WalletDataUtil.convertMch(totalList, mchDetail); + if (ObjectUtil.isNotEmpty(totalList.getMerchantId())) { + MchManageVo mchDetail = remoteMchService.getById(totalList.getMerchantId()).getData(); + if (ObjectUtil.isNotEmpty(mchDetail)) { + WalletDataUtil.convertMch(totalList, mchDetail); + } } return totalList; } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java index e3069f1b6..651949d25 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java @@ -90,6 +90,10 @@ public interface RemoteUserService { @PostMapping("/user/inner/list") R> getInnerUserById(@RequestBody List userIds); + @NoToken + @PostMapping("/user/inner/user-dept") + R> getInnerUserDeptByIds(@RequestBody List userIds); + @PostMapping("/user/user-dept") R> getUserDeptByIds(@RequestBody List userIds); @@ -197,6 +201,7 @@ public interface RemoteUserService { /** * 根据角色编码查询用户列表 + * * @param code * @return */ diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index 91034a5af..5c355d1dc 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -469,6 +469,13 @@ public class SysUserController { return R.ok(userService.list(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds))); } + @Inner + @PostMapping("/inner/user-dept") + public R> getInnerUserDeptByIds(@RequestBody List userIds) { + return R.ok(userService.getUserDeptByIds(userIds)); + } + + @PostMapping("/user-dept") public R> getUserDeptByIds(@RequestBody List userIds) { return R.ok(userService.getUserDeptByIds(userIds)); diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index 344ca1614..7c5055ca0 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -75,10 +75,15 @@ import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.PictureData; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheEvict; import org.springframework.context.annotation.Lazy; +import org.springframework.data.redis.core.Cursor; +import org.springframework.data.redis.core.RedisCallback; +import org.springframework.data.redis.core.ScanOptions; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.mock.web.MockMultipartFile; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @@ -90,6 +95,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; +import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -116,6 +122,8 @@ public class SysUserServiceImpl extends ServiceImpl impl private final SysDeptService sysDeptService; + private StringRedisTemplate stringRedisTemplate; + @Lazy private final SysUserFaceService sysUserFaceService; private final SysUserFaceMapper sysUserFaceMapper; @@ -372,6 +380,7 @@ public class SysUserServiceImpl extends ServiceImpl impl sysUser.setNickname(userDto.getNickname()); sysUser.setName(userDto.getName()); sysUser.setEmail(userDto.getEmail()); + deleteDiscountsCacheByUserId(userDto.getUserId()); return R.ok(this.updateById(sysUser)); } @@ -425,6 +434,8 @@ public class SysUserServiceImpl extends ServiceImpl impl remoteWalletService.createWallet(userDto.getUserId()); remoteWalletService.userChange(userDto.getUserId(), Boolean.FALSE); }); + + deleteDiscountsCacheByUserId(userDto.getUserId()); return Boolean.TRUE; } @@ -993,6 +1004,7 @@ public class SysUserServiceImpl extends ServiceImpl impl if (isConsent) { // 创建用户默认钱包 remoteWalletService.createWallet(detail.getUserId()); + deleteDiscountsCacheByUserId(detail.getUserId()); } } catch (Exception e) { e.printStackTrace(); @@ -1056,4 +1068,23 @@ public class SysUserServiceImpl extends ServiceImpl impl } return count > 0; } + + public void deleteDiscountsCacheByUserId(Long userId) { + if (ObjectUtil.isEmpty(userId)) return; + String pattern = CacheConstants.WALLET_USER_DISCOUNTS_LIST + "::" + userId + ":*"; + Set keys = new HashSet<>(); + stringRedisTemplate.execute((RedisCallback) connection -> { + Cursor cursor = connection.scan( + ScanOptions.scanOptions().match(pattern).count(1000).build() + ); + while (cursor.hasNext()) { + keys.add(new String(cursor.next(), StandardCharsets.UTF_8)); + } + return null; + }); + if (!keys.isEmpty()) { + stringRedisTemplate.delete(keys); + } + } + } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletSettingController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletSettingController.java index dba38ef99..0cb940b31 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletSettingController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletSettingController.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.wallet.controller; +import com.bsd.pjcloud.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; @@ -8,6 +9,7 @@ import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.api.vo.WalletXfjDiscounts; import com.bsd.pjcloud.wallet.service.WalletSettingService; import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import org.springframework.cache.annotation.Cacheable; import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; @@ -56,7 +58,14 @@ public class WalletSettingController { /* ************************************* end app end ************************************* */ /* ************************************* start android start ************************************* */ + @GetMapping("/ad/get-discounts-list") + @Cacheable( + value = CacheConstants.WALLET_USER_DISCOUNTS_LIST, + key = "#userId + ':' + #hardId", + condition = "#userId != null && #hardId != null", + unless = "#result == null || #result.data == null" + ) public R> androidGetDiscountsList(@RequestParam String hardId, @RequestParam Long userId) { return R.ok(walletSettingService.androidGetDiscountsList(hardId, userId)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java index f2cddc2c0..78de60a5f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletSettingServiceImpl.java @@ -86,6 +86,7 @@ public class WalletSettingServiceImpl extends ServiceImpl ObjectUtil.isNotEmpty(item.getEnable()) && ObjectUtil.equals(YesNoEnum.YES.getCode(), item.getEnable())).toList(); if (ObjectUtil.isNotEmpty(list)) { discountsList.addAll( list.stream().map(item -> {