No Description

CustomerDepositController.php 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861
  1. <?php
  2. /**
  3. * Created by Sublime.
  4. * User: Williamslife Wang
  5. * Date: 17/10/18
  6. * Time: 上午11:20
  7. */
  8. namespace App\Http\Controllers\Admin;
  9. use App\CustomerCoupons;
  10. use App\CustomerGiftReceives;
  11. use App\CustomerMonthGift;
  12. use App\CustomerVip;
  13. use App\Goods;
  14. use App\GoodsSkus;
  15. use App\Http\Controllers\Controller;
  16. use App\Admin;
  17. use App\OrderGoodsSkus;
  18. use function GuzzleHttp\Psr7\str;
  19. use Illuminate\Http\Request;
  20. use App\CustomerInfo;
  21. use App\CustomerDeposit;
  22. use App\CustomerConsum;
  23. use App\CustomerDepositPackages;
  24. use Illuminate\Support\Facades\DB;
  25. class CustomerDepositController extends Controller
  26. {
  27. /**
  28. * @return \Illuminate\View\View
  29. */
  30. public function customerList(Request $request)
  31. {
  32. $admin_id = (int)$request->input('admin_id');
  33. $self_role = session('role_name');
  34. $self_id = session('admin_id');
  35. $saler_ids = null;
  36. if($self_role == '管理员' || $self_role == '分销管理员'){
  37. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  38. $saler_ids = DB::table('admin')->where('team_id', $team_id)->lists('id');
  39. }
  40. $phone = trim( $request->input('phone') );
  41. $name = trim( $request->input('name') );
  42. $page = (int)$request->input('page');
  43. $pageSize = 20;
  44. if($page<=0){
  45. $page = 1;
  46. }
  47. $offset = ($page-1) * $pageSize;
  48. $count = CustomerInfo::where(function($query) use($phone, $name, $admin_id, $saler_ids){
  49. if($phone) $query->where('phone', $phone);
  50. if($name) $query->where('name', 'like', '%'. $name. '%');
  51. if($admin_id) $query->where('admin_id', $admin_id);
  52. if( !empty($saler_ids) ) $query->whereIn('admin_id', $saler_ids);
  53. })->count();
  54. if ($count > 1) {
  55. // 总页数
  56. $pages = ceil($count/$pageSize);
  57. }else{
  58. // 总页数
  59. $pages = 1;
  60. }
  61. $result = CustomerInfo::where(function($query) use($phone, $name, $admin_id, $saler_ids){
  62. if($phone) $query->where('phone', $phone);
  63. if($name) $query->where('name', 'like', '%'. $name. '%');
  64. if($admin_id) $query->where('admin_id', $admin_id);
  65. if( !empty($saler_ids) ) $query->whereIn('admin_id', $saler_ids);
  66. })->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  67. $result = json_decode(json_encode($result),true);
  68. foreach($result as $k=>&$v){
  69. $v['phonei'] = substr($v['phone'],0,3).'****'.substr($v['phone'],7);
  70. }
  71. return view('deposit/customerList', ['result' =>$result,
  72. 'page' =>$page,
  73. 'count' =>$count,
  74. 'pages' =>$pages,
  75. 'phone' =>$phone,
  76. 'name' =>$name,
  77. ]);
  78. }
  79. /**
  80. * @return \Illuminate\View\View
  81. */
  82. public function index(Request $request)
  83. {
  84. $phone = $request->input('phone');
  85. $page = (int)$request->input('page');
  86. $pageSize = 20;
  87. if($page<=0){
  88. $page = 1;
  89. }
  90. $offset = ($page-1) * $pageSize;
  91. $count = CustomerDeposit::where(function($query) use($phone){
  92. if($phone) $query->where('phone', $phone);
  93. })->where('is_del',0)->count();
  94. if ($count > 1) {
  95. // 总页数
  96. $pages = ceil($count/$pageSize);
  97. }else{
  98. // 总页数
  99. $pages = 1;
  100. }
  101. $result = CustomerDeposit::where(function($query) use($phone){
  102. if($phone) $query->where('phone', $phone);
  103. })->where('is_del',0)->orderBy('pay_time', 'desc')->offset($offset)->limit($pageSize)->get();
  104. $result = json_decode(json_encode($result),true);
  105. foreach($result as $k=>&$v){
  106. $v['phone'] = substr($v['phone'],0,3).'****'.substr($v['phone'],7);
  107. if($v['payment_type'] == 1){
  108. $v['payment_type'] = '微信支付';
  109. }elseif($v['payment_type'] == 3){
  110. $v['payment_type'] = '个体户支付';
  111. }else{
  112. $v['payment_type'] = '';
  113. }
  114. }
  115. return view('deposit/index', ['result' =>$result,
  116. 'page' =>$page,
  117. 'count' =>$count,
  118. 'pages' =>$pages,
  119. 'phone' =>$phone
  120. ]);
  121. }
  122. /**
  123. * @return \Illuminate\View\View
  124. */
  125. public function create(Request $request)
  126. {
  127. $phone = $request->input('phone');
  128. //查询套餐
  129. $packages = CustomerDepositPackages::where('is_del', 0)->orderBy('pay_amount', 'asc')->get();
  130. $phonei = substr($phone,0,3).'****'.substr($phone,7);
  131. $self_role = session('role_name');
  132. $team_id = null;
  133. if($self_role == '管理员' || $self_role == '分销管理员'){
  134. $admin_id = session('admin_id');
  135. $team_id = DB::table('admin')->where('id', $admin_id)->pluck('team_id');
  136. }
  137. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where(function($query) use($team_id){
  138. if($team_id>0) $query->where('team_id', $team_id);
  139. })->where('id','>', 1)->where('is_use',1)->get();
  140. $adminList = json_decode(json_encode($adminList), true);
  141. return view('deposit/create', ['packages'=>$packages, 'phone'=>$phone, 'phonei'=>$phonei, 'adminlist'=>$adminList, 'self_role'=>$self_role]);
  142. }
  143. /**
  144. * @param Request $request
  145. * @return \Illuminate\Http\RedirectResponse
  146. */
  147. public function store(Request $request)
  148. {
  149. $pay_money = $request->input('pay_money');
  150. $pack_required = 'required';
  151. if($pay_money>0){
  152. $pack_required = '';
  153. }
  154. $this->validate($request, [
  155. 'phone' => 'required',
  156. 'package_id' => $pack_required,
  157. 'pay_time' => 'required',
  158. ], [
  159. 'phone.required' => '手机号不能为空',
  160. 'package_id.required' => '必须选择套餐',
  161. 'pay_time.required' => '充值时间必须选择',
  162. ]);
  163. $admin_id = (int)$request->input('admin_id');
  164. if(!$admin_id) $admin_id = session('admin_id');
  165. $deposit = new CustomerDeposit();
  166. $deposit->phone = trim($request->input('phone'));
  167. $deposit->admin_id = $admin_id;
  168. $deposit->pay_time = $request->input('pay_time');
  169. $deposit->payment_type = $request->input('payment_type');
  170. if($pay_money>0){
  171. //自定义充值
  172. $deposit->pay_amount = $pay_money;
  173. $deposit->discount = 0;
  174. $deposit->deposit_amount = $pay_money;
  175. $deposit->note = '自定义充值';
  176. }else{
  177. $package_id = (int)$request->input('package_id');
  178. $package_info = CustomerDepositPackages::where('id', $package_id)->first();
  179. $deposit->pay_amount = $package_info->pay_amount;
  180. $deposit->discount = $package_info->discount;
  181. $deposit->deposit_amount = $deposit->pay_amount + $deposit->discount;
  182. $deposit->note = $package_info->note;
  183. }
  184. if($deposit->save()){
  185. //变更余额
  186. $name = trim( $request->input('name') );
  187. $customerInfo = CustomerInfo::where('phone', $deposit->phone)->first();
  188. if(!empty($customerInfo)){
  189. $customerInfo->balance = $customerInfo->balance + $deposit->deposit_amount;
  190. $customerInfo->deposit_total = $customerInfo->deposit_total + $deposit->deposit_amount;
  191. $customerInfo->deposit_times = $customerInfo->deposit_times + 1;
  192. $customerInfo->save();
  193. }else{
  194. $customerInfo = new CustomerInfo();
  195. $customerInfo->phone = $deposit->phone;
  196. $customerInfo->deposit_times = 1;
  197. $customerInfo->balance = $deposit->deposit_amount;
  198. $customerInfo->deposit_total = $deposit->deposit_amount;
  199. if(!empty($name)) $customerInfo->name = $name;
  200. $customerInfo->admin_id = $admin_id;
  201. $customerInfo->save();
  202. }
  203. }
  204. return redirect('/admin/deposit/index?phone='.$deposit->phone)->with('info', '添加成功');
  205. }
  206. /**
  207. * @param $id
  208. * @return \Illuminate\View\View
  209. */
  210. public function edit($id)
  211. {
  212. $deposit = CustomerDeposit::findOrFail($id);
  213. return view('deposit/edit', ['deposit' => $deposit, 'id'=>$id]);
  214. }
  215. /**
  216. * @param Request $request
  217. * @return \Illuminate\Http\RedirectResponse
  218. */
  219. public function update(Request $request)
  220. {
  221. $id = (int)$request->input('id');
  222. $this->validate($request, [
  223. 'phone' => 'required',
  224. 'pay_amount' => 'required',
  225. 'discount' => 'required',
  226. ], [
  227. 'phone.required' => '手机号不能为空',
  228. 'pay_amount.required' => '参数有误',
  229. 'discount.required' => '参数有误',
  230. ]);
  231. $template = Templates::findOrFail($id);
  232. $template->url = trim($request->input('url'));
  233. $template->note = trim($request->input('note'));
  234. //图片上传 阿里云oss
  235. if ($request->hasFile('img') && $request->file('img')->isValid()) {
  236. $file = $request->file('img');
  237. $ossClient=new oss();
  238. // 上传阿里云
  239. $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
  240. $img=$file['oss-request-url'];
  241. $template->img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
  242. }
  243. $template->save();
  244. return redirect('/admin/template/index')->with('info', '修改模板成功');
  245. }
  246. //获余额
  247. public function getBalance($phone){
  248. $result = CustomerInfo::where('phone', $phone)->pluck('balance');
  249. if(empty($result)){
  250. exit('0');
  251. }
  252. exit($result);
  253. }
  254. /**
  255. * @return \Illuminate\View\View
  256. */
  257. public function consumList(Request $request)
  258. {
  259. $phone = $request->input('phone');
  260. $page = (int)$request->input('page');
  261. $pageSize = 20;
  262. if($page<=0){
  263. $page = 1;
  264. }
  265. $offset = ($page-1) * $pageSize;
  266. $count = CustomerConsum::where(function($query) use($phone){
  267. if($phone) $query->where('phone', $phone);
  268. })->where('is_del',0)->count();
  269. if ($count > 1) {
  270. // 总页数
  271. $pages = ceil($count/$pageSize);
  272. }else{
  273. // 总页数
  274. $pages = 1;
  275. }
  276. $result = CustomerConsum::where(function($query) use($phone){
  277. if($phone) $query->where('phone', $phone);
  278. })->where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  279. $result = json_decode(json_encode($result),true);
  280. foreach($result as $k=>&$v){
  281. $v['phone'] = substr($v['phone'],0,3).'****'.substr($v['phone'],7);
  282. }
  283. return view('deposit/consumList', ['result' =>$result,
  284. 'page' =>$page,
  285. 'count' =>$count,
  286. 'pages' =>$pages,
  287. 'phone' =>$phone
  288. ]);
  289. }
  290. /**
  291. * 编辑充值方式
  292. */
  293. public function editPayType(Request $request){
  294. $id = (int)$request->input('id');
  295. $payment_type = $request->input('payment_type');
  296. $data = array();
  297. if(isset($payment_type)){
  298. if(empty($payment_type)){
  299. $payment_type = null;
  300. }
  301. $data['payment_type'] = (int)$payment_type;
  302. }
  303. if($id>0 && !empty($data)){
  304. $res = CustomerDeposit::where('id', $id)->update($data);
  305. }
  306. return 1;
  307. }
  308. /**
  309. * vip用户列表
  310. * @param Request $request
  311. */
  312. public function vipCustomerList(Request $request) {
  313. $page = (int)$request->input('page');
  314. $name = $request->input('name');
  315. $phone = $request->input('phone');
  316. $admin_id = (int)$request->input('admin_id');
  317. $team_id = (int)$request->input('team_id');
  318. $self_role = session('role_name');
  319. if($self_role == '管理员'){
  320. //只能看自己团队的
  321. $self_id = session('admin_id');
  322. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  323. }
  324. //假如有团队筛选,检索销售队员
  325. $saler_ids = null;
  326. if($team_id>0 && !$admin_id){
  327. $saler_ids = DB::table('admin')->where('team_id', $team_id)->lists('id');
  328. }
  329. $pageSize = 20;
  330. if($page<=0){
  331. $page = 1;
  332. }
  333. $offset = ($page-1) * $pageSize;
  334. $count = CustomerVip::where(function($query) use ($name,$phone,$admin_id,$saler_ids) {
  335. if($phone) $query->where('phone', $phone);
  336. if($name) $query->where('name', 'like', '%'. $name. '%');
  337. if($admin_id) $query->where('admin_id', $admin_id);
  338. if( !empty($saler_ids) ) $query->whereIn('admin_id', $saler_ids);
  339. })->where('is_del',0)->count();
  340. if ($count > 1) {
  341. // 总页数
  342. $pages = ceil($count/$pageSize);
  343. }else{
  344. // 总页数
  345. $pages = 1;
  346. }
  347. $result = CustomerVip::where(function($query) use($phone, $name, $admin_id, $saler_ids){
  348. if($phone) $query->where('phone', $phone);
  349. if($name) $query->where('name', 'like', '%'. $name. '%');
  350. if($admin_id) $query->where('admin_id', $admin_id);
  351. if( !empty($saler_ids) ) $query->whereIn('admin_id', $saler_ids);
  352. })->where('is_del',0)->orderBy('id','desc')->offset($offset)->limit($pageSize)->get();
  353. $result = json_decode(json_encode($result),true);
  354. $result = array_map(function($value){
  355. $item = $value;
  356. $currentDate = date('Y-m-d',time());
  357. //生日套餐
  358. $birthdayGift = CustomerGiftReceives::getCustomerReceivesLog($value['phone'],1);
  359. if($birthdayGift){
  360. $item['birthday_gift'] = $birthdayGift[0]['dtime'].' 领取';
  361. } else {
  362. $item['birthday_gift'] = '未使用';
  363. }
  364. //每月礼包
  365. $num = CustomerGiftReceives::getCustomerResidualTimes($value['phone'],$value['vip_end_time']);
  366. $item['month_gift'] = '剩余'.$num.'次';
  367. //代金券
  368. $coupons = CustomerCoupons::where('phone',$value['phone'])->where('is_use',0)->where('end_time','>=',$currentDate)->count();
  369. $item['coupon'] = '剩余'.$coupons.'张';
  370. $admin = Admin::find($value['admin_id']);
  371. //销售人员
  372. $item['admin_name'] = $admin->realname;
  373. $item['phone'] = is_numeric($item['phone']) ? substr_replace($item['phone'], '****', 3, 4) : $item['phone'];
  374. if($item['payment_type'] == 1){
  375. $item['payment'] = '微信支付';
  376. } else if($item['payment_type'] == 3){
  377. $item['payment'] = '个体户支付';
  378. } else {
  379. $item['payment'] = '';
  380. }
  381. return $item;
  382. },$result);
  383. $teamList = DB::table('teams')->select('id', 'name')->where(function($query) use($team_id, $self_role){
  384. if($self_role == '管理员') $query->where('id', $team_id);
  385. })->where('type', 1)->get();
  386. $teamList = json_decode(json_encode($teamList), true);
  387. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where(function($query) use($team_id, $self_role){
  388. if($self_role == '管理员') $query->where('team_id', $team_id);
  389. })->where('id','>', 1)->where('is_use',1)->get();
  390. $adminList = json_decode(json_encode($adminList), true);
  391. return view('customer/vipCustomerList', [
  392. 'result' =>$result,
  393. 'page' =>$page,
  394. 'count' =>$count,
  395. 'pages' =>$pages,
  396. 'phone' =>$phone,
  397. 'name' =>$name,
  398. 'teamlist' =>$teamList,
  399. 'adminlist' =>$adminList,
  400. 'team_id' =>$team_id,
  401. 'admin_id' =>$admin_id,
  402. 'self_role' =>$self_role,
  403. ]);
  404. }
  405. /**
  406. * 添加vip用户页面
  407. * @param Request $request
  408. */
  409. public function addVipCustomer(Request $request) {
  410. $self_role = session('role_name');
  411. $team_id = null;
  412. if($self_role == '管理员'){
  413. //只能看自己团队的
  414. $self_id = session('admin_id');
  415. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  416. }
  417. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where(function($query) use($team_id, $self_role){
  418. if($self_role == '管理员') $query->where('team_id', $team_id);
  419. })->where('id','>', 1)->where('is_use',1)->get();
  420. $adminList = json_decode(json_encode($adminList), true);
  421. return view('customer/vipCustomerCreate',[
  422. 'adminlist' => $adminList,
  423. ]);
  424. }
  425. /**
  426. * 添加vip用户信息
  427. * @param Request $request
  428. */
  429. public function storeVipCustomer(Request $request) {
  430. $this->validate($request, [
  431. 'phone' => 'required',
  432. 'birthday' => 'required',
  433. ], [
  434. 'phone.required' => '手机号不能为空',
  435. 'birthday.required' => '必须填写用户生日',
  436. ]);
  437. //添加vip用户
  438. $customerVip = new CustomerVip();
  439. $customerVip->phone = $request->input('phone');
  440. $customerVip->name = $request->input('name');
  441. $customerVip->admin_id = $request->input('admin_id');
  442. $customerVip->level = 1;
  443. $customerVip->discount = 95;
  444. $customerVip->create_time = date('Y-m-d H:i:s',time());
  445. $customerVip->vip_end_time = date('Y-m-d H:i:s',strtotime('+1 year'));
  446. $customerVip->birthday = date('Y',time()).'-'.$request->input('birthday');
  447. $customerVip->price = $request->input('price');
  448. $customerVip->payment_type = $request->input('payment_type',1);
  449. $customerVip->is_del = 0;
  450. if($customerVip->save()) {
  451. //添加优惠券
  452. for($i=1;$i<=6;$i++){
  453. $customerCoupons = new CustomerCoupons();
  454. $customerCoupons->phone = $request->input('phone');
  455. $customerCoupons->coupon_price = 30;
  456. $customerCoupons->create_time = date('Y-m-d H:i:s',time());
  457. $customerCoupons->end_time = date('Y-m-d',strtotime('+3 months'));
  458. $customerCoupons->is_use = 0;
  459. $customerCoupons->save();
  460. }
  461. }
  462. return redirect('/admin/customer/vipList')->with('info', '添加成功');
  463. }
  464. /**
  465. * 编辑vip用户页面
  466. * @param Request $request
  467. */
  468. public function editVipCustomer(Request $request) {
  469. $id = $request->input('id');
  470. $self_role = session('role_name');
  471. $team_id = null;
  472. if($self_role == '管理员'){
  473. //只能看自己团队的
  474. $self_id = session('admin_id');
  475. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  476. }
  477. $customer = CustomerVip::findOrFail($id);
  478. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where(function($query) use($team_id, $self_role){
  479. if($self_role == '管理员') $query->where('team_id', $team_id);
  480. })->where('id','>', 1)->where('is_use',1)->get();
  481. $adminList = json_decode(json_encode($adminList), true);
  482. return view('customer/vipCustomerEdit',[
  483. 'info'=>$customer,
  484. 'adminlist' => $adminList,
  485. ]);
  486. }
  487. /**
  488. * 编辑vip用户信息
  489. * @param Request $request
  490. */
  491. public function updateVipCustomer(Request $request) {
  492. $id = $request->input('id');
  493. //修改vip用户信息
  494. $customerVip = CustomerVip::findOrFail($id);
  495. $customerVip->name = $request->input('name');
  496. $customerVip->birthday = date('Y',time()).'-'.$request->input('birthday');
  497. $customerVip->admin_id = $request->input('admin_id');
  498. $customerVip->price = $request->input('price');
  499. $customerVip->payment_type = $request->input('payment_type',1);
  500. if($customerVip->save()){
  501. return redirect('/admin/customer/vipList')->with('info', '编辑成功');
  502. } else {
  503. return redirect('/admin/customer/vipUpdate?id='.$id)->with('info', '编辑失败');
  504. }
  505. }
  506. /**
  507. * 启用vip用户
  508. * @param Request $request
  509. */
  510. public function vipUp(Request $request) {
  511. $id = $request->input('id');
  512. $res = CustomerVip::where('id',$id)->update(['is_del'=>0]);
  513. if($res) exit('1');
  514. exit('0');
  515. }
  516. /**
  517. * 禁用vip用户
  518. * @param Request $request
  519. */
  520. public function vipDel(Request $request) {
  521. $id = $request->input('id');
  522. $res = CustomerVip::where('id',$id)->update(['is_del'=>1]);
  523. if($res) exit('1');
  524. exit('0');
  525. }
  526. /**
  527. * 会员用户礼品列表
  528. * @param Request $request
  529. */
  530. public function monthGiftList(Request $request) {
  531. $page = $request->input('page',1);
  532. $type = $request->input('type');
  533. $pageSize = 20;
  534. if($page<=0){
  535. $page = 1;
  536. }
  537. $offset = ($page-1) * $pageSize;
  538. $count = CustomerMonthGift::where(function($query) use ($type) {
  539. if($type && ($type != '-1')) $query->where('type',$type);
  540. })->count();
  541. if ($count > 1) {
  542. // 总页数
  543. $pages = ceil($count/$pageSize);
  544. }else{
  545. // 总页数
  546. $pages = 1;
  547. }
  548. $result = CustomerMonthGift::where(function($query) use ($type) {
  549. if($type && ($type != '-1')) $query->where('type',$type);
  550. })->orderBy('id','desc')->offset($offset)->limit($pageSize)->get();
  551. $result = json_decode(json_encode($result),true);
  552. $result = array_map(function($value){
  553. $item = $value;
  554. $sku = GoodsSkus::select('propsName','price','is_white','quantity','is_weigh')->where('id', $value['sku_id'])->where('is_del', 0)->first();
  555. $goods = Goods::select('name','picUrl','goodsCategoryName')->where('is_del', 0)->where('id', $value['goods_id'])->first();
  556. $item['sku'] = $sku;
  557. $item['goods'] = $goods;
  558. return $item;
  559. },$result);
  560. return view('customer/customerGiftList',[
  561. 'page' => $page,
  562. 'pages' => $pages,
  563. 'count' => $count,
  564. 'result'=> $result,
  565. 'type' => $type,
  566. ]);
  567. }
  568. /**
  569. * 添加礼品页面
  570. */
  571. public function addMonthGift() {
  572. return view('customer/customerGiftAdd');
  573. }
  574. /**
  575. * 编辑礼品页面
  576. * @param Request $request
  577. */
  578. public function editMonthGift(Request $request) {
  579. $id = $request->input('id');
  580. $gift = CustomerMonthGift::findOrFail($id);
  581. $goods = Goods::select('gs.id as sku_id', 'goods.id as goods_id', 'goods.name', 'gs.propsName as props_name', 'gs.price', 'gs.is_weigh')->leftJoin('goods_skus as gs', 'gs.goodsCode', '=', 'goods.id')->where('gs.id', $gift->sku_id)->orderBy('goods.id', 'desc')->first();
  582. return view('customer/customerGiftEdit',[
  583. 'info' => $gift,
  584. 'good' => $goods,
  585. ]);
  586. }
  587. /**
  588. * 添加礼品信息
  589. * @param Request $request
  590. */
  591. public function monthGiftStore(Request $request) {
  592. #数据校验
  593. $this->validate( $request ,[
  594. 'mtime' => 'required',
  595. ],[
  596. 'mtime.required' => '日期必填',
  597. ]
  598. );
  599. #数据处理
  600. $type = $request->input('type');
  601. $mtime = date('Y-m-01',strtotime($request->input('mtime')));
  602. $skus = $request->input('skus');
  603. $sku_id = $skus[0];
  604. $gnum = $request->input('gnum');
  605. $num = $gnum[0];
  606. //根据规格id反向查询商品goods_id
  607. $sku = GoodsSkus::find($sku_id);
  608. $goods_id = $sku['goodsCode'];
  609. #数据存储
  610. $gift = new CustomerMonthGift();
  611. $gift->mtime = $mtime;
  612. $gift->goods_id = $goods_id;
  613. $gift->sku_id = $sku_id;
  614. $gift->type = $type;
  615. $gift->num = $num;
  616. $gift->create_time = date('Y-m-d H:i:s',time());
  617. $res = $gift->save();
  618. #结果返回
  619. if($res){
  620. return redirect('/admin/customer/giftList')->with('info','添加成功');
  621. } else {
  622. return back()->with('info','添加失败');
  623. }
  624. }
  625. /**
  626. * 编辑礼品信息
  627. * @param Request $request
  628. */
  629. public function monthGiftUpdate(Request $request) {
  630. #数据校验
  631. $this->validate( $request ,[
  632. 'mtime' => 'required',
  633. ],[
  634. 'mtime.required' => '日期必填',
  635. ]
  636. );
  637. #数据处理
  638. $type = $request->input('type');
  639. $id = $request->input('id');
  640. $mtime = date('Y-m-01',strtotime($request->input('mtime')));
  641. $skus = $request->input('skus');
  642. $sku_id = $skus[0];
  643. $gnum = $request->input('gnum');
  644. $num = $gnum[0];
  645. //根据规格id反向查询商品goods_id
  646. $sku = GoodsSkus::find($sku_id);
  647. $goods_id = $sku['goodsCode'];
  648. #数据存储
  649. $gift = CustomerMonthGift::findOrFail($id);
  650. $gift->mtime = $mtime;
  651. $gift->goods_id = $goods_id;
  652. $gift->sku_id = $sku_id;
  653. $gift->type = $type;
  654. $gift->num = $num;
  655. $res = $gift->save();
  656. #结果返回
  657. if($res){
  658. return redirect('/admin/customer/giftList')->with('info','修改成功');
  659. } else {
  660. return back()->with('info','修改失败');
  661. }
  662. }
  663. /**
  664. * 查询会员每月礼品领取记录
  665. * @param Request $request
  666. */
  667. public function monthGiftLog(Request $request) {
  668. $phone = $request->input('phone');
  669. #查询会员领取情况以及基本信息
  670. $customerInformation = CustomerVip::getCustomerInformation($phone);
  671. $data = array();
  672. #生成12个月数组
  673. $startDate = $customerInformation->create_time;
  674. $currentTime = strtotime($startDate);
  675. $cyear = floor(date("Y",$currentTime));
  676. $cMonth = floor(date("m",$currentTime));
  677. for($i=0;$i<12;$i++){
  678. $nMonth = $cMonth+$i;
  679. $cyear = $nMonth == 13 ? ($cyear+1) : $cyear;
  680. $nMonth = $nMonth > 12 ? $nMonth-12 : $nMonth;
  681. $date = $cyear."-".$nMonth."-1";
  682. $firstday = date('Y-m-01', strtotime($date));
  683. $lastday = date('Y-m-t', strtotime($date));
  684. $data[$i]['start_time'] = $firstday;
  685. $data[$i]['end_time'] = $lastday;
  686. }
  687. $list = array();
  688. #将数据对应填写
  689. foreach ($data as $value) {
  690. $monthGiftLog = CustomerGiftReceives::where('phone',$phone)->where('gift_type',0)
  691. ->where('dtime','>=',$value['start_time'])->where('dtime','<=',$value['end_time'])->first();
  692. if($monthGiftLog){
  693. $value['order_id'] = $monthGiftLog['order_id'];
  694. $value['dtime'] = $monthGiftLog['dtime'];
  695. $value['status'] = '已使用';
  696. $giftInfo = CustomerMonthGift::find($monthGiftLog['gift_id']);
  697. $goodsId = $giftInfo->goods_id;
  698. $goodsInfo = Goods::find($goodsId);
  699. $value['goods_id'] = $goodsId;
  700. $value['goods_name'] = $goodsInfo->name;
  701. } else if($value['end_time'] < date('Y-m-d')){
  702. $value['status'] = '已过期';
  703. } else {
  704. $value['status'] = '未使用';
  705. }
  706. $list[] = $value;
  707. }
  708. return view('customer/customermonthgiftlist',['data'=>$list]);
  709. }
  710. /**
  711. * 查询会员代金券领取记录
  712. * @param Request $request
  713. * @return \Illuminate\View\View
  714. */
  715. public function couponLog(Request $request) {
  716. $phone = $request->input('phone');
  717. $couponList = CustomerCoupons::getCustomerCouponsLog($phone);
  718. $couponList = array_map(function($value){
  719. $item = $value;
  720. if($value['is_use'] == 1){
  721. $item['status'] = '已使用';
  722. } else if(time() <= strtotime($value['end_time'])){
  723. $item['status'] = '未使用';
  724. } else {
  725. $item['status'] = '已过期';
  726. }
  727. return $item;
  728. },$couponList);
  729. return view('customer/customercouponlist',[
  730. 'data'=>$couponList
  731. ]);
  732. }
  733. /**
  734. * 查询会员生日套餐领取记录
  735. * @param Request $request
  736. * @return \Illuminate\View\View
  737. */
  738. public function birthdayGiftLog(Request $request) {
  739. $phone = $request->input('phone');
  740. $log = CustomerGiftReceives::getCustomerReceivesLog($phone,1);
  741. if(count($log) < 1){
  742. $data = array();
  743. } else {
  744. #找到对应的商品列表
  745. //1.找到对应的订单
  746. $orderId = $log[0]['order_id'];
  747. //2.获取所有的生日套餐的gift_id
  748. $giftList = CustomerMonthGift::where('type',1)->pluck('id');
  749. //3.从订单商品表中查找到该订单中gift_id是生日套餐的商品id
  750. if(is_array($giftList)){
  751. $orderGoodsSkus = OrderGoodsSkus::where('order_id',$orderId)->whereIn('gift_id',$giftList)->get();
  752. } else {
  753. $orderGoodsSkus = OrderGoodsSkus::where('order_id',$orderId)->where('gift_id',$giftList)->get();
  754. }
  755. foreach($orderGoodsSkus as $k=>$value) {
  756. $goods = Goods::find($value['goods_id']);
  757. $data[$k]['order_id'] = $orderId;
  758. $data[$k]['goods_id'] = $goods['id'];
  759. $data[$k]['goods_name'] = $goods['name'];
  760. $data[$k]['dtime'] = $log[0]['dtime'];
  761. }
  762. $data = json_decode(json_encode($data),true);
  763. }
  764. return view('customer/customerbirthdaygiftlist',['data'=>$data]);
  765. }
  766. }