package cn.lili.modules.lmk.service.impl; import cn.lili.common.utils.StringUtils; import cn.lili.modules.lmk.domain.entity.ActivityRefPrize; import cn.lili.modules.lmk.service.ActivityRefPrizeService; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import cn.lili.modules.lmk.domain.entity.PrizeDraw; import cn.lili.modules.lmk.mapper.PrizeDrawMapper; import cn.lili.modules.lmk.service.PrizeDrawService; import cn.lili.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.lili.modules.lmk.domain.form.PrizeDrawForm; import cn.lili.modules.lmk.domain.vo.PrizeDrawVO; import cn.lili.modules.lmk.domain.query.PrizeDrawQuery; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import cn.lili.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 抽奖活动奖品 服务实现类 * * @author peng * @since 2025-08-14 */ @Service @RequiredArgsConstructor public class PrizeDrawServiceImpl extends ServiceImpl implements PrizeDrawService { private final PrizeDrawMapper prizeDrawMapper; private final ActivityRefPrizeService activityRefPrizeService; private final CouponService couponService; private final COSUtil cOSUtil; @Override public Result canUpDatePrizeDraw(String prizeDrawId) { PrizeDraw prizeDraw = baseMapper.selectById(prizeDrawId); CouponVO detail = new CouponVO(); if (StringUtils.isNotBlank(prizeDraw.getCouponId())){ detail = couponService.getDetail(prizeDraw.getCouponId()); } Result result = Result.ok(); result.data(detail); Object data = activityRefPrizeService.getPrizeByIdAndPrizeActivityId(prizeDrawId).get("data"); if (data instanceof List) { List rawList = (List) data; List list = new ArrayList<>(); for (Object item : rawList) { if (item instanceof ActivityRefPrize) { list.add((ActivityRefPrize) item); } } if (CollectionUtils.isEmpty(list)) { return result.put("state",true); }else{ return result.put("state",false); } // 使用 list } return result.put("state",false); } /** * 添加 * @param form * @return */ @Override public Result add(PrizeDrawForm form) { PrizeDraw entity = PrizeDrawForm.getEntityByForm(form, null); baseMapper.insert(entity); return Result.ok("添加成功"); } /** * 修改 * @param form * @return */ @Override public Result update(PrizeDrawForm form) { PrizeDraw entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); baseMapper.updateById(entity); return Result.ok("修改成功"); } /** * 批量删除 * @param ids * @return */ @Override public Result remove(List ids) { baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); } /** * id删除 * @param id * @return */ @Override public Result removeById(String id) { baseMapper.deleteById(id); return Result.ok("删除成功"); } /** * 分页查询 * @param query * @return */ @Override public Result page(PrizeDrawQuery query) { IPage page = PageUtil.getPage(query, PrizeDrawVO.class); baseMapper.getPage(page, query); for (PrizeDrawVO vo : page.getRecords()) { if (StringUtils.isNotBlank(vo.getPrizeCover())){ vo.setPrizeCoverUrl(cOSUtil.getPreviewUrl(vo.getPrizeCover())); } if (StringUtils.isNotBlank(vo.getPrizeImg())){ vo.setPrizeImgUrl(cOSUtil.getPreviewUrl(vo.getPrizeImg())); } } return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { PrizeDrawVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List entities = baseMapper.selectList(null); List vos = entities.stream() .map(entity -> PrizeDrawVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } }