后台基础操作完善提交

This commit is contained in:
15090180611 2025-01-20 18:00:25 +08:00
parent b21365b205
commit ce3d158cae
27 changed files with 797 additions and 92 deletions

View File

@ -106,7 +106,7 @@ class Index extends Backend
$result = $auth->freelogin($ids, 0);
if ($result === true) {
Hook::listen("admin_login_after", $this->request);
$this->success(__('Login successful'), null, [ 'id' => $auth->id, 'avatar' => $auth->avatar]);
$this->success(__('Login successful'), null, [ 'id' => $auth->id, 'avatar' => $auth->avatar,'token' => $this->request->token()]);
} else {
$msg = $auth->getError();
$msg = $msg ? $msg : __('Username or password is incorrect');
@ -139,33 +139,33 @@ class Index extends Backend
$param = $this->request->param();
if($this->request->isPost()){
$this->error("API版本后台正在开发中敬请期待");
// try{
// $this->error("API版本后台正在开发中敬请期待");
try{
if(isset($param['ids']))$ids = $param['ids'];
// //机构登录
// //如果存在登录,先退出登录
// $auth = \app\manystore\library\Auth::instance();
// if($auth->isLogin()){
// $auth->logout();
// Hook::listen("manystore_logout_after", $this->request);
// }
// //执行登录
// ManystoreLog::setTitle(__('Login'));
// $result = $auth->freelogin($ids, 0);
// if ($result === true) {
// Hook::listen("admin_login_after", $this->request);
// $this->success(__('Login successful'), null, [ 'id' => $auth->id, 'avatar' => $auth->avatar]);
// } else {
// $msg = $auth->getError();
// $msg = $msg ? $msg : __('Username or password is incorrect');
// $this->error($msg, null, ['token' => $this->request->token()]);
// }
//
//机构登录
//如果存在登录,先退出登录
$auth = \app\manystoreapi\library\Auth::instance();
if($auth->isLogin()){
$auth->logout();
Hook::listen("manystore_logout_after", $this->request);
}
//执行登录
ManystoreLog::setTitle(__('Login'));
$result = $auth->direct($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
if ($result === true) {
Hook::listen("manystore_login_after", $this->request);
$this->success(__('Login successful'), null, [ 'id' => $auth->id, 'avatar' => $auth->avatar,'token' => $this->request->token()]);
} else {
$msg = $auth->getError();
$msg = $msg ? $msg : __('Username or password is incorrect');
$this->error($msg, null, ['token' => $this->request->token()]);
}
// }catch (\Exception $e){
// $this->error($e->getMessage());
// }
}
$row = $this->model->get($ids);

View File

@ -266,7 +266,7 @@ class ManystoreApiBase extends Controller
$controllername = Loader::parseName($this->request->controller());
$actionname = strtolower($this->request->action());
$path = str_replace('.', '/', $controllername) . '/' . $actionname;
$path = $modulename. '/' . str_replace('.', '/', $controllername) . '/' . $actionname;
// 定义是否Addtabs请求
!defined('IS_ADDTABS') && define('IS_ADDTABS', input("addtabs") ? true : false);
@ -282,6 +282,10 @@ class ManystoreApiBase extends Controller
if(!$token)$token = $this->request->server('HTTP_SHOP_TOKEN',"");
// 设置当前请求的URI
$this->auth->setRequestUri($path);
// 检测是否需要验证登录
if (!$this->auth->match($this->noNeedLogin)) {
//初始化
@ -307,6 +311,7 @@ class ManystoreApiBase extends Controller
if (!$this->auth->match($this->noNeedRight)) {
// 判断控制器和方法判断是否有对应权限
if (!$this->auth->check($path)) {
// var_dump($path);
Hook::listen('manystore_nopermission', $this);
$this->apierror(__('You have no permission'), null, 403);
}
@ -319,6 +324,14 @@ class ManystoreApiBase extends Controller
}
}
// 设置面包屑导航数据
$this->auth->getRuleList();
$breadcrumb = $this->auth->getBreadCrumb($path);
array_pop($breadcrumb);
$this->view->breadcrumb = $breadcrumb;
if(!defined('SHOP_ID')){
define('SHOP_ID', $this->auth->shop_id);
}
@ -331,7 +344,7 @@ class ManystoreApiBase extends Controller
// }
$manystore = Manystore::where("id",$this->auth->id)->find();
if($manystore) {
if($manystore["status"]!="normal") $this->error(__('账号正处于审核中,无法进行任何操作!!'), null, 403);
if($manystore["status"]!="normal") $this->apierror(__('账号正处于审核中,无法进行任何操作!!'), null, 403);
}
}
@ -365,10 +378,7 @@ class ManystoreApiBase extends Controller
// exit;
// }
// // 设置面包屑导航数据
// $breadcrumb = $this->auth->getBreadCrumb($path);
// array_pop($breadcrumb);
// $this->view->breadcrumb = $breadcrumb;
//
// 如果有使用模板布局
if ($this->layout) {

View File

@ -24,6 +24,9 @@ class NightSchoolBigData extends BaseModel
public static function getAreaBaseData($province,$city,$district){
$have_time = false;
if($district)$have_time = true;
$whereArea = function ($query)use($province,$city,$district){
$query = $query->where('1=1');
if( $province)$query = $query->where('province',$province);
@ -34,8 +37,15 @@ class NightSchoolBigData extends BaseModel
$classes_num = ClassesLib::where($whereArea)->count();
$activity_num = Activity::where($whereArea)->count();
//统计当前总报名人数
$classes_sign_num = ClassesLib::where($whereArea)->sum('sign_num');
if($have_time){
//统计当前总报名人数
$classes_sign_num = ClassesLib::where($whereArea)->sum('sign_num');
}else{
//统计当前总报名人数
$classes_sign_num = (config("site.sign_up_toal_number")?:0) + ClassesLib::where($whereArea)->sum('sign_num');
}
$activity_sign_num = Activity::where($whereArea)->sum('sign_num');
@ -58,7 +68,7 @@ class NightSchoolBigData extends BaseModel
$activity_views = Activity::where($whereArea)->sum('views');
//注册总人数
$user_num = User::count();
$user_num = (config("site.register_total_numebr")?:0) + User::count();
//总点击
$visitn_nmber = Virtual::getVisitNnmber();

View File

@ -31,6 +31,7 @@ class Token
*/
public static function connect(array $options = [], $name = false)
{
$type = !empty($options['type']) ? $options['type'] : 'File';
if (false === $name) {
@ -49,7 +50,7 @@ class Token
return new $class($options);
}
$options = array_merge(Config::get('token'), $options);
// var_dump($options,$class);die;
self::$instance[$name] = new $class($options);
}
@ -64,6 +65,7 @@ class Token
*/
public static function init(array $options = [])
{
// var_dump($options);die;
if (is_null(self::$handler)) {
if (empty($options) && 'complex' == Config::get('token.type')) {
$default = Config::get('token.default');
@ -73,6 +75,7 @@ class Token
$options = Config::get('token');
}
//
self::$handler = self::connect($options);
}

View File

@ -709,7 +709,7 @@ class ManystoreShop extends BaseModel
//调用订单事件
$data = ['shop' => $shop];
\think\Hook::listen('shop_apply_after', $data);
\think\Hook::listen('shop_update_after', $data);
if($trans){
self::commitTrans();
}

View File

@ -289,7 +289,7 @@ class Evaluate extends BaseModel
}
//调用订单取消事件
$data = ['order' => $order,"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_order_evaluate_after', $data);
//执行课时数更新
$res1 = order::statisticsAndUpdateClassesNumber($order['id']);
@ -390,7 +390,7 @@ class Evaluate extends BaseModel
}
//调用订单取消事件
$data = ['order' => $order,"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_order_evaluate_update_after', $data);
//执行课时数更新
$res1 = order::statisticsAndUpdateClassesNumber($order['id']);

View File

@ -964,7 +964,7 @@ class Order extends BaseModel
//记录订单日志
OrderLog::log($res1['id'],"活动订单创建成功,等待【学员】支付",'user',$user_id);
//7事件
$data = ['order' => $res1];
$data = ['order' => self::where("id",$res1['id'])->find()];
\think\Hook::listen('classes_activity_order_create_after', $data);
@ -1090,7 +1090,7 @@ class Order extends BaseModel
//记录订单日志
OrderLog::log($order['id'],"活动订单支付成功,核销码生成,等待审核结果",'user',$order['user_id']);
//调用支付成功事件
$data = ['order' => $order];
$data = ['order' => self::where("id",$order['id'])->find()];
\think\Hook::listen('classes_activity_order_payed_after', $data);
//更新订单数据
self::statisticsAndUpdateClassesNumber($order);
@ -1382,7 +1382,7 @@ class Order extends BaseModel
}
//调用订单取消事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_cancel_after', $data);
//执行课时数更新
$res1 = self::statisticsAndUpdateClassesNumber($order['id']);
@ -1538,7 +1538,7 @@ class Order extends BaseModel
OrderLog::log($order['id'],$pron."课程活动单审核成功,预约成功等待核销!",$oper_type ?: 'user', $oper_id ?: $order['user_id']);
//调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_auth_success_after', $data);
}else{
@ -1553,7 +1553,7 @@ class Order extends BaseModel
//审核失败逻辑
OrderLog::log($order['id'],$pron."课程活动单审核不通过,原因;{$reason},该活动单将取消",$oper_type ?: 'user', $oper_id ?: $order['user_id']);
//调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_auth_fail_after', $data);
//执行订单取消逻辑
$this->cancel($order_no,$user_id,false,$oper_type,$oper_id);
@ -1565,7 +1565,7 @@ class Order extends BaseModel
//审核失败逻辑
OrderLog::log($order['id'],$pron."课程活动单审核不通过,原因;{$reason},该活动单将自动退款以便重新下单",$oper_type ?: 'user', $oper_id ?: $order['user_id']);
//调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_auth_fail_after', $data);
$return = true;
// throw new \Exception("测试错误!".$order["status"]);
@ -1796,7 +1796,7 @@ class Order extends BaseModel
$res1 = self::statisticsAndUpdateClassesNumber($order['id']);
//调用订单取消事件
$data = ['order' => $order,"user_id"=>$order['user_id'],"oper_type"=>'admin',"oper_id"=>0];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$order['user_id'],"oper_type"=>'admin',"oper_id"=>0];
\think\Hook::listen('classes_activity_order_refund_success_after', $data);
@ -1838,7 +1838,7 @@ class Order extends BaseModel
OrderLog::log($order['id'],"活动订单退款失败:".$msg, $oper_type, $oper_id);
//调用订单取消事件
$data = ['order' => $order,"user_id"=>$order['user_id'],"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$order['user_id'],"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_refund_fail_after', $data);
if($trans){
@ -1936,7 +1936,7 @@ class Order extends BaseModel
}
//调用订单取消事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_finish_after', $data);
//执行课时数更新
self::statisticsAndUpdateClassesNumber($order['id']);

View File

@ -787,7 +787,7 @@ class Order extends BaseModel
}
//7事件
$data = ['order' => $res1];
$data = ['order' => self::where("id",$res1['id'])->find()];
\think\Hook::listen('classeshour_order_create_after', $data);
return $res1;
}
@ -869,7 +869,7 @@ class Order extends BaseModel
}
//调用订单取消事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classeshour_order_cancel_after', $data);
//执行课时数更新
\app\common\model\school\classes\order\Order::statisticsAndUpdateClassesNumber($order['classes_order_id']);
@ -1278,7 +1278,7 @@ class Order extends BaseModel
OrderLog::log($order['id'],$pron."课时预约单审核成功,预约成功等待核销!",$oper_type ?: 'user', $oper_id ?: $order['user_id']);
//调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classeshour_order_auth_success_after', $data);
}else{
@ -1289,7 +1289,7 @@ class Order extends BaseModel
//审核失败逻辑
OrderLog::log($order['id'],$pron."课时预约单审核不通过,原因;{$reason},该课时单将取消以便重新下单",$oper_type ?: 'user', $oper_id ?: $order['user_id']);
//调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classeshour_order_auth_fail_after', $data);
//执行订单取消逻辑
@ -1393,7 +1393,7 @@ class Order extends BaseModel
}
//调用订单取消事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classeshour_order_finish_after', $data);
//执行课时数更新
\app\common\model\school\classes\order\Order::statisticsAndUpdateClassesNumber($order['classes_order_id']);
@ -1463,7 +1463,7 @@ class Order extends BaseModel
}
//调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['order' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classeshour_order_update_after', $data);
//执行课时数更新
$res1 = \app\common\model\school\classes\order\Order::statisticsAndUpdateClassesNumber($order['classes_order_id']);

