99 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace app\controller\manager;
 | |
| 
 | |
| use app\exception\RepositoryException;
 | |
| 
 | |
| use app\model\CouponMain;
 | |
| use app\repository\CouponRepository;
 | |
| use Exception;
 | |
| use think\facade\Db;
 | |
| use think\response\Json;
 | |
| use think\response\View;
 | |
| 
 | |
| /**
 | |
|  * 优惠券相关
 | |
|  **/
 | |
| class Coupon extends Base
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * 列表
 | |
|      *
 | |
|      * @return Json|View
 | |
|      * @throws Exception
 | |
|      */
 | |
|     public function index()
 | |
|     {
 | |
| 
 | |
|         if ($this->request->isPost()) {
 | |
|             $model = new CouponMain();
 | |
|             $repo = CouponRepository::getInstance($model);
 | |
|             $keyword = $this->request->param('keyword/s', '');
 | |
|             $on_shelf = $this->request->param('on_shelf');
 | |
|             $start_time = $this->request->param('start_time',);
 | |
|             $end_time = $this->request->param('end_time');
 | |
|             $page = $this->request->param('page/d', 1);
 | |
|             $size = $this->request->param('size/d', 30);
 | |
| 
 | |
|             $whereMap = [];
 | |
|             $orders = ['id' => 'desc'];
 | |
|             if (!empty($on_shelf) && in_array($on_shelf, [CouponMain::COMMON_ON, CouponMain::COMMON_OFF])) {
 | |
|                 $whereMap[] = ['on_shelf', '=', $on_shelf];
 | |
|             }
 | |
|             if (!empty($start_time)) {
 | |
|                 $whereMap[] = ['start_time', '>=', $start_time];
 | |
|             }
 | |
|             if (!empty($end_time)) {
 | |
|                 $whereMap[] = ['end_time', '<=', $end_time];
 | |
|             }
 | |
|             if (!empty($keyword)) {
 | |
|                 $whereMap[] = ['name', 'like', "%" . $keyword . "%"];
 | |
|             }
 | |
|             $list = $repo->findList($whereMap, [], $page, $size, function ($q) {
 | |
| 
 | |
|                 if (!empty($keyword)) {
 | |
|                     return $q::hasWhere('business', function ($q) use ($keyword) {
 | |
|                         $q->where('business_name', 'like', "%" . $keyword . "%")->field("code,business_name,business_subtitle,type")
 | |
|                             ->with('category');
 | |
|                     });
 | |
|                 }
 | |
|                 return $q->with(["business" => function ($query) {
 | |
|                     $query->field("code,business_name,business_subtitle,type")
 | |
|                         ->with('category');
 | |
|                 }]);
 | |
|             }, $orders);
 | |
|             $time = time();
 | |
|             $list['list']->each(function ($item) use ($time) {
 | |
|                 if (strtotime($item->start_time) > $time) {
 | |
|                     $item->state_text = '<span >未开始</span>';
 | |
|                 } else if ((strtotime($item->start_time) < $time) && (strtotime($item->end_time) > $time)) {
 | |
|                     $item->state_text = '<span  class="f_green">进行中</span>';
 | |
|                 } else {
 | |
|                     $item->state_text = '<span  class="f_red">已过期</span>';
 | |
|                 }
 | |
|             });
 | |
|             return $this->json(0, 'success', $list);
 | |
|         }
 | |
|         return $this->view();
 | |
|     }
 | |
| 
 | |
|     public function shelf()
 | |
|     {
 | |
|         $id = input("id/d", 0);
 | |
|         $on_shelf = input("on_shelf/d", 1);
 | |
|         $model = new CouponMain();
 | |
|         $repo = CouponRepository::getInstance($model);
 | |
|         $coupon = $repo->findById($id);
 | |
| 
 | |
|         if (empty($coupon)) {
 | |
|             return $this->json(4001, "优惠券不存在");
 | |
|         }
 | |
| 
 | |
|         if (in_array($on_shelf, [CouponMain::COMMON_OFF, CouponMain::COMMON_ON])) {
 | |
|             return $this->json(4001, "状态错误");
 | |
|         }
 | |
|         $coupon->save(["on_shelf"=>$on_shelf]);
 | |
|         return $this->json();
 | |
|     }
 | |
| } |