Commit f3a6524f authored by wangtao's avatar wangtao

学习资料

parent 39b9b3aa
......@@ -14,6 +14,7 @@ use app\BaseController;
use app\model\system\SystemRoles as Roles;
use app\model\system\SystemManager as Manager;
use think\facade\Db;
use think\helper\Str;
/**
*【后台控制器抽象基类】
......@@ -72,7 +73,25 @@ abstract class AdminBase extends BaseController
//载入权限菜单
$this->loadMenusRoles();
//构组路由: 控制器 + 方法 + (参数action的传值)
$this->routeUri = strtolower($this->request->ADDON_APP . $this->request->controller() . "/" . $this->request->action() . (($action = $this->request->get('action')) ? '/' . $action : ''));
$controler = $this->request->controller();
$controlerarr = explode('.', $controler);
//下划线转驼峰(首字母小写)
$firstcc = Str::camel($controlerarr[0]);
$firstcc = Str::snake($firstcc, $delimiter = '_');
$routeuri_controler = $firstcc;
if(isset($controlerarr[1]) && $controlerarr[1]){
//下划线转驼峰(首字母小写)
$ss = Str::camel($controlerarr[1]);
$ss = Str::snake($ss, $delimiter = '_');
$routeuri_controler = $controlerarr[0].'.'.$ss;
}
// print_r($routeuri_controler);exit;
$this->routeUri = strtolower($this->request->ADDON_APP .$routeuri_controler . "/" . $this->request->action() . (($action = $this->request->get('action')) ? '/' . $action : ''));
// $this->routeUri = strtolower($this->request->ADDON_APP . $this->request->controller() . "/" . $this->request->action() . (($action = $this->request->get('action')) ? '/' . $action : ''));
//验证权限
$this->isPower();
}
......@@ -123,6 +142,7 @@ abstract class AdminBase extends BaseController
*/
private function isPower()
{
if ($this->manUser['userid'] > 1 && !in_array($this->routeUri, $this->manUser['actions'])) {
$this->exitMsg('抱歉,您没有该项权限请联系管理员!', $this->request->isAjax() ? 401 : 400);
}
......@@ -167,5 +187,4 @@ abstract class AdminBase extends BaseController
}
}
\ No newline at end of file
......@@ -45,7 +45,8 @@
cols: [[
{field:'id',width:50,unresize:true,align:'center',title:'ID'},
{field:'thumb',width:80,height:80,align:'center',title:'缩略图',templet:'<div class="files_itemw"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div>'},
// {field:'thumb',width:80,height:80,align:'center',title:'缩略图',templet:'<div class="files_itemw"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div>'},
{field:'thumbpath',width:50,align:'center',title:'缩略图',templet:function(d){return '<div><div class="files_itemw"><img src="'+(d.thumbpath ? d.thumbpath : '')+'" lay-event="article-event-image" /></div></div>';}},
{field:'title',align:'left',title:'分类',},
{field:'typetxt',width:100,align:'center',title:'类型'},
{field:'sort',width:100,align:'center',title:'排序',edit:'text'},
......
......@@ -54,7 +54,8 @@
cols: [[
{field:'id',width:50,align:'center',title:'ID'},
{field:'title',align:'left',title:'分类',edit:'text'},
{field:'thumb',width:50,align:'center',title:'缩略图',templet:'<div><div class="files_itemw1"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div></div>'},
// {field:'thumb',width:50,align:'center',title:'缩略图',templet:'<div><div class="files_itemw1"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div></div>'},
{field:'thumbpath',width:50,align:'center',title:'缩略图',templet:function(d){return '<div><div class="files_itemw1"><img src="'+(d.thumbpath ? d.thumbpath : '')+'" lay-event="article-event-image" /></div></div>';}},
{field:'sort',width:50,align:'center',title:'排序',edit:'text'},
{fixed:'right',width:130,align:'center',toolbar:'<div><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a></div>',title:'操作'}
]],
......
......@@ -79,7 +79,7 @@
{in name="data.fileext" value="jpg,png,jpeg"}
<img src="{$data.fileurl}" width="50" height="50" class="imgclick">
{else/}
<a class="layui-btn layui-btn-xs" href="/admin/course.course_work/downloadfile?fileid={$data.fileid}" target="_blank">下载</a>
<a class="layui-btn layui-btn-xs" href="/admin/cert.cert_order/downloadfile?fileid={$data.fileid}" target="_blank">下载</a>
{/in}
</td>
</tr>
......
......@@ -54,7 +54,8 @@
cols: [[
{field:'id',width:50,align:'center',title:'ID'},
{field:'title',align:'left',title:'分类',edit:'text'},
{field:'thumb',width:50,align:'center',title:'缩略图',templet:'<div><div class="files_itemw1"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div></div>'},
{field:'thumbpath',width:50,align:'center',title:'缩略图',templet:function(d){return '<div><div class="files_itemw1"><img src="'+(d.thumbpath ? d.thumbpath : '')+'" lay-event="article-event-image" /></div></div>';}},
// {field:'thumb',width:50,align:'center',title:'缩略图',templet:'<div><div class="files_itemw1"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div></div>'},
{field:'sort',width:50,align:'center',title:'排序',edit:'text'},
{field:"is_tj",width:80,align:'center',title:"是否推荐",templet:function(d){return '<input type="checkbox" name="is_tj" lay-skin="switch" lay-text="是|否" lay-filter="is_tj-chang" value="'+d.is_tj+'" data-json="'+encodeURIComponent(JSON.stringify(d))+'"'+(d.is_tj==1 ? ' checked' : '')+'>';},unresize:true,},
{fixed:'right',width:130,align:'center',toolbar:'<div><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a></div>',title:'操作'}
......
......@@ -75,7 +75,7 @@
{in name="data.fileext" value="jpg,png,jpeg"}
<img src="{$data.fileurl}" width="50" height="50" class="imgclick">
{else/}
<a class="layui-btn layui-btn-xs" href="/admin/course.course_work/downloadfile?fileid={$data.fileid}" target="_blank">下载</a>
<a class="layui-btn layui-btn-xs" href="/admin/project.project/downloadfile?fileid={$data.fileid}" target="_blank">下载</a>
{/in}
</td>
</tr>
......
......@@ -54,7 +54,7 @@
cols: [[
{field:'id',width:50,align:'center',title:'ID'},
{field:'title',align:'left',title:'分类',edit:'text'},
{field:'thumb',width:50,align:'center',title:'缩略图',templet:'<div><div class="files_itemw1"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div></div>'},
{field:'thumbpath',width:50,align:'center',title:'缩略图',templet:function(d){return '<div><div class="files_itemw1"><img src="'+(d.thumbpath ? d.thumbpath : '')+'" lay-event="article-event-image" /></div></div>';}},
{field:'sort',width:50,align:'center',title:'排序',edit:'text'},
{field:"is_tj",width:80,align:'center',title:"是否推荐",templet:function(d){return '<input type="checkbox" name="is_tj" lay-skin="switch" lay-text="是|否" lay-filter="is_tj-chang" value="'+d.is_tj+'" data-json="'+encodeURIComponent(JSON.stringify(d))+'"'+(d.is_tj==1 ? ' checked' : '')+'>';},unresize:true,},
{fixed:'right',width:130,align:'center',toolbar:'<div><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a></div>',title:'操作'}
......
......@@ -192,7 +192,7 @@
function shajax(id,shstatus,errordesc=''){
$.ajax({
method: "post",
url: layui.cache.maps+'/users.business/shenhebusiness',
url: layui.cache.maps+'users.business/shenhebusiness',
data: {id:id,shstatus:shstatus,errordesc:errordesc},
dataType: "json",
success: function (res){
......
......@@ -195,7 +195,7 @@
function shajax(id,shstatus,errordesc=''){
$.ajax({
method: "post",
url: layui.cache.maps+'/users.school/shenheschool',
url: layui.cache.maps+'users.school/shenheschool',
data: {id:id,shstatus:shstatus,errordesc:errordesc},
dataType: "json",
success: function (res){
......
......@@ -10,6 +10,7 @@ use app\BaseController;
use app\Request;
use app\model\project\User as userModel;
use think\exception\ValidateException;
use think\facade\Cache;
class User extends BaseController
{
......@@ -49,7 +50,7 @@ class User extends BaseController
public function register(Request $request)
{
$vo = (new UserValidate())->goCheck(['name', 'mobile', 'password', 'code', 'role','password2']);
$vo = (new UserValidate())->goCheck(['name', 'mobile', 'password', 'code', 'role', 'password2']);
if ($vo !== true) {
return $vo;
}
......@@ -67,7 +68,13 @@ class User extends BaseController
return $this->returnMsg('验证码错误');
}
}
if(isset($data['cachekey']) && !empty($data['cachekey'])) {
$cachekey = $data['cachekey'];
$openid = Cache::get($cachekey . '_wxopenid');
if($openid){
$user['wx_openid'] = $openid;
}
}
$user['username'] = $data['name'];
$user['mobile'] = $data['mobile'];
......@@ -87,10 +94,45 @@ class User extends BaseController
return $this->returnMsg('注册成功', 1);
}
//微信登录成功绑定手机号
//微信登录成功绑定已有手机号
public function bindmobile(Request $request)
{
$vo = (new UserValidate())->goCheck(['user_id', 'name', 'mobile', 'password', 'code','password2']);
$vo = (new UserValidate())->goCheck(['cachekey', 'mobile', 'code']);
if ($vo !== true) {
return $vo;
}
$data = $request->param();
$user = userModel::where(['mobile' => $data['mobile']])->where('is_del', 0)->find();
if (empty($user)) {
return $this->returnMsg('手机号未注册');
}
$checkSmsCode = UtilService::checkSmsCode($data['mobile'], $data['code']);
if (!$checkSmsCode) {
// return $this->returnMsg('验证码错误');
}
$cachekey = $data['cachekey'];
$openid = Cache::get($cachekey . '_wxopenid');
if (empty($openid)) {
return $this->returnMsg('微信登录生效请重新扫码登录');
}
//绑定微信openid
userModel::where('id', $user['id'])->save(['wx_openid' => $openid]);
$user['wx_openid'] = $openid;
//登录
$token = TokenService::generateToken($user['id'], $user->toArray());
$update['token'] = $token;
$update['last_login_time'] = time();
userModel::where(['id' => $user['id']])->update($update);
return $this->returnMsg('操作成功', 1, ['token' => $token, 'expires_in' => TokenService::EXPIRE]);
}
//微信登录后新建账号 不用了
public function bindregister(Request $request)
{
$vo = (new UserValidate())->goCheck(['cachekey', 'name', 'mobile', 'password', 'code', 'password2', 'role']);
if ($vo !== true) {
return $vo;
}
......@@ -101,20 +143,40 @@ class User extends BaseController
}
$checkSmsCode = UtilService::checkSmsCode($data['mobile'], $data['code']);
if (!$checkSmsCode) {
// return $this->returnMsg('验证码错误');
return $this->returnMsg('验证码错误');
}
$cachekey = $data['cachekey'];
$openid = Cache::get($cachekey. '_wxopenid');
if (empty($openid)) {
return $this->returnMsg('微信登录生效请重新扫码登录');
}
$is_exit = userModel::where(['wx_openid' => $openid])->where('is_del', 0)->count();
if ($is_exit) {
return $this->returnMsg('此微信已绑定其它账号');
}
//绑定用户信息
$user['wx_openid'] = $openid;
$user['username'] = $data['name'];
$user['mobile'] = $data['mobile'];
$user['salt'] = random(4);
$user['reg_time'] = time();
$user['create_time'] = time();
$user['is_del'] = 0;
$user['password'] = md5($data['password'] . $user['salt']);
$user['last_login_time'] = time();
$token = TokenService::generateToken($data['user_id'], $user);
$user['token'] = $token;
userModel::where('id', $data['user_id'])->update($user);
$user['role'] = $data['role'] ?? 1;
$user['headico'] = vconfig('default_user') ?? null;
$user = userModel::create($user);
if (!$user) {
return $this->returnMsg('注册失败', 0);
}
//登录
$token = TokenService::generateToken($user->id, $user->toArray());
$update['token'] = $token;
$update['last_login_time'] = time();
userModel::where(['id' => $user->id])->update($update);
return $this->returnMsg('操作成功', 1, ['token' => $token, 'expires_in' => TokenService::EXPIRE]);
}
......
......@@ -38,15 +38,16 @@ class Wecaht extends BaseController
if ($cachekey == $array['Ticket']) {
$openid = $array['FromUserName'];
Log::write('扫描成功');
Cache::set($EventKey, $openid, 1000);
$user = User::where('wx_openid', $openid)->find();
if (empty($user)) {
$user['wx_openid'] = $openid;
$user['is_del'] = 1;
$user['create_time'] = time();
$user['headico'] = vconfig('default_user') ?? null;
userModel::insert($user);
}
Cache::set($EventKey . '_wxopenid', $openid, 3000);
// $user = User::where('wx_openid', $openid)->find();
// if (empty($user)) {
// $user['wx_openid'] = $openid;
// $user['is_del'] = 1;
// $user['create_time'] = time();
// $user['headico'] = vconfig('default_user') ?? null;
// userModel::insert($user);
// }
}
}
......@@ -105,10 +106,13 @@ class Wecaht extends BaseController
{
$param = $this->request->post();
$cachekey = $param['cachekey'];
$openid = Cache::get($cachekey);
$openid = Cache::get($cachekey . '_wxopenid');
if (empty($openid)) {
return $this->returnMsg("等待用户扫码关注", 1);
}
$user = User::where('wx_openid', $openid)->find();
if (isset($user['id']) && empty($user['mobile'])) {
$redata = ['token' => '', 'expires_in' => 0, 'user_id' => $user['id'], 'is_mobile' => 0];
if (empty($user)) {
$redata = ['token' => '', 'expires_in' => 0, 'user_id' => 0, 'is_mobile' => 0];
} elseif ($user) {
if ($user['status'] != 1) {
return $this->returnMsg('账号禁止登录', 0);
......@@ -121,10 +125,8 @@ class Wecaht extends BaseController
$update['last_login_time'] = time();
User::where(['id' => $user['id']])->update($update);
$redata = ['token' => $token, 'expires_in' => TokenService::EXPIRE, 'user_id' => $user['id'], 'is_mobile' => 1];
} else {
return $this->returnMsg("登录失败,请重新扫码", 0);
}
}
return $this->returnMsg("success", 1, $redata);
}
......
......@@ -31,6 +31,7 @@ class User extends BaseController
public function getUserInfo(Request $request)
{
$vo = (new UserValidate())->goCheck(['token']);
if ($vo !== true) {
return $vo;
......@@ -38,9 +39,12 @@ class User extends BaseController
$data = $request->header();
$user = UserService::getUserInfo($data['token']);
if (!$user) {
return $this->returnMsg('token无效', 0);
}
$info_status = '';
if ($user['role'] == 2) {
$info_status = Db::name('business')->where('user_id', $user['id'])->value('status');
......
......@@ -27,9 +27,11 @@ class UserValidate extends BaseValidate
'reset_token'=>'require',
'role'=>'require',
'user_id'=>'require',
'cachekey'=>'require',
];
protected $message = [
'cachekey.require' => '微信登录唯一标识不能为空',
'user_id.require' => '用户id不能为空',
'name.require' => '名称必须',
'mobile.require' => '手机号不能为空',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment