diff --git a/.gitignore b/.gitignore index 5c8565db..924580e2 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,7 @@ build/ /cash-service/account-service/src/main/resources/rebel.xml /cash-api/account-server/src/main/resources/rebel.xml /logs/ +/cash-api/account-server/src/main/resources/application-zs.yml +/cash-api/order-server/src/main/resources/application-zs.yml +/cash-api/product-server/src/main/resources/application-zs.yml +/cash-api/system-server/src/main/resources/application-zs.yml diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java index f47df358..03cb0336 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UShopUserController.java @@ -9,6 +9,7 @@ import com.czg.account.entity.ShopUserFlow; import com.czg.account.service.PointsExchangeRecordService; import com.czg.account.service.ShopUserFlowService; import com.czg.account.service.ShopUserService; +import com.czg.annotation.Debounce; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; import com.czg.utils.PageUtil; @@ -70,6 +71,7 @@ public class UShopUserController { * @return 是否成功 */ @PostMapping + @Debounce("#shopUserAddDTO.phone") public CzgResult join(@RequestBody @Validated ShopUserAddDTO shopUserAddDTO) { return CzgResult.success(shopUserService.join(StpKit.USER.getShopId(), StpKit.USER.getLoginIdAsLong(), shopUserAddDTO)); } diff --git a/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java b/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java index 395484f7..c4c51143 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/admin/DataSummaryController.java @@ -1,5 +1,6 @@ package com.czg.controller.admin; +import com.czg.annotation.SaStaffCheckPermission; import com.czg.log.annotation.OperationLog; import com.czg.order.entity.ShopOrderStatistic; import com.czg.order.param.DataSummaryProductSaleParam; @@ -38,6 +39,7 @@ public class DataSummaryController { */ @GetMapping("trade") @OperationLog("营业板块-上半部分") + @SaStaffCheckPermission("yun_xu_cha_kan_jing_ying_shu_ju") //@SaAdminCheckPermission("dataSummary:trade") public CzgResult getTradeData(DataSummaryTradeParam param) { ValidatorUtil.validateEntity(param, DefaultGroup.class); @@ -52,6 +54,7 @@ public class DataSummaryController { */ @GetMapping("productSaleDate") @OperationLog("商品销售-右下") + @SaStaffCheckPermission("yun_xu_cha_kan_jing_ying_shu_ju") //@SaAdminCheckPermission("dataSummary:productSaleData") public CzgResult> getProductSaleData(DataSummaryProductSaleParam param) { ValidatorUtil.validateEntity(param, DefaultGroup.class); @@ -68,6 +71,7 @@ public class DataSummaryController { */ @GetMapping("dateAmount") @OperationLog("销售趋势柱状图 左下") + @SaStaffCheckPermission("yun_xu_cha_kan_jing_ying_shu_ju") //@SaAdminCheckPermission("dataSummary:dateAmount") public CzgResult getDateAmount(@RequestParam Integer day) { AssertUtil.isNull(day, "天数不能为空"); @@ -82,6 +86,7 @@ public class DataSummaryController { * @param day 天数 */ @GetMapping("datePayType") + @SaStaffCheckPermission("yun_xu_cha_kan_jing_ying_shu_ju") //@SaAdminCheckPermission("dataSummary:datePayType") public CzgResult shopSummaryPayType(@RequestParam Integer day) { Long shopId = StpKit.USER.getShopId(0L); diff --git a/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java b/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java index 0d60abb4..73985f3a 100644 --- a/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java +++ b/cash-api/order-server/src/main/java/com/czg/mq/PrintMqListener.java @@ -63,6 +63,6 @@ public class PrintMqListener { */ @RabbitListener(queues = {"${spring.profiles.active}-" + RabbitConstants.Queue.ORDER_HANDOVER_PRINT_QUEUE}) public void handoverPrint(String id) { - invokeFun("handoverPrint", "java.order", id, (data) -> printerHandler.handler(data, PrinterHandler.PrintTypeEnum.ONE_AND_ORDER)); + invokeFun("handoverPrint", "java.order", id, (data) -> printerHandler.handler(data, PrinterHandler.PrintTypeEnum.HANDOVER)); } } diff --git a/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java b/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java index e60b2335..9850e2fb 100644 --- a/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java +++ b/cash-api/order-server/src/main/java/com/czg/task/StatisticTask.java @@ -4,6 +4,7 @@ import com.czg.order.service.ShopOrderStatisticService; import com.czg.order.service.ShopProdStatisticService; import com.czg.order.service.ShopTableOrderStatisticService; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -11,6 +12,7 @@ import org.springframework.stereotype.Component; * @author Administrator */ @Component +@Slf4j public class StatisticTask { @Resource private ShopTableOrderStatisticService shopTableOrderStatisticService; @@ -21,8 +23,11 @@ public class StatisticTask { @Scheduled(cron = "0 0 9 * * ?") public void run() { + long start = System.currentTimeMillis(); + log.info("定时任务执行,开始统计数据"); shopOrderStatisticService.statistic(); shopProdStatisticService.statistic(); shopTableOrderStatisticService.statistic(); + log.info("定时任务执行完毕,耗时:{}ms", start - System.currentTimeMillis()); } } diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java index 3551d991..66980319 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java @@ -1,5 +1,6 @@ package com.czg.controller.admin; +import com.czg.annotation.SaStaffCheckPermission; import com.czg.log.annotation.OperationLog; import com.czg.product.dto.ConsStockFlowDTO; import com.czg.product.param.ConsCheckStockParam; @@ -34,6 +35,7 @@ public class ConsStockFlowController { */ @PostMapping("in") @OperationLog("耗材入库") + @SaStaffCheckPermission("yun_xu_hao_cai_ru_ku") //@SaAdminCheckPermission("consStockFlow:in") public CzgResult inStock(@RequestBody ConsInOutStockHeadParam param) { ValidatorUtil.validateEntity(param, DefaultGroup.class); @@ -47,6 +49,7 @@ public class ConsStockFlowController { */ @PostMapping("out") @OperationLog("耗材出库") + @SaStaffCheckPermission("yun_xu_hao_cai_chu_ku") //@SaAdminCheckPermission("consStockFlow:out") public CzgResult outStock(@RequestBody ConsInOutStockHeadParam param) { ValidatorUtil.validateEntity(param, DefaultGroup.class); @@ -73,6 +76,7 @@ public class ConsStockFlowController { */ @PostMapping("check") @OperationLog("库存盘点") + @SaStaffCheckPermission("yun_xu_hao_cai_pan_dian") //@SaAdminCheckPermission("consStockFlow:check") public CzgResult checkStock(@RequestBody ConsCheckStockParam param) { ValidatorUtil.validateEntity(param, DefaultGroup.class); @@ -102,4 +106,4 @@ public class ConsStockFlowController { Page data = consStockFlowService.findConsStockFlowPage(param); return CzgResult.success(data); } -} \ No newline at end of file +} diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java index 90dbcf5e..97c8dca2 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java @@ -220,6 +220,7 @@ public class ProductController { */ @PostMapping("reportDamage") @OperationLog("商品-报损") + @SaStaffCheckPermission("yun_xu_ti_jiao_bao_sun") //@SaAdminCheckPermission("product:reportDamage") public CzgResult reportDamage(@RequestBody ProductReportDamageParam param) { ValidatorUtil.validateEntity(param, DefaultGroup.class); diff --git a/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java b/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java index 1d434ece..e3db720b 100644 --- a/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java +++ b/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java @@ -111,6 +111,14 @@ public class CzgControllerAdvice { return CzgResult.success(); } + /** + * 订单超时 取消 + */ + @ExceptionHandler(OrderCancelException.class) + public CzgResult handleOrderCancelException() { + return CzgResult.failure(701,"订单已过期,请重新下单"); + } + /** * 处理Hutool的断言抛出异常 */ diff --git a/cash-common/cash-common-redis/src/main/java/com/czg/config/RedisCst.java b/cash-common/cash-common-redis/src/main/java/com/czg/config/RedisCst.java index 8a05631f..738ade0b 100644 --- a/cash-common/cash-common-redis/src/main/java/com/czg/config/RedisCst.java +++ b/cash-common/cash-common-redis/src/main/java/com/czg/config/RedisCst.java @@ -18,7 +18,7 @@ public interface RedisCst { */ class classKeyExpired { //订单key过期 - public static final String EXPIRED_ORDER = "expired.order:"; + public static final String EXPIRED_ORDER = "expired:order:"; } 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 993b885a..2aa63d31 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 @@ -29,7 +29,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { // adminConfig.setTimeout(1000); adminConfig.setTokenStyle("simple-uuid"); adminConfig.setIsConcurrent(true); - adminConfig.setIsShare(true); + adminConfig.setIsShare(false); MyStpLogic.ADMIN_LOGIC.setConfig(adminConfig); // 小程序配置 diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java index c41f9121..080a4ed8 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java @@ -65,10 +65,13 @@ public class MyStpLogic { throw new ApiNotPrintException("管理端登录必须传递店铺id"); } SaSession session = logic.getSession().set("userId", id).set("isAdmin", isAdmin).set("isManager", loginType.equals(LoginType.MANAGER)) - .set("loginType", loginType).set("account", account).set("shopName", shopName); + .set("loginType", loginType).set("account", account); if (shopId != null) { session.set("shopId", shopId); } + if (shopName != null) { + session.set("shopName", shopName); + } } public void reLogin(long id) { diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/QueryReceiveDto.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/QueryReceiveDto.java index 8257edcf..5b9b3724 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/QueryReceiveDto.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/QueryReceiveDto.java @@ -1,7 +1,10 @@ package com.czg.account.dto; import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; @@ -10,6 +13,8 @@ import java.time.LocalDateTime; * @author ww */ @Data +@NoArgsConstructor +@AllArgsConstructor public class QueryReceiveDto { @NotNull(message = "优惠券id 不可为空") private Long couponId; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopinfo/ShopInfoAddDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopinfo/ShopInfoAddDTO.java index 7f8ca350..606cf3a8 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopinfo/ShopInfoAddDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopinfo/ShopInfoAddDTO.java @@ -33,8 +33,7 @@ public class ShopInfoAddDTO { @NotNull(message = "状态不为空") private String detail; // @NotNull(message = "角色id不为空") - // todo 默认为管理员角色,后期调整 - private Long roleId = 1L; + private Long roleId; private String phone; /** * 店铺注册类型 diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/exception/OrderCancelException.java b/cash-common/cash-common-tools/src/main/java/com/czg/exception/OrderCancelException.java new file mode 100644 index 00000000..048dec95 --- /dev/null +++ b/cash-common/cash-common-tools/src/main/java/com/czg/exception/OrderCancelException.java @@ -0,0 +1,16 @@ +package com.czg.exception; + +import java.io.Serial; + +/** + * @author ww + * @description + */ +public class OrderCancelException extends RuntimeException{ + @Serial + private static final long serialVersionUID = 1L; + + public OrderCancelException(String message) { + super(message); + } +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopActivateCouponRecordMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopActivateCouponRecordMapper.java index c234dd1d..ae939fe0 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopActivateCouponRecordMapper.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopActivateCouponRecordMapper.java @@ -5,6 +5,7 @@ import com.czg.account.entity.ShopActivateCouponRecord; import com.czg.account.vo.CouponReceiveVo; import com.czg.account.vo.UserCouponVo; import com.mybatisflex.core.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,8 +17,9 @@ import java.util.List; */ public interface ShopActivateCouponRecordMapper extends BaseMapper { - List queryReceive(QueryReceiveDto param); + List queryReceive(@Param("param") QueryReceiveDto param); List findByUser(List shopUserIds, Integer status); - List queryByVipIdAndShopId(Long shopId, Long shopUserId,Integer type); + + List queryByVipIdAndShopId(Long shopId, Long shopUserId, Integer type); } 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 ab9c40eb..26533895 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 @@ -23,6 +23,7 @@ import jakarta.annotation.Resource; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -159,7 +160,7 @@ public class AuthorizationServiceImpl implements AuthorizationService { } redisService.del(RedisCst.LOGIN_CODE + loginDTO.uuid()); - return new LoginVO(StpKit.USER.getTokenInfo(), promissionList, loginDTO.loginType(), shopInfo); + return new LoginVO(StpKit.USER.getTokenInfo(), new ArrayList<>(), loginDTO.loginType(), shopInfo); } @NotNull diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopSongServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopSongServiceImpl.java index 9fae7740..0e4a4dc4 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopSongServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopSongServiceImpl.java @@ -56,8 +56,13 @@ public class ShopSongServiceImpl extends ServiceImpl i }else { code = RandomStringUtils.randomAlphanumeric(12); redisService.set(key, code); - redisService.set(key, shopId); } return code; } + + public static void main(String[] args) { + String string = RandomStringUtils.randomAlphanumeric(12); + System.out.println(string); + + } } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java index 97072d32..092fe075 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java @@ -35,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; +import java.util.Objects; /** @@ -81,8 +82,8 @@ public class ShopUserServiceImpl extends ServiceImpl i JoinQueryWrapper queryWrapper = new JoinQueryWrapper().eq(ShopUser::getShopId, StpKit.USER.getShopId()); if (StrUtil.isNotBlank(key)) { queryWrapper.and(q -> { - q.like(UserInfo::getNickName, key).or(r -> { - r.like(UserInfo::getPhone, key); + q.like(ShopUser::getNickName, key).or(r -> { + r.like(ShopUser::getPhone, key); }); }); @@ -272,7 +273,7 @@ public class ShopUserServiceImpl extends ServiceImpl i // 查询系统添加的会员 UserInfo oriInfo = userInfoService.getOne(new QueryWrapper().eq(UserInfo::getPhone, shopUserAddDTO.getPhone())); - if (oriInfo != null) { + if (oriInfo != null && !oriInfo.getId().equals(userId)) { // 迁移订单 OrderInfo orderInfo = new OrderInfo(); orderInfo.setUserId(userId); @@ -288,7 +289,7 @@ public class ShopUserServiceImpl extends ServiceImpl i } } - BeanUtil.copyProperties(shopUserAddDTO, shopUser); + BeanUtil.copyProperties(shopUserAddDTO, shopUser, "accountPoints", "amount"); BeanUtil.copyProperties(shopUserAddDTO, userInfo); userInfoService.updateById(userInfo); diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysRoleServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysRoleServiceImpl.java index 8904c8d1..be466c70 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysRoleServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/SysRoleServiceImpl.java @@ -92,7 +92,9 @@ public class SysRoleServiceImpl extends ServiceImpl imp @Override @Transactional(rollbackFor = Exception.class) public Boolean add(RoleAddDTO roleAddDTO) { - long roleCount = queryChain().eq(SysRole::getName, roleAddDTO.name()).count(); + long roleCount = queryChain().eq(SysRole::getName, roleAddDTO.name()) + .eq(SysRole::getShopId, StpKit.USER.getShopId()) + .count(); if (roleCount > 0) { throw new ApiNotPrintException("此角色名称已存在"); } @@ -120,7 +122,8 @@ public class SysRoleServiceImpl extends ServiceImpl imp throw new ApiNotPrintException("角色不存在"); } - long roleCount = queryChain().eq(SysRole::getName, roleEditDTO.getName()).ne(SysRole::getId, roleEditDTO.getId()).count(); + long roleCount = queryChain().eq(SysRole::getName, roleEditDTO.getName()).ne(SysRole::getId, roleEditDTO.getId()) + .eq(SysRole::getShopId, StpKit.USER.getShopId()).count(); if (roleCount > 0) { throw new ApiNotPrintException("此角色名称已存在"); } diff --git a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml index a60447fa..a8bb431f 100644 --- a/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml +++ b/cash-service/account-service/src/main/resources/mapper/ShopUserMapper.xml @@ -50,14 +50,14 @@