xiaogang 4 år sedan
förälder
incheckning
51854e9d34

+ 68 - 0
app/Admin/Actions/Users/UserVip.php

xqd
@@ -0,0 +1,68 @@
+<?php
+
+
+namespace App\Admin\Actions\Users;
+
+use Dcat\Admin\Grid\RowAction;
+use Dcat\Admin\Widgets\Modal;
+use Illuminate\Http\Request;
+
+class UserVip extends RowAction
+{
+    protected $title = '<i class="feather icon-award"></i> 设置VIP';
+
+    protected $model;
+
+    public function __construct(string $model = null)
+    {
+        $this->model = $model;
+    }
+
+    /**
+     * 设置确认弹窗信息,如果返回空值,则不会弹出弹窗
+     *
+     * 允许返回字符串或数组类型
+     *
+     * @return array|string|void
+     */
+    public function confirm()
+    {
+//        return [
+//            "确定改变认证状态吗?"
+//        ];
+    }
+
+    /**
+     * 处理请求
+     *
+     * @param Request $request
+     *
+     * @return \Dcat\Admin\Actions\Response
+     */
+    public function handle(Request $request)
+    {
+        return $this->response()
+            ->success('Processed successfully: '.$this->getKey())
+            ->redirect('/');
+    }
+
+    /**
+     * 设置要POST到接口的数据
+     *
+     * @return array
+     */
+    public function parameters()
+    {
+        return [];
+    }
+
+    public function render()
+    {
+        $form = UserVipForm::make()->payload(['id'=>$this->getKey()]);
+        return Modal::make()
+            ->lg()
+            ->title($this->title)
+            ->body($form)
+            ->button($this->title);
+    }
+}

+ 80 - 0
app/Admin/Actions/Users/UserVipForm.php

xqd
@@ -0,0 +1,80 @@
+<?php
+namespace App\admin\Actions\Users;
+
+use App\Models\User;
+use App\Models\UserVipLogModel;
+use App\Models\VipModel;
+use Dcat\Admin\Contracts\LazyRenderable;
+use Dcat\Admin\Traits\LazyWidget;
+use Dcat\Admin\Widgets\Form;
+use Illuminate\Support\Facades\DB;
+use PHPUnit\Util\Exception;
+
+class UserVipForm extends Form implements LazyRenderable
+{
+    use LazyWidget;
+
+
+    public function __construct($data = [], $key = null)
+    {
+        parent::__construct($data, $key);
+    }
+
+    public function handle(array $input)
+    {
+        DB::beginTransaction();
+        try {
+            $user = User::query()->find($input['id']);
+            if(!$user){
+                throw new Exception("请刷新后重试");
+            }
+            if($input['vip']>0){
+                $vip_info = VipModel::query()->find($input['vip']);
+                $user_vip_log = UserVipLogModel::query()->where(['user_id'=>$user->id])->first();
+                if(!$user_vip_log){
+                    UserVipLogModel::query()->create([
+                        'user_id'=>$user->id,
+                        'status'=>1,
+                        'day'=>$vip_info['day'],
+                        'end_day'=> date("Y-m-d H:i:s",strtotime("+".$vip_info['day']." day")),
+                    ]);
+                }elseif($user_vip_log->status==1){
+                    $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime($user_vip_log->end_day."+".$vip_info['day']." day"));
+                    $user_vip_log->save();
+                }elseif ($user_vip_log->status==0){
+                    $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime("+".$vip_info['day']." day"));
+                    $user_vip_log->status = 1;
+                    $user_vip_log->save();
+                }
+                $user->is_vip = 1;
+                $user->save();
+            }else{
+                if($user_vip_log = UserVipLogModel::query()->where(['user_id'=>$user->id])->first()){
+                    $user_vip_log->status = 0;
+                    $user_vip_log->save();
+                }
+                $user->is_vip = 0;
+                $user->save();
+            }
+            DB::commit();
+        }catch (\Exception $exception){
+            DB::rollBack();
+            return $this->response()->error($exception->getMessage());
+        }
+
+        return $this->response()->success('保存成功')->refresh();
+    }
+
+
+    public function form()
+    {
+        $vip = VipModel::query()->orderBy('id','asc')->get();
+        $vip_arr = array('0'=>'无');
+        $vip = $vip->toArray();
+        foreach ($vip as $k=>$v){
+            $vip_arr[$v['id']] = $v['title'];
+        }
+        $this->hidden('id')->value($this->payload['id']);
+        $this->select('vip', 'VIP')->options($vip_arr);
+    }
+}

+ 92 - 0
app/Admin/Controllers/DynamicController.php

