This commit is contained in:
777
2026-01-07 11:30:24 +08:00
parent 56129fb865
commit 20c5908f34
7 changed files with 91 additions and 37 deletions

View File

@@ -14,4 +14,6 @@ import java.util.List;
public interface PrizeOnlineService extends IService<PrizeOnline> {
List<PrizeOnline> selectPrizeOnlineList(Integer gender);
void reset(Integer gender, List<PrizeOnline> bo);
}

View File

@@ -1,14 +1,19 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.PrizeOnline;
import com.ruoyi.cai.enums.prize.PrizeTypeEnum;
import com.ruoyi.cai.mapper.PrizeOnlineMapper;
import com.ruoyi.cai.service.PrizeOnlineService;
import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 已发布奖品Service业务层处理
@@ -22,7 +27,40 @@ public class PrizeOnlineServiceImpl extends ServiceImpl<PrizeOnlineMapper,PrizeO
@Override
public List<PrizeOnline> selectPrizeOnlineList(Integer gender){
return new ArrayList<>();
return this.list(Wrappers.lambdaQuery(PrizeOnline.class).eq(PrizeOnline::getGender, gender));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void reset(Integer gender, List<PrizeOnline> bo) {
if(bo.size() != 9){
throw new ServiceException("奖品必须为9个");
}
boolean hasNone = false;
List<Long> prizeIds = new ArrayList<>();
for (PrizeOnline prizeOnline : bo) {
prizeOnline.setGender(gender);
if(PrizeTypeEnum.NONE.getCode().equals(prizeOnline.getPrizeType())){
hasNone = true;
}
if(prizeOnline.getId() != null){
prizeIds.add(prizeOnline.getId());
}
}
if(!hasNone){
throw new ServiceException("奖品必须包含谢谢惠顾");
}
List<PrizeOnline> dbList = this.selectPrizeOnlineList(gender);
List<Long> dbIds = dbList.stream().map(PrizeOnline::getId).collect(Collectors.toList());
for (PrizeOnline prizeOnline : bo) {
if(prizeOnline.getId() != null){
this.updateById(prizeOnline);
continue;
}
this.save(prizeOnline);
}
dbIds.removeAll(prizeIds);
this.removeByIds(dbIds);
}
}