Ver código fonte

add - 邀约门店、工程师入驻

liugc 1 ano atrás
pai
commit
afe2574ac1

+ 108 - 0
app/adminapi/controller/tenant/TenantRegisterController.php

@@ -0,0 +1,108 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+
+namespace app\adminapi\controller\tenant;
+
+
+use app\adminapi\controller\BaseAdminController;
+use app\adminapi\lists\tenant\TenantRegisterLists;
+use app\adminapi\logic\tenant\TenantRegisterLogic;
+use app\adminapi\validate\tenant\TenantRegisterValidate;
+
+
+/**
+ * TenantRegister控制器
+ * Class TenantRegisterController
+ * @package app\adminapi\controller
+ */
+class TenantRegisterController extends BaseAdminController
+{
+
+
+    /**
+     * @notes 获取列表
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function lists()
+    {
+        return $this->dataLists(new TenantRegisterLists());
+    }
+
+
+    /**
+     * @notes 添加
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function add()
+    {
+        $params = (new TenantRegisterValidate())->post()->goCheck('add');
+        $result = TenantRegisterLogic::add($params);
+        if (true === $result) {
+            return $this->success('添加成功', [], 1, 1);
+        }
+        return $this->fail(TenantRegisterLogic::getError());
+    }
+
+
+    /**
+     * @notes 编辑
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function edit()
+    {
+        $params = (new TenantRegisterValidate())->post()->goCheck('edit');
+        $result = TenantRegisterLogic::edit($params);
+        if (true === $result) {
+            return $this->success('编辑成功', [], 1, 1);
+        }
+        return $this->fail(TenantRegisterLogic::getError());
+    }
+
+
+    /**
+     * @notes 删除
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function delete()
+    {
+        $params = (new TenantRegisterValidate())->post()->goCheck('delete');
+        TenantRegisterLogic::delete($params);
+        return $this->success('删除成功', [], 1, 1);
+    }
+
+
+    /**
+     * @notes 获取详情
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function detail()
+    {
+        $params = (new TenantRegisterValidate())->goCheck('detail');
+        $result = TenantRegisterLogic::detail($params);
+        return $this->data($result);
+    }
+
+
+}

+ 13 - 1
app/adminapi/controller/training/TrainingWorkerTaskController.php

@@ -30,6 +30,7 @@ use app\adminapi\validate\training\TrainingWorkerTaskValidate;
 class TrainingWorkerTaskController extends BaseAdminController
 {
 
+    public array $notNeedLogin = ['courseInitialize'];
 
     /**
      * @notes 获取列表
@@ -104,5 +105,16 @@ class TrainingWorkerTaskController extends BaseAdminController
         return $this->data($result);
     }
 
-
+    /**
+     * @notes 初始化课程
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/02/16 13:49
+     */
+    public function courseInitialize()
+    {
+        $params = request()->get();
+        $result = TrainingWorkerTaskLogic::trainingCourseRecord($params['master_worker_id'],$params['training_task_id']);
+        return $this->data($result);
+    }
 }

+ 78 - 0
app/adminapi/lists/tenant/TenantRegisterLists.php

