huliguo
6 天以前 8059e9b991c15edbac508e6b658a0d9571d11b1c
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java
@@ -1,18 +1,45 @@
package com.ruoyi.goods.controller.business;
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.goods.api.domain.LotteryEvent;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.goods.api.domain.TLotteryEvent;
import com.ruoyi.goods.api.domain.TLotteryEventPrize;
import com.ruoyi.goods.domain.dto.DelShopLotteryDrawDto;
import com.ruoyi.goods.domain.dto.ShopLotteryDrawListDto;
import com.ruoyi.goods.domain.dto.ShopWinningRecordDto;
import com.ruoyi.goods.domain.vo.ShopLotteryDrawListVo;
import com.ruoyi.goods.domain.vo.ShopLotteryDrawVo;
import com.ruoyi.goods.domain.vo.ShopWinningRecordVo;
import com.ruoyi.goods.service.goods.GoodsService;
import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService;
import com.ruoyi.goods.service.lottery.ILotteryEventService;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.goods.service.lottery.IUserLotteryEventService;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.service.RemoteMemberService;
import com.ruoyi.system.api.service.RemoteShopService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/5/8 18:13
 */
@Slf4j
@Api(value = "商户端商户相关接口", tags = "商户端商户相关接口", description = "商户端商户相关接口")
@RestController
@RequestMapping("/mer/lotteryEvent")
public class MerLotteryEventController {
@@ -20,19 +47,116 @@
   @Resource
   private ILotteryEventService lotteryEventService;
   
   @Resource
   private RemoteShopService remoteShopService;
   
   /**
    * 根据开启方式获取活动列表
    *
    * @param activityType
    * @return
    */
   @ResponseBody
   @PostMapping("/getLotteryEventList")
   public R<List<LotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType) {
      List<LotteryEvent> list = lotteryEventService.list(new LambdaQueryWrapper<LotteryEvent>().eq(LotteryEvent::getActivityType, activityType)
            .eq(LotteryEvent::getDelFlag, 0).last(" and now() between start_time and end_time"));
      return R.ok(list);
   @Resource
   private ILotteryEventPrizeService lotteryEventPrizeService;
   @Resource
   private IUserLotteryEventService userLotteryEventService;
   @Resource
   private GoodsService goodsService;
   @Resource
   private RemoteMemberService remoteMemberService;
   @RequestMapping(value = "/getShopLotteryDrawList", method = RequestMethod.POST)
   @ApiOperation(value = "获取门店抽奖活动列表【2.0】")
   public R<ShopLotteryDrawVo> getShopLotteryDrawList(@RequestBody ShopLotteryDrawListDto dto) {
      Page<ShopLotteryDrawListVo> page = new Page<>();
      page.setSize(dto.getPageSize());
      page.setCurrent(dto.getPageNum());
      Shop shop = remoteShopService.getShop(dto.getShopId()).getData();
      ShopLotteryDrawVo shopLotteryDrawVo = new ShopLotteryDrawVo();
      shopLotteryDrawVo.setLotteryDrawFlag(shop.getLotteryDrawFlag());
      List<ShopLotteryDrawListVo> shopLotteryDrawList = lotteryEventService.getShopLotteryDrawList(page, dto.getShopId());
      page.setRecords(shopLotteryDrawList);
      shopLotteryDrawVo.setPage(page);
      return R.ok(shopLotteryDrawVo);
   }
   @RequestMapping(value = "/delShopLotteryDraw", method = RequestMethod.POST)
   @ApiOperation(value = "门店删除抽奖活动【2.0】")
   public R delShopLotteryDraw(@RequestBody DelShopLotteryDrawDto dto) {
      TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId());
      if (null == lotteryEvent) {
         return R.fail("抽奖活动不存在");
      }
      if (LocalDateTime.now().isAfter(lotteryEvent.getStartTime())) {
         return R.fail("活动已开始,不能删除!");
      }
      if (!lotteryEvent.getShopId().equals(dto.getShopId())) {
         return R.fail("删除失败,该活动不属于该店铺");
      }
      lotteryEvent.setDelFlag(1);
      lotteryEventService.updateById(lotteryEvent);
      return R.ok();
   }
   @RequestMapping(value = "/getShopLotteryDrawInfo", method = RequestMethod.POST)
   @ApiOperation(value = "获取门店抽奖详情【2.0】")
   public R<TLotteryEvent> getShopLotteryDrawInfo(@RequestBody DelShopLotteryDrawDto dto) {
      TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId());
      if (null == lotteryEvent || 1 == lotteryEvent.getDelFlag()) {
         return R.fail("抽奖活动不存在");
      }
      if (!lotteryEvent.getShopId().equals(dto.getShopId().intValue())) {
         return R.fail("查询失败");
      }
      List<TLotteryEventPrize> list = lotteryEventPrizeService.list(new LambdaQueryWrapper<TLotteryEventPrize>().eq(TLotteryEventPrize::getLotteryEventId, dto.getId()));
      lotteryEvent.setPrizes(list);
      return R.ok(lotteryEvent);
   }
   @RequestMapping(value = "/editShopLotteryDraw", method = RequestMethod.POST)
   @ApiOperation(value = "保存门店抽奖【2.0】")
   public R editShopLotteryDraw(@RequestBody TLotteryEvent lotteryEvent) {
      if (lotteryEvent.getId() == null) {
         lotteryEvent.setId(IdUtils.simpleUUID());
         String weiXinQrCode = remoteMemberService.getWeiXinQrCode("id=" + lotteryEvent.getId() + "&activityType=" + lotteryEvent.getActivityType(), "/pages/turntable/index");
         lotteryEvent.setWxMiniProgramQrCode(weiXinQrCode);
         lotteryEvent.setCreateTime(LocalDateTime.now());
         lotteryEvent.setCreateUserId(lotteryEvent.getCreateUserId());
      }
      lotteryEvent.setUpdateTime(LocalDateTime.now());
      lotteryEvent.setUpdateUserId(SecurityUtils.getUserId());
      lotteryEventService.saveOrUpdate(lotteryEvent);
      //先删除原有的奖品
      lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>().eq(TLotteryEventPrize::getLotteryEventId, lotteryEvent.getId()));
      //添加新的奖品
      List<TLotteryEventPrize> prizes = lotteryEvent.getPrizes();
      prizes.forEach(s -> {
         s.setId(IdUtils.simpleUUID());
         if (s.getPrizeType() == 2 && StringUtils.isEmpty(s.getObjectName())) {
            Goods goods = goodsService.getById(s.getObjectId());
            s.setObjectName(goods.getGoodsName());
         }
         s.setLotteryEventId(lotteryEvent.getId());
      });
      lotteryEventPrizeService.saveOrUpdateBatch(prizes);
      return R.ok();
   }
   @RequestMapping(value = "/getShopWinningRecord", method = RequestMethod.POST)
   @ApiOperation(value = "获取中奖记录列表【2.0】")
   public R<Page<ShopWinningRecordVo>> getShopWinningRecord(@RequestBody ShopWinningRecordDto dto) {
      TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId());
      if (null == lotteryEvent) {
         return R.fail("抽奖活动不存在");
      }
      if (!lotteryEvent.getShopId().equals(dto.getShopId().intValue())) {
         return R.fail("查询失败");
      }
      Page<ShopWinningRecordVo> page = new Page<>();
      page.setSize(dto.getPageSize());
      page.setCurrent(dto.getPageNum());
      List<ShopWinningRecordVo> shopWinningRecordVoList = userLotteryEventService.getShopWinningRecord(page, dto.getId());
      return R.ok(page.setRecords(shopWinningRecordVoList));
   }