From 4a30f3c9a03fbda43801c485e2916fe683557723 Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Thu, 4 Dec 2025 16:23:32 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E7=BB=AD=E8=B4=B9=E6=A1=A3?= =?UTF-8?q?=E5=8F=A3=E5=8F=8A=E8=B4=AD=E4=B9=B0=E4=BC=9A=E5=91=98=E5=8A=9F?= =?UTF-8?q?=E8=83=BDBUG=E4=BF=AE=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/xkt/mapper/StoreMapper.java | 18 ++++++++++- .../service/impl/StoreMemberServiceImpl.java | 30 ++++++++++++------- .../xkt/service/impl/StoreServiceImpl.java | 11 +++---- xkt/src/main/resources/mapper/StoreMapper.xml | 8 +++++ 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMapper.java index 0b51ba7d6..9fe54b28b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreMapper.java @@ -39,9 +39,25 @@ public interface StoreMapper extends BaseMapper { /** * 获取档口访问榜 过去3个月到现在 + * * @param threeMonthAgo 三个月前 - * @param yesterday 昨天 + * @param yesterday 昨天 * @return */ List selectTop10AppViewCount(@Param("threeMonthAgo") Date threeMonthAgo, @Param("yesterday") Date yesterday); + + /** + * 将serviceAmount置为null + * + * @param storeId 档口ID + */ + void updateServiceAmountNull(@Param("storeId") Long storeId); + + /** + * 将memberAmount置为null + * + * @param storeId 档口ID + */ + void updateMemberAmountNull(@Param("storeId") Long storeId); + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java index 9797ef260..8f800979f 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreMemberServiceImpl.java @@ -161,14 +161,24 @@ public class StoreMemberServiceImpl implements IStoreMemberService { .in(StoreMember::getMemberStatus, Arrays.asList(StoreMemberStatus.WAIT_AUDIT.getValue(), StoreMemberStatus.BOUGHT_WAIT_AUDIT.getValue())))) .orElseThrow(() -> new ServiceException("购买会员记录不存在!", HttpStatus.ERROR)); if (Objects.equals(auditDTO.getMemberStatus(), StoreMemberStatus.AUDIT_PASS.getValue())) { - // 若结束时间在当前时间之前,则直接设置为当前时间 - Date startTime = ObjectUtils.isEmpty(storeMember.getEndTime()) ? new Date() - : (storeMember.getEndTime().after(new Date()) ? storeMember.getEndTime() : new Date()); - // 直接增加一年 - Date endTime = Date.from(startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() - .plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); - storeMember.setStartTime(startTime); - storeMember.setEndTime(endTime); + // 未购买待审核 + if (Objects.equals(storeMember.getMemberStatus(), StoreMemberStatus.WAIT_AUDIT.getValue())) { + // 若结束时间在当前时间之前,则直接设置为当前时间 + Date startTime = ObjectUtils.isEmpty(storeMember.getEndTime()) ? new Date() + : (storeMember.getEndTime().after(new Date()) ? storeMember.getEndTime() : new Date()); + // 直接增加一年 + Date endTime = Date.from(startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() + .plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + storeMember.setStartTime(startTime); + storeMember.setEndTime(endTime); + // 已购买待审核(续费状态) + } else if (Objects.equals(storeMember.getMemberStatus(), StoreMemberStatus.BOUGHT_WAIT_AUDIT.getValue())) { + Date oldEndTime = ObjectUtils.isEmpty(storeMember.getEndTime()) ? new Date() : storeMember.getEndTime(); + // 直接增加一年 + Date endTime = Date.from(oldEndTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() + .plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + storeMember.setEndTime(endTime); + } storeMember.setUpdateBy(SecurityUtils.getUsername()); storeMember.setMemberStatus(StoreMemberStatus.AUDIT_PASS.getValue()); // 最低等级会员:实力质造 @@ -178,10 +188,10 @@ public class StoreMemberServiceImpl implements IStoreMemberService { Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper() .eq(Store::getId, storeMember.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); - // 将档口购买优惠金额置为null - store.setMemberAmount(null); store.setStoreWeight(ObjectUtils.defaultIfNull(store.getStoreWeight(), 0) + 1); this.storeMapper.updateById(store); + // 将档口购买金额置为null + this.storeMapper.updateMemberAmountNull(store.getId()); // 将档口会员信息添加到 redis 中 redisCache.setCacheObject(CacheConstants.STORE_MEMBER + storeMember.getStoreId(), storeMember); // 新增订购成功的消息通知 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java index 31b6692b4..72c3c5473 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java @@ -536,8 +536,6 @@ public class StoreServiceImpl implements IStoreService { if (!Objects.equals(serviceAmount, buyAnnualDTO.getPayPrice())) { throw new ServiceException("付费金额与核定金额不一致!请联系平台客服", HttpStatus.ERROR); } - // 年费续费成功之后,就将优惠金额清空,下一年再有优惠就需重新设置 - store.setServiceAmount(null); // 如果是使用版 storeStatus 为3,更新为正式版 storeStatus 为4 if (Objects.equals(store.getStoreStatus(), StoreStatus.TRIAL_PERIOD.getValue())) { store.setStoreStatus(StoreStatus.FORMAL_USE.getValue()); @@ -547,6 +545,8 @@ public class StoreServiceImpl implements IStoreService { store.setServiceEndTime(Date.from(serviceEndTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() .plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant())); int count = this.storeMapper.updateById(store); + // 年费续费成功之后,就将优惠金额清空,下一年再有优惠就需重新设置 + this.storeMapper.updateServiceAmountNull(store.getId()); // 更新redis 中的 store信息 this.redisCache.setCacheObject(CacheConstants.STORE_KEY + store.getId(), store); // 新增续缴年费成功的消息通知 @@ -571,8 +571,6 @@ public class StoreServiceImpl implements IStoreService { throw new ServiceException("当前用户非超级管理员,无权限操作!", HttpStatus.ERROR); } Store store = Optional.ofNullable(storeMapper.selectById(storeId)).orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); - // 年费续费成功之后,就将优惠金额清空,下一年再有优惠就需重新设置 - store.setServiceAmount(null); // 如果是使用版 storeStatus 为3,更新为正式版 storeStatus 为4 if (Objects.equals(store.getStoreStatus(), StoreStatus.TRIAL_PERIOD.getValue())) { store.setStoreStatus(StoreStatus.FORMAL_USE.getValue()); @@ -583,7 +581,10 @@ public class StoreServiceImpl implements IStoreService { .plusYears(1).atStartOfDay(ZoneId.systemDefault()).toInstant())); // 更新redis 中的 store信息 this.redisCache.setCacheObject(CacheConstants.STORE_KEY + store.getId(), store); - return this.storeMapper.updateById(store); + int count = this.storeMapper.updateById(store); + // 年费续费成功之后,就将优惠金额清空,下一年再有优惠就需重新设置 + this.storeMapper.updateServiceAmountNull(store.getId()); + return count; } /** diff --git a/xkt/src/main/resources/mapper/StoreMapper.xml b/xkt/src/main/resources/mapper/StoreMapper.xml index 44ddf30ff..c68cff298 100644 --- a/xkt/src/main/resources/mapper/StoreMapper.xml +++ b/xkt/src/main/resources/mapper/StoreMapper.xml @@ -61,5 +61,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LIMIT 10 + + UPDATE store SET service_amount = null WHERE id = #{storeId} + + + + UPDATE store SET member_amount = null WHERE id = #{storeId} + + \ No newline at end of file