diff --git a/app/Admin/Controllers/AgentController.php b/app/Admin/Controllers/AgentController.php index 6a9543b..d5f5299 100644 --- a/app/Admin/Controllers/AgentController.php +++ b/app/Admin/Controllers/AgentController.php @@ -6,10 +6,12 @@ use App\Admin\Extensions\Grid\AuditAgent; use App\Admin\Repositories\Agent; use App\Common\AgentType; use App\Common\UserStatus; +use App\Models\Supplier; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Route; class AgentController extends AdminController @@ -191,10 +193,41 @@ class AgentController extends AdminController } } } - })->saved(function (Form $form) { + })->saved(function (Form $form, $result) { //如果状态是正常,插入初始数据 - if ($form->status == UserStatus::NORMAL) { + if ($result && $form->status == UserStatus::NORMAL) { (new AuditAgent)->setKey($form->getKey())->pass(); + + //如果是供应商版旅行社,同时插入供应商会员表 + if ($form->type == AgentType::SUPPLIER) { + if (Supplier::query()->where('username', $form->model()->username)->doesntExist()) { + DB::beginTransaction(); + try { + //插入用户表 + $supplier_id = Supplier::query()->insertGetId([ + 'username' => $form->model()->username, + 'password' => $form->model()->password, //密码不用转换,原样插入 + 'name' => $form->model()->name, + 'avatar' => $form->model()->avatar, + 'status' => $form->model()->status, + 'company_name' => $form->model()->company_name, + 'logo' => $form->model()->logo, + 'address' => $form->model()->address, + 'license_pic' => $form->model()->license_pic, + 'director' => $form->model()->director, + 'contact_phone' => $form->model()->contact_phone, + 'rate' => $form->model()->password, + ]); + //插入权限表 + DB::table(config('admin-supplier.database.role_users_table')) + ->insertOrIgnore(['role_id' => 2, 'user_id' => $supplier_id]); + DB::commit(); + } catch (\Exception $e) { + DB::rollBack(); + return $form->response()->error('保存成功,但插入供应商会员失败,失败为:' . $e->getMessage()); + } + } + } } }); } diff --git a/app/AdminSettled/Controllers/AgentController.php b/app/AdminSettled/Controllers/AgentController.php index af84154..3762142 100644 --- a/app/AdminSettled/Controllers/AgentController.php +++ b/app/AdminSettled/Controllers/AgentController.php @@ -5,6 +5,7 @@ namespace App\AdminSettled\Controllers; use App\Admin\Repositories\Agent; use App\Common\AgentType; use App\Common\UserStatus; +use App\Models\Supplier; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Http\Controllers\AdminController; @@ -84,6 +85,11 @@ class AgentController extends AdminController return $form->response()->error($form->username . ' 的账号已经存在'); } + //如果是供应商版旅行社,也不能存在相同的供应商账号,因为后台审核之后需要再次插入相同的供应商账号 + if ($form->type == AgentType::SUPPLIER && Supplier::where('username', $form->username)->exists()) { + return $form->response()->error($form->username . ' 的账号已经存在'); + } + //不允许编辑的字段 if ($form->isEditing()) { $form->ignore(['id', 'remember_token', 'username', 'rate', 'created_at', 'updated_at', 'deleted_at']); diff --git a/app/Http/Controllers/Api/MessageController.php b/app/Http/Controllers/Api/MessageController.php index c7167df..174ba62 100644 --- a/app/Http/Controllers/Api/MessageController.php +++ b/app/Http/Controllers/Api/MessageController.php @@ -16,16 +16,13 @@ class MessageController extends Controller { public function index() { - $list = Message::where('agent_id', $this->agent_id) + $list = Message::query()->where('agent_id', $this->agent_id) ->whereIn('user_id', [$this->user_id, 0]) //0是所有人都接收的系统消息 - ->select('id', 'user_id', 'title', 'created_at') + ->select('id', 'title', 'created_at') + ->selectRaw('IF(( SELECT 1 FROM `message_reads` AS `mr` WHERE mr.id = messages.id AND mr.user_id = messages.user_id ), 1, 0) AS `is_read`') ->orderBy('id', 'DESC') ->simplePaginate(15); - if (!empty($list->items())) { - foreach ($list->items() as &$v) { - $v->is_read = (int)MessageRead::where(['id' => $v->id, 'user_id' => $this->user_id])->exists(); - } - } + return $this->success($list); }