GroupsController.php 10.2 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 管理端控制层: 用户端用户 控制类
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Controllers\User
 * @package   App\Admin\Controllers\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年5月25日11:16:12
 * @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\Forms\User\GroupForm;
use App\Admin\Grids\User\GroupGrid;
use App\Admin\Rewrite\Facades\Admin;
use App\Models\User\Family;
use App\Models\User\Group;
use App\Models\User\User;
use App\Models\User\UserAddress;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\JsonResponse;

/**
 * Class GroupsController.
 *
 * @category  App\Admin\Controllers\User
 * @package   App\Admin\Controllers\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年5月25日11:16:12
 * @copyright 2020-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
class GroupsController extends BaseController
{
    // 使用Grid和Form的trait
    use GroupGrid, GroupForm;

    protected $message = '';

    protected $query_role = 'farmer';

    /**
     * GroupsController constructor.
     *
     * @param Group $model 注入model
     */
    public function __construct(Group $model)
    {
        // 资源显示的中名称
        $this->title            = $model::OBJ_NAME_ZH;
        // 是否可查看
        $this->can_view         = false;
        // 是否可新增
        $this->can_create       = true;
        // 是否可编辑
        $this->can_edit         = true;
        // 是否可删除
        $this->can_delete       = false;
        // 设置当前用户的角色
        $this->query_role = request('query_role', 'farmer');
        // 执行父类构造方法
        parent::__construct($model);
    }

    /**
     * 添加组长页面
     *
     * @param  $id
     */
    public function leader($id)
    {
        // 获取数据,如果没有获取到抛出异常
        $role = User::LEADER;
        return view('admin::group.user', compact('id', 'role')) ;
    }

    /**
     * 添加组员页面
     *
     * @param  $id
     */
    public function member($id)
    {
        // 获取数据,如果没有获取到抛出异常
        $role = User::SCORER;
        return view('admin::group.user', compact('id', 'role')) ;
    }

    /**
     * 添加家庭页面
     *
     * @param  $id
     */
    public function family($id)
    {
        // 获取还未设置群组的家庭
        $families = Family::getSelectOptions();
        return view('admin::group.family', compact('id', 'families')) ;
    }

    /**
     * 添加 家庭
     *
     * @param integer $id 主键id
     *
     * @return JsonResponse
     */
    public function addFamily($id)
    {
        $group_id   =  request('group_id');
        if (!$group_id) {
            return response()->json(
                [
                    'code'  => 1,
                    'message' => __('请选择小组!'),
                ]
            );
        }
        $role =  request('role', User::SCORER);
        $name =  request('name');
        if (($result = $this->valid($name, 'name')) !== true) {
            return $result;
        }

        $mobile =  request('mobile');
        if (($result = $this->valid($mobile, 'mobile')) !== true) {
            return $result;
        }

        $house_number =  request('house_number');
        if (($result = $this->valid($house_number, 'house_number')) !== true) {
            return $result;
        }

        // 查询手机号是否存在
        $user = User::where('mobile', $mobile)->first();
        if ($user) {
            return response()->json(
                [
                    'code'  => 1,
                    'message' => '你输入的手机号已存在!',
                ]
            );
        }

        try {
            // 获取数据,如果没有获取到抛出异常
            $model = $this->model->findOrFail($id);

            $user = $model->users()->create([
                'name' => $name,
                'mobile' => $mobile,
                'role' => $role,
                'house_number' => $house_number,
                'address' => request('address'),
                'registered_at' => now()->toDateTimeString(),
                'registered_ip' => request()->ip(),

            ]);

//            if ($role === User::GROUP_LEADER) {
//                $model->user_id = $user->id;
//                $model->save();
//            }

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

    /**
     * 添加 打分者
     *
     * @param integer $id 主键id
     *
     * @return JsonResponse
     */
    public function addScorer($id)
    {
        $group_id   =  request('group_id');
        if (!$group_id) {
            return response()->json(
                [
                    'code'  => 1,
                    'message' => __('请选择小组!'),
                ]
            );
        }
        $role =  request('role', User::SCORER);
        $name =  request('name');
        if (($result = $this->valid($name, 'name')) !== true) {
            return $result;
        }

        $mobile =  request('mobile');
        if (($result = $this->valid($mobile, 'mobile')) !== true) {
            return $result;
        }

        // 查询手机号是否存在
        $user = User::where('mobile', $mobile)->first();
        if ($user) {
            return response()->json(
                [
                    'code'  => 1,
                    'message' => '你输入的手机号已存在!',
                ]
            );
        }

        try {
            // 获取数据,如果没有获取到抛出异常
            $model = $this->model->findOrFail($id);

            $user = $model->users()->create([
                'name'      => $name,
                'mobile'    => $mobile,
                'role'      => $role,
                'registered_at' => now()->toDateTimeString(),
                'registered_ip' => request()->ip(),
            ]);

            if ($role === User::LEADER) {
                $model->user_id = $user->id;
                $model->save();
            }

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

    /**
     * 添加用户
     *
     * @param integer $id 主键id
     *
     * @return JsonResponse
     */
    public function addUser($id)
    {
        $group_id   =  request('group_id');
        if (!$group_id) {
            return response()->json(
                [
                    'code'  => 1,
                    'message' => __('请选择小组!'),
                ]
            );
        }
        $role =  request('role', User::SCORER);
        $name =  request('name');
        if (($result = $this->valid($name, 'name')) !== true) {
            return $result;
        }

        $mobile =  request('mobile');
        if (($result = $this->valid($mobile, 'mobile')) !== true) {
            return $result;
        }

        $house_number =  request('house_number');
        if (($result = $this->valid($house_number, 'house_number')) !== true) {
            return $result;
        }

        // 查询手机号是否存在
        $user = User::where('mobile', $mobile)->first();
        if ($user) {
            return response()->json(
                [
                    'code'  => 1,
                    'message' => '你输入的手机号已存在!',
                ]
            );
        }

        try {
            // 获取数据,如果没有获取到抛出异常
            $model = $this->model->findOrFail($id);

            $user = $model->users()->create([
                'name' => $name,
                'mobile' => $mobile,
                'role' => $role,
                'house_number' => $house_number,
                'address' => request('address'),
                'registered_at' => now()->toDateTimeString(),
                'registered_ip' => request()->ip(),

            ]);

//            if ($role === User::GROUP_LEADER) {
//                $model->user_id = $user->id;
//                $model->save();
//            }

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

    /**
     * 参数验证
     *
     * @param $value
     * @param $field
     * @return bool|JsonResponse
     */
    public function valid($value, $field)
    {
        if (!$value) {
            return response()->json(
                [
                    'code'    => 1,
                    'status'  => 0,
                    'message' =>__('please') .__('input') . __($field),
                ]
            );
//            $this->message = __('please') .__('input') . __($field);
//            return false;
        }

        return true;
    }
}