ActivityController.php 14 KB

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