@@ -0,0 +1,78 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\lists\tenant;
+
+
+use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\tenant\TenantRegister;
+use app\common\lists\ListsSearchInterface;
+
+
+/**
+ * TenantRegister列表
+ * Class TenantRegisterLists
+ * @package app\adminapi\lists
+ */
+class TenantRegisterLists extends BaseAdminDataLists implements ListsSearchInterface
+{
+
+
+    /**
+     * @notes 设置搜索条件
+     * @return \string[][]
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function setSearch(): array
+    {
+        return [
+            '=' => ['door_images', 'business_images', 'province', 'city', 'area_name', 'lon', 'lat', 'status', 'sale_id', 'openid'],
+            '%like%' => ['name', 'head_name','mobile'],
+        ];
+    }
+
+
+    /**
+     * @notes 获取列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function lists(): array
+    {
+        return TenantRegister::with(['sale'])->where($this->searchWhere)
+            ->field(['id', 'name', 'head_name', 'mobile', 'door_images', 'business_images', 'province', 'city', 'area_name', 'lon', 'lat', 'status', 'sale_id', 'openid'])
+            ->limit($this->limitOffset, $this->limitLength)
+            ->order(['id' => 'desc'])
+            ->select()
+            ->toArray();
+    }
+
+
+    /**
+     * @notes 获取数量
+     * @return int
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function count(): int
+    {
+        return TenantRegister::where($this->searchWhere)->count();
+    }
+
+}

+ 205 - 0
app/adminapi/logic/tenant/TenantRegisterLogic.php

@@ -0,0 +1,205 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\logic\tenant;
+
+
+use app\adminapi\logic\master_worker\MasterWorkerTeamLogic;
+use app\adminapi\logic\master_worker_register\MasterWorkerRegisterLogic;
+use app\adminapi\logic\training\TrainingWorkerTaskLogic;
+use app\common\model\tenant\TenantRegister;
+use app\common\logic\BaseLogic;
+use think\facade\Db;
+
+
+/**
+ * TenantRegister逻辑
+ * Class TenantRegisterLogic
+ * @package app\adminapi\logic
+ */
+class TenantRegisterLogic extends BaseLogic
+{
+
+
+    /**
+     * @notes 添加
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public static function add(array $params): bool
+    {
+        Db::startTrans();
+        try {
+            TenantRegister::create([
+                'name' => $params['name'],
+                'head_name' => $params['head_name'],
+                'mobile' => $params['mobile'],
+                'door_images' => $params['door_images'],
+                'business_images' => $params['business_images'],
+                'province' => $params['province'],
+                'city' => $params['city'],
+                'area_name' => $params['area_name'],
+                'lon' => $params['lon'],
+                'lat' => $params['lat'],
+                'status' => $params['status'],
+                'sale_id' => $params['sale_id'],
+                'openid' => $params['openid']??''
+            ]);
+
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 编辑
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public static function edit(array $params): bool
+    {
+        Db::startTrans();
+        try {
+            TenantRegister::where('id', $params['id'])->update([
+                'name' => $params['name'],
+                'head_name' => $params['head_name'],
+                'mobile' => $params['mobile'],
+                'door_images' => $params['door_images'],
+                'business_images' => $params['business_images'],
+                'province' => $params['province'],
+                'city' => $params['city'],
+                'area_name' => $params['area_name'],
+                'lon' => $params['lon'],
+                'lat' => $params['lat'],
+                'status' => $params['status'],
+                'sale_id' => $params['sale_id'],
+                'openid' => $params['openid']??''
+            ]);
+
+            if((int)$params['status'] === 1){
+                /* domain_alias training_task_id task_list
+                 域名绑定好且能正常访问
+                 工程师添加(工程师负责人和注册表信息)--自动添加
+                团队添加(工程师负责人、门店名称做团队名称)--自动添加
+                培训课程(工程师负责人)--自动添加 */
+
+                $tenant_id = TenantLogic::add([
+                    'name'                => $params['name'],
+                    'avatar'              => '',
+                    'tel'                 => $params['mobile'],
+                    'domain_alias_enable' => 1,
+                    'domain_alias'        => $params['domain_alias']??'',
+                ])->id;
+
+                //mobile real_name lon lat province city area_name
+                $worker_id = MasterWorkerRegisterLogic::createMasterWorker([
+                    'mobile' => $params['mobile'],
+                    'real_name' => $params['head_name'],
+                    'lon' => $params['lon'],
+                    'lat' => $params['lat'],
+                    'province' => $params['province'],
+                    'city' => $params['city'],
+                    'area_name' => $params['area_name']
+                ]);
+                //master_worker_id tenant_id team_name
+                $res = MasterWorkerTeamLogic::add([
+                    'master_worker_id' => $worker_id,
+                    'tenant_id' => $tenant_id,
+                    'team_name' => $params['name']
+                ]);
+                if($res === false){
+                    throw new \Exception(MasterWorkerTeamLogic::getError());
+                }
+                //
+                $res = TrainingWorkerTaskLogic::add([
+                    'master_worker_id' => $worker_id,
+                    'shop_goods_id' => 0,
+                    //'training_task_id' => $params['training_task_id']??0,
+                    //'task_list' => $params['task_list']??'',
+                    'training_task_id' => 1,
+                    'task_list' => ['1','3'],
+                ]);
+                if($res === false){
+                    throw new \Exception(TrainingWorkerTaskLogic::getError());
+                }
+
+                $res = TenantAdminLogic::add([
+                    'name'             => $params['mobile'],
+                    'root'             => 1,
+                    'tenant_id'        => $tenant_id,
+                    'account'          => $params['mobile'],
+                    'avatar'           => '',
+                    'password'         => $params['mobile'],
+                    'disable'          => 0,
+                    'multipoint_login' => 1,
+                ]);
+                if($res === false){
+                    throw new \Exception(TrainingWorkerTaskLogic::getError());
+                }
+
+
+                Db::query('call CopyMenusToTenantOne(:in_param1,:in_param2,:in_param3,:in_param4)', [
+                    'in_param1' => 1,
+                    'in_param2' => $tenant_id,
+                    'in_param3' => 0,
+                    'in_param4' => 0,
+                ]);
+
+            }
+
+
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 删除
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public static function delete(array $params): bool
+    {
+        return TenantRegister::destroy($params['id']);
+    }
+
+
+    /**
+     * @notes 获取详情
+     * @param $params
+     * @return array
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public static function detail($params): array
+    {
+        return TenantRegister::findOrEmpty($params['id'])->toArray();
+    }
+}

+ 7 - 8
app/adminapi/logic/training/TrainingWorkerTaskLogic.php

@@ -43,14 +43,13 @@ class TrainingWorkerTaskLogic extends BaseLogic
     public static function add(array $params): bool
     {
 
-
         Db::startTrans();
         try {
             TrainingWorkerTask::create([
                 'master_worker_id' => $params['master_worker_id'],
-                'shop_goods_id' => $params['shop_goods_id'],
-                'training_task_id' => $params['training_task_id'],
-                'lead_master_worker_id' => $params['lead_master_worker_id'],
+                'shop_goods_id' => $params['shop_goods_id']??0,
+                'training_task_id' => $params['training_task_id']??0,
+                'lead_master_worker_id' => $params['lead_master_worker_id']??0,
                 'operate_status' => $params['operate_status']??0,
                 'task_list' => $params['task_list']??'',
             ]);
@@ -81,9 +80,9 @@ class TrainingWorkerTaskLogic extends BaseLogic
         try {
             TrainingWorkerTask::where('id', $params['id'])->update([
                 'master_worker_id' => $params['master_worker_id'],
-                'shop_goods_id' => $params['shop_goods_id'],
-                'training_task_id' => $params['training_task_id'],
-                'lead_master_worker_id' => $params['lead_master_worker_id'],
+                'shop_goods_id' => $params['shop_goods_id']??0,
+                'training_task_id' => $params['training_task_id']??0,
+                'lead_master_worker_id' => $params['lead_master_worker_id']??0,
                 'operate_status' => $params['operate_status']??0,
                 'task_list' => $params['task_list']?json_encode($params['task_list']):'',
             ]);
@@ -127,7 +126,7 @@ class TrainingWorkerTaskLogic extends BaseLogic
      */
     public static function trainingCourseRecord($masterWorkerId,$training_task_id): array
     {
-        $training_course_ids  = json_decode(TrainingTask::where('id',$training_task_id)->value('training_course_id'),true);
+        $training_course_ids  = json_decode(TrainingTask::where('id',$training_task_id)->value('training_course_id')??'[]',true);
         // 添加该工程师的所有培训课程初始化记录
         foreach ($training_course_ids as $course_id) {
             $workerCourse = TrainingWorkerCourse::create([

+ 110 - 0
app/adminapi/validate/tenant/TenantRegisterValidate.php

@@ -0,0 +1,110 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\validate\tenant;
+
+
+use app\common\validate\BaseValidate;
+
+
+/**
+ * TenantRegister验证器
+ * Class TenantRegisterValidate
+ * @package app\adminapi\validate
+ */
+class TenantRegisterValidate extends BaseValidate
+{
+
+     /**
+      * 设置校验规则
+      * @var string[]
+      */
+    protected $rule = [
+        'id' => 'require',
+        'name' => 'require',
+        'head_name' => 'require',
+        'mobile' => 'require',
+        'city' => 'require',
+        'lon' => 'require',
+        'lat' => 'require',
+        'sale_id' => 'require',
+        'openid' => 'require',
+    ];
+
+
+    /**
+     * 参数描述
+     * @var string[]
+     */
+    protected $field = [
+        'id' => 'id',
+        'name' => '门店名称',
+        'head_name' => '负责人名称',
+        'mobile' => '电话',
+        'city' => '城市',
+        'lon' => '经度',
+        'lat' => '维度',
+        'sale_id' => '所属销售id',
+        'openid' => '微信openid',
+    ];
+
+
+    /**
+     * @notes 添加场景
+     * @return TenantRegisterValidate
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function sceneAdd()
+    {
+        return $this->only(['name','head_name','mobile','city','lon','lat','sale_id']);
+    }
+
+
+    /**
+     * @notes 编辑场景
+     * @return TenantRegisterValidate
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function sceneEdit()
+    {
+        return $this->only(['id','name','head_name','mobile','city','lon','lat','sale_id']);
+    }
+
+
+    /**
+     * @notes 删除场景
+     * @return TenantRegisterValidate
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function sceneDelete()
+    {
+        return $this->only(['id']);
+    }
+
+
+    /**
+     * @notes 详情场景
+     * @return TenantRegisterValidate
+     * @author likeadmin
+     * @date 2025/02/25 09:29
+     */
+    public function sceneDetail()
+    {
+        return $this->only(['id']);
+    }
+
+}

+ 37 - 0
app/common/model/tenant/TenantRegister.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\common\model\tenant;
+
+
+use app\common\model\BaseModel;
+use app\common\model\sale\Sale;
+
+
+/**
+ * TenantRegister模型
+ * Class TenantRegister
+ * @package app\common\model
+ */
+class TenantRegister extends BaseModel
+{
+    
+    protected $name = 'tenant_register';
+
+    public function sale()
+    {
+        return $this->hasOne(Sale::class, 'id', 'sale_id');
+    }
+    
+}

+ 3 - 0
app/tenantapi/logic/auth/MenuLogic.php

@@ -53,6 +53,9 @@ class MenuLogic extends BaseLogic
             $roleMenu = TenantSystemRoleMenu::whereIn('role_id', $admin['role_id'])->column('menu_id');
             $where[] = ['id', 'in', $roleMenu];
         }
+        if ($admin['tenant_id']) {
+            $where[] = ['tenant_id', '=', $admin['tenant_id']];
+        }
 
         $menu = TenantSystemMenu::where($where)
             ->order(['sort' => 'desc', 'id' => 'asc'])