xqd
@@ -0,0 +1,92 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\DynamicModel;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class DynamicController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new DynamicModel());
+        $grid->model()->with(['user','user_info'])->orderBy('id','desc');
+
+        $grid->column('id')->sortable();
+        $grid->column('user_info.avatar','头像')->image("",50);;
+        $grid->column('user_id','用户')->display(function (){
+            return $this->user->mobile.'<br>'.$this->user_info->nickname;
+        });
+        $grid->column('img_url','图片内容')->display(function ($v){
+            if($v){
+                $v = json_decode($v,true);
+                $str = '';
+                if(count($v)>0){
+                    foreach ($v as $item){
+                        $str.='<img data-action="preview-img" src="'.$item.'" style="max-width:50px;max-height:200px;cursor:pointer" class="img img-thumbnail">';
+                    }
+                }
+                return $str;
+            }else{
+                return "";
+            }
+        });
+        $grid->column('content','动态内容');
+        $grid->column('zan_num');
+        $grid->column('site');
+        $grid->column('tag');
+
+        $grid->filter(function (Grid\Filter $filter) {
+            $filter->equal('id');
+        });
+
+        $grid->disableCreateButton();
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new DynamicModel(), function (Show $show) {
+            $show->field('id');
+            $show->field('user_id');
+            $show->field('img_url');
+            $show->field('status');
+            $show->field('zan_num');
+            $show->field('site');
+            $show->field('tag');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new DynamicModel(), function (Form $form) {
+            $form->display('id');
+            $form->text('user_id');
+            $form->text('img_url');
+            $form->text('status');
+            $form->text('zan_num');
+            $form->text('site');
+            $form->text('tag');
+        });
+    }
+}

+ 6 - 3
app/Admin/Controllers/UserController.php

xqd xqd xqd
@@ -5,6 +5,7 @@ namespace App\Admin\Controllers;
 use App\Admin\Actions\Users\UserAction;
 use App\Admin\Actions\Users\UserAuth;
 use App\Admin\Actions\Users\UserChange;
+use App\Admin\Actions\Users\UserVip;
 use App\Models\User;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
@@ -49,15 +50,17 @@ class UserController extends AdminController
             $filter->equal('online','在线状态')->select(['0'=>'离线','1'=>'在线']);
         });
 
-
+        $grid->disableCreateButton();
         //操作管理
         $grid->actions(function (Grid\Displayers\Actions $actions) {
-
+            $actions->disableView();
+            $actions->disableEdit();
             $actions->append(new UserAction(User::class));
             $actions->append(new UserChange(User::class));
             if ($actions->row->is_auth == 0) {
                 $actions->append(new UserAuth(User::class));
             }
+            $actions->append(new UserVip(User::class));
         });
 
         //批量操作
@@ -78,7 +81,7 @@ class UserController extends AdminController
     {
         return Show::make($id, new User(), function (Show $show) {
             $show->field('id');
-            $show->field('mobile');
+            $show->field('mobile','手机号');
             $show->field('pid');
             $show->field('tencent_im_user_id');
             $show->field('sex');

+ 1 - 0
app/Admin/routes.php

xqd
@@ -15,4 +15,5 @@ Route::group([
     $router->get('/', 'HomeController@index');
     $router->resource('/banner', 'BannerController');
     $router->resource('/users', 'UserController');
+    $router->resource('/dynamic', 'DynamicController');
 });

+ 3 - 1
app/Http/Controllers/Api/DynamicController.php

xqd
@@ -57,8 +57,10 @@ class DynamicController extends Controller
             $dynamicParam->type = $request->post('type');
             $dynamicParam->status = 1;
             $dynamicParam->zan_num = 0;
-            $dynamicParam->site = $request->post('site');
             $dynamicParam->tag = $request->post('tag');
+            $dynamicParam->city = $request->post('city');
+            $dynamicParam->latitude = $request->post('latitude');
+            $dynamicParam->longitude = $request->post('longitude');
             $this->dynamicService->release($dynamicParam);
             DB::commit();
         }catch (\Exception $exception){

+ 1 - 1
app/Http/Controllers/Api/TestController.php

xqd
@@ -63,7 +63,7 @@ class TestController
     }
 
     public function create_dynamic(){
-        return response()->json(['message'=>"暂时无法使用"]);
+        //return response()->json(['message'=>"暂时无法使用"]);
         $total = 100;
         for ($i=0;$i<$total;$i++){
             $ins = array();

+ 3 - 1
app/Http/Params/DynamicParam.php

xqd
@@ -10,6 +10,8 @@ class DynamicParam
     public $type;
     public $status;
     public $zan_num;
-    public $site;
     public $tag;
+    public $city;
+    public $latitude;
+    public $longitude;
 }

+ 1 - 1
app/Models/DynamicModel.php

xqd
@@ -7,7 +7,7 @@ namespace App\Models;
 class DynamicModel extends BaseModel
 {
     protected $table = 'dynamic';
-    protected $fillable = ['user_id', 'content','img_url','type','status','zan_num','site','tag'];
+    protected $fillable = ['user_id', 'content','img_url','type','status','zan_num','tag','city','latitude','longitude'];
 
 
     public function user()

+ 3 - 1
app/Services/DynamicService.php

xqd
@@ -58,8 +58,10 @@ class DynamicService
           "status"=>$dynamicParam->status,
           "type"=>$dynamicParam->type,
           "tag"=>$tag_ins,
-          "site"=>$dynamicParam->site,
           "user_id"=>$dynamicParam->user_id,
+          "city"=>$dynamicParam->city,
+          "latitude"=>$dynamicParam->latitude,
+          "longitude"=>$dynamicParam->longitude,
         ];
         DynamicModel::create($data);
         return true;