|
@@ -5,11 +5,16 @@ import com.github.zuihou.business.advertisement.dto.AdvertisementSaveDTO;
|
|
|
import com.github.zuihou.business.advertisement.dto.AdvertisementUpdateDTO;
|
|
|
import com.github.zuihou.business.advertisement.dto.AdvertisementPageDTO;
|
|
|
import com.github.zuihou.business.advertisement.service.AdvertisementService;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
import com.github.zuihou.base.controller.SuperController;
|
|
|
import com.github.zuihou.base.R;
|
|
|
+import com.github.zuihou.database.mybatis.conditions.Wraps;
|
|
|
+import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
|
|
|
+import com.github.zuihou.exception.BizException;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -50,4 +55,42 @@ public class AdvertisementController extends SuperController<AdvertisementServic
|
|
|
|
|
|
return R.success(baseService.saveBatch(advertisementList));
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R<Advertisement> handlerSave(AdvertisementSaveDTO model) {
|
|
|
+ validateTime(model.getDeliveryStartTime(), model.getDeliveryEndTime(), model.getDeliveryEquipmentId());
|
|
|
+ return super.handlerSave(model);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R<Advertisement> handlerUpdate(AdvertisementUpdateDTO model) {
|
|
|
+ validateTime(model.getDeliveryStartTime(), model.getDeliveryEndTime(), model.getDeliveryEquipmentId());
|
|
|
+ return super.handlerUpdate(model);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验广告时间相关业务
|
|
|
+ *
|
|
|
+ * @param deliveryStartTime 投放设备开始时间
|
|
|
+ * @param deliveryEndTime 投放设备结束时间
|
|
|
+ * @param equId 投放设备ID
|
|
|
+ */
|
|
|
+ private void validateTime(LocalDateTime deliveryStartTime, LocalDateTime deliveryEndTime, Long equId) {
|
|
|
+ if (deliveryStartTime == null || deliveryEndTime == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 1.投放结束时间必须大于投放开始时间
|
|
|
+ if (deliveryEndTime.isBefore(deliveryStartTime)) {
|
|
|
+ throw BizException.validFail("结束时间必须大于开始时间");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2.同一个设备开始时间和结束时间内只能有一条广告
|
|
|
+ LbqWrapper<Advertisement> countWrapper = Wraps.<Advertisement>lbQ()
|
|
|
+ .eq(Advertisement::getDeliveryEquipmentId, equId)
|
|
|
+ .eq(Advertisement::getAdStatus, "1")
|
|
|
+ .gt(Advertisement::getDeliveryEndTime, deliveryStartTime);
|
|
|
+ if (baseService.count(countWrapper) > 0) {
|
|
|
+ throw BizException.validFail("该时间段已有广告,不能新增");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|