all(), [ 'start_time' => 'date', 'end_time' => 'date', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $res = AdverActivity::select([ 'start_time', 'end_time', 'id', 'free_num', 'created_at' ]); if (!empty($param['start_time']) && !empty($param['end_time'])) { $res->whereBetween('created_at', [$param['start_time'], $param['end_time']]); } else if (!empty($param['start_time']) && empty($param['end_time'])) { $res->where('created_at', '>', $param['start_time']); } else if (empty($param['start_time']) && !empty($param['end_time'])) { $res->where('created_at', '<', $param['end_time']); } $res->orderBy('start_time','desc'); $res = $res->paginate(perPage()); return showJsonSucc(1001, $res); } /** * 添加活动 * @author lyh * @date 2019/4/22 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description */ public function add(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'start_time' => 'required|date', 'end_time' => 'required|date', 'free_num' => 'required|integer' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } if ($param['start_time'] > $param['end_time']) { return showJsonErr('开始时间不能大于结束时间'); } $list=\DB::table('adver_activity')->get(); if(!empty($list)){ foreach($list as $item){ $rr=$this->isTimeCross(strtotime($param['start_time']),strtotime($param['end_time']),strtotime($item->start_time),strtotime($item->end_time)); if($rr){ return showJsonErr('抱歉,活动时间重叠'); } } } /* if (AdverActivity::whereBetween('start_time', [$param['start_time'], $param['end_time']])->exists()) { return showJsonErr('抱歉,活动时间重叠'); } if (AdverActivity::whereBetween('end_time', [$param['start_time'], $param['end_time']])->exists()) { return showJsonErr('抱歉,活动时间重叠!'); }*/ $id = AdverActivity::insertGetId($param); if (empty($id)) { return showJsonErr('抱歉,添加活动失败'); } return showJsonSucc('添加活动成功', AdverActivity::find($id)); } /*时间段交集*/ function isTimeCross($beginTime1=0, $endTime1=0, $beginTime2=0, $endTime2=0) { $status = $beginTime2 - $beginTime1; if($status > 0){ $status2 = $beginTime2 - $endTime1; if($status2 >= 0){ return false; // 无交集 }else{ return true; // 有交集 } }else{ $status2 = $endTime2 - $beginTime1; if($status2 > 0){ return true; }else{ return false; } } } }