ActivityController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\TongbuOrderJob;
  4. use App\Models\Activity;
  5. use App\Models\ActivityLimit;
  6. use App\Models\Goods;
  7. use App\Models\Gifts;
  8. use App\Models\Order;
  9. use App\Models\OrderDetail;
  10. use App\Models\OrderGift;
  11. use App\Models\Ordertest;
  12. use App\Models\User;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\DB;
  15. use Illuminate\Support\Facades\Log;
  16. use Illuminate\Support\Facades\Auth;
  17. use Illuminate\Support\Facades\Storage;
  18. use Illuminate\Support\Facades\Validator;
  19. use \Exception;
  20. use App\Handlers\UploadFilesHandler;
  21. class ActivityController extends Controller
  22. {
  23. //获取活动列表
  24. public function getActivityList(Request $request){
  25. $input=$request->all();
  26. $page_size=$input['page_size'];
  27. $page_index=$input['page_index'];
  28. $num = ($page_index - 1) * $page_size;
  29. $search_name=$input['search_name'];
  30. $where=[];
  31. $count=Activity::where('title', 'like', '%' . $search_name . '%')
  32. ->where($where)
  33. ->count();
  34. if($count==0){
  35. $this->error('400001','没有数据');
  36. }
  37. $list=Activity::where('title', 'like', '%' . $search_name . '%')
  38. ->where($where)
  39. ->orderBy('id','desc')
  40. ->skip($num)->take($page_size)
  41. ->get();
  42. if(empty($list)){
  43. return $this->error('400002','没有获取到数据');
  44. }
  45. return $this->success_list($list,'success',$count);
  46. }
  47. public function getActHonorInfo()
  48. {
  49. return $this->success(Activity::$honor);
  50. }
  51. public function getActLevelsInfo()
  52. {
  53. return $this->success(Activity::$levels);
  54. }
  55. //后台添加活动
  56. public function addActivity(Request $request){
  57. $input=$request->all();
  58. $rules=[
  59. 'title'=>'required',
  60. 'start_time'=>'required|date',
  61. 'end_time'=>'required|date',
  62. // 'big_gift'=>'required | numeric',
  63. // 'honor_wall'=>'required | numeric',
  64. // 'crown_down'=>'required | numeric',
  65. // 'top_down'=>'required | numeric',
  66. ];
  67. $message=[
  68. 'title.required'=>'活动名称不能为空.',
  69. 'start_time.required'=>'开始时间不能为空.',
  70. 'end_time.required'=>'结束时间不能为空.',
  71. 'start_time.date'=>'开始时间格式有误.',
  72. 'end_time.date'=>'结束时间格式有误.',
  73. // 'big_gift.required'=>'大礼包限额不能为空.',
  74. // 'honor_wall.required'=>'荣誉墙限额不能为空.',
  75. // 'big_gift.numeric'=>'大礼包限额格式有误.',
  76. // 'honor_wall.numeric'=>'荣誉墙限额格式有误.',
  77. //
  78. // 'crown_down.required'=>'批发商降级门槛不能为空.',
  79. // 'top_down.required'=>'经销商降级门槛不能为空.',
  80. // 'crown_down.numeric'=>'批发商降级门槛格式有误.',
  81. // 'top_down.numeric'=>'经销商降级门槛格式有误.',
  82. ];
  83. $validator = Validator::make($input,$rules,$message);
  84. if($validator->fails()){
  85. return $this->error('400013',$validator->errors()->first());
  86. }
  87. $data['title']=$input['title']; //标题
  88. $data['start_time']=$input['start_time']; //开始时间
  89. $data['end_time']=$input['end_time']; //结束时间
  90. // $data['big_gift']=$input['big_gift']; //大礼包
  91. // $data['honor_wall']=$input['honor_wall']; //荣誉墙
  92. $data['crown_down']=$input['crown_down']??0; //皇冠降级门槛
  93. // $data['top_down']=$input['top_down']??0; //顶级降级门槛
  94. $data['contents']=$input['contents'];
  95. //设置批发商购买数量
  96. if($request->has('set_company_buy_num')){
  97. $data['set_company_buy_num']=$input['set_company_buy_num'];
  98. }
  99. $data['is_ing']=1;
  100. $data['disabled']='0';
  101. DB::beginTransaction();
  102. try{
  103. Activity::where('is_ing',1)->update(['is_ing'=>0]);
  104. $row=Activity::create($data);
  105. if(isset($input['gift']) && !empty($input['gift'])){
  106. foreach($input['gift'] as $key => $val){
  107. Gifts::create([
  108. 'img'=>$val['img'],
  109. 'name'=>$val['name'],
  110. 'activity_id'=>$row->id,
  111. 'num'=>$val['num'],
  112. 'limit_num'=>$val['limit_num'],
  113. ]);
  114. }
  115. }
  116. if(isset($input['honor']) && !empty($input['honor'])){
  117. foreach($input['honor'] as $key => $val){
  118. ActivityLimit::create([
  119. 'title'=>$val['title'],
  120. 'activity_id'=>$row->id,
  121. 'account'=>$val['account'],
  122. 'type'=>1,
  123. ]);
  124. }
  125. }
  126. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加活动成功,id:'.$row->id);
  127. DB::commit();
  128. return $this->success([]);
  129. }catch(Exception $e){
  130. Log::info($e->getMessage());
  131. DB::rollback();
  132. return $this->error();
  133. }
  134. }
  135. //后台修改活动
  136. public function updateActivity(Request $request){
  137. $input=$request->all();
  138. $rules=[
  139. 'title'=>'required',
  140. 'start_time'=>'required',
  141. 'end_time'=>'required',
  142. // 'big_gift'=>'required | numeric',
  143. // 'honor_wall'=>'required | numeric',
  144. // 'crown_down'=>'required | numeric',
  145. // 'top_down'=>'required | numeric',
  146. ];
  147. $message=[
  148. 'title.required'=>'活动名称不能为空.',
  149. 'start_time.required'=>'开始时间不能为空.',
  150. 'end_time.required'=>'结束时间不能为空.',
  151. // 'big_gift.required'=>'大礼包限额不能为空.',
  152. // 'honor_wall.required'=>'荣誉墙限额不能为空.',
  153. // 'big_gift.numeric'=>'大礼包限额格式有误.',
  154. // 'honor_wall.numeric'=>'荣誉墙限额格式有误.',
  155. //
  156. // 'crown_down.required'=>'批发商降级门槛不能为空.',
  157. // 'top_down.required'=>'经销商降级门槛不能为空.',
  158. // 'crown_down.numeric'=>'批发商降级门槛格式有误.',
  159. // 'top_down.numeric'=>'经销商降级门槛格式有误.',
  160. ];
  161. $validator = Validator::make($input,$rules,$message);
  162. if($validator->fails()){
  163. return $this->error('400013',$validator->errors()->first());
  164. }
  165. $data['title']=$input['title']; //标题
  166. $data['start_time']=$input['start_time']; //开始时间
  167. $data['end_time']=$input['end_time']; //结束时间
  168. // $data['big_gift']=$input['big_gift']; //大礼包
  169. // $data['honor_wall']=$input['honor_wall']; //荣誉墙
  170. $data['crown_down']=$input['crown_down']??0; //皇冠降级门槛
  171. // $data['top_down']=$input['top_down']??0; //顶级降级门槛
  172. $data['contents']=$input['contents'];
  173. //设置批发商购买数量
  174. if($request->has('set_company_buy_num')){
  175. $data['set_company_buy_num']=$input['set_company_buy_num'];
  176. }
  177. $data['activity_info']=json_encode(
  178. [
  179. ['level'=>2,'name'=>'大礼包A','money'=>'20000.00','remark'=>''],
  180. ['level'=>3,'name'=>'大礼包B','money'=>'100000.00','remark'=>''],
  181. ['level'=>3,'name'=>'大礼包C','money'=>'300000.00','remark'=>''],
  182. ]
  183. );
  184. $row=Activity::where('id',$input['id'])->update($data);
  185. if($row){
  186. if($input['new_gift']){
  187. foreach($input['new_gift'] as $key => $val){
  188. Gifts::create([
  189. 'img'=>$val['img'],
  190. 'name'=>$val['name'],
  191. 'activity_id'=>$input['id'],
  192. 'num'=>$val['num'],
  193. 'limit_num'=>$val['limit_num'],
  194. ]);
  195. }
  196. }
  197. if($input['old_gift']){
  198. foreach($input['old_gift'] as $key =>$val){
  199. Gifts::where('id',$val['id'])->update([
  200. 'img'=>$val['img'],
  201. 'name'=>$val['name'],
  202. 'activity_id'=>$input['id'],
  203. 'num'=>$val['num'],
  204. 'limit_num'=>$val['limit_num'],
  205. ]);
  206. }
  207. }
  208. if($input['del_i']){
  209. Gifts::whereIn('id',$input['del_i'])->delete();
  210. }
  211. if($input['new_honor']){
  212. foreach($input['new_honor'] as $key => $val){
  213. ActivityLimit::create([
  214. 'title'=>$val['title'],
  215. 'activity_id'=>$input['id'],
  216. 'account'=>$val['account'],
  217. 'type'=>1,
  218. ]);
  219. }
  220. }
  221. if($input['old_honor']){
  222. foreach($input['old_honor'] as $key =>$val){
  223. ActivityLimit::where('id',$val['id'])->update([
  224. 'title'=>$val['title'],
  225. 'activity_id'=>$input['id'],
  226. 'account'=>$val['account'],
  227. ]);
  228. }
  229. }
  230. if($input['del_i_honor']){
  231. ActivityLimit::whereIn('id',$input['del_i_honor'])->delete();
  232. }
  233. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改活动成功,id:'.$input['id']);
  234. return $this->success([]);
  235. }
  236. return $this->error();
  237. }
  238. //禁用启用
  239. public function disabledActivity(Request $request){
  240. $activity=Activity::find($request->post('id'));
  241. $activity->disabled=($activity->disabled==0)?'1':'0';
  242. $status=($activity->disabled==0)?'启用':'禁用';
  243. $row=$activity->save();
  244. if($row){
  245. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')'.$status.'活动'.$activity->title.'(id='.$activity->id.')成功');
  246. return $this->success([]);
  247. }
  248. return $this->error();
  249. }
  250. //禁用启用
  251. //<<<<<<< HEAD
  252. // public function destoryActivity(Request $request){
  253. // $activity=Activity::find($request->post('id'));
  254. // $row=$activity->delete();
  255. // if($row){
  256. // Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除活动'.$activity->title.'(id='.$activity->id.')成功');
  257. // return $this->success([]);
  258. // }
  259. // return $this->error();
  260. // }
  261. //获取活动列表
  262. public function getActivityInfo()
  263. {
  264. $list = Activity::where('disabled', 0)->get();
  265. if ($list) {
  266. return $this->success($list);
  267. }
  268. return $this->error();
  269. }
  270. //=======
  271. public function destoryActivity(Request $request){
  272. $activity=Activity::find($request->post('id'));
  273. $row=$activity->delete();
  274. if($row){
  275. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除活动'.$activity->title.'(id='.$activity->id.')成功');
  276. return $this->success([]);
  277. }
  278. return $this->error();
  279. //>>>>>>> 9aa477479386789a8615d89285e74706ec72fbab
  280. }
  281. //上传图片
  282. public function uploadPictureImage(Request $request){
  283. $input=$request->all();
  284. //轮播图 //授权书 //商品相册 //社区相册
  285. switch ($input['type']){
  286. case 1: // 轮播图
  287. $path_url='activity/banner';
  288. break;
  289. case 2: // 授权书
  290. $path_url='activity/shouquanshu';
  291. break;
  292. case 3: // 商品相册
  293. $path_url='activity/goods';
  294. break;
  295. case 4: // 社区相册
  296. $path_url='activity/article';
  297. break;
  298. default:
  299. $path_url='activity/default';
  300. }
  301. $file= $request->file('file');
  302. $upload= new UploadFilesHandler();
  303. $result= $upload->save($file, $path_url, null, 'image');
  304. if($result){
  305. return $this->success($result['path']);
  306. }
  307. return $this->error();
  308. // $input=$request->all();
  309. // //轮播图 //授权书 //商品相册 //社区相册
  310. // switch ($input['type']){
  311. // case 1: // 轮播图
  312. // $path_url='public/banner';
  313. // break;
  314. // case 2: // 授权书
  315. // $path_url='public/shouquanshu';
  316. // break;
  317. // case 3: // 商品相册
  318. // $path_url='public/goods';
  319. // break;
  320. // case 4: // 社区相册
  321. // $path_url='public/article';
  322. // break;
  323. // }
  324. // $path = $request->file('file')->store($path_url);
  325. // $url = Storage::url($path);
  326. // if($url){
  327. // return $this->success($url);
  328. // }
  329. // return $this->error();
  330. }
  331. //上传图片
  332. public function uploadGiftImage(Request $request){
  333. $file= $request->file('file');
  334. $path_url='activity/gift';
  335. $upload= new UploadFilesHandler();
  336. $result= $upload->save($file, $path_url, null, 'image');
  337. if($result){
  338. return $this->success($result['path']);
  339. }
  340. return $this->error();
  341. // $input=$request->all();
  342. // $path_url='public/gift';
  343. // $path = $request->file('file')->store($path_url);
  344. // $url = Storage::url($path);
  345. // if($url){
  346. // return $this->success($url);
  347. // }
  348. // return $this->error();
  349. }
  350. /*
  351. * 活动奖品数量
  352. * **/
  353. public function GetActivityGift(Request $request){
  354. return $this->success([]);
  355. $input=$request->all();
  356. $activity_id=$input['activity_id'];
  357. $activity=Activity::find($activity_id);
  358. $gift_list=Gifts::where('activity_id',$activity_id)->groupBy('name')->orderBy('id')->get();
  359. $order_ids=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('is_deleted',0)->pluck('id');
  360. $data=[];
  361. foreach ($gift_list as $k=>$v){
  362. $data[$k]['name']=$v->name;
  363. $data[$k]['num']=OrderGift::whereIn('order_id',$order_ids)->where('gift_id',$v->id)->sum('num');
  364. }
  365. return $this->success($data);
  366. }
  367. public function uploadTest(Request $request){
  368. $file= $request->file('file');
  369. $dirname= $request->input('dirname');
  370. $file_prefix= $request->input('file_prefix');
  371. $type= $request->input('type');
  372. $upload= new UploadFilesHandler();
  373. $result= $upload->save($file, $dirname, $file_prefix, $type);
  374. if($result){
  375. return $this->success($result['path']);
  376. }
  377. return $this->error();
  378. }
  379. public function t(){
  380. TongbuOrderJob::dispatch();
  381. dd(1);
  382. }
  383. public function gift(){
  384. dd(1);
  385. $data=Order::where('created_at','<','2024-09-09 18:00:00')
  386. ->where('created_at','>','2024-09-09 10:00:00')->get();
  387. foreach ($data as $k=>$v){
  388. $re=DB::table('order_detail')->where('order_id',$v->id)
  389. ->whereIn('goods_id',[86,87,88,89])
  390. ->sum('num');
  391. if ($re>0){
  392. $gift=new OrderGift();
  393. $gift->order_id=$v->id;
  394. $gift->gift_id=12;
  395. $gift->num=$re;
  396. $gift->save();
  397. }
  398. }
  399. dd(1);
  400. }
  401. }