Просмотр исходного кода

Wesmiler 校企小程序 更新 6.15

wesmiler 3 лет назад
Родитель
Сommit
6df36cf8a5

+ 43 - 1
app/api/controller/SourceShool.php

@@ -2,7 +2,9 @@
 
 namespace app\api\controller;
 
+use app\api\model\User as UserModel;
 use app\api\model\SourceShool as SourceShoolModel;
+use app\api\service\User as UserService;
 
 /**
  * 学校控制器
@@ -20,8 +22,32 @@ class SourceShool extends Controller
     {
         // 获取列表数据
         $model = new SourceShoolModel();
+        $userInfo = UserService::getCurrentLoginUser(true);
+        $userId = isset($userInfo['user_id']) ? intval($userInfo['user_id']) : 0;
+        $params = $this->request->param();
+
+        $params['user_id'] = $userId;
         $pageSize = $this->request->param('pageSize', 15);
-        $list = $model->getList($this->request->param(), $pageSize);
+        $list = $model->getList($params, $pageSize);
+        return $this->renderSuccess(compact('list'));
+    }
+
+    /**
+     * 学校列表
+     * @return \think\response\Json
+     * @throws \think\db\exception\DbException
+     */
+    public function lockedList()
+    {
+        // 获取列表数据
+        $model = new SourceShoolModel();
+        $userInfo = UserService::getCurrentLoginUser(true);
+        $userId = isset($userInfo['user_id']) ? intval($userInfo['user_id']) : 0;
+        $params = $this->request->param();
+        $params['user_id'] = $userId;
+        $params['type'] = 1;
+        $pageSize = $this->request->param('pageSize', 15);
+        $list = $model->getList($params, $pageSize);
         return $this->renderSuccess(compact('list'));
     }
 
@@ -36,4 +62,20 @@ class SourceShool extends Controller
         $list = $model->getOptionList($this->request->param());
         return $this->renderSuccess(compact('list'));
     }
+
+    public function student()
+    {
+        $model = new UserModel;
+        $params = $this->request->param();
+        $userInfo = UserService::getCurrentLoginUser(true);
+        $userId = isset($userInfo['user_id']) ? intval($userInfo['user_id']) : 0;
+        $schoolId = isset($params['school_id']) ? intval($params['school_id']) : 0;
+        if($schoolId<=0){
+            return $this->renderSuccess('学校ID不为空');
+        }
+        $params['user_id'] = $userId;
+        $params['check_type'] = 1;
+        $list = $model->getSourceSchoolUserList($params);
+        return $this->renderSuccess(compact('list'));
+    }
 }

+ 6 - 0
app/api/controller/User.php

@@ -89,6 +89,12 @@ class User extends Controller
         return $this->renderSuccess('恭喜您,手机号绑定成功');
     }
 
+    /**
+     * 学长学姐列表
+     * @return Json
+     * @throws \cores\exception\BaseException
+     * @throws \think\db\exception\DbException
+     */
     public function seniorList()
     {
         // 当前用户信息

+ 32 - 0
app/api/model/SourceShoolApply.php

@@ -0,0 +1,32 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types=1);
+
+namespace app\api\model;
+use app\common\model\SourceShool as SourceShoolApplyModel;
+
+/**
+ * 生源学校申请模型类
+ * Class SourceShoolApply
+ * @package app\api\model
+ */
+class SourceShoolApply extends SourceShoolApplyModel
+{
+    protected $globalScope = [''];
+
+    /**
+     * 隐藏字段
+     * @var array
+     */
+    protected $hidden = [];
+
+
+}

+ 30 - 8
app/api/model/User.php

@@ -13,6 +13,7 @@ declare (strict_types=1);
 namespace app\api\model;
 
 use app\api\validate\user\Info as ValidateInfo;
+use app\common\model\UnlockUser;
 use think\facade\Cache;
 use app\api\service\User as UserService;
 use app\api\model\UserOauth as UserOauthModel;