View File

@ -397,7 +397,7 @@ class ServiceOrder extends BaseModel
ServiceOrderLog::log($serverorder['id'],$mark ?:"售后单申请已提交,等待商家处理",$oper_type,$oper_id);
//7事件
$data = ['serviceorder' => $serverorder,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$serverorder['id'])->find(),"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_create_after', $data);
@ -661,7 +661,7 @@ class ServiceOrder extends BaseModel
}
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_cancel_after', $data);
//执行课时数更新
$res1 = order::statisticsAndUpdateClassesNumber($order['classes_order_id']);
@ -918,7 +918,7 @@ class ServiceOrder extends BaseModel
}
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_shop_confirm_after', $data);
@ -942,7 +942,7 @@ class ServiceOrder extends BaseModel
}
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_shop_reject_after', $data);
@ -1153,7 +1153,7 @@ class ServiceOrder extends BaseModel
}
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_user_confirm_after', $data);
@ -1176,7 +1176,7 @@ class ServiceOrder extends BaseModel
}
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_user_reject_after', $data);
@ -1351,7 +1351,7 @@ class ServiceOrder extends BaseModel
}
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_serviceorder_system_reject_after', $data);
@ -1480,7 +1480,7 @@ class ServiceOrder extends BaseModel
$res1 = order::statisticsAndUpdateClassesNumber($order['classes_order_id']);
//调用订单取消事件
$data = ['serviceorder' => $order,"user_id"=>$order['user_id'],"oper_type"=>'admin',"oper_id"=>0];
$data = ['serviceorder' => self::where("id",$order['id'])->find(),"user_id"=>$order['user_id'],"oper_type"=>'admin',"oper_id"=>0];
\think\Hook::listen('classes_serviceorder_system_confirm_after', $data);

View File

@ -18,7 +18,7 @@ return [
// 应用命名空间
'app_namespace' => 'app',
// 应用调试模式
'app_debug' => Env::get('app.debug', false),
'app_debug' => Env::get('app.debug', true),
// 应用Trace
'app_trace' => Env::get('app.trace', false),
// 应用模式状态
@ -296,9 +296,9 @@ return [
//是否默认展示子菜单
'show_submenu' => false,
//后台皮肤,为空时表示使用skin-black-blue
'adminskin' => '',
'adminskin' => 'skin-blue-light',
//后台皮肤,为空时表示使用skin-black-blue
'manystoreskin' => '',
'manystoreskin' => 'skin-black-light',
//后台是否启用面包屑
'breadcrumb' => false,
//是否允许未知来源的插件压缩包

View File

@ -1,13 +1,14 @@
<?php
namespace app\manystore\controller\csmtable;
use app\common\controller\ManystoreBase;
use think\App;
use app\common\controller\Backend;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use addons\csmtable\library\xcore\xcore\utils\XcRequestUtils;
use addons\csmtable\library\xapp\csmtable\utils\CsmTableUtils;
class Cligenerateexcel extends Backend
class Cligenerateexcel extends ManystoreBase
{
private $xlstask = null;

View File

@ -1,11 +1,11 @@
<?php
namespace app\admin\controller\csmtable;
use addons\csmtable\library\xcore\xcore\base\XcABackend;
use addons\csmtable\library\xcore\xcore\base\XcAManystore;
use addons\csmtable\library\xapp\csmtable\utils\CsmTableUtils;
class Csmgenerate extends XcABackend
class Csmgenerate extends XcAManystore
{
public function _initialize()

View File

@ -2,7 +2,7 @@
namespace app\manystore\controller\csmtable;
use app\common\controller\Backend;
use app\common\controller\ManystoreBase;
use app\admin\library\Auth;
/**
@ -10,7 +10,7 @@ use app\admin\library\Auth;
*
* @icon fa fa-circle-o
*/
class Csmxlstable extends Backend
class Csmxlstable extends ManystoreBase
{
protected $noNeedRight = ["*"];
@ -38,12 +38,19 @@ class Csmxlstable extends Backend
$filesource = $this->request->request("filesource");
$auth = Auth::instance();
$row = $this->model->where("admin_id", "=", $auth->id)
->where("filesource", '=', $filesource)
// $row = $this->model->where("admin_id", "=", $auth->id)
// ->where("filesource", '=', $filesource)
// ->where("status", "=", "normal")
// ->field("id,createtime,progress,iserror,errormsg")
// ->order("id", "desc")
// ->find();
$row = $this->model->where("filesource", '=', $filesource)
->where("status", "=", "normal")
->field("id,createtime,progress,iserror,errormsg")
->order("id", "desc")
->find();
// echo $this->model->getLastSql();
if ($row != null) {
// $row->filesource = str_replace(Config::get('upload.cdnurl'), '', $row->filesource);
@ -59,8 +66,11 @@ class Csmxlstable extends Backend
{
$auth = Auth::instance();
$id = $this->request->request("id");
$row = $this->model->where("admin_id", "=", $auth->id)
->where("id", "=", $id)
// $row = $this->model->where("admin_id", "=", $auth->id)
// ->where("id", "=", $id)
// ->find();
$row = $this->model->where("id", "=", $id)
->find();
if ($row == null) {

View File

@ -1,7 +1,7 @@
<?php
namespace app\manystore\controller\csmtable;
use app\common\controller\Backend;
use app\common\controller\ManystoreBase;
/**
* 管理员管理
@ -9,7 +9,7 @@ use app\common\controller\Backend;
* @icon fa fa-users
* @remark 一个管理员可以有多个角色组,左侧的菜单根据管理员所拥有的权限进行生成
*/
class Datasource extends Backend
class Datasource extends ManystoreBase
{
// protected $noNeedLogin = ["*"];

View File

@ -1,7 +1,7 @@
<?php
namespace app\manystore\controller\csmtable;
use app\common\controller\Backend;
use app\common\controller\ManystoreBase;
use fast\Random;
/**
@ -9,7 +9,7 @@ use fast\Random;
*
* @icon fa fa-circle-o
*/
class Test extends Backend
class Test extends ManystoreBase
{
/**

View File

@ -3,14 +3,14 @@
namespace app\manystore\controller\csmtable;
use addons\csmtable\library\xcore\xcore\utils\XcDaoUtils;
use app\common\controller\Backend;
use app\common\controller\ManystoreBase;
/**
* Excel下载任务管理
*
* @icon fa fa-circle-o
*/
class Xlstask extends Backend
class Xlstask extends ManystoreBase
{
// protected $noNeedRight = [];
/**

View File

@ -17,7 +17,7 @@ class ManystoreApiAuthRule extends Model
protected static function init()
{
self::afterWrite(function ($row) {
Cache::rm('__manystore_menu__');
Cache::rm('__manystore_api_menu__');
});
}

View File

@ -4,7 +4,7 @@
<!-- 加载样式及META信息 -->
{include file="common/meta" /}
</head>
<body class="hold-transition {$Think.config.fastadmin.manystoreskin|default='skin-black-light'} sidebar-mini {:$Think.cookie.sidebar_collapse?'sidebar-collapse':''} fixed {:$Think.config.fastadmin.multipletab?'multipletab':''} {:$Think.config.fastadmin.multiplenav?'multiplenav':''}" id="tabs">
<body class="hold-transition {$Think.config.fastadmin.adminskin|default='skin-black-blue'} sidebar-mini {:$Think.cookie.sidebar_collapse?'sidebar-collapse':''} fixed {:$Think.config.fastadmin.multipletab?'multipletab':''} {:$Think.config.fastadmin.multiplenav?'multiplenav':''}" id="tabs">
<div class="wrapper">

View File

@ -0,0 +1,16 @@
<?php
namespace app\manystoreapi\behavior;
class ManystoreApiLog
{
public function run(&$params)
{
// if (request()->isPost() && config('fastadmin.auto_record_log')) {
// \app\manystoreapi\model\ManystoreApiLog::record();
// }
if (config('fastadmin.auto_record_log')) {
\app\manystoreapi\model\ManystoreApiLog::record();
}
}
}

View File

@ -10,7 +10,7 @@ use app\common\model\ManystoreAttachment;
class Attachment extends ManystoreApiBase
{
protected $noNeedLogin = [];
protected $noNeedRight = '*';
// protected $noNeedRight = '*';
/**
* @var \app\common\model\ManystoreAttachment

View File

@ -21,7 +21,7 @@ use think\Hook;
class Common extends ManystoreApiBase
{
protected $noNeedLogin = ['init', 'captcha','virtualgenerate','get_week_by_time'];
protected $noNeedRight = '*';
// protected $noNeedRight = '*';
public function _initialize()
{

View File

@ -0,0 +1,64 @@
<?php
namespace app\manystoreapi\controller;
use app\common\controller\ManystoreApiBase;
/**
* 机构API后台首页接口
*/
class Index extends ManystoreApiBase
{
protected $noNeedLogin = [];
// protected $noNeedRight = ['index'];
protected $layout = '';
public function _initialize()
{
parent::_initialize();
//移除HTML标签
$this->request->filter('trim,strip_tags,htmlspecialchars');
}
/**
* 后台首页
*/
public function index()
{
//左侧菜单
$cookieArr = ['adminskin' => "/^skin\-([a-z\-]+)\$/i", 'multiplenav' => "/^(0|1)\$/", 'multipletab' => "/^(0|1)\$/", 'show_submenu' => "/^(0|1)\$/"];
foreach ($cookieArr as $key => $regex) {
$cookieValue = $this->request->cookie($key);
if (!is_null($cookieValue) && preg_match($regex, $cookieValue)) {
config('fastadmin.' . $key, $cookieValue);
}
}
list($menulist, $navlist, $fixedmenu, $referermenu) = $this->auth->getSidebar([
'dashboard' => 'hot',
'addon' => ['new', 'red', 'badge'],
'auth/rule' => __('Menu'),
'general' => ['new', 'purple'],
], $this->view->site['fixedpage']);
$action = $this->request->request('action');
// if ($this->request->isPost()) {
$this->apisuccess('', [
'menulist' => $menulist,
'navlist' => $navlist,
'cookie' => ['prefix' => config('cookie.prefix')],
"fixedmenu" =>$fixedmenu,
"referermenu" =>$referermenu,
"title", __('Home'),
]);
// }
// $this->assignconfig('cookie', ['prefix' => config('cookie.prefix')]);
// $this->view->assign('menulist', $menulist);
// $this->view->assign('navlist', $navlist);
// $this->view->assign('fixedmenu', $fixedmenu);
// $this->view->assign('referermenu', $referermenu);
// $this->view->assign('title', __('Home'));
// return $this->view->fetch();
}
}

View File

@ -0,0 +1,315 @@
<?php
namespace app\manystoreapi\controller;
use app\common\controller\ManystoreApiBase;
use app\common\library\Virtual;
use app\manystore\model\Manystore;
use app\manystore\model\ManystoreShop;
use app\manystoreapi\model\ManystoreApiLog;
use fast\Random;
use think\Session;
use think\Url;
use think\Validate;
/**
* 机构API后台机构个人管理接口
*/
class Shop extends ManystoreApiBase
{
// protected $noNeedLogin = [];
// protected $noNeedRight = ['index'];
protected $layout = '';
protected $model = null;
protected $shopModel = null;
public function _initialize()
{
parent::_initialize();
//移除HTML标签
// $this->request->filter('trim,strip_tags,htmlspecialchars');
$this->model = Manystore::where(array('id'=>STORE_ID))->find();
$this->shopModel = ManystoreShop::where(array('id'=>SHOP_ID))->find();
}
/**
* 机构信息查询
*/
public function index(){
$res = [];
$res['statusList']=[0=>'待审核',1=>'审核通过',2=>'审核拒绝'];
$res['typeList']=$this->shopModel->getTypeList();
$res['shop_info']=$this->shopModel;
$res['manystore_info']=$this->model;
$res['check_full']=(new \app\common\model\dyqc\ManystoreShop)->checkFull(SHOP_ID);
$res['check_full_msg']=(new \app\common\model\dyqc\ManystoreShop)->checkFullMsg(SHOP_ID);
$res['now_city']= Virtual::getNowCity();
$res['miniqrcode_link']=Url::build("/manystoreapi/shop/miniqrcode", ["ids" => SHOP_ID]);
$this->apisuccess("查询成功!",$res);
}
/**
* 更新账号密码,邮件,头像信息
* @ApiMethod (POST)
* @ApiParams (name="email", type="string", required=true, description="邮件")
* @ApiParams (name="nickname", type="string", required=true, description="昵称")
* @ApiParams (name="avatar", type="string", required=true, description="头像")
* @ApiParams (name="password", type="string", required=false, description="密码(非必填)")
*/
public function update()
{
if ($this->request->isPost()) {
$this->token();
$params = $this->request->post();
$params = array_filter(array_intersect_key(
$params,
array_flip(array('email', 'nickname', 'password', 'avatar'))
));
unset($v);
if (!Validate::is($params['email'], "email")) {
$this->apierror(__("Please input correct email"));
}
// if (!Validate::is($params['nickname'], "/^[\x{4e00}-\x{9fa5}a-zA-Z0-9_-]+$/u")) {
// $this->error(__("Please input correct nickname"));
// }
if (isset($params['password'])) {
if (!Validate::is($params['password'], "/^[\S]{6,16}$/")) {
$this->apierror(__("Please input correct password"));
}
$params['salt'] = Random::alnum();
$params['password'] = md5(md5($params['password']) . $params['salt']);
}
$exist = Manystore::where('email', $params['email'])->where('id', '<>', $this->auth->id)->find();
if ($exist) {
$this->apierror(__("Email already exists"));
}
if ($params) {
$manystore = Manystore::get($this->auth->id);
$manystore->save($params);
Session::set("manystoreapi", $manystore->toArray());
$this->apisuccess();
}
$this->apierror();
}
return;
}
/** 编辑机构认证信息
* @ApiTitle( 编辑机构认证信息)
* @ApiSummary(编辑机构认证信息)
* @ApiMethod(POST)
* @ApiParams(name = "name", type = "string",required=true,description = "机构名称")
* @ApiParams(name = "logo", type = "string",required=true,description = "logo单图")
* @ApiParams(name = "image", type = "string",required=true,description = "封面单图")
* @ApiParams(name = "content", type = "string",required=true,description = "店铺详情")
* @ApiParams(name = "tel", type = "string",required=true,description = "服务电话(非必填)")
* @ApiParams(name = "desc", type = "string",required=false,description = "申请备注(非必填)")
* @ApiParams(name = "front_idcard_image", type = "string",required=true,description = "法人身份证正面")
* @ApiParams(name = "reverse_idcard_image", type = "string",required=true,description = "法人身份证反面")
* @ApiParams(name = "images", type = "string",required=true,description = "环境照片(多个逗号拼接)")
* @ApiParams(name = "yyzzdm", type = "string",required=true,description = "社会统一信用代码")
* @ApiParams(name = "yyzz_images", type = "string",required=true,description = "营业执照照片(多个逗号拼接)")
* @ApiParams(name = "address", type = "string",required=true,description = "店铺地址")
* @ApiParams(name = "address_detail", type = "string",required=true,description = "店铺详细地址")
* @ApiParams(name = "longitude", type = "string",required=true,description = "经度")
* @ApiParams(name = "latitude", type = "string",required=true,description = "纬度")
* @ApiParams(name = "province", type = "int",required=true,description = "省编号")
* @ApiParams(name = "city", type = "int",required=true,description = "市编号")
* @ApiParams(name = "district", type = "int",required=true,description = "县区编号")
* @ApiParams(name = "establish_time", type = "int",required=true,description = "成立时间10位秒级时间戳")
* @ApiParams(name = "people", type = "int",required=true,description = "员工人数")
* @ApiParams(name = "legal_entity", type = "string",required=true,description = "法人姓名")
* @ApiParams(name = "gender", type = "int",required=true,description = "法人性别:0=女,1=男")
* @ApiParams(name = "nation", type = "string",required=true,description = "法人民族")
* @ApiParams(name = "out_look", type = "string",required=true,description = "法人政治面貌")
* @ApiParams(name = "birthtime", type = "int",required=true,description = "法人出生日期10位秒级时间戳")
* @ApiParams(name = "native_place", type = "string",required=true,description = "法人籍贯")
* @ApiParams(name = "card_number", type = "string",required=true,description = "法人身份证号码")
* @ApiParams(name = "diploma", type = "string",required=true,description = "法人学历")
* @ApiParams(name = "post", type = "string",required=true,description = "法人职务")
* @ApiParams(name = "social_position", type = "string",required=true,description = "法人社会职务")
*
*
* @ApiReturn({
*
*})
*/
public function shop_update(){
$params=[];
$params["name"] = $this->request->post('name/s','');
$params["logo"] = $this->request->post('logo/s','');
$params["image"] = $this->request->post('image/s','');
$params["content"] = $this->request->post('content/s','');
$params["tel"] = $this->request->post('tel/s','');
$params["desc"] = $this->request->post('desc/s','');
$params["front_idcard_image"] = $this->request->post('front_idcard_image/s','');
$params["reverse_idcard_image"] = $this->request->post('reverse_idcard_image/s','');
$params["images"] = $this->request->post('images/s','');
$params["yyzz_images"] = $this->request->post('yyzz_images/s','');
$params["yyzzdm"] = $this->request->post('yyzzdm/s','');
$params["address"] = $this->request->post('address/s','');
$params["address_detail"] = $this->request->post('address_detail/s','');
$params["longitude"] = $this->request->post('longitude/s','');
$params["latitude"] = $this->request->post('latitude/s','');
$params["province"] = $this->request->post('province/d','');
$params["city"] = $this->request->post('city/d','');
$params["district"] = $this->request->post('district/d','');
$params["establish_time"] = $this->request->post('establish_time/d','');
$params["people"] = $this->request->post('people/d','');
$params["legal_entity"] = $this->request->post('legal_entity/s','');
$params["gender"] = $this->request->post('gender/d','');
$params["nation"] = $this->request->post('nation/s','');
$params["out_look"] = $this->request->post('out_look/s','');
$params["birthtime"] = $this->request->post('birthtime/d','');
$params["native_place"] = $this->request->post('native_place/s','');
$params["card_number"] = $this->request->post('card_number/s','');
$params["diploma"] = $this->request->post('diploma/s','');
$params["post"] = $this->request->post('post/s','');
$params["social_position"] = $this->request->post('social_position/s','');
// if(empty($id)){
// $this->error(__('缺少必要参数'));
// }
$user_id = 0;
$user = $this->auth->getUser();//登录用户
if($user)$user_id = $user['id'];
try {
$res = (new \app\common\model\dyqc\ManystoreShop)->updateData($user_id,$params,true,true);
} catch (\Exception $e){
// Log::log($e->getMessage());
$this->error($e->getMessage(),['errcode'=>$e->getCode()]);
}
$this->success('编辑成功', ['detail' => $res]);
}
/**
* 获取微信小程序码
* @ApiMethod (POST)
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function miniqrcode($ids = ''){
$param = $this->request->param();
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$url = \app\common\model\dyqc\ManystoreShop::getMiniQrcodeLink($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
return $url["response"];
}
/**
* @ApiTitle( 后台请求日志列表)
* @ApiSummary(后台请求日志列表)
* @ApiMethod(GET)
* @ApiParams(name = "keywords", type = "string",required=false,description = "搜索关键字")
* @ApiParams(name = "page", type = "string",required=true,description = "页数")
* @ApiParams(name = "limit", type = "string",required=true,description = "条数")
* @ApiParams(name = "shop_id", type = "string",required=false,description = "机构店铺id")
* @ApiParams(name = "store_id", type = "string",required=false,description = "机构账号ID")
* @ApiParams(name = "user_id", type = "string",required=false,description = "机构用户ID")
* @ApiParams(name = "ip", type = "string",required=false,description = "请求ip")
* @ApiParams(name = "time", type = "string",required=false,description = "操作时间查询:today今天,week本周,month本月,year本年,yesterday昨天,last year上一年,last week上周last month上個月lately7最近7天 lately30最近30天按开始时间区间查传值格式Y/m/d H:M:S-Y/m/d H:M:S")
*
* @ApiReturn({
*
*})
*/
public function log_list()
{
$params = [];
$page = $this->request->get('page/d', 0); //页数
$limit = $this->request->get('limit/d', 0); //条数
$params["keywords"] = $this->request->get('keywords/s', ''); //搜索关键字
$params["shop_id"] = $this->request->get('shop_id/d', ''); //搜索关键字
$params["store_id"] = $this->request->get('store_id/d', ''); //搜索关键字
$params["user_id"] = $this->request->get('user_id/d', ''); //搜索关键字
$params["ip"] = $this->request->get('ip/d', ''); //时间
if($params["ip"]) $params["ip"] = ["LIKE","%".$params["ip"] ."%"];
$params["time"] = $this->request->get('time/s', ''); //时间
if(!$params["shop_id"]) $params["shop_id"] = $this->auth->shop_id;
if(!$params["store_id"]) $params["store_id"] = $this->auth->id;
try{
//当前申请状态
$res = ManystoreApiLog::logList($page, $limit,$params);
// if($user_id =='670153'){
// file_put_contents("ceshi66.txt",(new AppointmentOrder())->getLastSql());
// }
}catch (\Exception $e){
$this->apierror($e->getMessage());
}
$this->apisuccess('查询成功', $res);
}
/**
* @ApiTitle( 后台请求日志列表详情)
* @ApiSummary(后台请求日志列表详情)
* @ApiMethod(GET)
* @ApiParams(name = "id", type = "int",required=true,description = "后台请求日志id")
* @ApiReturn({
*
*})
*/
public function detail(){
$id = $this->request->get('id/d','');
if(empty($id)){
$this->apierror(__('缺少必要参数'));
}
try {
$res = ManystoreApiLog::detail($id);
} catch (\Exception $e){
// Log::log($e->getMessage());
$this->apierror($e->getMessage(),['errcode'=>$e->getCode()]);
}
$this->apisuccess('获取成功', ['detail' => $res]);
}
}

View File

@ -28,17 +28,47 @@ class Auth extends ManystoreAuth
protected $keeptime = 2592000;
protected $requestUri = '';
protected $rules = [];
//默认配置
protected $config = [];
// //默认配置
// protected $config = [];
protected $options = [];
protected $allowFields = ['id','username', 'nickname', 'avatar','user_id', 'email',"shop_id"];
protected $breadcrumb = [];
protected $init_data = [
'table' => 'manystore_token',
'type' => 'Mysql',
'userprefix' => 'shopup:',
'tokenprefix' => 'shoptp:',
];
// protected $config = [
// 'auth_on' => 1, // 权限开关
// 'auth_type' => 1, // 认证方式1为实时认证2为登录认证。
// 'auth_group' => 'manystore_api_auth_group', // 用户组数据表名
// 'auth_group_access' => 'manystore_api_auth_group_access', // 用户-用户组关系表
// 'auth_rule' => 'manystore_api_auth_rule', // 权限规则表
// 'auth_user' => 'user', // 用户信息表
// ];
// public function __construct(Request $request = null)
// {
//
// // 控制器初始化
// $this->_initialize();
//
// // 前置操作方法
// if ($this->beforeActionList) {
// foreach ($this->beforeActionList as $method => $options) {
// is_numeric($method) ?
// $this->beforeAction($options) :
// $this->beforeAction($method, $options);
// }
// }
// }
/**
*
* @param array $options 参数
@ -70,6 +100,8 @@ class Auth extends ManystoreAuth
*/
public function __get($name)
{
$res = Session::get('manystoreapi.' . $name);
if($res)return $res;
return $this->_user ? $this->_user->$name : null;
}
@ -96,6 +128,14 @@ class Auth extends ManystoreAuth
return false;
}
$data = Token::init($this->init_data)->get($token) ?:false;
if(!$data){
$manystoreapi = Session::get('manystoreapi');
if($manystoreapi){
$data["user_id"] = $manystoreapi['id'];
}
}
if (!$data) {
return false;
}
@ -182,8 +222,8 @@ class Auth extends ManystoreAuth
//删除Token
Token::init($this->init_data)->delete($this->_token) ?:false;
// Session::delete("manystore");
// Cookie::delete("keeplogin");
Session::delete("manystoreapi");
Cookie::delete("keeplogin");
//退出成功的事件
Hook::listen("manystore_logout_successed", $this->_user);
return true;
@ -256,6 +296,9 @@ class Auth extends ManystoreAuth
//登录成功的事件
Hook::listen("manystore_login_successed", $this->_user);
Session::set("manystoreapi", $manystore->toArray());
Db::commit();
} catch (Exception $e) {
Db::rollback();
@ -620,10 +663,13 @@ class Auth extends ManystoreAuth
*/
public function getBreadCrumb($path = '')
{
// var_dump($this->breadcrumb);
if ($this->breadcrumb || !$path) {
// var_dump($path);die;
return $this->breadcrumb;
}
$path_rule_id = 0;
// var_dump($this->rules);die;
foreach ($this->rules as $rule) {
$path_rule_id = $rule['name'] == $path ? $rule['id'] : $path_rule_id;
}
@ -634,6 +680,7 @@ class Auth extends ManystoreAuth
$v['title'] = __($v['title']);
}
}
return $this->breadcrumb;
}
@ -676,15 +723,18 @@ class Auth extends ManystoreAuth
$refererUrl = Session::get('referer');
$pinyin = new \Overtrue\Pinyin\Pinyin('Overtrue\Pinyin\MemoryFileDictLoader');
// 必须将结果集转换为数组
$ruleList = collection(\app\manystore\model\ManystoreAuthRule::where('status', 'normal')
$ruleList = collection(\app\manystore\model\ManystoreApiAuthRule::where('status', 'normal')
->where('ismenu', 1)
->order('weigh', 'desc')
->cache("__manystore_menu__")
->cache("__manystore_api_menu__")
->select())->toArray();
$indexRuleList = \app\manystore\model\ManystoreAuthRule::where('status', 'normal')
$indexRuleList = \app\manystore\model\ManystoreApiAuthRule::where('status', 'normal')
->where('ismenu', 0)
->where('name', 'like', '%/index')
->column('name,pid');
// var_dump($ruleList);
$pidArr = array_filter(array_unique(array_map(function ($item) {
return $item['pid'];
}, $ruleList)));
@ -726,6 +776,9 @@ class Auth extends ManystoreAuth
$select_id = $selected ? $selected['id'] : 0;
$menu = $nav = '';
$menu = $ruleList;
return [$menu, $nav, $selected, $referer];
if (Config::get('fastadmin.multiplenav')) {
$topList = [];
foreach ($ruleList as $index => $item) {

View File

@ -174,12 +174,14 @@ class ManystoreAuth
if (isset($_rulelist[$uid])) {
return $_rulelist[$uid];
}
if (2 == $this->config['auth_type'] && Session::has('_manystore_api_rule_list_' . $uid)) {
return Session::get('_manystore_api_rule_list_' . $uid);
}
// 读取用户规则节点
$ids = $this->getRuleIds($uid);
if (empty($ids)) {
$_rulelist[$uid] = [];
return [];
@ -200,6 +202,8 @@ class ManystoreAuth
if (in_array('*', $ids)) {
$rulelist[] = "*";
}
foreach ($this->rules as $rule) {
//超级管理员无需验证condition
if (!empty($rule['condition']) && !in_array('*', $ids)) {
@ -223,7 +227,9 @@ class ManystoreAuth
$rulelist[$rule['id']] = strtolower($rule['name']);
}
}
// var_dump( $rulelist);
$_rulelist[$uid] = $rulelist;
// var_dump($rulelist);
//登录验证则需要保存规则列表
if (2 == $this->config['auth_type']) {
//规则列表结果保存到session
@ -236,10 +242,12 @@ class ManystoreAuth
{
//读取用户所属用户组
$groups = $this->getGroups($uid);
$ids = []; //保存用户所属用户组设置的所有权限规则id
foreach ($groups as $g) {
$ids = array_merge($ids, explode(',', trim($g['rules'], ',')));
}
$ids = array_unique($ids);
return $ids;
}

View File

@ -0,0 +1,215 @@
<?php
namespace app\manystoreapi\model;
use app\common\model\BaseModel;
use app\common\model\dyqc\ManystoreShop;
use app\common\model\school\classes\ClassesLib;
use app\manystore\model\Manystore;
use app\manystoreapi\library\Auth;
use think\Model;
class ManystoreApiLog extends BaseModel
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = '';
//自定义日志标题
protected static $title = '';
//自定义日志内容
protected static $content = '';
public static function setTitle($title)
{
self::$title = $title;
}
public static function setContent($content)
{
self::$content = $content;
}
public static function record($title = '')
{
$auth = Auth::instance();
$shop_id = 0;
$store_id = 0;
$username = __('Unknown');
if(!defined('SHOP_ID')){
define('SHOP_ID', 0);
}
if(!defined('STORE_ID')){
define('STORE_ID',0 );
}
if(!defined('SHOP_USER_ID')){
define('SHOP_USER_ID',0 );
}
if($auth->isLogin()){
$shop_id = SHOP_ID ;
$store_id = STORE_ID;
$username = $auth->username;
}
$content = self::$content;
if (!$content) {
$content = request()->param('', null, 'trim,strip_tags,htmlspecialchars');
foreach ($content as $k => $v) {
if (is_string($v) && strlen($v) > 200 || stripos($k, 'password') !== false) {
unset($content[$k]);
}
}
}
$title = self::$title;
if (!$title) {
$title = [];
$breadcrumb = Auth::instance()->getBreadcrumb();
foreach ($breadcrumb as $k => $v) {
$title[] = $v['title'];
}
$title = implode(' ', $title);
}
// var_dump($breadcrumb);
self::create([
'shop_id' => $shop_id ? $shop_id : 0,
'store_id' => $store_id ? $store_id : 0,
'user_id' => SHOP_USER_ID,
'title' => $title ?: ManystoreApiAuthRule::where("name",substr(request()->url(), 0, 1500))->value('title')?:"",
'content' => !is_scalar($content) ? json_encode($content) : $content,
'url' => substr(request()->url(), 0, 1500),
'username' => $username,
'useragent' => substr(request()->server('HTTP_USER_AGENT'), 0, 255),
'ip' => request()->ip()
]);
}
public function user()
{
return $this->belongsTo('app\common\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
public function store()
{
return $this->belongsTo(Manystore::class, 'store_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
public function shop()
{
return $this->belongsTo(ManystoreShop::class, 'shop_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
/**得到基础条件
* @param $status
* @param null $model
* @param string $alisa
*/
public static function getBaseWhere($whereData = [], $model = null, $alisa = '',$with = false)
{
if (!$model) {
$model = new static;
if ($alisa&&!$with) $model = $model->alias($alisa);
}
if ($alisa) $alisa = $alisa . '.';
$tableFields = (new static)->getTableFields();
foreach ($tableFields as $fields)
{
if(in_array($fields, ['content']))continue;
// if (isset($whereData[$fields]) && $whereData[$fields]) $model = $model->where("{$alisa}{$fields}", '=', $whereData[$fields]);
if (isset($whereData[$fields]) && $whereData[$fields]){
if(is_array($whereData[$fields])){
$model = $model->where("{$alisa}{$fields}", $whereData[$fields][0], $whereData[$fields][1]);
}else{
$model = $model->where("{$alisa}{$fields}", '=', $whereData[$fields]);
}
}
}
// if (isset($whereData['status']) && $whereData['status']) $model = $model->where("{$alisa}status", 'in', $whereData['status']);
// if (isset($whereData['not_status']) && $whereData['not_status']) $model = $model->where("{$alisa}status", 'not in', $whereData['not_status']);
if (isset($whereData['keywords'])&&$whereData['keywords']){
if($with){
$model = $model->where( function($query) use($whereData,$alisa,$with){
$query = $query->where("{$alisa}url|{$alisa}title|{$alisa}content|{$alisa}ip", 'like', "%". $whereData['keywords']."%");
if(in_array('user',$with)){
$query = $query->whereOr("user.nickname|user.realname|user.mobile", 'like', "%". $whereData['keywords']."%");
}
if(in_array('shop',$with)){
$query = $query->whereOr("shop.name|shop.address|shop.address_detail|shop.tel", 'like', "%". $whereData['keywords']."%");
}
if(in_array('store',$with)){
$query = $query->whereOr("store.username|store.nickname|store.email", 'like', "%". $whereData['keywords']."%");
}
});
}else{
$model = $model->where("{$alisa}url|{$alisa}title|{$alisa}content|{$alisa}ip", 'like', "%". $whereData['keywords']."%");
}
}
if (isset($whereData['time'])&&$whereData['time']){
$model = $model->time(["{$alisa}createtime",$whereData['time']]);
}
return $model;
}
public static function logList($page, $limit,$params=[]){
$with_field = [
'base'=>['*'],
'user'=>['nickname',"realname","mobile","avatar"],
'shop'=>['name','address',"address_detail","tel","logo","image"],
'store'=>['username','nickname',"email","user_id","avatar"],
];
$alisa = (new self)->getWithAlisaName();
$sort = "{$alisa}.id desc,{$alisa}.createtime desc";
$serch_where = [];
$serch_where = array_merge($serch_where,$params);
return (new self)->getBaseList($serch_where, $page, $limit,$sort,$with_field);
}
/** 日志详情
* @param $id
* @throws \think\exception\DbException
*/
public static function detail($id){
$self = self::get($id,['user','shop',"store"]);
if(!$self) throw new \Exception("未找到相关数据");
$self->getRelation('user')->visible(['nickname',"realname","mobile","avatar"]);
$self->getRelation('shop')->visible(['name','address',"address_detail","tel","logo","image"]);
$self->getRelation('store')->visible(['username','nickname',"email","user_id","avatar"]);
//参与人数 = 虚拟人数 + 平台人数
return $self;
}
}

View File

@ -13,6 +13,6 @@
return [
// 应用结束
'app_end' => [
'app\\manystore\\behavior\\ManystoreLog',
'app\\manystoreapi\\behavior\\ManystoreApiLog',
],
];