From d1cab4b2f2690d1331f12f0d9de78bbbf926f390 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 16 一月 2025 14:27:51 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/qijisheng --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java | 130 +++++++++++++++++++++++++++++++++++++++---- 1 files changed, 117 insertions(+), 13 deletions(-) diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java index 11a35a9..f75ff29 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java @@ -15,9 +15,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -46,11 +44,13 @@ */ @ResponseBody @PostMapping("/getNowOrderActivityInfo") - public R<OrderActivityInfo> getNowOrderActivityInfo(@RequestParam("vip") Integer vip){ - OrderActivityInfo one = orderActivityInfoService.getOne(new LambdaQueryWrapper<OrderActivityInfo>().eq(OrderActivityInfo::getDelFlag, 0) - .last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids) limit 0, 1")); + public R<List<OrderActivityInfo>> getNowOrderActivityInfo(@RequestParam("vip") Integer vip){ + List<OrderActivityInfo> one = orderActivityInfoService.list(new LambdaQueryWrapper<OrderActivityInfo>().eq(OrderActivityInfo::getDelFlag, 0) + .eq(OrderActivityInfo::getIsShelf, 1).last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids)")); return R.ok(one); } + + /** * 添加活动 @@ -59,7 +59,57 @@ @ApiOperation(value = "订单优惠活动-添加活动", tags = {"管理后台-活动管理"}) public R<Void> saveActivityConfig(@RequestBody OrderActivityInfo orderActivityInfo){ orderActivityInfo.setIsShelf(0); + if (org.springframework.util.StringUtils.hasLength(orderActivityInfo.getVipIds())){ + List<String> vipIds = new ArrayList<>(Arrays.asList(orderActivityInfo.getVipIds().split(","))); + List<OrderActivityInfo> list = orderActivityInfoService.lambdaQuery() + .between(OrderActivityInfo::getStartTime, orderActivityInfo.getStartTime(), orderActivityInfo.getEndTime()) + .or() + .between(OrderActivityInfo::getEndTime, orderActivityInfo.getStartTime(), orderActivityInfo.getEndTime()) + .list(); + if (!list.isEmpty()){ + for (OrderActivityInfo activityInfo : list) { + List<String> vips = Arrays.asList(activityInfo.getVipIds().split(",")); + if (!vipIds.isEmpty()){ + StringBuilder message = new StringBuilder(); + Set<String> set1 = new HashSet<>(vipIds); + Set<String> set2 = new HashSet<>(vips); + set1.retainAll(set2); + if (!set1.isEmpty()) { + // 有交集 判断是哪些会员 + for (String s : set1) { + switch (s){ + case "1": + message.append("普通会员,"); + break; + case "2": + message.append("黄金会员,"); + break; + case "3": + message.append("钻石会员,"); + break; + case "4": + message.append("准代理,"); + break; + case "5": + message.append("代理,"); + break; + case "6": + message.append("总代,"); + break; + case "7": + message.append("合伙人,"); + break; + } + } + StringBuilder res = message.deleteCharAt(message.length() - 1); + return R.fail(res+"在当前活动时间已有订单优惠"); + } + } + } + } + } orderActivityInfoService.save(orderActivityInfo); + return R.ok(); } @@ -80,6 +130,57 @@ @ApiOperation(value = "修改活动", tags = {"管理后台-活动管理"}) public R<Void> updateActivityConfig(@RequestBody OrderActivityInfo orderActivityInfo){ orderActivityInfo.setId(Long.valueOf(orderActivityInfo.getIdStr())); + if (org.springframework.util.StringUtils.hasLength(orderActivityInfo.getVipIds())){ + List<String> vipIds = new ArrayList<>(Arrays.asList(orderActivityInfo.getVipIds().split(","))); + List<OrderActivityInfo> list = orderActivityInfoService.lambdaQuery() + .between(OrderActivityInfo::getStartTime, orderActivityInfo.getStartTime(), orderActivityInfo.getEndTime()) + .or() + .between(OrderActivityInfo::getEndTime, orderActivityInfo.getStartTime(), orderActivityInfo.getEndTime()) + .list(); + // 遍历集合 通过startTime和endTime 判断是否与当前活动时间重叠 + + if (!list.isEmpty()){ + for (OrderActivityInfo activityInfo : list) { + List<String> vips = Arrays.asList(activityInfo.getVipIds().split(",")); + if (!vipIds.isEmpty()){ + StringBuilder message = new StringBuilder(); + Set<String> set1 = new HashSet<>(vipIds); + Set<String> set2 = new HashSet<>(vips); + set1.retainAll(set2); + if (!set1.isEmpty()) { + // 有交集 判断是哪些会员 + for (String s : set1) { + switch (s){ + case "1": + message.append("普通会员,"); + break; + case "2": + message.append("黄金会员,"); + break; + case "3": + message.append("钻石会员,"); + break; + case "4": + message.append("准代理,"); + break; + case "5": + message.append("代理,"); + break; + case "6": + message.append("总代,"); + break; + case "7": + message.append("合伙人,"); + break; + } + } + StringBuilder res = message.deleteCharAt(message.length() - 1); + return R.fail(res+"在当前活动时间已有订单优惠"); + } + } + } + } + } orderActivityInfoService.updateById(orderActivityInfo); return R.ok(); } @@ -90,15 +191,18 @@ @GetMapping("/list") @ApiOperation(value = "订单优惠活动-获取活动列表", tags = {"管理后台-活动管理"}) public R<Page<OrderActivityInfo>> list(@ApiParam("页码") @RequestParam Integer pageNum, - @ApiParam("每一页数据大小") Integer pageSize, - OrderActivityInfo orderActivityInfo){ + @ApiParam("每一页数据大小") Integer pageSize, String id, String activityName, Integer status, Integer isShelf){ Page<OrderActivityInfo> page = orderActivityInfoService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<OrderActivityInfo>() - .eq(orderActivityInfo.getId() != null, OrderActivityInfo::getId, orderActivityInfo.getId()) - .eq(StringUtils.isNotEmpty(orderActivityInfo.getActivityName()), OrderActivityInfo::getActivityName, orderActivityInfo.getActivityName()) - .lt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 0, OrderActivityInfo::getStartTime, orderActivityInfo.getStartTime()) - .ge(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 1, OrderActivityInfo::getEndTime, orderActivityInfo.getStartTime()) - .eq(orderActivityInfo.getIsShelf() != null, OrderActivityInfo::getIsShelf, orderActivityInfo.getIsShelf())); + .like(StringUtils.isNotEmpty(id), OrderActivityInfo::getId, id) + .like(StringUtils.isNotEmpty(activityName), OrderActivityInfo::getActivityName, activityName) + .gt(status != null && status == 0, OrderActivityInfo::getStartTime, LocalDateTime.now()) + .ge(status != null && status == 1, OrderActivityInfo::getEndTime, LocalDateTime.now()) + .lt(status != null && status == 1, OrderActivityInfo::getStartTime, LocalDateTime.now()) + .lt(status != null && status == 2, OrderActivityInfo::getEndTime, LocalDateTime.now()) + .eq(isShelf != null, OrderActivityInfo::getIsShelf, isShelf).orderByDesc(OrderActivityInfo::getCreateTime) + .orderByDesc(OrderActivityInfo::getCreateTime)) + ; page.getRecords().forEach(item -> { LocalDateTime startTime = item.getStartTime(); LocalDateTime now = LocalDateTime.now(); -- Gitblit v1.7.1