@@ -49,8 +50,9 @@ class User extends UserModel
     public function getList(array $param = [], int $listRows = 15)
     {
         // 整理查询参数
-        $params = array_merge($param, ['status' => 1]);
-        // 获取商品列表
+        $params = array_merge($param, ['status' => 1,'is_delete'=>0]);
+
+        // 获取列表
         $list = parent::getList($params, $listRows);
         if ($list->isEmpty()) {
             return $list;
@@ -61,16 +63,16 @@ class User extends UserModel
     }
 
     /**
-     * 获取专业同类学校列表
+     * 获取生源学校用户列表
      * @param array $param 查询条件
      * @param int $listRows 分页数量
      * @return mixed|\think\model\Collection|\think\Paginator
      * @throws \think\db\exception\DbException
      */
-    public function getSpecialityList(int $specialityId, array $param = [], int $listRows = 15)
+    public function getSourceSchoolUserList(array $param = [], int $listRows = 15)
     {
         // 整理查询参数
-        $params = array_merge($param, ['status' => 1,'is_delete'=>0]);
+        $params = array_merge($param, ['status' => 1,'is_delete'=>0,'ui.status'=>1,'user_type'=>1]);
         // 获取商品列表
         $list = parent::getList($params, $listRows);
         if ($list->isEmpty()) {
@@ -78,7 +80,7 @@ class User extends UserModel
         }
 
         // 整理列表数据并返回
-        return $this->setListDataFromApi($list);
+        return $this->setListDataFromApi($list, $params);
     }
 
     /**
@@ -86,11 +88,21 @@ class User extends UserModel
      * @param $info
      * @return mixed
      */
-    private function setListDataFromApi($info)
+    private function setListDataFromApi($list, $params = [])
     {
-        return $this->setListData($info, function ($data){
+        // 是否验证和统计解锁用户
+        $checkType = isset($params['check_type'])? $params['check_type'] : 0;
+        $userId = isset($params['user_id'])? $params['user_id'] : 0;
+        $schoolId = isset($params['school_id'])? $params['school_id'] : 0;
+        $list = $this->setListData($list, function ($data) use($checkType, $userId, $schoolId){
             $data['avatar'] = isset($data['avatar'])? $data['avatar'] : [];
             unset($data['avatar']);
+            $data['is_locked'] = 2;
+
+            // 是否验证已被解锁
+            if($checkType == 1){
+                $data['is_locked'] = (int)UnlockUser::checkUserByUser($data['user_id'], $userId, $schoolId);
+            }
 
             // 整理数据 api模块
             $this->setDataFromApi($data);
@@ -99,6 +111,16 @@ class User extends UserModel
             $hidden = ['user_type','user_login','home_bg','update_time','grade_id','platform','status','country','province','city','address','address_id','balance','points','last_login_time','pay_money','expend_money','last_login_time'];
             $this->hidden(array_merge($this->hidden, $hidden));
         });
+
+        $list = $list? $list->toArray() : [];
+
+        if($checkType == 1 && $userId>0 && isset($list['total'])){
+            $list['locked_num'] = (int)UnlockUser::getCountByUser($userId, $schoolId);
+            $list['lock_num'] = max(0,$list['total']-$list['locked_num']);
+        }
+
+        asort($list);
+        return $list;
     }
 
     /**

+ 14 - 0
app/common/model/SourceShool.php

@@ -23,6 +23,8 @@ use think\Paginator;
  */
 class SourceShool extends BaseModel
 {
+    protected $globalScope = [''];
+
     // 定义表名
     protected $name = 'source_shools';
 
@@ -99,6 +101,16 @@ class SourceShool extends BaseModel
             if(!empty($params['keyword'])){
                 $query->where('source_shools_name','like', "%{$params['keyword']}%");
             }
+
+            $userId = isset($params['user_id'])? $params['user_id'] : 0;
+            $type = isset($params['type'])? $params['type'] : 0;
+            if($type>0 && $userId>0){
+                // 已解锁过的学校
+                $query->whereIn('source_shools_id', UnlockOrder::getSchoolsByUser($userId));
+            }else if($userId>0){
+                // 已申请通过的学校
+                $query->whereIn('source_shools_id', SourceShoolApply::getSchoolsByUser($userId));
+            }
         });
     }
 
@@ -122,4 +134,6 @@ class SourceShool extends BaseModel
 
         return array_merge($sort, [$this->getPk() => 'desc']);
     }
+
+
 }

+ 42 - 0
app/common/model/SourceShoolApply.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types=1);
+
+namespace app\common\model;
+
+use cores\BaseModel;
+
+/**
+ * 生源学校模型类
+ * Class SourceShoolApply
+ * @package app\common\model
+ */
+class SourceShoolApply extends BaseModel
+{
+    protected $globalScope = [''];
+
+    // 定义表名
+    protected $name = 'source_shools_apply';
+
+    // 定义主键
+    protected $pk = 'id';
+
+    /**
+     * 获取老师已经申请的生源学校
+     * @param $userId
+     * @return array
+     */
+    public static function getSchoolsByUser($userId)
+    {
+        return self::where(['user_id'=> $userId,'status'=>1])
+            ->column('source_shools_id');
+    }
+}

+ 42 - 0
app/common/model/UnlockOrder.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types=1);
+
+namespace app\common\model;
+
+use cores\BaseModel;
+
+/**
+ * 解锁生源用户订单模型类
+ * Class UnlockOrder
+ * @package app\common\model
+ */
+class UnlockOrder extends BaseModel
+{
+    protected $globalScope = [''];
+
+    // 定义表名
+    protected $name = 'unlock_order';
+
+    // 定义主键
+    protected $pk = 'id';
+
+    /**
+     * 获取老师已解锁的学校ID
+     * @param $userId
+     * @return array
+     */
+    public static function getSchoolsByUser($userId)
+    {
+        return self::where(['user_id'=> $userId,'status'=>2])
+            ->column('school_id');
+    }
+}

+ 87 - 0
app/common/model/UnlockUser.php

@@ -0,0 +1,87 @@
+<?php
+// +----------------------------------------------------------------------
+// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
+// +----------------------------------------------------------------------
+// | Author: 萤火科技 <admin@yiovo.com>
+// +----------------------------------------------------------------------
+declare (strict_types=1);
+
+namespace app\common\model;
+
+use cores\BaseModel;
+
+/**
+ * 解锁生源用户模型类
+ * Class UnlockUser
+ * @package app\common\model
+ */
+class UnlockUser extends BaseModel
+{
+    protected $globalScope = [''];
+
+    // 定义表名
+    protected $name = 'unlock_users';
+
+    // 定义主键
+    protected $pk = 'id';
+
+    /**
+     * 获取老师已解锁的用户ID
+     * @param $userId
+     * @return array
+     */
+    public static function getUserByUser($userId, $schoolId=0)
+    {
+        $where = ['uo.user_id'=> $userId, 'uo.status'=>2];
+        if($schoolId>0){
+            $where['uo.school_id'] = $schoolId;
+        }
+
+        return self::alias('a')
+            ->leftJoin('unlock_order uo','a.order_id=uo.id')
+            ->where($where)
+            ->column('a.user_id');
+    }
+
+    /**
+     * 验证老师是否已经解锁该用户
+     * @param $lockUserId 解锁用户
+     * @param $userId  老师用户ID
+     * @param int $schoolId 生源学校ID
+     * @return mixed
+     */
+    public static function checkUserByUser($lockUserId, $userId, $schoolId=0)
+    {
+        $where = ['uo.user_id'=> $userId, 'a.user_id'=> $lockUserId, 'uo.status'=>2];
+        if($schoolId>0){
+            $where['uo.school_id'] = $schoolId;
+        }
+
+        return self::alias('a')
+            ->leftJoin('unlock_order uo','a.order_id=uo.id')
+            ->where($where)
+            ->value('a.user_id')? 1 : 2;
+    }
+
+    /**
+     * 计算老师已解锁的用户数量
+     * @param $userId
+     * @return array
+     */
+    public static function getCountByUser($userId, $schoolId)
+    {
+        $where = ['uo.user_id'=> $userId, 'uo.status'=>2];
+        if($schoolId>0){
+            $where['uo.school_id'] = $schoolId;
+        }
+
+        return self::alias('a')
+            ->leftJoin('unlock_order uo','a.order_id=uo.id')
+            ->where($where)
+            ->count('a.user_id');
+    }
+}

+ 20 - 6
app/common/model/User.php

@@ -105,9 +105,27 @@ class User extends BaseModel
         // 实例化新查询对象
         $query = $this->getNewQuery();
 
-        // 学校层次,类型
+        // 
         !empty($params['region_id']) && $filter[] = ['s.region_id', '=', "{$params['region_id']}"];
 
+        // 市
+        !empty($params['city_id']) && $filter[] = ['s.city_id', '=', "{$params['city_id']}"];
+
+        // 省
+        !empty($params['province_id']) && $filter[] = ['s.province_id', '=', "{$params['province_id']}"];
+
+        // 用户状态
+        !empty($params['status']) && $filter[] = [$this->name.'.status', '=', "{$params['status']}"];
+
+        // 审核状态
+        !empty($params['ui.status']) && $filter[] = ['ui.status', '=', "{$params['ui.status']}"];
+
+        // 生源学校
+        !empty($params['school_id']) && $filter[] = ['ui.school_id', '=', "{$params['school_id']}"];
+
+        // 用户类型
+        !empty($params['user_type']) && $filter[] = [$this->name.'.user_type', '=', "{$params['user_type']}"];
+
         // 实例化新查询对象
         return $query->where($filter)->where(function($query) use ($params){
             // 关键词
@@ -116,6 +134,7 @@ class User extends BaseModel
                     ->whereOr('sp.speciality_name','like',"%{$params['keyword']}%");
             }
 
+            // 学长学姐筛选
             $admissionYear = isset($params['admission_year'])? intval($params['admission_year']) : -1;
             if($admissionYear>0){
                 $query->where('ui.admission_year','<', $admissionYear)->where('ui.admission_year','>', 0);
@@ -123,11 +142,6 @@ class User extends BaseModel
                 $query->where('ui.admission_year','>', 0);
             }
 
-            /*$userId = isset($params['user_id'])? $params['user_id'] : 0;
-            if($userId>0){
-                $query->whereNotIn($this->name.'.user_id', [$userId]);
-            }*/
-
         });
     }