From 408005840082972e1422ec1c5fe49d72d2b73038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 7 Nov 2025 15:38:44 +0800 Subject: [PATCH 01/26] =?UTF-8?q?=E5=88=86=E5=BA=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/account/service/impl/ShopConfigServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java index 967a826a1..69850a7ed 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java @@ -63,7 +63,8 @@ public class ShopConfigServiceImpl extends ServiceImpl extistList; if (!shopIdList.isEmpty()) { extistList = list(new QueryWrapper().in(ShopConfig::getId, shopIdList).select(ShopConfig::getId)).stream().map(ShopConfig::getId).toList(); - shopIdList.stream().filter(id -> !extistList.contains(id)).forEach(id -> { + List finalShopIdList2 = shopIdList; + extistList.stream().filter(id -> !finalShopIdList2.contains(id)).forEach(id -> { save(new ShopConfig().setId(id).setMainId(mainShopId).setIsEnableDiscount(0).setIsProductSuggest(0)); }); } else { From 5370dfae0ce0c7d14cb81c42f49eae176b83b60e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 7 Nov 2025 15:50:02 +0800 Subject: [PATCH 02/26] =?UTF-8?q?=E5=88=86=E5=BA=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ShopConfigServiceImpl.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java index 69850a7ed..85ae30782 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java @@ -2,6 +2,7 @@ package com.czg.service.account.service.impl; import com.czg.account.dto.ShopConfigDTO; import com.czg.account.entity.ShopConfig; +import com.czg.account.entity.ShopInfo; import com.czg.account.service.ShopConfigService; import com.czg.sa.StpKit; import com.czg.service.RedisService; @@ -20,6 +21,8 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * 店铺配置扩展 @@ -59,19 +62,17 @@ public class ShopConfigServiceImpl extends ServiceImpl(); } // 防止报错 - shopIdList.add(-9999L); - List extistList; - if (!shopIdList.isEmpty()) { - extistList = list(new QueryWrapper().in(ShopConfig::getId, shopIdList).select(ShopConfig::getId)).stream().map(ShopConfig::getId).toList(); - List finalShopIdList2 = shopIdList; - extistList.stream().filter(id -> !finalShopIdList2.contains(id)).forEach(id -> { - save(new ShopConfig().setId(id).setMainId(mainShopId).setIsEnableDiscount(0).setIsProductSuggest(0)); - }); - } else { - extistList = new ArrayList<>(); - } + Set childShopIdList = shopInfoMapper.selectListByQuery(new QueryWrapper().eq(ShopInfo::getMainId, mainShopId) + .select(ShopInfo::getId)).stream().map(ShopInfo::getId).collect(Collectors.toSet()); + childShopIdList.add(mainShopId); + List extistList = new ArrayList<>(list(new QueryWrapper().in(ShopConfig::getId, childShopIdList)).stream().map(ShopConfig::getId).toList()); + extistList.add(mainShopId); + childShopIdList.stream().filter(id -> !extistList.contains(id)).forEach(id -> { + save(new ShopConfig().setId(id).setMainId(id.equals(mainShopId) ? null : mainShopId).setIsEnableDiscount(0).setIsProductSuggest(0)); + }); if (isEnable == 0 && !onyUpValid) { + List finalShopIdList = shopIdList; updateChain().or(or -> { or.eq(ShopConfig::getId, mainShopId); From 57d4f3c8bd6a8a278a423ac038e1a0518f4853a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 7 Nov 2025 15:54:58 +0800 Subject: [PATCH 03/26] =?UTF-8?q?=E5=88=86=E5=BA=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/account/service/impl/ShopConfigServiceImpl.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java index 85ae30782..5b062a397 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopConfigServiceImpl.java @@ -73,19 +73,17 @@ public class ShopConfigServiceImpl extends ServiceImpl finalShopIdList = shopIdList; updateChain().or(or -> { or.eq(ShopConfig::getId, mainShopId); }).or(or -> { - or.in(ShopConfig::getId, finalShopIdList); + or.in(ShopConfig::getId, childShopIdList); }).set(property, 0).update(); }else { if ("all".equals(useShopType)) { - List finalShopIdList1 = shopIdList; updateChain().or(or -> { or.eq(ShopConfig::getId, mainShopId); }).or(or -> { - or.in(ShopConfig::getId, finalShopIdList1); + or.in(ShopConfig::getId, childShopIdList); }).set(property, 1).update(); }else { if (shopIdList.isEmpty()) { From 30ac6b6c8285c76a899e1cc94c40ec0b84fca82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 7 Nov 2025 15:59:57 +0800 Subject: [PATCH 04/26] =?UTF-8?q?=E5=88=86=E5=BA=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/market/service/impl/MkShopRechargeServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopRechargeServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopRechargeServiceImpl.java index 2aa24e135..53a950364 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopRechargeServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopRechargeServiceImpl.java @@ -139,7 +139,7 @@ public class MkShopRechargeServiceImpl extends ServiceImpl Date: Fri, 7 Nov 2025 16:09:33 +0800 Subject: [PATCH 05/26] =?UTF-8?q?=E7=A7=81=E5=9F=9F=E5=BC=95=E6=B5=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkDrainageConfigServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDrainageConfigServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDrainageConfigServiceImpl.java index b78883b50..6ec1d60a9 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDrainageConfigServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDrainageConfigServiceImpl.java @@ -46,7 +46,7 @@ public class MkDrainageConfigServiceImpl extends ServiceImpl Date: Fri, 7 Nov 2025 16:24:18 +0800 Subject: [PATCH 06/26] =?UTF-8?q?=E7=A7=AF=E5=88=86=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/controller/user/UMemberPointsController.java | 2 +- .../service/account/service/impl/MemberPointsServiceImpl.java | 2 +- .../czg/service/order/service/impl/OrderInfoServiceImpl.java | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UMemberPointsController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UMemberPointsController.java index 65fea7dc4..183d5979f 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UMemberPointsController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UMemberPointsController.java @@ -36,7 +36,7 @@ public class UMemberPointsController { */ @GetMapping("pointsBasicSetting") public CzgResult getPointsBasicSetting() { - Long shopId = StpKit.USER.getShopId(0L); + Long shopId = StpKit.USER.getShopId(); PointsBasicSetting entity = pointsBasicSettingService.getById(shopId); PointsBasicSettingDTO data = BeanUtil.copyProperties(entity, PointsBasicSettingDTO.class); return CzgResult.success(data); diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsServiceImpl.java index 2336b662e..cf7828310 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/MemberPointsServiceImpl.java @@ -97,7 +97,7 @@ public class MemberPointsServiceImpl extends ServiceImpl 0); } // 积分校验 - PointsBasicSetting pointSetting = pointsBasicService.getById(shopId); + Long mainShopId = shopInfoService.getMainIdByShopId(shopId); + PointsBasicSetting pointSetting = pointsBasicService.getById(mainShopId); boolean usePointsDeduction = param.getPointsNum() > 0 || param.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0; if (usePointsDeduction) { if (pointSetting == null || !pointSetting.getEnableDeduction().equals(1)) { From 26e2a23832f85e1315b1a6581493fa333e405d25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 7 Nov 2025 16:26:56 +0800 Subject: [PATCH 07/26] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=8F=91=E6=94=BE?= =?UTF-8?q?=E5=88=B8=E5=A4=B1=E8=B4=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkShopCouponRecordServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java index 9200ee1f7..e1f1c6c2a 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopCouponRecordServiceImpl.java @@ -449,7 +449,8 @@ public class MkShopCouponRecordServiceImpl extends ServiceImpl Date: Fri, 7 Nov 2025 16:52:49 +0800 Subject: [PATCH 08/26] =?UTF-8?q?=E7=A7=AF=E5=88=86=E8=BF=94=E7=8E=B0=20?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MkConsumeCashbackServiceImpl.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index 8c27a07dc..9c1153240 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONArray; import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO; -import com.czg.account.entity.ShopConfig; import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; import com.czg.account.service.ShopConfigService; @@ -13,21 +12,20 @@ import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopUserService; import com.czg.constant.TableValueConstant; import com.czg.enums.ShopUserFlowBizEnum; -import com.czg.exception.ApiNotPrintException; import com.czg.market.dto.MkConsumeCashbackDTO; -import com.czg.market.dto.MkConsumeDiscountDTO; -import com.czg.market.entity.*; +import com.czg.market.entity.MkConsumeCashback; +import com.czg.market.entity.MkConsumeCashbackRecord; +import com.czg.market.entity.MkConsumeCashbackStep; import com.czg.market.service.MkConsumeCashbackRecordService; +import com.czg.market.service.MkConsumeCashbackService; import com.czg.market.vo.MkConsumeCashbackVO; import com.czg.order.entity.OrderInfo; import com.czg.order.service.OrderInfoService; import com.czg.service.market.enums.OrderStatusEnums; +import com.czg.service.market.mapper.MkConsumeCashbackMapper; import com.czg.utils.AssertUtil; import com.mybatisflex.core.query.QueryWrapper; -import com.mybatisflex.core.update.UpdateWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; -import com.czg.market.service.MkConsumeCashbackService; -import com.czg.service.market.mapper.MkConsumeCashbackMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -61,6 +59,7 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl Date: Fri, 7 Nov 2025 17:20:28 +0800 Subject: [PATCH 09/26] =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkConsumeCashbackServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index 9c1153240..db346cf31 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -125,7 +125,7 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl 0) { return; } From 84bdfe17424029c229ee829be12651409c557b20 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 7 Nov 2025 17:28:12 +0800 Subject: [PATCH 10/26] =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MkConsumeCashbackServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index db346cf31..c892ea551 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -126,7 +126,9 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl 0) { + log.info("消费返现 new用户校验1, orderId: {}, count: {}", orderId, count); + if (count > 0L) { + log.info("消费返现 new用户校验2, orderId: {}, count: {}", orderId, count); return; } } else if ("vip".equals(config.getApplicableUser()) && shopUser.getIsVip() != 1) { @@ -165,4 +167,11 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl 0) { + System.out.println(1); + } + } } From 237133d72f86d54b4a7a75369d1827ba9a0e5c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 11:24:13 +0800 Subject: [PATCH 11/26] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/service/impl/AuthorizationServiceImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java index 738ad9210..ccd8a4cbc 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java @@ -135,10 +135,13 @@ public class AuthorizationServiceImpl implements AuthorizationService { shopInfo = shopInfoService.getById(user.getId()); } - if (shopInfo == null) { - throw new ApiNotPrintException("商户不存在"); - } +// if (shopInfo == null) { +// throw new ApiNotPrintException("商户不存在"); +// } // 过期时间校验 + if (shopInfo == null) { + shopInfo = new ShopInfo().setId(-1L).setShopName(user.getNickName()).setPhone(user.getPhone()); + } if (shopInfo.getExpireTime() != null) { if ((DateUtil.date().toLocalDateTime().isAfter(shopInfo.getExpireTime()))) { throw new ApiNotPrintException("店铺已到期,请联系区域经理续费"); From b10f9d24fbe371c99ba38a11504e92639fdb9252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 11:43:18 +0800 Subject: [PATCH 12/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/handler/SaAdminCheckRoleHandler.java | 63 +++++++++++++++++++ .../impl/AuthorizationServiceImpl.java | 7 +-- 2 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java new file mode 100644 index 000000000..e6c78fc57 --- /dev/null +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java @@ -0,0 +1,63 @@ +package com.czg.handler; + +import cn.dev33.satoken.annotation.handler.SaAnnotationHandlerInterface; +import cn.hutool.core.util.StrUtil; +import com.czg.annotation.SaAdminCheckRole; +import com.czg.annotation.SaStaffCheckPermission; +import com.czg.sa.StpKit; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** + * 员工权限校验 + * @author Administrator + */ +import cn.dev33.satoken.stp.StpUtil; +import cn.dev33.satoken.annotation.SaMode; +import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaCheckLogin; +import org.springframework.stereotype.Component; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.Method; + +@Component +@Slf4j +public class SaAdminCheckRoleHandler implements SaAnnotationHandlerInterface { + + @Override + public Class getHandlerAnnotationClass() { + return SaAdminCheckRole.class; + } + + @Override + public void checkMethod(SaAdminCheckRole annotation, Method method) { + + if (StpKit.USER.isAdmin()) { + log.debug("[SaAdminCheckRoleHandler] 管理员免校验: userId={}", StpUtil.getLoginId()); + return; + } + + // 3️⃣ 非管理员,执行原本注解校验逻辑 + String[] roles = annotation.value(); + SaMode mode = annotation.mode(); + + if (roles != null && roles.length > 0) { + if (mode == SaMode.AND) { + StpKit.USER.checkRoleAnd(roles); + } else { + // 有一个角色即可 + StpKit.USER.checkRoleOr(roles); + } + } else { + // 如果注解没有指定角色,默认使用注解上 type 的值 + // 你 @SaCheckRole(type = "admin") 默认角色 + String typeRole = "admin"; + StpKit.USER.checkRole(typeRole); + } + + log.debug("[SaAdminCheckRoleHandler] 非管理员执行角色校验: userId={}", StpKit.USER.getLoginId()); + } +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java index ccd8a4cbc..738ad9210 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AuthorizationServiceImpl.java @@ -135,13 +135,10 @@ public class AuthorizationServiceImpl implements AuthorizationService { shopInfo = shopInfoService.getById(user.getId()); } -// if (shopInfo == null) { -// throw new ApiNotPrintException("商户不存在"); -// } - // 过期时间校验 if (shopInfo == null) { - shopInfo = new ShopInfo().setId(-1L).setShopName(user.getNickName()).setPhone(user.getPhone()); + throw new ApiNotPrintException("商户不存在"); } + // 过期时间校验 if (shopInfo.getExpireTime() != null) { if ((DateUtil.date().toLocalDateTime().isAfter(shopInfo.getExpireTime()))) { throw new ApiNotPrintException("店铺已到期,请联系区域经理续费"); From 837d8d0b3a4a9b59e9caa48a71a47482ad78d7f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 11:45:24 +0800 Subject: [PATCH 13/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaAdminCheckPermissionHandler.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java new file mode 100644 index 000000000..afd76f42f --- /dev/null +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java @@ -0,0 +1,47 @@ +package com.czg.handler; + +import cn.dev33.satoken.annotation.handler.SaAnnotationHandlerInterface; +import com.czg.annotation.SaAdminCheckPermission; +import com.czg.sa.StpKit; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import java.lang.reflect.Method; +import cn.dev33.satoken.annotation.SaMode; + +/** + * 员工权限校验 + * @author Administrator + */ +@Component +@Slf4j +public class SaAdminCheckPermissionHandler implements SaAnnotationHandlerInterface { + + @Override + public Class getHandlerAnnotationClass() { + return SaAdminCheckPermission.class; + } + + @Override + public void checkMethod(SaAdminCheckPermission annotation, Method method) { + + // 2️⃣ 如果是管理员,直接放行 + if (StpKit.USER.hasRole("admin")) { + log.debug("[SaAdminCheckPermissionHandler] 管理员免校验权限: userId={}", StpKit.USER.getLoginId()); + return; + } + + // 3️⃣ 非管理员执行权限校验 + String[] permissions = annotation.value(); + SaMode mode = annotation.mode(); + + if (permissions != null && permissions.length > 0) { + if (mode == SaMode.AND) { + StpKit.USER.checkPermissionAnd(permissions); + } else { + StpKit.USER.checkPermissionOr(permissions); + } + } + + log.debug("[SaAdminCheckPermissionHandler] 非管理员执行权限校验: userId={}", StpKit.USER.getLoginId()); + } +} From 4d645859e07d2992a23cb8fad5f941f5bd2b9ee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 11:45:38 +0800 Subject: [PATCH 14/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/handler/SaAdminCheckPermissionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java index afd76f42f..3ca9748cd 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckPermissionHandler.java @@ -25,7 +25,7 @@ public class SaAdminCheckPermissionHandler implements SaAnnotationHandlerInterfa public void checkMethod(SaAdminCheckPermission annotation, Method method) { // 2️⃣ 如果是管理员,直接放行 - if (StpKit.USER.hasRole("admin")) { + if (StpKit.USER.isAdmin()) { log.debug("[SaAdminCheckPermissionHandler] 管理员免校验权限: userId={}", StpKit.USER.getLoginId()); return; } From d6f56d43ceee8f854167b83f7de6914795a8ace7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 13:26:12 +0800 Subject: [PATCH 15/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/czg/annotation/SaAdminCheckPermission.java | 1 - .../src/main/java/com/czg/annotation/SaAdminCheckRole.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java index 22a1bb1aa..78a430bcd 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java @@ -15,7 +15,6 @@ import java.lang.annotation.Target; * @author click33 * */ -@SaCheckPermission(type = "admin") //@SaCheckPermission(type = "user") @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE}) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java index 7796e9401..f8950c909 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java @@ -16,7 +16,7 @@ import java.lang.annotation.Target; * */ //@SaCheckRole(type = "user") -@SaCheckRole(type = "admin") +//@SaCheckRole(type = "admin") @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE}) public @interface SaAdminCheckRole { From d1d63119a350eb0e9a74663c09b865a23782d316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 13:32:47 +0800 Subject: [PATCH 16/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/czg/annotation/SaAdminCheckPermission.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java index 78a430bcd..f4687e5e4 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java @@ -24,7 +24,6 @@ public @interface SaAdminCheckPermission { * 需要校验的权限码 * @return 需要校验的权限码 */ - @AliasFor(annotation = SaCheckPermission.class) String [] value() default {}; String name() default ""; @@ -33,7 +32,6 @@ public @interface SaAdminCheckPermission { * 验证模式:AND | OR,默认AND * @return 验证模式 */ - @AliasFor(annotation = SaCheckPermission.class) SaMode mode() default SaMode.AND; /** @@ -51,7 +49,6 @@ public @interface SaAdminCheckPermission { * * @return / */ - @AliasFor(annotation = SaCheckPermission.class) String[] orRole() default {}; } From 208ab726eeb506945e29a9c27945dbf0e0700652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 13:35:34 +0800 Subject: [PATCH 17/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/annotation/SaAdminCheckRole.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java index f8950c909..725a6b80a 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckRole.java @@ -25,14 +25,12 @@ public @interface SaAdminCheckRole { * 需要校验的角色标识 * @return 需要校验的角色标识 */ - @AliasFor(annotation = SaCheckRole.class) String [] value() default {}; /** * 验证模式:AND | OR,默认AND * @return 验证模式 */ - @AliasFor(annotation = SaCheckRole.class) SaMode mode() default SaMode.AND; } From fedb72538e7ae2a47a07fa8122c26dfcc83f8c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 13:41:56 +0800 Subject: [PATCH 18/26] =?UTF-8?q?=E9=89=B4=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java index e6c78fc57..0469b7e69 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/handler/SaAdminCheckRoleHandler.java @@ -36,7 +36,7 @@ public class SaAdminCheckRoleHandler implements SaAnnotationHandlerInterface Date: Sat, 8 Nov 2025 14:17:15 +0800 Subject: [PATCH 19/26] =?UTF-8?q?=E8=B6=85=E7=AE=A1=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8F=AF=E8=8E=B7=E5=8F=96=E6=89=80=E6=9C=89=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/service/account/service/impl/SysUserServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysUserServiceImpl.java index f8026a2a6..59859e143 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysUserServiceImpl.java @@ -71,7 +71,7 @@ public class SysUserServiceImpl extends ServiceImpl impl updateById(sysUser); // 绑定角色 - long roleCount = sysRoleMapper.selectCountByQuery(new QueryWrapper().eq(SysRole::getId, roleId).eq(SysRole::getCreateUserId, StpKit.USER.getLoginIdAsLong())); + long roleCount = sysRoleMapper.selectCountByQuery(new QueryWrapper().eq(SysRole::getId, roleId).eq(SysRole::getCreateUserId, StpKit.USER.isAdmin() ? null : StpKit.USER.getLoginIdAsLong())); if (roleCount == 0) { throw new CzgException("角色不存在"); } From 2adff660ab291194afce741438b18a0c9c1f0480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Nov 2025 16:27:58 +0800 Subject: [PATCH 20/26] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/account/service/impl/ShopStaffServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java index 4bc8736d8..3a3c04565 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopStaffServiceImpl.java @@ -20,7 +20,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.stream.Collectors; /** * 店铺员工 服务层实现。 @@ -121,7 +123,7 @@ public class ShopStaffServiceImpl extends ServiceImpl shopPermissionIds) { - long count = shopPermissionService.queryChain().in(ShopPermission::getId, shopPermissionIds).count(); + long count = shopPermissionService.queryChain().in(ShopPermission::getId, new HashSet<>(shopPermissionIds)).count(); if (count != shopPermissionIds.size()) { throw new ApiNotPrintException("存在不存在的权限"); } From dce024ec9a62236a8ca870a9cebc851cbe3a0c0c Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 10 Nov 2025 09:22:02 +0800 Subject: [PATCH 21/26] =?UTF-8?q?sql=E6=89=93=E5=8D=B0=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/config/MybatisFlexConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java index 186ec4774..1025dd67f 100644 --- a/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java +++ b/cash-common/cash-common-api-config/src/main/java/com/czg/config/MybatisFlexConfig.java @@ -16,8 +16,8 @@ public class MybatisFlexConfig { //设置 SQL 审计收集器 AuditManager.setMessageCollector(auditMessage -> - log.info("{},{}ms", auditMessage.getFullSql() - , auditMessage.getElapsedTime()) + log.info("[sql] time: {}, size: {},\n sql:{}", + auditMessage.getQueryTime(), auditMessage.getQueryCount(), auditMessage.getFullSql()) ); } From 2439e668eb84815cafe9c09621bbe8e1981ed549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 10 Nov 2025 14:42:29 +0800 Subject: [PATCH 22/26] =?UTF-8?q?=E5=86=85=E7=BD=91=E4=B8=8D=E6=A0=A1?= =?UTF-8?q?=E9=AA=8Ctoken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/config/SaTokenConfigure.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java index cd63242e0..0db1729e8 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java @@ -77,7 +77,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { .check(r -> { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (attributes == null || !ServletUtil.getClientIP(attributes.getRequest()).contains("192.168")) { + if (attributes == null || (!ServletUtil.getClientIP(attributes.getRequest()).contains("192.168") && !ServletUtil.getClientIP(attributes.getRequest()).contains("127.0.0.1"))) { MyStpLogic.ADMIN_LOGIC.checkLogin(); } }); From 1333024233202ef91d4ed5e3130729350ce5a855 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 10 Nov 2025 15:09:22 +0800 Subject: [PATCH 23/26] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=BF=94=E7=8E=B0=20?= =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkConsumeCashbackServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index c892ea551..61111c54f 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -124,11 +124,11 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl 0L) { - log.info("消费返现 new用户校验2, orderId: {}, count: {}", orderId, count); + log.info("消费返现 new用户校验1, orderId: {}, exists: {}", orderId, exists); + if (exists) { + log.info("消费返现 new用户校验2, orderId: {}, exists: {}", orderId, exists); return; } } else if ("vip".equals(config.getApplicableUser()) && shopUser.getIsVip() != 1) { From 332cda88928aa3afa48ae71b264a6be70c4da82f Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 10 Nov 2025 15:36:31 +0800 Subject: [PATCH 24/26] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=BF=94=E7=8E=B0=20?= =?UTF-8?q?=E6=96=B0=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MkConsumeCashbackServiceImpl.java | 4 +--- .../MkShopConsumeDiscountRecordServiceImpl.java | 16 ++++++++-------- .../service/impl/ShopCouponServiceImpl.java | 10 +++++----- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index 61111c54f..7a03bd90f 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -125,10 +125,8 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl 0, "新客立减仅限新用户使用"); + boolean exists = orderInfoService.exists(new QueryWrapper().eq(OrderInfo::getUserId, shopUser.getUserId()) + .eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())); + AssertUtil.isTrue(exists, "新客立减仅限新用户使用"); - long recordCount = count(new QueryWrapper().eq(MkShopConsumeDiscountRecord::getShopId, shopId).eq(MkShopConsumeDiscountRecord::getShopUserId, shopUser.getId()) + boolean exists1 = exists(new QueryWrapper().eq(MkShopConsumeDiscountRecord::getShopId, shopId).eq(MkShopConsumeDiscountRecord::getShopUserId, shopUser.getId()) .eq(MkShopConsumeDiscountRecord::getIsUse, 1)); - AssertUtil.isTrue(recordCount > 0, "新客立减已使用"); + AssertUtil.isTrue(exists1, "新客立减已使用"); return consumeDiscountVO; } @@ -115,9 +115,9 @@ public class MkShopConsumeDiscountRecordServiceImpl extends ServiceImpl 0) { + boolean exists = orderInfoService.exists(new QueryWrapper().eq(OrderInfo::getUserId, shopUser.getUserId()) + .eq(OrderInfo::getShopId, shopUser.getSourceShopId()).eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())); + if (exists) { // throw new ApiNotPrintException("新客立减仅新用户可用"); log.info("新客立减仅限新用户使用"); return null; diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java index 4389a6bf0..361f07db1 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/ShopCouponServiceImpl.java @@ -112,13 +112,13 @@ public class ShopCouponServiceImpl extends ServiceImpl 0) { + boolean exists = orderInfoService.exists(new QueryWrapper().eq(OrderInfo::getUserId, userId) + .eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())); + if (exists) { continue; } - long count1 = recordService.count(new QueryWrapper().eq(MkShopCouponRecord::getCouponSyncId, coupon.getSyncId())); - if (count1 > 0) { + boolean exists1 = recordService.exists(new QueryWrapper().eq(MkShopCouponRecord::getCouponSyncId, coupon.getSyncId())); + if (exists1) { continue; } } else if ("vip".equals(coupon.getGetUserType()) && shopUser.getIsVip() != 1) { From 7e18638997a3d749eaaab83ad086bc0f702ac4a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 10 Nov 2025 17:27:47 +0800 Subject: [PATCH 25/26] =?UTF-8?q?=E4=BC=9A=E5=91=98=E6=8A=98=E6=89=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/service/account/service/impl/AShopUserServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java index a01325772..e5a6a7f65 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/AShopUserServiceImpl.java @@ -197,6 +197,7 @@ public class AShopUserServiceImpl implements AShopUserService { shopUserDTO.setNextExperience(config.getExperienceValue() - (shopUser.getExperience() == null ? 0 : shopUser.getExperience())); shopUserDTO.setNextExperience(shopUserDTO.getNextExperience() < 0 ? 0: shopUserDTO.getNextExperience()); shopUserDTO.setNextMemberLevelName(config.getName()); + shopUserDTO.setDiscount(config.getDiscount()); } return shopUserDTO; } From 9dd929c00c0c4b4a54db93fa1e0de4b37b271e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 11 Nov 2025 09:26:24 +0800 Subject: [PATCH 26/26] =?UTF-8?q?=E6=89=B9=E9=87=8F=E9=9D=92=E8=8B=94?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ShopTableController.java | 24 ++++++++++--- .../dto/table/ShopTableEditBatchDTO.java | 36 +++++++++++++++++++ .../com/czg/account/entity/ShopTable.java | 2 ++ 3 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/table/ShopTableEditBatchDTO.java diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopTableController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopTableController.java index 5a0a2a59a..dade27e02 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopTableController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopTableController.java @@ -1,10 +1,7 @@ package com.czg.controller.admin; import cn.hutool.core.util.StrUtil; -import com.czg.account.dto.table.ShopTableAddDTO; -import com.czg.account.dto.table.ShopTableBindDTO; -import com.czg.account.dto.table.ShopTableClearDTO; -import com.czg.account.dto.table.ShopTableDTO; +import com.czg.account.dto.table.*; import com.czg.account.entity.ShopTable; import com.czg.account.service.ShopTableService; import com.czg.account.vo.ShopTableVO; @@ -15,6 +12,7 @@ import com.czg.resp.CzgResult; import com.czg.sa.StpKit; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.core.update.UpdateChain; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -93,6 +91,24 @@ public class ShopTableController { return CzgResult.success(shopTableService.updateInfo(StpKit.USER.getLoginIdAsLong(), shopTableDTO)); } + /** + * 批量台桌配置 + * 权限标识: shopTable:edit + * @return 是否成功 + */ + @PutMapping + public CzgResult editBatch(@RequestBody @Validated ShopTableEditBatchDTO shopTableDTO) { + UpdateChain query = shopTableService.updateChain().eq(ShopTable::getShopId, StpKit.USER.getShopId()); + if (shopTableDTO.getClearTime() != null) { + query.eq(ShopTable::getClearTime, shopTableDTO.getClearTime()); + } + + if (shopTableDTO.getAutoClear() != null) { + query.eq(ShopTable::getAutoClear, shopTableDTO.getAutoClear()); + } + return CzgResult.success(query.update()); + } + /** * 台桌清台 * 权限标识: shopTable:clear diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/table/ShopTableEditBatchDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/table/ShopTableEditBatchDTO.java new file mode 100644 index 000000000..86eb6bae6 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/table/ShopTableEditBatchDTO.java @@ -0,0 +1,36 @@ + +package com.czg.account.dto.table; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 台桌配置 实体类。 + * + * @author zs + * @since 2025-02-13 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ShopTableEditBatchDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 自动清台 0手动 1自动 + */ + private Integer autoClear; + + /** + * 自动清台时间 单位分钟 默认10 + */ + private Integer clearTime; + + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopTable.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopTable.java index b60220b59..13932e813 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopTable.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopTable.java @@ -126,6 +126,8 @@ public class ShopTable implements Serializable { */ private Integer useNum; + private Integer autoClear; + public boolean canUseByStatus() { return !ShopTableStatusEnum.UNBOUND.equalsVal(status) && !ShopTableStatusEnum.SETTLED.equalsVal(status)