diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java index 13c06bd42..cb74c31e2 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java @@ -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 { - CanteenDailyMenuEntity todayDO = new CanteenDailyMenuEntity(); - BeanUtils.copyProperties(canteenDailyMenu, todayDO); - todayDO.setSpuId(x); - baseMapper.insert(todayDO); - }); + List spuIds = Optional.ofNullable(canteenDailyMenu.getSpuIds()).orElse(Collections.emptyList()); + if (spuIds.isEmpty()) return; + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(CanteenDailyMenuEntity::getMerchantId, canteenDailyMenu.getMerchantId()) + .eq(CanteenDailyMenuEntity::getStartTime, canteenDailyMenu.getStartTime()) + .eq(CanteenDailyMenuEntity::getHourType, canteenDailyMenu.getHourType()) + .select(CanteenDailyMenuEntity::getSpuId); // 仅查询必要字段 + + List existSpuIds = baseMapper.selectList(queryWrapper) + .stream() + .map(CanteenDailyMenuEntity::getSpuId) + .collect(Collectors.toList()); + + List 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()); } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml index 9ba506975..22db42b53 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml @@ -31,7 +31,7 @@