package com.ruoyi.other.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.other.api.domain.Goods; import com.ruoyi.other.api.domain.GoodsSeckill; import com.ruoyi.other.api.domain.SeckillActivityInfo; import com.ruoyi.other.api.vo.GetSeckillActivityInfo; import com.ruoyi.other.mapper.SeckillActivityInfoMapper; import com.ruoyi.other.service.GoodsSeckillService; import com.ruoyi.other.service.GoodsService; import com.ruoyi.other.service.SeckillActivityInfoService; import com.ruoyi.other.vo.SeckillActivityDetailVO; import com.ruoyi.other.vo.SeckillActivityVO; 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.time.ZoneOffset; import java.util.List; /** *

* 前端控制器 *

* * @author luodangjia * @since 2024-11-20 */ @Api("秒杀活动信息") @RestController @RequestMapping("/seckill-activity-info") public class SeckillActivityInfoController extends BaseController { @Resource private SeckillActivityInfoService seckillActivityInfoService; @Resource private GoodsSeckillService goodsSeckillService; @Resource private SeckillActivityInfoMapper seckillActivityInfoMapper; @Resource private GoodsService goodsService; /** * 秒杀活动列表 */ @GetMapping("/list") @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页","后台管理-活动管理-秒杀活动"}) public R list(Goods goods) { startPage(); return R.ok(getDataTable(seckillActivityInfoService.listSeckillActivity(goods))); } /** * 秒杀活动详情 */ @GetMapping("/detail/{id}") @ApiOperation(value = "秒杀活动详情", tags = {"小程序-商城-首页"}) public R detail(@PathVariable("id") Integer id) { return R.ok(seckillActivityInfoService.detail(id)); } /** * 根据商品id和会员等级获取对应的秒杀活动 */ @PostMapping("/getSeckillActivityInfo") public R getSeckillActivityInfo(@RequestBody GetSeckillActivityInfo info){ SeckillActivityInfo one = seckillActivityInfoService.getOne(new LambdaQueryWrapper().eq(SeckillActivityInfo::getGoodId, info.getGoodsId()) .eq(SeckillActivityInfo::getDelFlag, 0).last(" and now() between start_time and end_time order by create_time limit 0,1")); if(null == one){ return R.ok(); } GoodsSeckill goodsSeckill = goodsSeckillService.getOne(new LambdaQueryWrapper().eq(GoodsSeckill::getSeckillActivityInfoId, one.getGoodId()).eq(GoodsSeckill::getVip, info.getVip())); if(null != goodsSeckill){ goodsSeckill.setEndTime(one.getEndTime().toEpochSecond(ZoneOffset.UTC) * 1000); } return R.ok(goodsSeckill); } /** * 秒杀活动列表 */ @GetMapping("/manageList") @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页","后台管理-活动管理-秒杀活动"}) public R> manageList(@ApiParam("页码") @RequestParam Integer pageNum, @ApiParam("每一页数据大小") Integer pageSize, Goods goods) { IPage IPage = seckillActivityInfoMapper.querySeckillActivity(Page.of(pageNum, pageSize), goods); for (SeckillActivityVO record : IPage.getRecords()) { LocalDateTime startTime = record.getStartTime(); LocalDateTime now = LocalDateTime.now(); LocalDateTime endTime = record.getEndTime(); if (endTime.isBefore(now)){ record.setStatus(3); //已结束 }else if (startTime.isBefore(now)){ record.setStatus(2); // 已开始 }else { record.setStatus(1); // 未开始 } } return R.ok(IPage); } /** * 新增秒杀活动 */ @PostMapping("/save") @ApiOperation(value = "新增秒杀活动", tags = {"后台管理-活动管理-秒杀活动" }) public R save(@RequestBody SeckillActivityInfo seckillActivityInfo) { seckillActivityInfoService.saveSeckillActivityInfo(seckillActivityInfo); return R.ok(); } /** * 修改秒杀活动 */ @PutMapping("/update") @ApiOperation(value = "修改秒杀活动", tags = {"后台管理-活动管理-秒杀活动" }) public R update(@RequestBody SeckillActivityInfo seckillActivityInfo) { seckillActivityInfoService.updateSeckillActivityInfo(seckillActivityInfo); return R.ok(); } /** * 删除秒杀活动 */ @DeleteMapping("/remove/{id}") @ApiOperation(value = "删除秒杀活动", tags = {"后台管理-活动管理-秒杀活动" }) public R remove(@PathVariable Integer id) { seckillActivityInfoService.removeById(id); return R.ok(); } /** * 获取秒杀活动明细 */ @GetMapping("/getSeckillActivityDetail") @ApiOperation(value = "获取秒杀活动明细", tags = {"后台管理-活动管理-秒杀活动" }) public R getSeckillActivityDetail(Integer id) { SeckillActivityInfo seckillActivityInfo = seckillActivityInfoService.getById(id); List goodsSeckills = goodsSeckillService.list(new LambdaQueryWrapper() .eq(GoodsSeckill::getSeckillActivityInfoId, id)); seckillActivityInfo.setGoodsSeckills(goodsSeckills); Integer goodId = seckillActivityInfo.getGoodId(); Goods goods = goodsService.getById(goodId); seckillActivityInfo.setGoods(goods); return R.ok(seckillActivityInfo); } /** * 修改上/下架状态 */ @PutMapping("/updateShowStatus") @ApiOperation(value = "修改上/下架状态", tags = {"后台管理-活动管理-秒杀活动" }) public R updateShowStatus(@RequestBody SeckillActivityVO seckillActivityVO) { seckillActivityInfoService.update(new LambdaUpdateWrapper() .eq(SeckillActivityInfo::getId, seckillActivityVO.getId()) .set(SeckillActivityInfo::getIsShelves, seckillActivityVO.getShowStatus())); return R.ok(); } }