package com.ruoyi.other.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.other.api.domain.OrderActivityInfo; import com.ruoyi.other.service.OrderActivityInfoService; import com.ruoyi.other.service.VipSettingService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

* 前端控制器 *

* * @author luodangjia * @since 2024-11-20 */ @RestController @RequestMapping("/order-activity-info") @Api("订单优惠活动") public class OrderActivityInfoController { @Resource private OrderActivityInfoService orderActivityInfoService; @Resource private VipSettingService vipSettingService; /** * 获取当前生效的活动 * @param vip * @return */ @ResponseBody @PostMapping("/getNowOrderActivityInfo") public R getNowOrderActivityInfo(@RequestParam("vip") Integer vip){ OrderActivityInfo one = orderActivityInfoService.getOne(new LambdaQueryWrapper().eq(OrderActivityInfo::getDelFlag, 0) .last(" and now() between start_time and end_time and FIND_IN_SET(" + vip + ", vip_ids) limit 0, 1")); return R.ok(one); } /** * 添加活动 */ @PostMapping("/save") @ApiOperation(value = "订单优惠活动-添加活动", tags = {"管理后台-活动管理"}) public R saveActivityConfig(@RequestBody OrderActivityInfo orderActivityInfo){ orderActivityInfo.setIsShelf(0); orderActivityInfoService.save(orderActivityInfo); return R.ok(); } /** * 删除活动 */ @DeleteMapping("/delete") @ApiOperation(value = "订单优惠活动-删除活动", tags = {"管理后台-活动管理"}) public R deleteActivityConfig(@RequestParam("id") Long id){ orderActivityInfoService.removeById(id); return R.ok(); } /** * 修改活动 */ @PostMapping("/update") @ApiOperation(value = "修改活动", tags = {"管理后台-活动管理"}) public R updateActivityConfig(@RequestBody OrderActivityInfo orderActivityInfo){ orderActivityInfo.setId(Long.valueOf(orderActivityInfo.getIdStr())); orderActivityInfoService.updateById(orderActivityInfo); return R.ok(); } /** * 获取活动列表 */ @GetMapping("/list") @ApiOperation(value = "订单优惠活动-获取活动列表", tags = {"管理后台-活动管理"}) public R> list(@ApiParam("页码") @RequestParam Integer pageNum, @ApiParam("每一页数据大小") Integer pageSize, OrderActivityInfo orderActivityInfo){ Page page = orderActivityInfoService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper() .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())); page.getRecords().forEach(item -> { LocalDateTime startTime = item.getStartTime(); LocalDateTime now = LocalDateTime.now(); LocalDateTime endTime = item.getEndTime(); if (endTime.isBefore(now)){ item.setStatus(2); //已结束 }else if (startTime.isBefore(now)){ item.setStatus(1); // 已开始 }else { item.setStatus(0); // 未开始 } String vipIds = item.getVipIds(); if (StringUtils.isNotEmpty(vipIds)){ String[] vipIdArr = vipIds.split(","); if (vipIdArr.length == 7){ item.setVipName("全部"); }else { List vipNameList = new ArrayList<>(); for (String vipId : vipIdArr) { String vipName = vipSettingService.getById(Long.parseLong(vipId)).getVipName(); vipNameList.add(vipName); } item.setVipName(String.join(",", vipNameList)); } } }); return R.ok(page); } /** * 获取活动详情 */ @GetMapping("/getDetailById") @ApiOperation(value = "订单优惠活动-获取活动详情", tags = {"管理后台-活动管理"}) public R getDetailById(@RequestParam("id") String id){ return R.ok(orderActivityInfoService.getById(Long.parseLong(id))); } }