AdverActivityController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. use App\Modes\AdverActivity;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Controller;
  6. class AdverActivityController extends Controller
  7. {
  8. /**
  9. * 活动列表
  10. * @author lyh
  11. * @date 2019/4/22
  12. * @param Request $request
  13. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  14. * @description
  15. */
  16. public function index(Request $request)
  17. {
  18. $validator = \Validator::make($param = $request->all(), [
  19. 'start_time' => 'date',
  20. 'end_time' => 'date',
  21. ]);
  22. if ($validator->fails()) {
  23. return showJsonErr($validator->errors()->first());
  24. }
  25. $res = AdverActivity::select([
  26. 'start_time',
  27. 'end_time',
  28. 'id',
  29. 'free_num',
  30. 'created_at'
  31. ]);
  32. if (!empty($param['start_time']) && !empty($param['end_time'])) {
  33. $res->whereBetween('created_at', [$param['start_time'], $param['end_time']]);
  34. } else if (!empty($param['start_time']) && empty($param['end_time'])) {
  35. $res->where('created_at', '>', $param['start_time']);
  36. } else if (empty($param['start_time']) && !empty($param['end_time'])) {
  37. $res->where('created_at', '<', $param['end_time']);
  38. }
  39. $res->orderBy('start_time','desc');
  40. $res = $res->paginate(perPage());
  41. return showJsonSucc(1001, $res);
  42. }
  43. /**
  44. * 添加活动
  45. * @author lyh
  46. * @date 2019/4/22
  47. * @param Request $request
  48. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  49. * @description
  50. */
  51. public function add(Request $request)
  52. {
  53. $validator = \Validator::make($param = $request->all(), [
  54. 'start_time' => 'required|date',
  55. 'end_time' => 'required|date',
  56. 'free_num' => 'required|integer'
  57. ]);
  58. if ($validator->fails()) {
  59. return showJsonErr($validator->errors()->first());
  60. }
  61. if ($param['start_time'] > $param['end_time']) {
  62. return showJsonErr('开始时间不能大于结束时间');
  63. }
  64. $list=\DB::table('adver_activity')->get();
  65. if(!empty($list)){
  66. foreach($list as $item){
  67. $rr=$this->isTimeCross(strtotime($param['start_time']),strtotime($param['end_time']),strtotime($item->start_time),strtotime($item->end_time));
  68. if($rr){
  69. return showJsonErr('抱歉,活动时间重叠');
  70. }
  71. }
  72. }
  73. /*
  74. if (AdverActivity::whereBetween('start_time', [$param['start_time'], $param['end_time']])->exists()) {
  75. return showJsonErr('抱歉,活动时间重叠');
  76. }
  77. if (AdverActivity::whereBetween('end_time', [$param['start_time'], $param['end_time']])->exists()) {
  78. return showJsonErr('抱歉,活动时间重叠!');
  79. }*/
  80. $id = AdverActivity::insertGetId($param);
  81. if (empty($id)) {
  82. return showJsonErr('抱歉,添加活动失败');
  83. }
  84. return showJsonSucc('添加活动成功', AdverActivity::find($id));
  85. }
  86. /*时间段交集*/
  87. function isTimeCross($beginTime1=0, $endTime1=0, $beginTime2=0, $endTime2=0) {
  88. $status = $beginTime2 - $beginTime1;
  89. if($status > 0){
  90. $status2 = $beginTime2 - $endTime1;
  91. if($status2 >= 0){
  92. return false; // 无交集
  93. }else{
  94. return true; // 有交集
  95. }
  96. }else{
  97. $status2 = $endTime2 - $beginTime1;
  98. if($status2 > 0){
  99. return true;
  100. }else{
  101. return false;
  102. }
  103. }
  104. }
  105. }