修复每日菜谱新增可能会出现重复提交问题

This commit is contained in:
zjf committed 2025-03-03 23:55:18 +08:00
1 parent f4f5fd156a
commit 6840411c4d
1 file changed
+27 -6
@@ -24,6 +24,7 @@ import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.DayOfWeek;
import java.time.LocalDate;
@@ -93,13 +94,33 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl<CanteenDailyMenuMap
}
@Override
@Transactional
public void saveToday(CanteenDailyMenuEntity canteenDailyMenu) {
canteenDailyMenu.getSpuIds().forEach(x -> {
CanteenDailyMenuEntity todayDO = new CanteenDailyMenuEntity();
BeanUtils.copyProperties(canteenDailyMenu, todayDO);
todayDO.setSpuId(x);
baseMapper.insert(todayDO);
});
List<Long> spuIds = Optional.ofNullable(canteenDailyMenu.getSpuIds()).orElse(Collections.emptyList());
if (spuIds.isEmpty()) return;
LambdaQueryWrapper<CanteenDailyMenuEntity> queryWrapper = new LambdaQueryWrapper<CanteenDailyMenuEntity>()
.eq(CanteenDailyMenuEntity::getMerchantId, canteenDailyMenu.getMerchantId())
.eq(CanteenDailyMenuEntity::getStartTime, canteenDailyMenu.getStartTime())
.eq(CanteenDailyMenuEntity::getHourType, canteenDailyMenu.getHourType())
.select(CanteenDailyMenuEntity::getSpuId); // 仅查询必要字段
List<Long> existSpuIds = baseMapper.selectList(queryWrapper)
.stream()
.map(CanteenDailyMenuEntity::getSpuId)
.collect(Collectors.toList());
List<CanteenDailyMenuEntity> insertList = spuIds.stream()
.filter(id -> !existSpuIds.contains(id))
.map(id -> {
CanteenDailyMenuEntity entity = new CanteenDailyMenuEntity();
BeanUtils.copyProperties(canteenDailyMenu, entity);
entity.setSpuId(id);
return entity;
})
.collect(Collectors.toList());
saveBatch(insertList);
// 发送mq消息
sendMqttMsg(canteenDailyMenu.getMerchantId());
}