<?php/*** 积木云渲染器* @package XbCode* @author 楚羽幽 <958416459@qq.com>* @license Apache License 2.0* @link http://www.xbcode.net* @document http://doc.xbcode.net*/namespace plugin\xbCode;use support\think\Cache;use plugin\xbCode\api\Mysql;use plugin\xbCode\base\BaseModel;/*** 通用模型* @copyright 贵州积木云网络科技有限公司* @author 楚羽幽 958416459@qq.com*/class Model extends BaseModel{// 定义全局的查询范围protected $globalScope = ['appid'];/*** 获取选择器数据* @param string $field* @return array* @copyright 贵州积木云网络科技有限公司* @author 楚羽幽 958416459@qq.com*/public static function pickOption(string $field = ''){$field = $field ?: 'id as value,title as label';$data = static::field($field)->select()->toArray();return $data;}/*** 全局查询范围* @param mixed $query* @return void* @copyright 贵州积木云网络科技有限公司* @author 楚羽幽 958416459@qq.com*/public function scopeAppid($query){self::setAppid($query, true);}/*** 写入前事件* 新增和更新都会触发* @param mixed $model* @return void* @copyright 贵州积木云网络科技有限公司* @author 楚羽幽 958416459@qq.com*/public static function onBeforeWrite($model){self::setAppid($model);}/*** 删除前事件* @param mixed $model* @return void* @copyright 贵州积木云网络科技有限公司* @author 楚羽幽 958416459@qq.com*/public static function onBeforeDelete($model){self::setAppid($model);}/*** 设置APPID* @param mixed $model 模型* @param bool $isQuery 是否是查询* @return void* @copyright 贵州积木云网络科技有限公司* @author 楚羽幽 958416459@qq.com*/private static function setAppid($model, bool $isQuery = false){// 检测是否已设置APPIDif (!empty($model->saas_appid)) {return;}// 获取请求中的APPID(使用nullsafe操作符,定时器/进程上下文中request()可能返回null)$saasAppid = request()?->saas_appid ?? null;// 获取当前表名$name = $model->getTable();// 获取表字段$fields = Cache::get("xb_{$name}_fields",[]);// 检测表字段未缓存if (!$fields) {// 获取表字段$fields = Mysql::getColumnName($name);// 缓存表字段(有效期10分钟)Cache::set("xb_{$name}_fields", $fields, 600);}// 检测当前表是否SAAS表if (!in_array('saas_appid', $fields)) {return;}if ($isQuery) {// 查询条件$model->where("{$name}.saas_appid", $saasAppid);} else {// 写入数据$model->saas_appid = $saasAppid;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。