| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- namespace App\Http\Controllers\Admins;
- use App\Modes\AdverActivity;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class AdverActivityController extends Controller
- {
- /**
- * 活动列表
- * @author lyh
- * @date 2019/4/22
- * @param Request $request
- * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
- * @description
- */
- public function index(Request $request)
- {
- $validator = \Validator::make($param = $request->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;
- }
- }
- }
- }
|