UsersController.php 4.7 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 管理端控制层: 用户端用户 控制类
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Controllers\User
 * @package   App\Admin\Controllers\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年6月23日15:53:05
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Controllers\User;

use App\Admin\Controllers\BaseController;
use App\Admin\Shows\UserShow;
use App\Jobs\User\TimesRecordCreatedJob;
use App\Jobs\UserTimesRecordJob;
use App\Models\User\Role;
use App\Models\User\TimesRecord;
use App\Models\User\User;
use App\Admin\Forms\User\UserForm;
use App\Admin\Grids\User\UserGrid;
use App\Models\User\UserRemote;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\JsonResponse;

/**
 * Class UsersController.
 *
 * @category  App\Admin\Controllers\User
 * @package   App\Admin\Controllers\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2021年6月23日15:53:05
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class UsersController extends BaseController
{
    // 使用Grid和Form的trait
    use UserGrid, UserForm, UserShow;

    /**
     * UsersController constructor.
     *
     * @param User $model 注入model
     */
    public function __construct(User $model)
    {
        // 资源显示的中名称
        $this->title            = $model::OBJ_NAME;
        // 是否可查看
        $this->can_view         = false;
        // 是否可新增
        $this->can_create       = true;
        // 是否可编辑
        $this->can_edit         = true;
        // 是否可删除
        $this->can_delete       = true;
        // 是否可导出
        $this->can_export       = false;
        // 是否可导出
        $this->can_import       = false;
        // 是否列表是否开启row selector
        $this->grid_row_selector = true;
        // 是否看见回收站
//        $this->show_trashed     = true;
        // 是否开启下拉菜单
        $this->dropdownActions  = false;
        // 执行父类构造方法
        parent::__construct($model);
    }

    /**
     * 添加实例界面
     *
     * @param  $id
     */
    public function timesPage($id)
    {
        // 获取数据,如果没有获取到抛出异常
        return view('admin::user.times', compact('id'));
    }

    /**
     * 添加站点
     *
     * @param integer $id 主键id
     *
     * @return JsonResponse
     */
    public function updateTimes($id)
    {
        try {

            $model = $this->model->findOrFail($id);
            $times = request('value');
            if (!is_numeric($times) || $times < 0) {
                return response()->json(
                    [
                        'code'    => 1,
                        'status'  => 0,
                        'message' => '操作失败,次数格式不正确。',
                    ]
                );
            }
            $type = request('type');
            if ($type == 2) {
                $model->times -= $times;
            } else {
                $model->times += $times;
            }
            $result = $model->save();
            if ($result) {
                // 添加日志
                // 记录中增加
                $record = $model->timesRecords()->create([
                    'recordable_id' => 0,
                    'times' => $times,
                    'type'  => $type,
                    'event' => TimesRecord::SYSTEM,
                ]);
//                if ($type == 2) {
//                    UserRemote::where('id', $id)->decrement('times', $times);
//                } else {
//                    UserRemote::where('id', $id)->increment('times', $times);
//                }

                // 同步记录
//                TimesRecordCreatedJob::dispatch($record);
//                UserTimesRecordJob::dispatch($record);
            }

            return response()->json(
                [
                    'code' => 0,
                    'status' => 1,
                    'message' => __('operate_succeeded'),
                ]
            );
        } catch (\Exception $e) {
            return response()->json(
                [
                    'code'    => 1,
                    'status'  => 0,
                    'message' => $e->getMessage(),
                ]
            );
        }
    }
}