更新目录结构

This commit is contained in:
2023-10-21 21:18:46 +08:00
parent 664295167d
commit 1153b13299
298 changed files with 3032 additions and 2173 deletions

View File

@@ -1,79 +1,18 @@
![](https://www.thinkphp.cn/uploads/images/20230630/300c856765af4d8ae758c503185f8739.png)
ThinkPHP 8.0
===============
# sentos
## 特性
* 基于PHP`8.0+`重构
* 升级`PSR`依赖
* 依赖`think-orm`3.0版本
* `6.0`/`6.1`无缝升级
> ThinkPHP8.0的运行环境要求PHP8.0.0+
现在开始,你可以使用官方提供的[ThinkChat](https://chat.topthink.com/)让你在学习ThinkPHP的旅途中享受私人AI助理服务
![](https://www.topthink.com/uploads/assistant/20230630/4d1a3f0ad2958b49bb8189b7ef824cb0.png)
## 文档
[完全开发手册](https://doc.thinkphp.cn)
## 服务
ThinkPHP生态服务由[顶想云](https://www.topthink.com)TOPThink Cloud提供为生态提供专业的开发者服务和价值之选。
## 赞助
全新的[赞助计划](https://www.thinkphp.cn/sponsor)可以让你通过我们的网站、手册、欢迎页及GIT仓库获得巨大曝光同时提升企业的品牌声誉也更好保障ThinkPHP的可持续发展。
[![](https://www.thinkphp.cn/uploads/images/20230630/48396092a0515886a3da6bd268131c8f.png)](http://github.crmeb.net/u/TPSY)
[![](https://www.thinkphp.cn/uploads/images/20230630/a12bd248beee0e7491dd0f79dc4dd5e9.png)](https://www.thinkphp.cn/sponsor)
[![](https://www.thinkphp.cn/uploads/images/20230630/e7f48d909d41dd5ebaf4a5aa982d0455.png)](https://www.thinkphp.cn/sponsor)
- 后端基于thinkphp8 开发
- 前端基于vue + aiox + vuex + electron + element plus开发
## 安装
~~~
composer create-project topthink/think tp
~~~
- 后端安装
启动服务
系统根目录下执行命令,安装后端扩展
~~~
cd tp
php think run
~~~
> composer install
然后就可以在浏览器中访问
配置好数据库链接,并导入数据库文件
~~~
http://localhost:8000
~~~
如果需要更新框架使用
~~~
composer update topthink/framework
~~~
## 命名规范
`ThinkPHP`遵循PSR-2命名规范和PSR-4自动加载规范。
## 参与开发
直接提交PR或者Issue即可
## 版权信息
ThinkPHP遵循Apache2开源协议发布并提供免费使用。
本项目包含的第三方源码和二进制文件之版权信息另行标注。
版权所有Copyright © 2006-2023 by ThinkPHP (http://thinkphp.cn) All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
更多细节参阅 [LICENSE.txt](LICENSE.txt)
- 前端安装

View File

@@ -9,8 +9,23 @@
namespace app\controller;
use app\BaseController;
use think\facade\Cache;
use app\services\system\DictionaryService;
class Base extends BaseController{
public $data = ['code' => 1, 'data' => '', 'message' => ''];
public function initialize(){
$this->cacheData($this->request); //缓存基础数据
}
protected function cacheData($request) {
$diction = Cache::get('diction');
if(!$diction){
$service = app()->make(DictionaryService::class);
$data = $service->getDictionaryAll();
Cache::set('diction', $data);
}
}
}

View File

@@ -8,7 +8,10 @@
// +----------------------------------------------------------------------
namespace app\controller;
use think\facade\Console;
use app\controller\Base;
use Dcat\EasyExcel\Excel;
use app\services\FieldService;
/**
* @title 首页
@@ -24,11 +27,37 @@ class Index extends Base{
if(request()->isAjax()){
return ['code' => 1, 'data' => 'SentOS'];
}else{
return `<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible"content="IE=edge"><meta name="viewport"content="width=device-width, initial-scale=1"><title>SentOS</title><style>html,body{background-color:#fff;color:#3c4042;font-family:'Raleway',sans-serif;font-weight:100;height:80vh;margin:0}.top{text-align:right;line-height:35px;padding:0 20px}.top a{color:#333333;padding:0 10px}.full-height{height:90vh}.flex-center{align-items:center;display:flex;justify-content:center}.position-ref{position:relative}.top-right{position:absolute;right:10px;top:18px}.content{text-align:center}.title{font-size:84px}.links>a{color:#3c4042;padding:0 25px;font-size:12px;font-weight:600;letter-spacing:.1rem;text-decoration:none;text-transform:uppercase}.m-b-md{margin-bottom:30px}</style></head><body><div class="flex-center position-ref full-height"><div class="content"><div class="title m-b-md">SentOS</div><div class="links"></div></div></div><div style="text-align: center; font-size: 12px;"><p><a href="https://beian.miit.gov.cn/"target="_blank"style="color: #333333; text-decoration: none;">赣ICP备13006622号-1</a></p><p>技术支持:<a href="https://www.tensent.cn"target="_blank"style="color: #333333; text-decoration: none;">腾速科技</a></p></div></body></html>`;
return view(`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible"content="IE=edge"><meta name="viewport"content="width=device-width, initial-scale=1"><title>SentOS</title><style>html,body{background-color:#fff;color:#3c4042;font-family:'Raleway',sans-serif;font-weight:100;height:80vh;margin:0}.top{text-align:right;line-height:35px;padding:0 20px}.top a{color:#333333;padding:0 10px}.full-height{height:90vh}.flex-center{align-items:center;display:flex;justify-content:center}.position-ref{position:relative}.top-right{position:absolute;right:10px;top:18px}.content{text-align:center}.title{font-size:84px}.links>a{color:#3c4042;padding:0 25px;font-size:12px;font-weight:600;letter-spacing:.1rem;text-decoration:none;text-transform:uppercase}.m-b-md{margin-bottom:30px}</style></head><body><div class="flex-center position-ref full-height"><div class="content"><div class="title m-b-md">SentOS</div><div class="links"></div></div></div><div style="text-align: center; font-size: 12px;"><p><a href="https://beian.miit.gov.cn/"target="_blank"style="color: #333333; text-decoration: none;">赣ICP备13006622号-1</a></p><p>技术支持:<a href="https://www.tensent.cn"target="_blank"style="color: #333333; text-decoration: none;">腾速科技</a></p></div></body></html>`);
}
}
public function test(){
// $output = Console::call('worker:gateway');
$service = app()->make(\app\services\wechat\OauthService::class);
print_r($service->getQrCode($this->request)) ;
// return $output->fetch();
// $array = [
// ['id' => 1, 'name' => 'Brakus', 'email' => 'treutel@eg.com', 'created_at' => '...'],
// ];
// Excel::export($array)->download('users.xlsx');
// $area = \think\facade\Db::name('areas')->select();
// $save = [];
// foreach($area as $val){
// $save[] = ['title' => $val['area'], 'code' => $val['area_id'], 'parent_id' => $val['city_id'], 'first' => '', 'create_time' => time(), 'update_time' => time()];
// }
// \think\facade\Db::name('area')->insertAll($save);
}
/**
* @title 导出模版
*
* @return void
*/
public function template(FieldService $service){
$model = $this->request->param('model');
$array = [];
$headings = array_flip($service->getFields($model));
return Excel::export($array)->headings($headings)->download($model . time() . '.xlsx');
}
public function miss(){

View File

@@ -1,124 +1,124 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\auth;
use think\facade\Request;
use app\model\auth\Departments;
use app\services\auth\DepartmentService;
use Xin\Support\Arr;
use app\controller\Base;
class Department extends Base {
/**
* @title 部门列表
*
* @time 2020年01月09日
* @param Departments $department
* @return Array
*/
public function index() {
$list = app()->make(DepartmentService::class)->getDepartmentList($this->request)->toArray();
if(count($list) > 0){
$root = '';
foreach ($list as $value) {
if($root == ''){
$root = $value['parent_id'];
}else{
if($root > $value['parent_id']){
$root = $value['parent_id'];
}
}
}
$tree = Arr::tree($list, null, 0, ['id'=>'id', 'parent' => 'parent_id', 'child' => 'children']);
if(empty($tree)){
$this->data['data'] = $list;
}else{
$this->data['data'] = $tree;
}
}else{
$this->data['data'] = [];
}
return $this->data;
}
/**
* @title 添加部门
*
* @time 2020年01月09日
* @return Array
*/
public function add() {
$data = request()->post();
$data['creator_id'] = request()->user['uid'];
try {
$result = Departments::create($data);
$this->data['message'] = '添加成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 更新部门
*
* @time 2020年01月09日
* @param $id
* @param Request $request
* @return Array
*/
public function edit() {
$data = request()->post();
$data['creator_id'] = request()->user['uid'];
try {
$result = Departments::update($data);
$this->data['message'] = '更新成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除部门
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function delete() {
$data = request()->post('id');
$map = [];
if(is_array($data)){
$map[] = ['id', 'IN', $data];
}else if(is_numeric($data)){
$map[] = ['id', '=', $data];
}
try {
$result = Departments::destroy(function($query) use ($map){
$query->where($map);
});
$this->data['message'] = '删除成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 获取班级
*
* @return void
*/
public function studentclass(){
$this->data['data'] = app()->make(DepartmentService::class)->getStudentClassList();
$this->data['code'] = 1;
return $this->data;
}
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\auth;
use think\facade\Request;
use app\model\auth\Departments;
use app\services\auth\DepartmentService;
use Xin\Support\Arr;
use app\controller\Base;
class Department extends Base {
/**
* @title 部门列表
*
* @time 2020年01月09日
* @param Departments $department
* @return Array
*/
public function index() {
$list = app()->make(DepartmentService::class)->getDepartmentList($this->request)->toArray();
if(count($list) > 0){
$root = '';
foreach ($list as $value) {
if($root == ''){
$root = $value['parent_id'];
}else{
if($root > $value['parent_id']){
$root = $value['parent_id'];
}
}
}
$tree = Arr::tree($list, null, 0, ['id'=>'id', 'parent' => 'parent_id', 'child' => 'children']);
if(empty($tree)){
$this->data['data'] = $list;
}else{
$this->data['data'] = $tree;
}
}else{
$this->data['data'] = [];
}
return $this->data;
}
/**
* @title 添加部门
*
* @time 2020年01月09日
* @return Array
*/
public function add() {
$data = request()->post();
$data['creator_id'] = request()->user['uid'];
try {
$result = Departments::create($data);
$this->data['message'] = '添加成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 更新部门
*
* @time 2020年01月09日
* @param $id
* @param Request $request
* @return Array
*/
public function edit() {
$data = request()->post();
$data['creator_id'] = request()->user['uid'];
try {
$result = Departments::update($data);
$this->data['message'] = '更新成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除部门
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function delete() {
$data = request()->post('id');
$map = [];
if(is_array($data)){
$map[] = ['id', 'IN', $data];
}else if(is_numeric($data)){
$map[] = ['id', '=', $data];
}
try {
$result = Departments::destroy(function($query) use ($map){
$query->where($map);
});
$this->data['message'] = '删除成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 获取班级
*
* @return void
*/
public function studentclass(){
$this->data['data'] = app()->make(DepartmentService::class)->getStudentClassList();
$this->data['code'] = 1;
return $this->data;
}
}

View File

@@ -6,7 +6,7 @@
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\auth;
namespace app\controller\admin\auth;
use app\controller\Base;
use app\services\auth\AuthService;

View File

@@ -1,91 +1,109 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\auth;
use app\controller\Base;
use app\services\auth\RoleService;
class Role extends Base{
/**
* @title 角色列表
*
* @time 2019年12月09日
* @return string|Json
*/
public function index() {
$tree = app()->make(RoleService::class)->getRolesList($this->request, true);
$this->data['code'] = 1;
$this->data['data'] = $tree;
return $this->data;
}
/**
* @title 角色修改
* @time 2019年12月11日
* @param $id
* @param Request $request
* @return Array
*/
public function edit(RoleService $service) {
try {
$service->updateRole($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 角色授权
* @time 2019年12月11日
* @param $id
* @param Request $request
* @return Array
*/
public function auth() {
$role_id = $this->request->param('role_id', '');
$auth = $this->request->param('auth', '');
$service = app()->make(RoleService::class);
try {
$service->updateRolePermission($role_id, $auth);
$service->updateRoleAuth($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除角色
*
* @time 2019年12月11日
* @param $id
* @throws FailedException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @return Json
*/
public function delete(){
try {
$service = app()->make(RoleService::class)->deleteRole($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
}
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\auth;
use app\controller\Base;
use app\services\auth\RoleService;
class Role extends Base{
/**
* @title 角色列表
*
* @time 2019年12月09日
* @return string|Json
*/
public function index() {
$tree = app()->make(RoleService::class)->getRolesList($this->request, true);
$this->data['code'] = 1;
$this->data['data'] = $tree;
return $this->data;
}
/**
* @title 角色添加
* @time 2019年12月11日
* @param $id
* @param Request $request
* @return Array
*/
public function add(RoleService $service) {
try {
$service->createRole($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 角色修改
* @time 2019年12月11日
* @param $id
* @param Request $request
* @return Array
*/
public function edit(RoleService $service) {
try {
$service->updateRole($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 角色授权
* @time 2019年12月11日
* @param $id
* @param Request $request
* @return Array
*/
public function auth() {
$role_id = $this->request->param('role_id', '');
$auth = $this->request->param('auth', '');
$service = app()->make(RoleService::class);
try {
$service->updateRolePermission($role_id, $auth);
$service->updateRoleAuth($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除角色
*
* @time 2019年12月11日
* @param $id
* @throws FailedException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @return Json
*/
public function delete(){
try {
$service = app()->make(RoleService::class)->deleteRole($this->request);
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
}

View File

@@ -1,120 +1,120 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\auth;
use app\services\auth\UsersService;
use app\controller\Base;
class User extends Base{
/**
* @title 用户列表
* @param int $uid
* @return array
*/
public function index(UsersService $user){
$list = $user->getUserList($this->request);
$this->data['data'] = $list;
return $this->data;
}
/**
* @title 添加用户
* @param int $uid
* @return array
*/
public function add(){
try {
$res = app()->make(UsersService::class)->createUsers($this->request);
$this->data['code'] = 1;
$this->data['data'] = $res;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改用户信息
* @param int $uid
* @return array
*/
public function edit(){
try {
$res = app()->make(UsersService::class)->updateUsers($this->request);
$this->data['code'] = 1;
$this->data['data'] = $res;
$this->data['message'] = "更新成功!";
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改密码
*
* @return void
*/
public function passwd(){
try {
$res = app()->make(UsersService::class)->updateUserPassword($this->request);
$this->data['code'] = 1;
$this->data['data'] = $res;
$this->data['message'] = "修改成功";
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 批量导入用户
* @param int $uid
* @return array
*/
public function insert(){
try {
$users = app()->make(UsersService::class)->insertAll($this->request);
$this->data['data'] = $users;
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 用户信息
* @param int $uid
* @return array
*/
public function info(){
$this->data['data'] = app()->make(UsersService::class)->userInfo($this->request->user['uid']);
$this->data['code'] = 1;
return $this->data;
}
/**
* @title 用户授权
* @return array
*/
public function auth(){
try {
$uid = $this->request->param('uid');
$role = $this->request->param('role');
app()->make(UsersService::class)->updateRoles($uid, $role);
$this->data['message'] = '更新成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\auth;
use app\services\auth\UsersService;
use app\controller\Base;
class User extends Base{
/**
* @title 用户列表
* @param int $uid
* @return array
*/
public function index(UsersService $user){
$list = $user->getUserList($this->request);
$this->data['data'] = $list;
return $this->data;
}
/**
* @title 添加用户
* @param int $uid
* @return array
*/
public function add(){
try {
$res = app()->make(UsersService::class)->createUsers($this->request);
$this->data['code'] = 1;
$this->data['data'] = $res;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改用户信息
* @param int $uid
* @return array
*/
public function edit(){
try {
$res = app()->make(UsersService::class)->updateUsers($this->request);
$this->data['code'] = 1;
$this->data['data'] = $res;
$this->data['message'] = "更新成功!";
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改密码
*
* @return void
*/
public function passwd(){
try {
$res = app()->make(UsersService::class)->updateUserPassword($this->request);
$this->data['code'] = 1;
$this->data['data'] = $res;
$this->data['message'] = "修改成功";
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 批量导入用户
* @param int $uid
* @return array
*/
public function insert(){
try {
$users = app()->make(UsersService::class)->insertAll($this->request);
$this->data['data'] = $users;
$this->data['code'] = 1;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 用户信息
* @param int $uid
* @return array
*/
public function info(){
$this->data['data'] = app()->make(UsersService::class)->userInfo($this->request->user['uid']);
$this->data['code'] = 1;
return $this->data;
}
/**
* @title 用户授权
* @return array
*/
public function auth(){
try {
$uid = $this->request->param('uid');
$role = $this->request->param('role');
app()->make(UsersService::class)->updateRoles($uid, $role);
$this->data['message'] = '更新成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
}

View File

@@ -0,0 +1,81 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\operate;
use app\controller\Base;
use app\services\operate\AdsService;
class Ads extends Base{
/**
* @title 广告列表
*
* @param AdsService $service
* @return void
*/
public function index(AdsService $service){
$this->data['data'] = $service->getDataList($this->request);
return $this->data;
}
/**
* @title 添加广告
*
* @param AdsService $service
* @return void
*/
public function add(AdsService $service){
try {
$data = $service->create($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 编辑广告
*
* @param AdsService $service
* @return void
*/
public function edit(AdsService $service){
try {
$data = $service->update($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除广告
*
* @param AdsService $service
* @return void
*/
public function delete(AdsService $service){
try {
$data = $service->delete($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
}

View File

@@ -0,0 +1,202 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\operate;
use app\controller\Base;
use app\services\operate\ClientService;
use app\services\operate\ClientMenuService;
use app\services\operate\ClientConfigService;
class Client extends Base{
/**
* @title 客户端列表
*
* @param ClientService $service
* @return void
*/
public function index(ClientService $service){
$this->data['data'] = $service->getDataList($this->request);
return $this->data;
}
/**
* @title 添加客户端
*
* @param ClientService $service
* @return void
*/
public function add(ClientService $service){
try {
$data = $service->create($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 编辑客户端
*
* @param ClientService $service
* @return void
*/
public function edit(ClientService $service){
try {
$data = $service->update($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除客户端
*
* @param ClientService $service
* @return void
*/
public function delete(ClientService $service){
try {
$data = $service->delete($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 客户端菜单列表
*
* @param ClientMenuService $service
* @return void
*/
public function menu(ClientMenuService $service){
$this->data['data'] = $service->getDataList($this->request);
return $this->data;
}
/**
* @title 添加客户端菜单
*
* @param ClientMenuService $service
* @return void
*/
public function addmenu(ClientMenuService $service){
try {
$data = $service->create($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 编辑客户端菜单
*
* @param ClientMenuService $service
* @return void
*/
public function editmenu(ClientMenuService $service){
try {
$data = $service->update($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除客户端菜单
*
* @param ClientMenuService $service
* @return void
*/
public function delmenu(ClientMenuService $service){
try {
$data = $service->delete($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 添加客户端配置
*
* @param ClientConfigService $service
* @return void
*/
public function addconfig(ClientConfigService $service){
try {
$data = $service->create($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 添加客户端配置
*
* @param ClientConfigService $service
* @return void
*/
public function editconfig(ClientConfigService $service){
try {
$data = $service->update($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除客户端配置
*
* @param ClientConfigService $service
* @return void
*/
public function delconfig(ClientConfigService $service){
try {
$data = $service->delete($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
}

View File

@@ -1,127 +1,133 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\system;
use app\controller\Base;
use app\services\system\DictionaryService;
/**
* @title 字典功能
*/
class Dict extends Base{
/**
* @title 字典分类数据
*
* @return void
*/
public function category(DictionaryService $dic){
$list = $dic->getTree($this->request);
$this->data['data'] = $list;
return $this->data;
}
/**
* @title 添加字典分类
*
* @return void
*/
public function addcate(DictionaryService $dic){
try {
$data = $dic->addcate($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改字典分类
*
* @return void
*/
public function editcate(DictionaryService $dic){
try {
$data = $dic->editcate($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
public function delcate(DictionaryService $dic){
$dic->deleteCategory($this->request);
return $this->data;
}
/**
* @title 字典列表
*
* @return void
*/
public function lists(DictionaryService $dic){
$list = $dic->getDictionary($this->request);
$this->data['data'] = $list;
return $this->data;
}
/**
* @title 添加字典
*
* @return void
*/
public function add(DictionaryService $dic){
try {
$data = $dic->createDic($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改字典
*
* @return void
*/
public function edit(DictionaryService $dic){
try {
$data = $dic->updateDic($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除字典
*
* @param DictionaryService $dic
* @return void
*/
public function delete(DictionaryService $dic){
$dic->deleteDic($this->request);
return $this->data;
}
/**
* @title 字典明细
*
* @return void
*/
public function detail(DictionaryService $dic){
$list = $dic->getDictionaryDetail($this->request);
$this->data['data'] = $list;
return $this->data;
}
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\system;
use app\controller\Base;
use app\services\system\DictionaryService;
/**
* @title 字典功能
*/
class Dict extends Base{
/**
* @title 字典分类数据
*
* @return void
*/
public function category(DictionaryService $dic){
$list = $dic->getTree($this->request);
$this->data['data'] = $list;
return $this->data;
}
/**
* @title 添加字典分类
*
* @return void
*/
public function addcate(DictionaryService $dic){
try {
$data = $dic->addcate($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改字典分类
*
* @return void
*/
public function editcate(DictionaryService $dic){
try {
$data = $dic->editcate($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
public function delcate(DictionaryService $dic){
$dic->deleteCategory($this->request);
return $this->data;
}
/**
* @title 字典列表
*
* @return void
*/
public function lists(DictionaryService $dic){
$list = $dic->getDictionary($this->request);
$this->data['data'] = $list;
return $this->data;
}
/**
* @title 添加字典
*
* @return void
*/
public function add(DictionaryService $dic){
try {
$data = $dic->createDic($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 修改字典
*
* @return void
*/
public function edit(DictionaryService $dic){
try {
$data = $dic->updateDic($this->request);
$this->data['code'] = 1;
$this->data['data'] = $data;
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 删除字典
*
* @param DictionaryService $dic
* @return void
*/
public function delete(DictionaryService $dic){
$dic->deleteDic($this->request);
return $this->data;
}
/**
* @title 字典明细
*
* @return void
*/
public function detail(DictionaryService $dic){
$list = $dic->getDictionaryDetail($this->request);
$this->data['data'] = $list;
return $this->data;
}
public function all(DictionaryService $dic){
$list = $dic->getDictionaryAll($this->request);
$this->data['data'] = $list;
return $this->data;
}
}

View File

@@ -6,7 +6,7 @@
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\system;
namespace app\controller\admin\system;
use app\controller\Base;
use app\validate\File as Files;

View File

@@ -1,45 +1,45 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\system;
use app\controller\Base;
use app\services\system\ConfigService;
class Index extends Base{
/**
* @title 系统版本
*
* @return void
*/
public function version(){
$system_info_mysql = \think\facade\Db::query("select version() as v;");
$this->data['data'] = [
['label' => '核心版本', 'values' => \think\facade\Env::get('version')],
['label' => '服务器操作系统', 'values' => PHP_OS],
['label' => '运行环境', 'values' => $_SERVER['SERVER_SOFTWARE']],
['label' => 'MYSQL版本', 'values' => $system_info_mysql[0]['v']],
['label' => '上传限制', 'values' => '10']
];
return $this->data;
}
/**
* 获取配置列表
*
* @param ConfigService $service
* @return void
*/
public function setting(ConfigService $service){
$list = $service->getConfigField();
$this->data['data'] = $list;
return $this->data;
}
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\system;
use app\controller\Base;
use app\services\system\ConfigService;
class Index extends Base{
/**
* @title 系统版本
*
* @return void
*/
public function version(){
$system_info_mysql = \think\facade\Db::query("select version() as v;");
$this->data['data'] = [
['label' => '核心版本', 'values' => \think\facade\Env::get('version')],
['label' => '服务器操作系统', 'values' => PHP_OS],
['label' => '运行环境', 'values' => $_SERVER['SERVER_SOFTWARE']],
['label' => 'MYSQL版本', 'values' => $system_info_mysql[0]['v']],
['label' => '上传限制', 'values' => '10']
];
return $this->data;
}
/**
* 获取配置列表
*
* @param ConfigService $service
* @return void
*/
public function setting(ConfigService $service){
$list = $service->getConfigField();
$this->data['data'] = $list;
return $this->data;
}
}

View File

@@ -6,7 +6,7 @@
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\system;
namespace app\controller\admin\system;
use app\controller\Base;
use app\services\auth\UsersLogService;

View File

@@ -1,134 +1,134 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\system;
use app\controller\Base;
use app\services\auth\MenuService;
use app\services\auth\AuthService;
class Menu extends Base{
/**
* @title 权限列表
*
* @time 2020年01月09日
* @param Departments $department
* @return Array
*/
public function index() {
$data = app()->make(MenuService::class)->getSystemMenu(false);
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 权限保存
*
* @time 2020年01月09日
* @return Array
*/
public function add() {
$data = request()->post();
$data['creator_id'] = request()->user['uid'];
try {
$result = app()->make(MenuService::class)->createData($data);
$this->data['data'] = $result;
$this->data['message'] = '添加成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 权限更新
*
* @time 2020年01月09日
* @param $id
* @param Request $request
* @return Array
*/
public function edit() {
$data = request()->post();
try {
$result = app()->make(MenuService::class)->saveData($data);
if($result){
$this->data['data'] = app()->make(AuthService::class)->getAuthMenu();
}
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 权限删除
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function delete() {
$ids = request()->post('ids');
try {
$result = app()->make(MenuService::class)->deleteMenu($ids);
$this->data['data'] = app()->make(MenuService::class)->getSystemMenu();
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 菜单路由
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function routes(Permissions $permission) {
$map = [];
$map[] = ['type', '=', 1];
$map[] = ['hidden', '=', 1];
$list = $permission->where($map)->field('router,name,icon,id,parent_id')->order('sort asc')->select()->toArray();
$tree = (new Tree())->listToTree($list, 'id', 'parent_id', 'children');
$this->data['data'] = [['router' => 'root', 'children' => $tree]];
return $this->data;
}
/**
* @title 权限数据
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function permission(Permissions $permission) {
$map = [];
$map[] = ['hidden', '=', 1];
$list = $permission->where($map)->field('router,name,icon,id,parent_id')->order('sort asc')->select()->toArray();
$data = [];
foreach($list as $item){
if($item['type'] == 1){
$data[$item['id']] = $item;
}else{
$data[$item['parent_id']]['module'] = $item;
}
}
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 我的菜单
* @return Array
*/
public function my(AuthService $service){
$this->data['code'] = 1;
$this->data['data'] = ['menu' => $service->getAuthMenu($this->request), 'permissions' => $service->getAuthPermissions($this->request)];
return $this->data;
}
}
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\admin\system;
use app\controller\Base;
use app\services\auth\MenuService;
use app\services\auth\AuthService;
class Menu extends Base{
/**
* @title 权限列表
*
* @time 2020年01月09日
* @param Departments $department
* @return Array
*/
public function index() {
$data = app()->make(MenuService::class)->getSystemMenu(false);
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 权限保存
*
* @time 2020年01月09日
* @return Array
*/
public function add() {
$data = request()->post();
$data['creator_id'] = request()->user['uid'];
try {
$result = app()->make(MenuService::class)->createData($data);
$this->data['data'] = $result;
$this->data['message'] = '添加成功!';
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 权限更新
*
* @time 2020年01月09日
* @param $id
* @param Request $request
* @return Array
*/
public function edit() {
$data = request()->post();
try {
$result = app()->make(MenuService::class)->saveData($data);
if($result){
$this->data['data'] = app()->make(AuthService::class)->getAuthMenu();
}
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 权限删除
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function delete() {
$ids = request()->post('ids');
try {
$result = app()->make(MenuService::class)->deleteMenu($ids);
$this->data['data'] = app()->make(MenuService::class)->getSystemMenu();
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
/**
* @title 菜单路由
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function routes(Permissions $permission) {
$map = [];
$map[] = ['type', '=', 1];
$map[] = ['hidden', '=', 1];
$list = $permission->where($map)->field('router,name,icon,id,parent_id')->order('sort asc')->select()->toArray();
$tree = (new Tree())->listToTree($list, 'id', 'parent_id', 'children');
$this->data['data'] = [['router' => 'root', 'children' => $tree]];
return $this->data;
}
/**
* @title 权限数据
*
* @time 2020年01月09日
* @param $id
* @return Array
*/
public function permission(Permissions $permission) {
$map = [];
$map[] = ['hidden', '=', 1];
$list = $permission->where($map)->field('router,name,icon,id,parent_id')->order('sort asc')->select()->toArray();
$data = [];
foreach($list as $item){
if($item['type'] == 1){
$data[$item['id']] = $item;
}else{
$data[$item['parent_id']]['module'] = $item;
}
}
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 我的菜单
* @return Array
*/
public function my(AuthService $service){
$this->data['code'] = 1;
$this->data['data'] = ['menu' => $service->getAuthMenu($this->request), 'permissions' => $service->getAuthPermissions($this->request)];
return $this->data;
}
}

View File

@@ -0,0 +1,26 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\api\auth;
use app\controller\Base;
use app\services\wechat\OauthService;
class Index extends Base{
public function wxlogin(OauthService $service){
try {
$this->data['data'] = $service->oauth($this->request);
} catch (\Exception $e) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
}
return $this->data;
}
}

View File

@@ -0,0 +1,26 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\api\operate;
use app\controller\Base;
use app\services\operate\AdsService;
class Ads extends Base{
/**
* @title 客户端菜单
*
* @return void
*/
public function detail(AdsService $service){
$this->data['data'] = $service->getAdsDetail($this->request);
return $this->data;
}
}

View File

@@ -0,0 +1,26 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\api\operate;
use app\controller\Base;
use app\services\operate\ClientService;
class Client extends Base{
/**
* @title 客户端菜单
*
* @return void
*/
public function menu(ClientService $service){
$this->data['data'] = $service->getClientMenu($this->request);
return $this->data;
}
}

View File

@@ -1,71 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\controller\customer;
use app\controller\Base;
use app\services\company\CompanyService;
/**
* @title 企业信息模型
*/
class Company extends Base{
/**
* @title 企业列表
*
* @time 2020年01月09日
* @param CompanyService $service
* @return Array
*/
public function index(CompanyService $service) {
$data = $service->getCompanyList($this->request);
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 企业详情
*
* @time 2020年01月09日
* @param CompanyService $service
* @return Array
*/
public function detail(CompanyService $service) {
$data = $service->getCompanyDetail($this->request);
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 修改企业
*
* @time 2020年01月09日
* @param CompanyService $service
* @return Array
*/
public function edit(CompanyService $service) {
$data = $service->editCompany($this->request);
$this->data['data'] = $data;
return $this->data;
}
/**
* @title 导入企业信息
*
* @param CompanyService $service
* @return void
*/
public function insert(CompanyService $service){
$this->data['data'] = $service->insertCompanyData($this->request);
return $this->data;
}
}

View File

@@ -24,7 +24,7 @@ class AllowCrossDomain{
];
public function __construct(Config $config){
$this->header = array_merge($this->header, $config->get('cross', ''));
$this->header = array_merge($this->header, $config->get('cross', []));
}
/**

View File

@@ -0,0 +1,47 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
declare (strict_types = 1);
namespace app\middleware;
use think\App;
use think\Response;
use leruge\exception\JWTTokenNotFoundException;
class ApiCheck{
protected $app;
public function __construct(App $app){
$this->app = $app;
}
/**
* @title 处理请求
*
* @param [type] $request
* @param \Closure $next
* @param [type] $store
* @return void
*/
public function handle($request, \Closure $next, $store = null){
try {
$verify = \leruge\facade\JWT::validate();;
if (true === $verify) {
$student = \leruge\facade\JWT::auth();
if ($student->id) {
// 路由注入
$request->student = $student;
}
return $next($request);
}
} catch (JWTTokenNotFoundException $e) {
return Response::create(['message' => '未登录或登录过期!', 'code' => 2000], 'json', 401);
}
}
}

View File

@@ -37,7 +37,7 @@ class Validate {
if (!$v->check($params)) {
//校验不通过则直接返回错误信息
$data = array(
'msg' => $v->getError(),
'message' => $v->getError(),
'code' => 0,
'data' => '',
'time' => time(),

View File

@@ -10,6 +10,7 @@ namespace app\model;
use think\Model;
use think\facade\Config;
use think\facade\Env;
use think\facade\Db;
class BaseModel extends Model{
@@ -18,22 +19,32 @@ class BaseModel extends Model{
$auth = request()->auth();
$uid = request()->user['uid'];
$map = [];
if(!in_array($uid, Config::get('auth.admin_root'))){
if($uid != Env::get('admin')){
$subMap = [];
if($auth['data_range'] == 2){
$subMap[] = ['department_id', 'IN', getDepartmentChild($auth['department_id'])];
}elseif($auth['data_range'] == 3){
$subMap[] = ['department_id', 'IN', $auth['department_id']];
}elseif($auth['data_range'] == 4){
$map[] = ['uid', '=', $uid];
$map[] = ['user_id', '=', $uid];
}else{
$m = [['user_id', '=', $uid], ['user_id', '=', 0]];
$query->where(function($q) use($m){
$q->whereOr($m);
});
}
if(!empty($subMap)){
$subsql = Db::name('users')->where($subMap)->field('uid')->buildSql();
$subsql = str_replace(" AS thinkphp) AS T1 )", "", $subsql);
$subsql = str_replace("SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER ( ORDER BY rand()) AS ROW_NUMBER FROM (", "", $subsql);
$map[] = ['uid', 'IN', Db::raw($subsql)];
$map[] = ['user_id', 'IN', Db::raw($subsql)];
}
}
$query->where($where)->where($map);
if(!empty($map)){
$query->where($map);
}
if(!empty($where)){
$query->where($where);
}
}
}

View File

@@ -1,67 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\customer;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
use think\facade\Cache;
class Company extends BaseModel{
use SoftDelete;
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
public $insertFieldAlis = [
'企业编号' => ['name' => 'org_code', 'table' => 'company'],
'公司名称' => ['name' => 'name', 'table' => 'company'],
'网址' => ['name' => 'web_site', 'table' => 'company'],
'一级行业' => ['name' => 'industry', 'table' => 'company'],
'二级行业' => ['name' => 'industry_sub', 'table' => 'company'],
'三级行业' => ['name' => 'industry_three', 'table' => 'company'],
'省份' => ['name' => 'province', 'table' => 'company'],
'城市' => ['name' => 'city', 'table' => 'company'],
'区县' => ['name' => 'area', 'table' => 'company'],
'年营业额' => ['name' => 'turnover_text', 'table' => 'company',],
'员工人数' => ['name' => 'staff_num_text', 'table' => 'company'],
'注册资金' => ['name' => 'reg_capital', 'table' => 'company'],
'资金类型' => ['name' => 'reg_capital_type', 'table' => 'company'],
'PC数量' => ['name' => 'pc_num_text', 'table' => 'company'],
'营收规模' => ['name' => 'turnover', 'table' => 'company'],
'社保人数' => ['name' => 'social_insurance', 'table' => 'company'],
'企业性质' => ['name' => 'company_type', 'table' => 'company'],
'是否上市' => ['name' => 'is_ipo_text', 'table' => 'company'],
'融资信息' => ['name' => 'finance_info', 'table' => 'company'],
'企业标签' => ['name' => 'tags', 'table' => 'company'],
'企业状态' => ['name' => 'status', 'table' => 'company'],
'成立时间' => ['name' => 'reg_date', 'table' => 'company'],
'注册地址' => ['name' => 'reg_address', 'table' => 'company'],
'联系人' => ['name' => 'name', 'table' => 'contact'],
'岗位' => ['name' => 'job','table' => 'contact'],
'固定电话' => ['name' => 'phone', 'table' => 'contact'],
'手机号码' => ['name' => 'mobile', 'table' => 'contact'],
'邮箱' => ['name' => 'email', 'table' => 'contact'],
'是否法人' => ['name' => 'is_faren', 'table' => 'contact']
];
public function getAreaTAttr($value, $data){
$text = [$data['province'], $data['city'], $data['area']];
return implode(",", array_filter($text));
}
public function getIndustryTAttr($value, $data){
$text = [$data['industry'], $data['industry_sub'], $data['industry_three']];
return implode(",", array_filter($text));
}
public function contact(){
return $this->hasMany(Contact::class);
}
}

37
app/model/operate/Ads.php Normal file
View File

@@ -0,0 +1,37 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\operate;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
use think\facade\Cache;
class Ads extends BaseModel{
protected function getStatusTextAttr($value, $data){
$status = ['禁用', '启用'];
return isset($status[$data['status']]) ? $status[$data['status']] : '';
}
public function getPhotoAttr($value, $data){
if($data['photo_list']){
if($data['type'] == 1){
return explode(",", $data['photo_list']);
}else{
return $data['photo_list'];
}
}else{
if($data['type'] == 1){
return [];
}else{
return '';
}
}
}
}

View File

@@ -0,0 +1,25 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\operate;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
use think\facade\Cache;
class Client extends BaseModel{
protected function getStatusTextAttr($value, $data){
$status = ['禁用', '启用'];
return isset($status[$data['status']]) ? $status[$data['status']] : '';
}
public function setting(){
return $this->hasMany(ClientConfig::class, 'client_id', 'id');
}
}

View File

@@ -1,14 +1,21 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
use think\facade\Route;
Route::group('auth', function(){
Route::post('login', 'auth.Index/login');
Route::get('member', 'auth.Index/member');
});
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\operate;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
use think\facade\Cache;
class ClientConfig extends BaseModel{
protected function getStatusTextAttr($value, $data){
$status = ['禁用', '启用'];
return isset($status[$data['status']]) ? $status[$data['status']] : '';
}
}

View File

@@ -6,16 +6,16 @@
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\model\customer;
namespace app\model\operate;
use app\model\BaseModel;
use think\model\concern\SoftDelete;
use think\facade\Cache;
class Contact extends BaseModel{
use SoftDelete;
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
protected $name = "company_contact";
class ClientMenu extends BaseModel{
protected function getStatusTextAttr($value, $data){
$status = ['禁用', '启用'];
return isset($status[$data['status']]) ? $status[$data['status']] : '';
}
}

View File

@@ -16,5 +16,4 @@ class Dictionary extends BaseModel{
use SoftDelete;
protected $deleteTime = 'delete_time';
protected $defaultSoftDelete = 0;
}

View File

@@ -0,0 +1,41 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services;
class FieldService{
public function getFields($model = 'student'){
if(method_exists(new self(), $model)){
return $this->$model();
}else{
return [];
}
}
/**
* @title 学员导入字段
*
* @return void
*/
public function student(){
return ['学生姓名' => 'name', '性别' => 'sex', '电话' => 'mobile', '身份证号码' => 'id_card'];
}
/**
* @title 题库导入字段
*
* @return void
*/
public function exam(){
return [
'题目类型' => 'type_text', '题干' => 'title', '答案' => 'answer', '解析' => 'analysis',
'选项A' => 'A', '选项B' => 'B', '选项C' => 'C', '选项D' => 'D', '选项E' => 'E'
];
}
}

View File

@@ -49,11 +49,11 @@ class RoleService{
}
$role = Roles::find($id);
// 删除权限
PermissionAccess::where('role_id', '=', $role_id)->delete();
PermissionAccess::where('role_id', '=', $id)->delete();
// 删除部门关联
// $role->detachDepartments();
// 删除用户关联
RolesAccess::where('role_id', '=', $role_id)->delete();
RolesAccess::where('role_id', '=', $id)->delete();
// 删除
$role->delete();
}
@@ -73,6 +73,7 @@ class RoleService{
(new PermissionAccess())->saveAll($save);
return true;
}
public function updateRoleAuth($request){
$role_id = $request->param('role_id', '');
$data_range = $request->param('data_range', '');
@@ -87,6 +88,11 @@ class RoleService{
return $role->save($save);
}
public function createRole($request){
$data = $request->param();
return Roles::create($data);
}
public function updateRole($request){
$data = $request->param();
return Roles::update($data);

View File

@@ -1,119 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services\company;
use app\model\customer\Company;
use app\model\customer\Contact;
/**
* Undocumented class
*/
class CompanyService {
/**
* @title 获取企业列表
*
* @param [type] $request
* @return void
*/
public function getCompanyList($request) {
$param = $request->param();
$map = [];
if (isset($param['name']) && $param['name']) {
$map[] = ['name', 'LIKE', '%' . $param['name'] . '%'];
}
if (isset($param['org_code']) && $param['org_code']) {
$map[] = ['org_code', '=', $param['org_code']];
}
$list = Company::with(['contact'])->where($map)->order('id desc')->paginate($request->pageConfig);
return $list->append(['area_t', 'industry_t']);
}
/**
* @title 获取企业详情
*
* @param [type] $request
* @return void
*/
public function getCompanyDetail($request) {
$param = $request->param();
if (!isset($param['id'])) {
return [];
}
$map = [];
$map[] = ['id', '=', $param['id']];
$data = Company::with(['contact'])->where($map)->find();
return $data->append(['area_t', 'industry_t']);
}
/**
* @title 导入数据
*
* @return void
*/
public function insertCompanyData($request) {
$data = $request->post('data');
$company = new Company();
$contactM = new Contact();
$resultData = [];
foreach ($data as $k => $item) {
$info = [];
if (!is_array($item)) {
continue;
}
foreach ($item as $key => $value) {
if (isset($company->insertFieldAlis[$key])) {
$info[$company->insertFieldAlis[$key]['table']][$company->insertFieldAlis[$key]['name']] = trim($value);
}
}
$info['company']['uid'] = $info['contact']['uid'] = request()->user['uid'];
if (isset($info['company']) && isset($info['company']['name'])) {
$customer = $company->where('name', '=', trim($info['company']['name']))->find();
$company_id = isset($customer['id']) ? $customer['id'] : 0;
if (!$company_id) {
$info['company']['turnover'] = '';
$info['company']['staff_num'] = '';
$info['company']['come_from'] = '';
$info['company']['company_type'] = '';
$info['company']['pc_count'] = '';
$customer = Company::create($info['company']);
$company_id = $customer->id;
} else {
$save_coustomer = $info['company'];
if (!empty($save_coustomer)) {
$save_coustomer['id'] = $company_id;
$result = $customer->save($save_coustomer);
}
}
if (isset($info['contact']['name'])) {
$map = [];
$map[] = ['name', '=', $info['contact']['name']];
$map[] = ['mobile', '=', isset($info['contact']['mobile']) ? $info['contact']['mobile'] : ''];
$map[] = ['company_id', '=', $company_id];
$contact = $contactM->where($map)->find(); //每次查询重新实例化
$contact_id = isset($contact['id']) ? $contact['id'] : 0;
if (!$contact_id) {
$info['contact']['company_id'] = $company_id;
$res = Contact::create($info['contact']);
$contact_id = $res->id;
} else {
$info['contact']['id'] = $contact_id;
$contact->save($info['contact']);
}
} else {
$contact_id = 0;
}
$resultData[] = ['company_id' => $company_id, 'contact_id' => (int) $contact_id, 'company' => $info['company'], 'contact' => $info['contact']];
}
}
return empty($resultData) ? false : $resultData;
}
}

View File

@@ -0,0 +1,81 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services\operate;
use app\model\operate\Ads;
class AdsService{
/**
* @title 获取广告
*
* @param [type] $request
* @return void
*/
public function getDataList($request){
$param = $request->param();
$order = "id desc";
$map = [];
if(isset($param['title']) && $param['title'] != ''){
$map[] = ['title', 'LIKE', '%' . $param['title'] . '%'];
}
if(isset($param['name']) && $param['name'] != ''){
$map[] = ['name', '=', $param['name']];
}
$list = Ads::where($map)->order($order)->append(['status_text', 'photo'])->paginate($request->pageConfig);
return $list;
}
/**
* @title 添加广告
*
* @param [type] $request
* @return void
*/
public function create($request){
$data = $request->param();
$data['user_id'] = $request->user['uid'];
return Ads::create($data);
}
/**
* @title 编辑广告
*
* @param [type] $request
* @return void
*/
public function update($request){
$data = $request->param();
$ads = Ads::find($data['id']);
return $ads->save($data);
}
/**
* @title 删除广告
*
* @param [type] $request
* @return void
*/
public function delete($request){
$id = $request->post('id', 0);
if(!$id){
throw new \think\Exception("非法操作!", 1);
}
return Ads::where('id', $id)->delete();
}
public function getAdsDetail($request){
$name = $request->param('name', '');
return Ads::where('name', $name)->append(['photo'])->find();
}
}

View File

@@ -0,0 +1,75 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services\operate;
use app\model\operate\ClientConfig;
class ClientConfigService{
/**
* @title 获取广告
*
* @param [type] $request
* @return void
*/
public function getDataList($request){
$param = $request->param();
$order = "id desc";
$map = [];
if(isset($param['title']) && $param['title'] != ''){
$map[] = ['title', 'LIKE', '%' . $param['title'] . '%'];
}
if(isset($param['name']) && $param['name'] != ''){
$map[] = ['name', '=', $param['name']];
}
$list = ClientConfig::where($map)->order($order)->append(['status_text'])->paginate($request->pageConfig);
return $list;
}
/**
* @title 添加广告
*
* @param [type] $request
* @return void
*/
public function create($request){
$data = $request->param();
return ClientConfig::create($data);
}
/**
* @title 编辑配置
*
* @param [type] $request
* @return void
*/
public function update($request){
$data = $request->param();
$config = ClientConfig::find($data['id']);
$config->save($data);
return $config;
}
/**
* @title 删除配置
*
* @param [type] $request
* @return void
*/
public function delete($request){
$data = $request->param();
$config = ClientConfig::find($data['id']);
return $config->delete();
}
}

View File

@@ -0,0 +1,75 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services\operate;
use app\model\operate\ClientMenu;
class ClientMenuService{
/**
* @title 获取广告
*
* @param [type] $request
* @return void
*/
public function getDataList($request){
$param = $request->param();
$order = "id desc";
$map = [];
if(isset($param['title']) && $param['title'] != ''){
$map[] = ['title', 'LIKE', '%' . $param['title'] . '%'];
}
if(isset($param['name']) && $param['name'] != ''){
$map[] = ['name', '=', $param['name']];
}
$list = ClientMenu::where($map)->order($order)->append(['status_text'])->paginate($request->pageConfig);
return $list;
}
/**
* @title 添加广告
*
* @param [type] $request
* @return void
*/
public function create($request){
$data = $request->param();
$data['user_id'] = $request->user['uid'];
return ClientMenu::create($data);
}
/**
* @title 编辑广告
*
* @param [type] $request
* @return void
*/
public function update($request){
$data = $request->param();
$menu = ClientMenu::find($data['id']);
return $client->save($data);
}
/**
* @title 删除配置
*
* @param [type] $request
* @return void
*/
public function delete($request){
$data = $request->param();
$menu = ClientMenu::find($data['id']);
return $menu->delete();
}
}

View File

@@ -0,0 +1,91 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services\operate;
use app\model\operate\Client;
class ClientService{
/**
* @title 获取广告
*
* @param [type] $request
* @return void
*/
public function getDataList($request){
$param = $request->param();
$order = "id desc";
$map = [];
if(isset($param['title']) && $param['title'] != ''){
$map[] = ['title', 'LIKE', '%' . $param['title'] . '%'];
}
if(isset($param['name']) && $param['name'] != ''){
$map[] = ['name', '=', $param['name']];
}
$list = Client::with(['setting'])->where($map)->order($order)->append(['status_text'])->paginate($request->pageConfig);
return $list;
}
/**
* @title 添加广告
*
* @param [type] $request
* @return void
*/
public function create($request){
$data = $request->param();
$data['user_id'] = $request->user['uid'];
return Client::create($data);
}
/**
* @title 编辑广告
*
* @param [type] $request
* @return void
*/
public function update($request){
$data = $request->param();
$client = Client::find($data['id']);
return $client->save($data);
}
public function getClientMenu($request){
$param = $request->param();
$list = [];
if(isset($param['type'])){
if($param['type'] == 'home'){
$list = [
['title' => '常考题', 'image' => request()->static() . 'images/icon/5.jpg', 'url' => '/pages/exam/index/index'],
['title' => '模拟考', 'image' => request()->static() . 'images/icon/6.jpg', 'url' => '/pages/exam/index/index'],
['title' => '题库练习', 'image' => request()->static() . 'images/icon/7.jpg', 'url' => '/pages/exam/index/index'],
['title' => '易错题', 'image' => request()->static() . 'images/icon/8.jpg', 'url' => '/pages/exam/index/index'],
['title' => '我的错题', 'image' => request()->static() . 'images/icon/10.png', 'url' => '/pages/exam/my/index', 'desc' => '巩固错题,轻轻松松过考'],
['title' => '我的收藏', 'image' => request()->static() . 'images/icon/9.png', 'url' => '/pages/exam/my/index', 'desc' => '您收藏的题目,都在这里'],
];
}else{
$list = [
['title' => '我的资料', 'icon' => 'profile', 'iconColor' => 'green', 'url' => '/pages/ucenter/profile/index'],
['title' => '我的报名', 'icon' => 'edit', 'iconColor' => 'green', 'url' => '/pages/ucenter/enter/index'],
['title' => '我的记录', 'icon' => 'list', 'iconColor' => 'green', 'url' => '/pages/ucenter/exam/index'],
['title' => '我的订单', 'icon' => 'shop', 'iconColor' => 'green', 'url' => '/pages/ucenter/order/index'],
['title' => '邀请推广', 'icon' => 'qrcode', 'iconColor' => 'green', 'url' => '/pages/ucenter/invite/index'],
['title' => '关于我们', 'icon' => 'info', 'iconColor' => 'green', 'url' => '/pages/ucenter/about/index'],
];
}
}
return $list;
}
}

View File

@@ -30,6 +30,20 @@ class DictionaryService{
$list = Dictionary::where($map)->order('id desc')->paginate($request->pageConfig);
return $list;
}
/**
* @title 所有字典数据
*
* @return void
*/
public function getDictionaryAll(){
$list = Dictionary::where([])->select();
$data = [];
foreach($list as $value){
$data[$value['dic_type']][] = $value->toArray();
}
return $data;
}
/**
* @title 获取字典明细
*

View File

@@ -0,0 +1,60 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\services\wechat;
use EasyWeChat\Factory;
use think\facade\Config;
use app\model\student\Student;
use app\model\student\Wechat;
class OauthService{
public function oauth($request){
$code = $request->post('code');
$config = Config::get('wechat.miniapp');
$app = Factory::miniProgram($config);
try {
//获取openid
$session_code = $app->auth->session($code);
$wechat = Wechat::where('openid', '=', $session_code['openid'])->findOrEmpty();
if($wechat->isEmpty()){
$userInfo = $app->encryptor->decryptData($session_code['session_key'], $request->post('iv'), $request->post('encrypted'));
$data = [
'headimgurl' => $userInfo['avatarUrl'],
'nickname' => $userInfo['nickName'],
'openid'=> $userInfo['openId'],
'sex' => $userInfo['gender'],
'city' => $userInfo['city'],
'country' => $userInfo['country'],
'province' => $userInfo['province'],
'language' => $userInfo['language']
];
$wechat = Wechat::create($data);
}
if($wechat['uid'] > 0){
$wechat['users'] = Student::with(['enter'])->visible(['name', 'mobile', 'sex', 'address', 'id', 'id_card', 'invite_id', 'exam_num', 'incorrect_num', 'point'])->find($wechat['uid'])->append(['token']);
}
return $wechat;
} catch (\Exception $e) {
throw new \think\Exception($e->getMessage(), 100);
}
}
public function getQrCode($request){
$config = Config::get('wechat.miniapp');
$app = Factory::miniProgram($config);
$res = $app->url_link->generate([]);
return $res;
}
}

View File

@@ -13,13 +13,14 @@ use think\Validate;
class File extends Validate{
protected $rule = [
'avatar' => 'fileSize:102400|fileExt:jpg,png',
'image' => 'fileSize:204800|fileExt:jpg,jpeg,png,webp',
'file' => 'fileSize:1024 * 1000|fileExt:doc,xls,zip,rar'
'avatar' => 'fileSize:1048576|fileExt:jpg,png',
'image' => 'fileSize:1048576 * 2|fileExt:jpg,jpeg,png,webp',
'file' => 'fileSize:1048576 * 5|fileExt:doc,xls,zip,rar'
];
protected $message = [
'avatar.fileSize' => '图片不大于1M',
'avatar.fileExt' => '头像后缀不正确',
'avatar.image' => '头像尺寸不正确',
'image.fileSize' => '图片大小超过允许上传大小'
];
}

View File

@@ -1,27 +1,27 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\validate\auth;
use think\Validate;
class Index extends Validate{
protected $rule = [
'username' => 'require:id',
'password' => 'require'
];
protected $message = [
'password.require' => '登录密码必须',
'username.require' => '登录用户名必须'
];
protected $scene = [
'login' => ['username', 'password'],
'resetpasswd' => ['username', 'password']
];
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\validate\admin\auth;
use think\Validate;
class Index extends Validate{
protected $rule = [
'username' => 'require',
'password' => 'require'
];
protected $message = [
'password.require' => '登录密码必须',
'username.require' => '登录用户名必须'
];
protected $scene = [
'login' => ['username', 'password'],
'resetpasswd' => ['username', 'password']
];
}

View File

@@ -6,7 +6,7 @@
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\validate\auth;
namespace app\validate\admin\auth;
use think\Validate;

View File

@@ -0,0 +1,30 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\validate\api\student;
use think\Validate;
class Enter extends Validate{
protected $rule = [
'category_id' => 'require',
'id_card' => 'require|idCard',
'mobile' => 'require|mobile'
];
protected $message = [
'category_id.require' => '科目必选',
'id_card.require' => '身份证号码必填',
'id_card.idCard' => '身份证号码格式错误',
'mobile.require' => '手机号码必填',
'mobile.mobile' => '手机号码格式错误'
];
protected $scene = [
'add' => ['category_id', 'id_card']
];
}

View File

@@ -0,0 +1,36 @@
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace app\validate\api\student;
use think\Validate;
class Login extends Validate{
protected $rule = [
'name' => 'require|chsAlpha',
'mobile' => 'require|mobile|unique:student',
'password' => 'require',
'repassword'=>'require|confirm:password'
];
protected $message = [
'password.require' => '登录密码必须',
'mobile.require' => '手机号码必须',
'mobile.mobile' => '手机号码不正确',
'mobile.unique' => '当前手机号码已注册',
'name.require' => '姓名必须',
'name.chsAlpha' => '姓名格式不正确',
'repassword.require' => '确认密码必须',
'repassword.confirm' => '两次密码输入不同'
];
protected $scene = [
'login' => ['name', 'mobile', 'password'],
'register' => ['name', 'mobile', 'password', 'repassword'],
'resetpasswd' => ['name', 'password']
];
}

31
route/admin.php Normal file
View File

@@ -0,0 +1,31 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
use think\facade\Route;
Route::rule('/', 'Index/index');
Route::rule('test', 'Index/test');
Route::group('/admin', function(){
Route::rule('auth/user/:action', 'admin.auth.User/:action');
Route::rule('auth/department/:action', 'admin.auth.Department/:action');
Route::rule('auth/role/:action', 'admin.auth.Role/:action');
Route::rule('system/:controller/:action', 'admin.system.:controller/:action');
Route::rule('student/:controller/:action', 'admin.student.:controller/:action');
Route::rule('exam/:controller/:action', 'admin.exam.:controller/:action');
Route::rule('point/:controller/:action', 'admin.point.:controller/:action');
Route::rule('operate/:controller/:action', 'admin.operate.:controller/:action');
})->middleware(['Api', 'Auth']);
Route::group('admin/auth', function(){
Route::post('login', 'admin.auth.Index/login');
})->middleware(['Api']);
Route::miss('index/miss');

17
route/api.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
use think\facade\Route;
Route::group('/api', function(){
Route::rule('operate/:controller/:action', 'api.operate.:controller/:action')->middleware(['ApiAuth']);
})->middleware(['Api']);
Route::miss('index/miss');

View File

@@ -10,15 +10,4 @@
// +----------------------------------------------------------------------
use think\facade\Route;
Route::rule('/', 'Index/index');
Route::rule('test', 'Index/test');
Route::group('/', function(){
Route::rule('system/:controller/:action', 'system.:controller/:action');
Route::rule('auth/user/:action', 'auth.User/:action');
Route::rule('auth/department/:action', 'auth.Department/:action');
Route::rule('auth/role/:action', 'auth.Role/:action');
Route::rule('customer/company/:action', 'customer.Company/:action');
})->middleware([\app\middleware\Check::class], 'api');
Route::miss('index/miss');
Route::rule('template', 'index/template');

32
ui/.gitignore vendored
View File

@@ -1,24 +1,10 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/package-lock.json
out/
logs/
run/
.idea/
package-lock.json
data/
.vscode/launch.json
public/electron/
pnpm-lock.yaml

24
ui/frontend/.gitignore vendored Normal file
View File

@@ -0,0 +1,24 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/package-lock.json

74
ui/frontend/package.json Normal file
View File

@@ -0,0 +1,74 @@
{
"name": "scui",
"version": "1.6.6",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build --report",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@element-plus/icons-vue": "2.0.6",
"@tinymce/tinymce-vue": "5.0.0",
"axios": "0.27.2",
"codemirror": "5.65.5",
"core-js": "3.24.1",
"cropperjs": "1.5.12",
"crypto-js": "4.1.1",
"echarts": "5.3.3",
"element-plus": "2.2.12",
"nprogress": "0.2.0",
"qrcodejs2": "0.0.2",
"sortablejs": "1.15.0",
"tinymce": "6.1.2",
"vue": "3.2.37",
"vue-i18n": "9.2.2",
"vue-router": "4.1.3",
"vuedraggable": "4.0.3",
"vuex": "4.0.2",
"xgplayer": "2.31.7",
"xgplayer-hls": "2.5.2",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@babel/core": "7.18.9",
"@babel/eslint-parser": "7.18.9",
"@vue/cli-plugin-babel": "5.0.8",
"@vue/cli-plugin-eslint": "5.0.8",
"@vue/cli-service": "5.0.8",
"eslint": "8.21.0",
"eslint-plugin-vue": "9.3.0",
"sass": "1.37.5",
"sass-loader": "10.1.1"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"globals": {
"APP_CONFIG": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser",
"requireConfigFile": false
},
"rules": {
"indent": 0,
"no-tabs": 0,
"no-mixed-spaces-and-tabs": 0,
"vue/no-unused-components": 0,
"vue/multi-word-component-names": 0
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"not ie 11"
]
}

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 509 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Some files were not shown because too many files have changed in this diff Show More