feat: move miniapp server project
This commit is contained in:
parent
4a940f28ba
commit
96d9063b13
178 changed files with 9699 additions and 5044 deletions
224
app/Act1Controller.php
Normal file
224
app/Act1Controller.php
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app;
|
||||
|
||||
use think\App;
|
||||
use think\exception\ValidateException;
|
||||
use think\Validate;
|
||||
use app\exceptions\ParamsValidateException;
|
||||
use app\exceptions\NotLoginException;
|
||||
use think\facade\Log;
|
||||
use think\exception\ErrorException;
|
||||
|
||||
/**
|
||||
* 控制器基础类
|
||||
*/
|
||||
abstract class Act1Controller
|
||||
{
|
||||
protected $user_id = null;
|
||||
protected $user_info = null;
|
||||
protected $check_actions = [];
|
||||
protected $className = 'ACTION_NOT_SET';
|
||||
/**
|
||||
* Request实例
|
||||
* @var \think\Request
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
* 应用实例
|
||||
* @var \think\App
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* 是否批量验证
|
||||
* @var bool
|
||||
*/
|
||||
protected $batchValidate = false;
|
||||
|
||||
/**
|
||||
* 控制器中间件
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [];
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
* @access public
|
||||
* @param App $app 应用对象
|
||||
*/
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->request = $this->app->request;
|
||||
|
||||
// 参数校验
|
||||
$this->valid_params();
|
||||
// 控制器初始化
|
||||
$this->initialize();
|
||||
}
|
||||
|
||||
// 初始化
|
||||
protected function initialize()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证数据
|
||||
* @access protected
|
||||
* @param array $data 数据
|
||||
* @param string|array $validate 验证器名或者验证规则数组
|
||||
* @param array $message 提示信息
|
||||
* @param bool $batch 是否批量验证
|
||||
* @return array|string|true
|
||||
* @throws ValidateException
|
||||
*/
|
||||
protected function validate(array $data, $validate, array $message = [], bool $batch = false)
|
||||
{
|
||||
if (is_array($validate)) {
|
||||
$v = new Validate();
|
||||
$v->rule($validate);
|
||||
} else {
|
||||
if (strpos($validate, '.')) {
|
||||
// 支持场景
|
||||
[$validate, $scene] = explode('.', $validate);
|
||||
}
|
||||
$class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
|
||||
$v = new $class();
|
||||
if (!empty($scene)) {
|
||||
$v->scene($scene);
|
||||
}
|
||||
}
|
||||
|
||||
$v->message($message);
|
||||
|
||||
// 是否批量验证
|
||||
if ($batch || $this->batchValidate) {
|
||||
$v->batch(true);
|
||||
}
|
||||
$result = $v->failException(false)->check($data);
|
||||
if (!$result) {
|
||||
throw new ParamsValidateException($v->getError());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
protected function valid_params()
|
||||
{
|
||||
|
||||
$is_logined = false;
|
||||
$cookie_act_user_id = cookie('act_user_id');
|
||||
if (!empty($cookie_act_user_id)) {
|
||||
if ($cookie_act_user_id) {
|
||||
$cookie_act_user_id = \a_decode($cookie_act_user_id);
|
||||
if ($cookie_act_user_id) {
|
||||
$cookie_act_user_id_sp = explode('|', $cookie_act_user_id);
|
||||
//查看是否有这个用户
|
||||
// c_debug($cookie_user_id_sp[0]);
|
||||
// if($cookie_user_id_sp[0] == 3){
|
||||
// $cookie_user_id_sp[0] = 13;
|
||||
// }
|
||||
$db_user = D('act1_user');
|
||||
$user = $db_user->where(array('id' => $cookie_act_user_id_sp[0]))->find();
|
||||
if (!empty($user)) {
|
||||
$is_logined = true;
|
||||
$this->act_user_id = $cookie_act_user_id_sp[0];
|
||||
$this->act_user_info = $user;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->act_user_id = null;
|
||||
$this->act_user_info = null;
|
||||
}
|
||||
|
||||
|
||||
$request = $this->app->request;
|
||||
$action_name = $request->action();
|
||||
//没有列举出来的action也不校验登录
|
||||
//带#的action_name是不校验是否登录,但是要校验参数
|
||||
if (array_key_exists($action_name, $this->check_actions)) {
|
||||
//判断是否登录了
|
||||
if ($is_logined) {
|
||||
//logined
|
||||
} else {
|
||||
//not login
|
||||
throw new NotLoginException();
|
||||
}
|
||||
}
|
||||
//校验参数
|
||||
$checks = array();
|
||||
if (array_key_exists($action_name, $this->check_actions)) {
|
||||
$checks = $this->check_actions[$action_name];
|
||||
}
|
||||
if (array_key_exists('#' . $action_name, $this->check_actions)) {
|
||||
$checks = $this->check_actions['#' . $action_name];
|
||||
}
|
||||
// echo json_encode($checks);
|
||||
if (!empty($checks)) {
|
||||
$valid_rule = [];
|
||||
$valid_msg = [];
|
||||
$valid_data = [];
|
||||
foreach ($checks as $k => $v) {
|
||||
if (\substr($k, 0, 1) === '#') {
|
||||
$k = \substr($k, 1);
|
||||
if (!isset($v[0])) {
|
||||
$v = [];
|
||||
}
|
||||
} else {
|
||||
if (isset($v[0])) {
|
||||
if (strpos($v[0], 'require') === false) {
|
||||
$v[0] = 'require|' . $v[0];
|
||||
}
|
||||
} else {
|
||||
$v[] = 'require';
|
||||
}
|
||||
}
|
||||
if(empty($v)){
|
||||
continue;
|
||||
}
|
||||
$valid_data[$k] = input($k . '');
|
||||
$valid_rule[$k] = $v[0];
|
||||
if (count($v) > 1) {
|
||||
$msg = $v[1];
|
||||
foreach ($msg as $k1 => $v1) {
|
||||
$valid_msg[$k . '.' . $k1] = $k . $v1;
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->validate($valid_data, $valid_rule, $valid_msg);
|
||||
}
|
||||
}
|
||||
|
||||
protected function log_notice($any, $msg = '', $tag = 'log_notice')
|
||||
{
|
||||
if ($any instanceof ErrorException || $any instanceof Exception) {
|
||||
$str = c_formate_exception($any);
|
||||
} else {
|
||||
$str = json_encode($any, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
Log::write('[' . $this->className . ']' . '[' . $tag . ']' . '[' . $msg . ']' . '[' . $str . ']', 'NOTICE');
|
||||
}
|
||||
protected function log_warn($any, $msg = '', $tag = 'log_warn')
|
||||
{
|
||||
if ($any instanceof ErrorException || $any instanceof Exception) {
|
||||
$str = c_formate_exception($any);
|
||||
} else {
|
||||
$str = json_encode($any, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
Log::write('[' . $this->className . ']' . '[' . $tag . ']' . '[' . $msg . ']' . '[' . json_encode($any, JSON_UNESCAPED_UNICODE) . ']', 'WARN');
|
||||
}
|
||||
protected function log_error($any, $msg = '', $tag = 'log_error')
|
||||
{
|
||||
if ($any instanceof ErrorException || $any instanceof Exception) {
|
||||
$str = c_formate_exception($any);
|
||||
} else {
|
||||
$str = json_encode($any, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
Log::write('[' . $this->className . ']' . '[' . $tag . ']' . '[' . $msg . ']' . '[' . json_encode($any, JSON_UNESCAPED_UNICODE) . ']', 'ERROR');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue