3.8.1
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.idea
|
||||
vendor
|
||||
runtime
|
||||
44
LICENSE
Normal file
44
LICENSE
Normal file
@@ -0,0 +1,44 @@
|
||||
// ---------------------------------------------------------------------------------
|
||||
// _____ _ _ _ _____
|
||||
// | __ \ | | | | /\ (_) | __ \
|
||||
// | |__) || |__ __ _ | | / \ _ __ _ | |__) |_ __ ___
|
||||
// | ___/ | '_ \ / _` || | / /\ \ | '_ \ | | | ___/| '__|/ _ \
|
||||
// | | | | | || (_| || | / ____ \ | |_) || | | | | | | (_) |
|
||||
// |_| |_| |_| \__,_||_|/_/ \_\| .__/ |_| |_| |_| \___/
|
||||
// | |
|
||||
// |_|
|
||||
// PhalApi Pro 专业版
|
||||
// 广州果创网络科技有限公司
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
//
|
||||
// 一、协议的许可和权利
|
||||
// 1. 您可以在完全遵守本协议的基础上,将本软件应用于商业用途;
|
||||
// 2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求;
|
||||
// 3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权,并独立承担与其内容相关的
|
||||
// 法律义务;
|
||||
// 4. 获得商业授权之后,您可以将本软件应用于商业用途,自授权时刻起,在技术支持期限内拥有通过
|
||||
// 指定的方式获得指定范围内的技术支持服务;
|
||||
//
|
||||
// 二、协议的约束和限制
|
||||
// 1. 未获商业授权之前,禁止将本软件用于商业用途(包括但不限于企业法人经营的产品、经营性产品
|
||||
// 以及以盈利为目的或实现盈利产品);
|
||||
// 2. 未获商业授权之前,禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
|
||||
// 方版本用于重新开发;
|
||||
// 3. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回并承担相应法律责任;
|
||||
//
|
||||
// 三、有限担保和免责声明
|
||||
// 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的;
|
||||
// 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未获得商业授权之前,我们不承
|
||||
// 诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任;
|
||||
// 3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任,但在不侵犯用户隐
|
||||
// 私信息的前提下,保留以任何方式获取用户信息及商品信息的权利;
|
||||
//
|
||||
// 有关本产品最终用户授权协议、商业授权与技术服务的详细内容,均由广州果创网络科技有限公司独家
|
||||
// 提供。广州果创网络科技有限公司拥有在不事先通知的情况下,修改授权协议的权力,修改后的协议对
|
||||
// 改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和
|
||||
// 等同的法律效力。您一旦开始修改、安装或使用本产品,即被视为完全理解并接受本协议的各项条款,
|
||||
// 在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本
|
||||
// 授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
39
README.md
Normal file
39
README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# PhalApi Pro 专业版
|
||||
|
||||
PhalApi专业版是基于[PhalApi开源接口框架](https://www.phalapi.net/)升级和研发的接口开发框架,可用于快速接口项目。
|
||||
由PhalApi作者dogstar及其技术团队共同开发和维护的优质作品,致力于让接口开发更有趣!
|
||||
|
||||
## 产品
|
||||
PhalApi专业版包括API接口系统、Admin管理后台和Platform开放平台,假设您的域名是:http://open.phalapi.net,则:
|
||||
|
||||
+ 接口系统:
|
||||
- 开放API入口:http://open.phalapi.net/api/app.php
|
||||
- 后台API入口:http://open.phalapi.net/api/admin.php
|
||||
+ 接口文档:http://open.phalapi.net/docs.php
|
||||
+ 管理后台:http://open.phalapi.net/admin/
|
||||
+ 开放后台:http://open.phalapi.net/platform/
|
||||
+ 技术文档:http://open.phalapi.net/wiki/
|
||||
|
||||
## 安装
|
||||
|
||||
+ **第1步、上传并解压**:将本项目源代码包上传到服务器,并解压。假设解压目录为:/www/phalapi-pro。
|
||||
+ **第2步、服务器配置**:将站点根目录设置到/www/phalapi-pro/public目录。
|
||||
+ **第3步、进入安装向导**:用浏览器打开:http://当前域名/install/,根据界面提示配置和安装(或访问首页,点击安装入口)
|
||||
|
||||
成功安装后,便可开始使用和进行项目开发。
|
||||
|
||||
## 使用
|
||||
|
||||
项目的用途,分别有:
|
||||
|
||||
+ 针对后端PHP开发人员,可以参考开发手册、[PhalApi 2.x 开发文档](http://docs.phalapi.net/#/v2.0/tutorial)进行接口开发
|
||||
+ 针对应用开发人员(例如H5、App、网站等),可以结合接口文档进行项目开发,需要调用前台系列的API接口
|
||||
+ 针对管理后台前端开发人员,可以参考[iView-admin 2.0](https://lison16.github.io/iview-admin-doc/#/)文档,使用后台系列API接口,进行后台的二次开发
|
||||
+ 针对产品、运营和市场等非技术人员,可直接使用管理后台进行日常维护和工作
|
||||
+ 在协作开发过程中,如果团队需要编写和共享更多的文档,可以使用开发手册进行管理和维护
|
||||
|
||||
|
||||
## 协议与版权
|
||||
|
||||
本项目版权归广州果创网络科技有限公司所有。未经授权,禁止传播、禁止用于商业用途。如需购买或升级,请前往[PhalApi Pro 官网](http://pro.yesapi.cn/)。
|
||||
|
||||
11
bin/admin/run_app_daily_stat.php
Normal file
11
bin/admin/run_app_daily_stat.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/../../public/init.php';
|
||||
|
||||
// 先统计全部的
|
||||
|
||||
$domain = new \Admin\Domain\StatReport();
|
||||
|
||||
$statDay = date('Y-m-d', strtotime('1 day ago'));
|
||||
$domain->calWholeAppDailyStat($statDay);
|
||||
$domain->calAllEachAppDailyStat($statDay);
|
||||
|
||||
171
bin/build_sqls.php
Normal file
171
bin/build_sqls.php
Normal file
@@ -0,0 +1,171 @@
|
||||
<?php
|
||||
/**
|
||||
* 根据配置自动生成SQL建表语句
|
||||
*
|
||||
* @author dogstar <chanzonghuang@gmail.com> 2015-02-04
|
||||
*/
|
||||
|
||||
define('CUR_PATH', dirname(__FILE__));
|
||||
|
||||
if ($argc < 3) {
|
||||
echo "\n";
|
||||
echo colorfulString("Usage:\n", 'WARNING');
|
||||
echo " $argv[0] <dbs_config> <table> [engine] [sqls_folder]\n";
|
||||
echo "\n";
|
||||
|
||||
echo colorfulString("Options:\n", 'WARNING');
|
||||
echo colorfulString(' dbs_config', 'NOTE'), " Require. Path to ./Config/dbs.php\n";
|
||||
echo colorfulString(' table', 'NOTE'), " Require. Table name\n";
|
||||
echo colorfulString(' engine', 'NOTE'), " NOT require. Database engine, default is Innodb\n";
|
||||
echo colorfulString(' sqls_folder', 'NOTE'), " NOT require. Data foler, default is API_ROOT/data";
|
||||
echo "\n";
|
||||
|
||||
echo colorfulString("Demo:\n", 'WARNING');
|
||||
echo " $argv[0] ../Config/dbs.php User\n";
|
||||
echo "\n";
|
||||
|
||||
echo colorfulString("Tips:\n", 'WARNING');
|
||||
echo " This will output the sql directly, enjoy yourself!\n";
|
||||
echo "\n";
|
||||
|
||||
//echo "\n", implode("\n", array_keys($dbsConfig['tables'])), "\n\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$dbsConfigFile = trim($argv[1]);
|
||||
$tableName = trim($argv[2]);
|
||||
$engine = isset($argv[3]) ? $argv[3] : 'InnoDB';
|
||||
$dataFoler = isset($argv[4]) ? $argv[4] : CUR_PATH . '/../data';
|
||||
|
||||
if (!file_exists($dbsConfigFile)) {
|
||||
echo colorfulString("Error: file $dbsConfigFile not exists!\n\n", 'FAILURE');
|
||||
exit();
|
||||
}
|
||||
|
||||
$dbsConfig = include($dbsConfigFile);
|
||||
|
||||
if (empty($dbsConfig) || empty($dbsConfig['servers']) || empty($dbsConfig['tables'])
|
||||
|| !is_array($dbsConfig['servers']) || !is_array($dbsConfig['tables'])) {
|
||||
echo colorfulString("Error: db config is incorrect, it should be format as:
|
||||
|
||||
<?php
|
||||
|
||||
return array(
|
||||
/**
|
||||
* avaiable db servers
|
||||
*/
|
||||
|
||||
'servers' => array(
|
||||
'db_X' => array(
|
||||
'host' => 'localhost', //数据库域名
|
||||
'name' => 'phalapi', //数据库名字
|
||||
'user' => 'root', //数据库用户名
|
||||
'password' => '', //数据库密码
|
||||
'port' => '3306', //数据库端口
|
||||
'charset' => 'UTF8', //数据库字符集
|
||||
),
|
||||
),
|
||||
/**
|
||||
* custom table map
|
||||
*/
|
||||
'tables' => array(
|
||||
'demo' => array(
|
||||
'prefix' => 'weili_',
|
||||
'key' => 'id',
|
||||
'map' => array(
|
||||
array('start' => 0, 'end' => 2, 'db' => 'db_X'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
", 'FAILURE');
|
||||
exit();
|
||||
}
|
||||
|
||||
$tableMap = isset($dbsConfig['tables'][$tableName]) ? $dbsConfig['tables'][$tableName] : $dbsConfig['tables']['__default__'];
|
||||
if (empty($tableMap)) {
|
||||
echo colorfulString("Error: no table map for $tableName !\n\n", 'FAILURE');
|
||||
exit();
|
||||
}
|
||||
|
||||
$tableMap['prefix'] = isset($tableMap['prefix']) ? trim($tableMap['prefix']) : '';
|
||||
$tableMap['key'] = isset($tableMap['key']) ? trim($tableMap['key']) : 'id';
|
||||
$tableMap['map'] = isset($tableMap['map']) ? $tableMap['map'] : array();
|
||||
|
||||
if (empty($tableMap['map'])) {
|
||||
echo colorfulString("Error: miss map for table $tableName !\n\n", 'FAILURE');
|
||||
exit();
|
||||
}
|
||||
|
||||
$sqlFilePath = $dataFoler . '/' . $tableName . '.sql';
|
||||
if (!file_exists($sqlFilePath)) {
|
||||
echo colorfulString("Error: sql file $sqlFilePath not exists!\n\n", 'FAILURE');
|
||||
exit();
|
||||
}
|
||||
|
||||
$sqlContent = file_get_contents($sqlFilePath);
|
||||
$sqlContent = trim($sqlContent);
|
||||
|
||||
$outputSql = '';
|
||||
|
||||
foreach ($tableMap['map'] as $mapItem) {
|
||||
$dbName = isset($mapItem['db']) ? $mapItem['db'] : 'db';
|
||||
if (!isset($dbsConfig['servers'][$dbName])) {
|
||||
echo colorfulString("Error: no such db server as db = $dbName !\n\n", 'FAILURE');
|
||||
exit();
|
||||
}
|
||||
|
||||
$outputSql .= "
|
||||
/**
|
||||
* DB: {$dbsConfig['servers'][$dbName]['host']} {$dbsConfig['servers'][$dbName]['name']}
|
||||
*/
|
||||
";
|
||||
|
||||
$charset = isset($dbsConfig['servers'][$dbName]['charset'])
|
||||
? $dbsConfig['servers'][$dbName]['charset'] : 'utf8';
|
||||
|
||||
if (isset($mapItem['start']) && isset($mapItem['end'])) {
|
||||
for ($i = $mapItem['start']; $i <= $mapItem['end']; $i ++) {
|
||||
$outputSql .= genSql(
|
||||
$tableMap['prefix'] . $tableName . '_' . $i,
|
||||
$tableMap['key'],
|
||||
$sqlContent,
|
||||
$engine,
|
||||
$charset
|
||||
);
|
||||
}
|
||||
} else {
|
||||
$outputSql .= genSql($tableMap['prefix'] . $tableName, $tableMap['key'], $sqlContent, $engine, $charset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
echo $outputSql;
|
||||
|
||||
function colorfulString($text, $type = NULL) {
|
||||
$colors = array(
|
||||
'WARNING' => '1;33',
|
||||
'NOTE' => '1;36',
|
||||
'SUCCESS' => '1;32',
|
||||
'FAILURE' => '1;35',
|
||||
);
|
||||
|
||||
if (empty($type) || !isset($colors[$type])){
|
||||
return $text;
|
||||
}
|
||||
|
||||
return "\033[" . $colors[$type] . "m" . $text . "\033[0m";
|
||||
}
|
||||
|
||||
function genSql($tableName, $tableKey, $sqlContent, $engine, $charset) {
|
||||
return sprintf("
|
||||
CREATE TABLE `%s` (
|
||||
`%s` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
%s
|
||||
`ext_data` text COMMENT 'json data here',
|
||||
PRIMARY KEY (`%s`)
|
||||
) ENGINE=%s DEFAULT CHARSET=%s;
|
||||
|
||||
", $tableName, $tableKey, $sqlContent, $tableKey, $engine, $charset);
|
||||
}
|
||||
301
bin/build_test.php
Normal file
301
bin/build_test.php
Normal file
@@ -0,0 +1,301 @@
|
||||
<?php
|
||||
/**
|
||||
* 单元测试骨架代码自动生成脚本
|
||||
* 主要是针对当前项目系列生成相应的单元测试代码,提高开发效率
|
||||
*
|
||||
* 用法:
|
||||
* Usage: php ./build_test.php <file_path> <class_name> [bootstrap] [author = dogstar]
|
||||
*
|
||||
* 1、针对全部public的函数进行单元测试
|
||||
* 2、可根据@testcase注释自动生成测试用例
|
||||
*
|
||||
* 备注:亦可使用phpunit-skelgen进行骨架代码生成
|
||||
*
|
||||
* @author: dogstar 20181206
|
||||
* @version: 6.1.1
|
||||
*/
|
||||
|
||||
if ($argc < 3) {
|
||||
echo "\n";
|
||||
echo colorfulString("Usage:\n", 'WARNING');
|
||||
echo " php $argv[0] <file_path> <class_name> [bootstrap] [author]\n";
|
||||
echo "\n";
|
||||
|
||||
echo colorfulString("Options:\n", 'WARNING');
|
||||
echo colorfulString(' file_path', 'NOTE'), " Require. Path to the PHP source code file\n";
|
||||
echo colorfulString(' class_name', 'NOTE'), " Require. The class name need to be tested\n";
|
||||
echo colorfulString(' bootstrap', 'NOTE'), " NOT require. Path to the bootsrap file, usually is test_env.php\n";
|
||||
echo colorfulString(' author', 'NOTE'), " NOT require. Your great name here, default is dogstar\n";
|
||||
echo "\n";
|
||||
|
||||
echo colorfulString("Demo:\n", 'WARNING');
|
||||
echo " $argv[0] ./Demo.php Demo > Demo_Test.php\n";
|
||||
echo " $argv[0] ./Demo.php Demo > Demo_Test.php\n";
|
||||
echo " $argv[0] ./src/Request.php PhalApi\\\\Reqeust > Request_Test.php\n";
|
||||
echo "\n";
|
||||
|
||||
echo colorfulString("Tips:\n", 'WARNING');
|
||||
echo " This will output the code directly, you can save them to test file like with _Test.php suffix.\n";
|
||||
echo "\n";
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
$filePath = $argv[1];
|
||||
$className = $argv[2];
|
||||
$bootstrap = isset($argv[3]) ? $argv[3] : null;
|
||||
$author = isset($argv[4]) ? $argv[4] : 'dogstar';
|
||||
|
||||
// 尝试加载composer autoload
|
||||
$autoloadFiles = array(
|
||||
dirname(__FILE__) . '/../vendor/autoload.php',
|
||||
dirname(__FILE__) . '/../../../vendor/autoload.php',
|
||||
);
|
||||
foreach ($autoloadFiles as $file) {
|
||||
if (file_exists($file)) {
|
||||
require_once $file;
|
||||
}
|
||||
}
|
||||
|
||||
// 引入启动文件
|
||||
if (!empty($bootstrap)) {
|
||||
require_once $bootstrap;
|
||||
}
|
||||
|
||||
// 引入源代码
|
||||
require_once $filePath;
|
||||
|
||||
if (!class_exists($className)) {
|
||||
echo colorfulString("Error: cannot find class($className). \n\n", 'FAILURE');
|
||||
die();
|
||||
}
|
||||
|
||||
$reflector = new ReflectionClass($className);
|
||||
|
||||
$methods = $reflector->getMethods(ReflectionMethod::IS_PUBLIC);
|
||||
|
||||
date_default_timezone_set('Asia/Shanghai');
|
||||
$objName = lcfirst(str_replace(array('_', '\\'), array('', ''), $className));
|
||||
|
||||
/** ------------------- 生成通用的单元测试代码 ------------------ **/
|
||||
|
||||
$code = "<?php";
|
||||
|
||||
// 已经将启动文件配置在phpunit.xml,不需要再手动引入
|
||||
// if (file_exists(dirname(__FILE__) . '/test_env.php')) {
|
||||
// $code .= "require_once dirname(__FILE__) . '/bootstrap.php';
|
||||
// ";
|
||||
// } else {
|
||||
// $code .= "//require_once dirname(__FILE__) . '/bootstrap.php';
|
||||
// ";
|
||||
// }
|
||||
|
||||
$initWay = "new \\$className()";
|
||||
if (method_exists($className, '__construct')) {
|
||||
$constructMethod = new ReflectionMethod($className, '__construct');
|
||||
if (!$constructMethod->isPublic()) {
|
||||
if (is_callable(array($className, 'getInstance'))) {
|
||||
$initWay = "\\$className::getInstance()";
|
||||
} else if(is_callable(array($className, 'newInstance'))) {
|
||||
$initWay = "\\$className::newInstance()";
|
||||
} else {
|
||||
$initWay = 'NULL';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 不同版本下的PHPUnit
|
||||
$phpunitBaseClass = class_exists('PHPUnit_Framework_TestCase') ? '\PHPUnit_Framework_TestCase' : '\PHPUnit\Framework\TestCase';
|
||||
|
||||
$code .= "
|
||||
/**
|
||||
* PhalApi_" . str_replace('_', '', $className) . "_Test
|
||||
*
|
||||
* 针对 $filePath $className 类的PHPUnit单元测试
|
||||
*
|
||||
* @author: $author " . date('Ymd') . "
|
||||
*/
|
||||
|
||||
";
|
||||
|
||||
$code .= "namespace tests\\" . substr($className, 0, strrpos($className, '\\')) . ";";
|
||||
$code .= "
|
||||
use $className;
|
||||
";
|
||||
|
||||
$code .="
|
||||
class PhpUnderControl_" . str_replace(array('_', '\\'), array('', ''), $className) . "_Test extends $phpunitBaseClass
|
||||
{
|
||||
public \$$objName;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
\$this->$objName = $initWay;
|
||||
}
|
||||
|
||||
protected function tearDown()
|
||||
{
|
||||
// 输出本次单元测试所执行的SQL语句
|
||||
// var_dump(\PhalApi\DI()->tracer->getSqls());
|
||||
|
||||
// 输出本次单元测试所涉及的追踪埋点
|
||||
// var_dump(\PhalApi\DI()->tracer->getStack());
|
||||
}
|
||||
|
||||
";
|
||||
|
||||
foreach ($methods as $method) {
|
||||
if($method->class != $className) continue;
|
||||
|
||||
$fun = $method->name;
|
||||
$Fun = ucfirst($fun);
|
||||
|
||||
if (strlen($Fun) > 2 && substr($Fun, 0, 2) == '__') continue;
|
||||
|
||||
$rMethod = new ReflectionMethod($className, $method->name);
|
||||
$params = $rMethod->getParameters();
|
||||
$isStatic = $rMethod->isStatic();
|
||||
$isConstructor = $rMethod->isConstructor();
|
||||
|
||||
if($isConstructor) continue;
|
||||
|
||||
$initParamStr = '';
|
||||
$callParamStr = '';
|
||||
foreach ($params as $param) {
|
||||
$default = '';
|
||||
|
||||
$rp = new ReflectionParameter(array($className, $fun), $param->name);
|
||||
if ($rp->isOptional()) {
|
||||
$default = $rp->getDefaultValue();
|
||||
}
|
||||
if (is_string($default)) {
|
||||
$default = "'$default'";
|
||||
} else if (is_array($default)) {
|
||||
$default = var_export($default, true);
|
||||
} else if (is_bool($default)) {
|
||||
$default = $default ? 'true' : 'false';
|
||||
} else if ($default === null) {
|
||||
$default = 'null';
|
||||
} else {
|
||||
$default = "''";
|
||||
}
|
||||
|
||||
$initParamStr .= "
|
||||
\$" . $param->name . " = $default;";
|
||||
$callParamStr .= '$' . $param->name . ', ';
|
||||
}
|
||||
$callParamStr = empty($callParamStr) ? $callParamStr : substr($callParamStr, 0, -2);
|
||||
|
||||
/** ------------------- 根据@return对结果类型的简单断言 ------------------ **/
|
||||
$returnAssert = '';
|
||||
|
||||
$docComment = $rMethod->getDocComment();
|
||||
$docCommentArr = explode("\n", $docComment);
|
||||
foreach ($docCommentArr as $comment) {
|
||||
if (strpos($comment, '@return') == false) {
|
||||
continue;
|
||||
}
|
||||
$returnCommentArr = explode(' ', strrchr($comment, '@return'));
|
||||
if (count($returnCommentArr) >= 2) {
|
||||
switch (strtolower($returnCommentArr[1])) {
|
||||
case 'bool':
|
||||
case 'boolean':
|
||||
$returnAssert = '$this->assertTrue(is_bool($rs));';
|
||||
break;
|
||||
case 'int':
|
||||
$returnAssert = '$this->assertTrue(is_int($rs));';
|
||||
break;
|
||||
case 'integer':
|
||||
$returnAssert = '$this->assertTrue(is_integer($rs));';
|
||||
break;
|
||||
case 'string':
|
||||
$returnAssert = '$this->assertTrue(is_string($rs));';
|
||||
break;
|
||||
case 'object':
|
||||
$returnAssert = '$this->assertTrue(is_object($rs));';
|
||||
break;
|
||||
case 'array':
|
||||
$returnAssert = '$this->assertTrue(is_array($rs));';
|
||||
break;
|
||||
case 'float':
|
||||
$returnAssert = '$this->assertTrue(is_float($rs));';
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** ------------------- 基本的单元测试代码生成 ------------------ **/
|
||||
$code .= "
|
||||
/**
|
||||
* @group test$Fun
|
||||
*/
|
||||
public function test$Fun()
|
||||
{"
|
||||
. (empty($initParamStr) ? '' : "$initParamStr\n")
|
||||
. "\n "
|
||||
. ($isStatic ? "\$rs = \\$className::$fun($callParamStr);" : "\$rs = \$this->$objName->$fun($callParamStr);")
|
||||
. (empty($returnAssert) ? '' : "\n\n " . $returnAssert . "\n")
|
||||
. "
|
||||
}
|
||||
";
|
||||
|
||||
/** ------------------- 根据@testcase 生成测试代码 ------------------ **/
|
||||
$caseNum = 0;
|
||||
foreach ($docCommentArr as $comment) {
|
||||
if (strpos($comment, '@testcase') == false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$returnCommentArr = explode(' ', strrchr($comment, '@testcase'));
|
||||
if (count($returnCommentArr) > 1) {
|
||||
$expRs = $returnCommentArr[1];
|
||||
|
||||
//去掉@testcase和期望的结果
|
||||
array_shift($returnCommentArr);
|
||||
array_shift($returnCommentArr);
|
||||
|
||||
$callParamStrInCase = !empty($returnCommentArr) ? implode(' ', $returnCommentArr) : '';
|
||||
|
||||
$code .= "
|
||||
/**
|
||||
* @group test$Fun
|
||||
*/
|
||||
public function test{$Fun}Case{$caseNum}()
|
||||
{"
|
||||
. "\n "
|
||||
. ($isStatic ? "\$rs = $className::$fun($callParamStrInCase);" : "\$rs = \$this->$objName->$fun($callParamStrInCase);")
|
||||
. "\n\n \$this->assertEquals({$expRs}, \$rs);"
|
||||
. "
|
||||
}
|
||||
";
|
||||
$caseNum ++;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$code .= "
|
||||
}";
|
||||
|
||||
echo $code;
|
||||
echo "\n";
|
||||
|
||||
function colorfulString($text, $type = NULL) {
|
||||
$colors = array(
|
||||
'WARNING' => '1;33',
|
||||
'NOTE' => '1;36',
|
||||
'SUCCESS' => '1;32',
|
||||
'FAILURE' => '1;35',
|
||||
);
|
||||
|
||||
if (empty($type) || !isset($colors[$type])){
|
||||
return $text;
|
||||
}
|
||||
|
||||
return "\033[" . $colors[$type] . "m" . $text . "\033[0m";
|
||||
}
|
||||
|
||||
6
bin/es/EsPublishExamples.php
Normal file
6
bin/es/EsPublishExamples.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
// 将数据库中的数据同步到ES
|
||||
require_once dirname(__FILE__) . '/../../public/init.php';
|
||||
$model = new \Base\Model\Search();
|
||||
$model->release(true);
|
||||
4
bin/get_pro_version.php
Normal file
4
bin/get_pro_version.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
echo PHALAPI_PRO_VERSION;
|
||||
16
bin/install_check.sh
Normal file
16
bin/install_check.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
# 安装助手,进行安装前可执行一下
|
||||
|
||||
cur_dir=$(cd $(dirname $0); pwd)
|
||||
|
||||
echo "start to check ..."
|
||||
|
||||
chmod 777 $cur_dir/../config
|
||||
chmod 777 $cur_dir/../config/app.php
|
||||
chmod 777 $cur_dir/../runtime
|
||||
chmod 777 $cur_dir/../public/uploads
|
||||
|
||||
echo "check ok!"
|
||||
|
||||
|
||||
|
||||
8
bin/phalapi-buildsqls
Normal file
8
bin/phalapi-buildsqls
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* chmod +x ./phalapi-buildsqls
|
||||
* ln -s /path/to/phalapi-buildsqls /usr/bin/phalapi-buildsqls
|
||||
*/
|
||||
require_once dirname(__FILE__) . '/build_sqls.php';
|
||||
|
||||
9
bin/phalapi-buildtest
Normal file
9
bin/phalapi-buildtest
Normal file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
* chmod +x ./phalapi-buildtest
|
||||
* ln -s /path/to/phalapi-buildtest /usr/bin/phalapi-buildtest
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/build_test.php';
|
||||
|
||||
6
bin/phalapi-cli
Normal file
6
bin/phalapi-cli
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
$cli = new PhalApi\CLI\Lite();
|
||||
$cli->response();
|
||||
20
bin/phalapi-create-portal-admin.php
Normal file
20
bin/phalapi-create-portal-admin.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
if ($argc < 3) {
|
||||
echo "Usage: {$argv[0]} <username> <password> [role=admin|super]\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$username = $argv[1];
|
||||
$password = $argv[2];
|
||||
$role = isset($argv[3]) ? $argv[3] : '';
|
||||
|
||||
$domain = new Portal\Domain\Admin();
|
||||
if ($domain->createAdmin($username, $password, $role)) {
|
||||
echo "运营平台管理员账号创建成功!\n";
|
||||
} else {
|
||||
echo "运营平台管理员账号已存在,不能重复创建!\n";
|
||||
}
|
||||
|
||||
87
bin/phalapi-plugin-build.php
Normal file
87
bin/phalapi-plugin-build.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
/**
|
||||
* 打包发布插件
|
||||
* @author dogstar 20200311
|
||||
*/
|
||||
|
||||
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
if ($argc < 2) {
|
||||
echo "Usage: {$argv[0]} <plugin_key>\n";
|
||||
echo "请输入你的插件编号,字母数字和下划线组合。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$pluginKey = trim($argv[1]);
|
||||
if (!preg_match('/^[0-9A-Za-z_]{1,}$/', $pluginKey)) {
|
||||
echo "插件编号格式不对,应该使用字母数字和下划线组合。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$pluginKeyClass = ucfirst(str_replace('_', '', $pluginKey));
|
||||
|
||||
$jsonFile = dirname(__FILE__) . '/../plugins/' . $pluginKey . '.json';
|
||||
|
||||
if (!file_exists($jsonFile)) {
|
||||
echo "插件json配置文件不存在,", $jsonFile, " \n";
|
||||
echo "可以先使用 php ./bin/phalapi-plugin-create.php 脚本命令创建一个新的插件。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$config = json_decode(file_get_contents($jsonFile), true);
|
||||
|
||||
// 压缩多个文件
|
||||
$fileList = $config['plugin_files'];
|
||||
$fileList[] = 'plugins/' . $pluginKey . '.json';
|
||||
|
||||
$filename = API_ROOT . "/plugins/{$pluginKey}.zip"; // 压缩包所在的位置路径
|
||||
@unlink($filename);
|
||||
|
||||
$zip = new ZipArchive();
|
||||
$zip->open($filename,ZipArchive::CREATE); //打开压缩包
|
||||
foreach($fileList as $file){
|
||||
if (is_string($file)) {
|
||||
if (strpos($file, '.')) {
|
||||
$zip->addFile(API_ROOT . '/' . $file, $file); //向压缩包中添加文件
|
||||
} else {
|
||||
addFileToZip(API_ROOT . '/' . $file, $file, $zip);
|
||||
}
|
||||
} else if (is_array($file)) {
|
||||
foreach ($file as $it) {
|
||||
if (strpos($it, '.')) {
|
||||
$zip->addFile(API_ROOT . '/' . $it, $it); //向压缩包中添加文件
|
||||
} else {
|
||||
addFileToZip(API_ROOT . '/' . $it, $it, $zip);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$zip->close(); //关闭压缩包
|
||||
|
||||
echo "插件已打包发布完毕!\n";
|
||||
echo realpath($filename), "\n\n";
|
||||
|
||||
|
||||
/**
|
||||
* @param $path 文件夹路径
|
||||
* @param $zip zip 对象
|
||||
*/
|
||||
function addFileToZip($path, $zipPath, $zip) {
|
||||
$handler = opendir($path); //打开当前文件夹由$path指定。
|
||||
|
||||
while (($filename = readdir($handler)) !== false) {
|
||||
if ($filename != "." && $filename != "..") {//文件夹文件名字为'.'和‘..’,不要对他们进行操作
|
||||
if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归
|
||||
|
||||
addFileToZip($path . "/" . $filename, $zipPath . '/' . $filename, $zip);
|
||||
} else { //将文件加入zip对象
|
||||
$zip->addFile($path . "/" . $filename, $zipPath . '/' . $filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
@closedir($path);
|
||||
}
|
||||
199
bin/phalapi-plugin-create.php
Normal file
199
bin/phalapi-plugin-create.php
Normal file
@@ -0,0 +1,199 @@
|
||||
<?php
|
||||
/**
|
||||
* 创建一个新的应用插件
|
||||
* @author dogstar 20200311
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
if ($argc < 2) {
|
||||
echo "Usage: {$argv[0]} <plugin_key>\n";
|
||||
echo "请输入你的插件编号,字母数字和下划线组合。\n";
|
||||
echo "例如:{$argv[0]} plugin_demo\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$pluginKey = trim($argv[1]);
|
||||
if (!preg_match('/^[0-9A-Za-z_]{1,}$/', $pluginKey)) {
|
||||
echo "插件编号格式不对,应该使用字母数字和下划线组合。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$pluginKeyClass = ucfirst(str_replace('_', '', $pluginKey));
|
||||
|
||||
// 生成插件json配置文件
|
||||
echo "开始生成插件json配置文件……\n";
|
||||
$jsonFile = dirname(__FILE__) . '/../plugins/' . $pluginKey . '.json';
|
||||
$jsonConfig = array(
|
||||
'plugin_key' => $pluginKey,
|
||||
'plugin_name' => $pluginKey . '插件',
|
||||
'plugin_author' => '作者名称',
|
||||
'plugin_desc' => '插件描述',
|
||||
'plugin_version' => '1.0',
|
||||
'plugin_encrypt' => 0, // 加密模式,0无加密,1有加密,2半加密
|
||||
'plugin_depends' => array(
|
||||
'PHP' => '5.6',
|
||||
'MySQL' => '5.3',
|
||||
'PhalApi' => PHALAPI_VERSION,
|
||||
// composer 依赖的包,无则不写
|
||||
'composer' => array(
|
||||
// 参考示例,格式是包名 => 版本号
|
||||
'phalapi/kernal' => '>=2.12.2',
|
||||
),
|
||||
'extension' => array(
|
||||
// PHP扩展名
|
||||
// 'pdo_mysql',
|
||||
),
|
||||
),
|
||||
// 插件的文件
|
||||
'plugin_files' => array(
|
||||
// 配置文件
|
||||
'config' => 'config/' . $pluginKey . '.php',
|
||||
// 插件启动文件
|
||||
'plugins' => 'plugins/' . $pluginKey . '.php',
|
||||
// 数据库变更文件
|
||||
'data' => 'data/' . $pluginKey . '.sql',
|
||||
// portal后台及对外访问的文件
|
||||
'public' => array(
|
||||
'public/portal/page/' . $pluginKey,
|
||||
'public/portal/page/' . $pluginKey,
|
||||
),
|
||||
// PHP源代码
|
||||
'src' => array(
|
||||
'src/app/Api/' . $pluginKeyClass,
|
||||
'src/app/Domain/' . $pluginKeyClass,
|
||||
'src/app/Model/' . $pluginKeyClass,
|
||||
'src/app/Common/' . $pluginKeyClass,
|
||||
'src/portal/Api/' . $pluginKeyClass,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
if (file_exists($jsonFile)) {
|
||||
echo "插件已存在!" . $jsonFile . "\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
file_put_contents($jsonFile, json_encode($jsonConfig, version_compare(PHP_VERSION, '5.4.0', '>=') ? JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT : JSON_PRETTY_PRINT));
|
||||
|
||||
echo realpath($jsonFile), " json配置文件生成 ok \n\n";
|
||||
|
||||
// 开始创建插件文件和目录
|
||||
echo "开始创建插件文件和目录……\n";
|
||||
|
||||
// config配置
|
||||
$file = API_ROOT . '/' . $jsonConfig['plugin_files']['config'];
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, "<?php
|
||||
// $pluginKey 插件配置
|
||||
return array(
|
||||
);
|
||||
");
|
||||
|
||||
// json配置
|
||||
$file = API_ROOT . '/' . $jsonConfig['plugin_files']['plugins'];
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, "<?php
|
||||
// $pluginKey 插件初始化
|
||||
|
||||
");
|
||||
|
||||
// 添加菜单
|
||||
$menuId = rand(100001, 999999999);
|
||||
$menuSql = array();
|
||||
$menuSql[] = "delete from `phalapi_portal_menu` where id = {$menuId};";
|
||||
$menuSql[] = "insert into `phalapi_portal_menu` ( `target`, `id`, `title`, `href`, `sort_num`, `parent_id`, `icon`) values ( '_self', '{$menuId}', '{$pluginKey}插件', 'page/{$pluginKey}/index.html', '9999', '1', 'fa fa-list-alt');";
|
||||
|
||||
$file = API_ROOT . '/' . $jsonConfig['plugin_files']['data'];
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, implode("\n", $menuSql) . "\n");
|
||||
|
||||
// 运营平台
|
||||
$file = API_ROOT . '/public/portal/' . $pluginKey;
|
||||
echo $file, "... \n";
|
||||
mkdir(API_ROOT . '/public/portal/page/' . $pluginKey, 0755, TRUE);
|
||||
$file = API_ROOT . '/public/portal/page/' . $pluginKey . '/index.html';
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, file_get_contents(API_ROOT . '/public/portal/page/phalapi-plugins/_index_tpl.html'));
|
||||
|
||||
// src源代码
|
||||
mkdir(API_ROOT . '/src/app/Api/' . $pluginKeyClass, 0755, TRUE);
|
||||
$file = API_ROOT . '/src/app/Api/' . $pluginKeyClass . '/Main.php';
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, "<?php
|
||||
namespace App\\Api\\{$pluginKeyClass};
|
||||
use PhalApi\\Api;
|
||||
|
||||
/**
|
||||
* {$pluginKey} 插件
|
||||
*/
|
||||
class Main extends Api {
|
||||
|
||||
/**
|
||||
* 插件接口
|
||||
* @desc 待开发的插件新接口
|
||||
*/
|
||||
public function todo() {
|
||||
}
|
||||
}
|
||||
|
||||
");
|
||||
|
||||
mkdir(API_ROOT . '/src/app/Domain/' . $pluginKeyClass, 0755, TRUE);
|
||||
$file = API_ROOT . '/src/app/Domain/' . $pluginKeyClass . '/Main.php';
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, "<?php
|
||||
namespace App\\Domain\\{$pluginKeyClass};
|
||||
|
||||
class Main {
|
||||
}
|
||||
");
|
||||
|
||||
mkdir(API_ROOT . '/src/app/Model/' . $pluginKeyClass, 0755, TRUE);
|
||||
$file = API_ROOT . '/src/app/Model/' . $pluginKeyClass . '/Main.php';
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, "<?php
|
||||
namespace App\\Model\\{$pluginKeyClass};
|
||||
use PhalApi\\Model\\DataModel;
|
||||
|
||||
class Main extends DataModel {
|
||||
}
|
||||
");
|
||||
|
||||
mkdir(API_ROOT . '/src/app/Common/' . $pluginKeyClass, 0755, TRUE);
|
||||
|
||||
// portal
|
||||
mkdir(API_ROOT . '/src/portal/Api/' . $pluginKeyClass, 0755, TRUE);
|
||||
|
||||
$file = API_ROOT . '/src/portal/Api/' . $pluginKeyClass . '/Main.php';
|
||||
echo $file, "... \n";
|
||||
file_put_contents($file, "<?php
|
||||
namespace Portal\\Api\\{$pluginKeyClass};
|
||||
use Portal\\Common\\DataApi as Api;
|
||||
|
||||
/**
|
||||
* {$pluginKey} 插件
|
||||
*/
|
||||
class Main extends Api {
|
||||
|
||||
protected function getDataModel() {
|
||||
return new \\App\\Model\\{$pluginKeyClass}\\Main();
|
||||
}
|
||||
}
|
||||
");
|
||||
|
||||
echo "插件文件和目录生成 ok \n\n";
|
||||
|
||||
echo "开始添加运营平台菜单……\n";
|
||||
|
||||
foreach ($menuSql as $sql) {
|
||||
\PhalApi\DI()->notorm->demo->executeSql($sql);
|
||||
}
|
||||
|
||||
echo "{$pluginKey}插件菜单添加 ok \n\n";
|
||||
|
||||
echo "恭喜,插件创建成功,可以开始开发啦!\n";
|
||||
|
||||
|
||||
32
bin/phalapi-plugin-install.php
Normal file
32
bin/phalapi-plugin-install.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* 安装插件
|
||||
* @author dogstar 20200311
|
||||
*/
|
||||
|
||||
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
if ($argc < 2) {
|
||||
echo "Usage: {$argv[0]} <plugin_key>\n";
|
||||
echo "请输入待安装的插件编号。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$pluginKey = trim($argv[1]);
|
||||
if (!preg_match('/^[0-9A-Za-z_]{1,}$/', $pluginKey)) {
|
||||
echo "插件编号格式不对,应该使用字母数字和下划线组合。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$plugin = new Portal\Domain\Plugin();
|
||||
$detail = [];
|
||||
|
||||
$plugin->install($pluginKey, $detail);
|
||||
|
||||
echo implode("\n", $detail);
|
||||
|
||||
echo "\n";
|
||||
|
||||
27
bin/phalapi-plugin-prepare.php
Normal file
27
bin/phalapi-plugin-prepare.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* 插件环境预热
|
||||
* @author dogstar 20200312
|
||||
*/
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
$folder = array(
|
||||
'config',
|
||||
'plugins',
|
||||
'data',
|
||||
'public/portal/page',
|
||||
'public/portal',
|
||||
'src/app/Api',
|
||||
'src/app/Domain',
|
||||
'src/app/Model',
|
||||
'src/app/Common',
|
||||
'src/portal/Api',
|
||||
);
|
||||
|
||||
foreach ($folder as $it) {
|
||||
chmod(API_ROOT . '/' . $it, 0777);
|
||||
}
|
||||
|
||||
|
||||
echo "插件安装环境已预热完毕!\n";
|
||||
|
||||
32
bin/phalapi-plugin-uninstall.php
Normal file
32
bin/phalapi-plugin-uninstall.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* 卸载插件
|
||||
* @author dogstar 20200326
|
||||
*/
|
||||
|
||||
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
if ($argc < 2) {
|
||||
echo "Usage: {$argv[0]} <plugin_key>\n";
|
||||
echo "请输入待卸载的插件编号。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$pluginKey = trim($argv[1]);
|
||||
if (!preg_match('/^[0-9A-Za-z_]{1,}$/', $pluginKey)) {
|
||||
echo "插件编号格式不对,应该使用字母数字和下划线组合。\n";
|
||||
echo "\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
$plugin = new Portal\Domain\Plugin();
|
||||
$detail = [];
|
||||
|
||||
$plugin->uninstall($pluginKey, $detail);
|
||||
|
||||
echo implode("\n", $detail);
|
||||
|
||||
echo "\n";
|
||||
|
||||
83
bin/run_task.php
Normal file
83
bin/run_task.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
// ---------------------------------------------------------------------------------
|
||||
// _____ _ _ _ _____
|
||||
// | __ \ | | | | /\ (_) | __ \
|
||||
// | |__) || |__ __ _ | | / \ _ __ _ | |__) |_ __ ___
|
||||
// | ___/ | '_ \ / _` || | / /\ \ | '_ \ | | | ___/| '__|/ _ \
|
||||
// | | | | | || (_| || | / ____ \ | |_) || | | | | | | (_) |
|
||||
// |_| |_| |_| \__,_||_|/_/ \_\| .__/ |_| |_| |_| \___/
|
||||
// | |
|
||||
// |_|
|
||||
// PhalApi Pro 专业版
|
||||
// 广州果创网络科技有限公司
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
//
|
||||
// 一、协议的许可和权利
|
||||
// 1. 您可以在完全遵守本协议的基础上,将本软件应用于商业用途;
|
||||
// 2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求;
|
||||
// 3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权,并独立承担与其内容相关的
|
||||
// 法律义务;
|
||||
// 4. 获得商业授权之后,您可以将本软件应用于商业用途,自授权时刻起,在技术支持期限内拥有通过
|
||||
// 指定的方式获得指定范围内的技术支持服务;
|
||||
//
|
||||
// 二、协议的约束和限制
|
||||
// 1. 未获商业授权之前,禁止将本软件用于商业用途(包括但不限于企业法人经营的产品、经营性产品
|
||||
// 以及以盈利为目的或实现盈利产品);
|
||||
// 2. 未获商业授权之前,禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
|
||||
// 方版本用于重新开发;
|
||||
// 3. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回并承担相应法律责任;
|
||||
//
|
||||
// 三、有限担保和免责声明
|
||||
// 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的;
|
||||
// 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未获得商业授权之前,我们不承
|
||||
// 诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任;
|
||||
// 3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任,但在不侵犯用户隐
|
||||
// 私信息的前提下,保留以任何方式获取用户信息及商品信息的权利;
|
||||
//
|
||||
// 有关本产品最终用户授权协议、商业授权与技术服务的详细内容,均由广州果创网络科技有限公司独家
|
||||
// 提供。广州果创网络科技有限公司拥有在不事先通知的情况下,修改授权协议的权力,修改后的协议对
|
||||
// 改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和
|
||||
// 等同的法律效力。您一旦开始修改、安装或使用本产品,即被视为完全理解并接受本协议的各项条款,
|
||||
// 在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本
|
||||
// 授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
|
||||
use PhalApi\Logger;
|
||||
use PhalApi\Logger\FileLogger;
|
||||
|
||||
/**
|
||||
* 计划任务入口示例
|
||||
*/
|
||||
require_once dirname(__FILE__) . '/../public/init.php';
|
||||
|
||||
|
||||
$di = \PhalApi\DI();
|
||||
// $di->debug = true;
|
||||
|
||||
// 关闭签名
|
||||
$di->filter = null;
|
||||
|
||||
// 日记纪录(调整目录)
|
||||
$di->logger = new FileLogger(API_ROOT . '/runtime/task', Logger::LOG_LEVEL_DEBUG | Logger::LOG_LEVEL_INFO | Logger::LOG_LEVEL_ERROR);
|
||||
|
||||
// 缓存(调整目录)
|
||||
$di->cache = new \PhalApi\Cache\FileCache(array('path' => API_ROOT . '/runtime/task'));
|
||||
|
||||
|
||||
try {
|
||||
// 执行MQ任务
|
||||
$progress = new \PhalApi\Task\Progress();
|
||||
$progress->run();
|
||||
|
||||
// 执行计划任务
|
||||
$taskDomain = new \Base\Domain\Task();
|
||||
$taskDomain->runCrontabTask();
|
||||
} catch (Exception $ex) {
|
||||
echo '[Exception] ', date('Y-m-d H:i:s'), PHP_EOL;
|
||||
echo $ex->getMessage();
|
||||
echo PHP_EOL;
|
||||
echo $ex->getTraceAsString();
|
||||
// notify ...
|
||||
}
|
||||
4
bin/test/run_test_sample.php
Normal file
4
bin/test/run_test_sample.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/../../public/init.php';
|
||||
$model = new \Base\Domain\TestSample();
|
||||
$model->beginTestAllSamples();
|
||||
1
bin/test/test_detail.txt
Normal file
1
bin/test/test_detail.txt
Normal file
@@ -0,0 +1 @@
|
||||
未开始测试
|
||||
48
composer.json
Normal file
48
composer.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name" : "phalapi/phalapi",
|
||||
"description" : "PhalApi v2.x,一个PHP轻量级开源接口框架,致力于快速开发接口服务。",
|
||||
"type" : "project",
|
||||
"keywords" : [
|
||||
"api"
|
||||
],
|
||||
"homepage" : "http://www.phalapi.net",
|
||||
"license" : "GPL-3.0+",
|
||||
"minimum-stability" : "dev",
|
||||
"authors" : [{
|
||||
"name" : "Dogstar Huang",
|
||||
"email" : "chanzonghuang@gmail.com",
|
||||
"homepage" : "http://my.oschina.net/dogstar",
|
||||
"role" : "Developer"
|
||||
}
|
||||
],
|
||||
"require" : {
|
||||
"php" : ">=5.3.3",
|
||||
"phalapi/kernal" : "2.*.*",
|
||||
"phalapi/qrcode" : "dev-master",
|
||||
"phalapi/cli" : "dev-master",
|
||||
"phalapi/pinyin" : "dev-master",
|
||||
"phalapi/barcode" : "dev-master",
|
||||
"lmxdawn/php-jwt" : "dev-master",
|
||||
"phalapi/task" : "dev-master",
|
||||
"itbdw/ip-database" : "dev-master",
|
||||
"alibabacloud/client" : "dev-master",
|
||||
"gregwar/captcha": "dev-master",
|
||||
"aliyuncs/oss-sdk-php": "dev-master",
|
||||
"yansongda/pay": "dev-master",
|
||||
"riverslei/payment": "*",
|
||||
"paypal/paypal-checkout-sdk": "dev-master"
|
||||
},
|
||||
"autoload" : {
|
||||
"files" : [
|
||||
"src/app/functions.php"
|
||||
],
|
||||
"psr-4" : {
|
||||
"App\\" : "src/app",
|
||||
"Platform\\" : "src/platform",
|
||||
"Task\\": "src/task",
|
||||
"Base\\": "src/base",
|
||||
"Mall\\": "src/mall",
|
||||
"Admin\\" : "src/admin"
|
||||
}
|
||||
}
|
||||
}
|
||||
2621
composer.lock
generated
Normal file
2621
composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
332
config/app.php
Normal file
332
config/app.php
Normal file
@@ -0,0 +1,332 @@
|
||||
<?php
|
||||
// ---------------------------------------------------------------------------------
|
||||
// _____ _ _ _ _____
|
||||
// | __ \ | | | | /\ (_) | __ \
|
||||
// | |__) || |__ __ _ | | / \ _ __ _ | |__) |_ __ ___
|
||||
// | ___/ | '_ \ / _` || | / /\ \ | '_ \ | | | ___/| '__|/ _ \
|
||||
// | | | | | || (_| || | / ____ \ | |_) || | | | | | | (_) |
|
||||
// |_| |_| |_| \__,_||_|/_/ \_\| .__/ |_| |_| |_| \___/
|
||||
// | |
|
||||
// |_|
|
||||
// PhalApi Pro 专业版
|
||||
// 广州果创网络科技有限公司
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
//
|
||||
// 一、协议的许可和权利
|
||||
// 1. 您可以在完全遵守本协议的基础上,将本软件应用于商业用途;
|
||||
// 2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求;
|
||||
// 3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权,并独立承担与其内容相关的
|
||||
// 法律义务;
|
||||
// 4. 获得商业授权之后,您可以将本软件应用于商业用途,自授权时刻起,在技术支持期限内拥有通过
|
||||
// 指定的方式获得指定范围内的技术支持服务;
|
||||
//
|
||||
// 二、协议的约束和限制
|
||||
// 1. 未获商业授权之前,禁止将本软件用于商业用途(包括但不限于企业法人经营的产品、经营性产品
|
||||
// 以及以盈利为目的或实现盈利产品);
|
||||
// 2. 未获商业授权之前,禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
|
||||
// 方版本用于重新开发;
|
||||
// 3. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回并承担相应法律责任;
|
||||
//
|
||||
// 三、有限担保和免责声明
|
||||
// 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的;
|
||||
// 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未获得商业授权之前,我们不承
|
||||
// 诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任;
|
||||
// 3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任,但在不侵犯用户隐
|
||||
// 私信息的前提下,保留以任何方式获取用户信息及商品信息的权利;
|
||||
//
|
||||
// 有关本产品最终用户授权协议、商业授权与技术服务的详细内容,均由广州果创网络科技有限公司独家
|
||||
// 提供。广州果创网络科技有限公司拥有在不事先通知的情况下,修改授权协议的权力,修改后的协议对
|
||||
// 改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和
|
||||
// 等同的法律效力。您一旦开始修改、安装或使用本产品,即被视为完全理解并接受本协议的各项条款,
|
||||
// 在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本
|
||||
// 授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* 请在下面放置任何您需要的应用配置
|
||||
*
|
||||
* @license http://www.phalapi.net/license GPL 协议
|
||||
* @link http://www.phalapi.net/
|
||||
* @author dogstar <chanzonghuang@gmail.com> 2017-07-13
|
||||
*/
|
||||
|
||||
return array(
|
||||
|
||||
/**
|
||||
* 应用接口层的统一参数
|
||||
*/
|
||||
'apiCommonRules' => array(
|
||||
'accessToken' => array('name' => 'access_token', 'default' => '', 'desc' => '访问令牌,仅当开启签名验证时需要传递,生成令牌可使用App.Auth.ApplyToken接口'),
|
||||
|
||||
/** ----- 如果你需要使用第二套加密算法,请开启以下参数规则 ----- **/
|
||||
|
||||
// 'app_key' => array('name' => 'app_key', 'default' => '', 'desc' => 'app_key,用于区分客户端应用,首次接入需要创建应用并等待管理员审核通过'),
|
||||
// 'sign' => array('name' => 'sign', 'desc' => '动态签名,签名算法是:<br/><ul><li>1、全部参数(排除sign),按key进行字典排序</li><li>2、全部参数值,把原始值按字符串进行拼接,并在最后加上app_secret密钥</li><li>3、对第2步结果,拼接密钥后,进行MD5加密</li><li>4、对第3步结果,转成大写,得到sign签名(32位)</li></ul>'),
|
||||
// 'uid' => array('name' => 'uid', 'type' => 'int', 'default' => 0, 'desc' => ''),
|
||||
// 'accessToken' => array('name' => 'access_token', 'default' => '', 'desc' => '访问令牌,保留使用但不需要在文档上展示', 'is_doc_hide' => true),
|
||||
|
||||
// 'encryptData' => array('name' => 'encrypt_data', 'desc' => '客户端加密的接口,格式是:RSA公钥加密(base64编码(JSON原始数据))。开启后,同时支持原来普通的参数传递方式。'),
|
||||
),
|
||||
|
||||
/**
|
||||
* 接口服务白名单,格式:接口服务类名.接口服务方法名
|
||||
*
|
||||
* 示例:
|
||||
* - *.* 通配,全部接口服务,慎用!
|
||||
* - Site.* Api_Default接口类的全部方法
|
||||
* - *.Index 全部接口类的Index方法
|
||||
* - Site.Index 指定某个接口服务,即Api_Default::Index()
|
||||
*/
|
||||
'service_whitelist' => array(
|
||||
'Site.Index',
|
||||
'UserWeixin.FastLogin', // 微信登录
|
||||
'Auth.ApplyToken', // 授权时不需要验证
|
||||
'Auth.UserLogin',
|
||||
'Auth.AppUserLogin',
|
||||
'HelloWorld.Say', // 不需要任何验证
|
||||
'QrCode.*',
|
||||
'Pinyin.*',
|
||||
'BarCode.*',
|
||||
|
||||
// 平台接口白名单
|
||||
'Platform' => array(
|
||||
'User.UserLogin',
|
||||
'User.Register',
|
||||
'Site.Index',
|
||||
'Captcha.Create',
|
||||
'Authorization_Authorization.AuthorizationConfig',
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* JWT令牌
|
||||
*/
|
||||
'jwt' => array(
|
||||
'key' => '*#FD2F9DM~E*', // 用于加密的key(安装时自动生成,不能修改!)
|
||||
'exp' => 30 * 86400, // 令牌生成后多少秒内有效,可自行修改
|
||||
),
|
||||
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
'member' => array(
|
||||
'salt' => '9DfnseJ%sD#', // 用于增强用户密码(安装时自动生成,不能修改!)
|
||||
),
|
||||
|
||||
/**
|
||||
* 上传配置
|
||||
*/
|
||||
'upload' => array(
|
||||
'host' => '', // 图片文件域名,为空时取当前域名,修改不影响原有的文件地址,可单独配置图片域名或CDN域名,格式:http://img.xxx.com(前面加协议,最后不用斜杠)
|
||||
'upload_folder_path' => 'uploads', // 上传目录,可修改,注意:1)目录存在且有写入权限;2)需要放置在public目录下,支持外部访问;
|
||||
|
||||
// 如果需要存储到阿里云OSS,请修改以下配置(全部必填方可生效)。若OSS上传失败,将会降级使用本地存储
|
||||
// 如何开通阿里云开通OSS服务:https://help.aliyun.com/document_detail/31884.html?spm=a2c4g.11186623.2.15.d8f41c62os2XRV#task-njz-hf4-tdb
|
||||
// 开通后,创建bucket,并把权限设置为:公共读
|
||||
'aliyu_oss' => array(
|
||||
'accessKeyId' => '', // TODO:修改成你的配置
|
||||
'accessSecret' => '', // TODO
|
||||
'bucket' => '', // TODO Bucket名称
|
||||
'endpoint' => '', // TODO endpoint,例如:http://oss-cn-beijing.aliyuncs.com
|
||||
'isCName' => true, // 可选配置,true为开启CNAME。CNAME是指将自定义域名绑定到存储空间上
|
||||
'filePathPrefixx' => '', // 可选配置,为空时传到根目录,需要上传的目录前缀,例如:/myfolder
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* 阿里云配置-发送短信时需要此配置
|
||||
*/
|
||||
'aliYun' => array(
|
||||
'accessKeyId' => '', // TODO:修改成你的配置
|
||||
'accessSecret' => '', // TODO
|
||||
),
|
||||
|
||||
/**
|
||||
* 微信公众号/小程序配置
|
||||
*/
|
||||
'weixin' => array(
|
||||
'appid' => '', // TODO:修改成你的配置
|
||||
'appsecret' => '', // TODO
|
||||
),
|
||||
|
||||
/**
|
||||
* 果创云配置
|
||||
* 链接:http://open.yesapi.cn/?r=App/Mine
|
||||
*/
|
||||
'yesapi' => array(
|
||||
'host' => '', // TODO:接口域名,例如:http://api.yesapi.cn(每个账号的接口域名不一样)
|
||||
'app_key' => '', // TODO: app_key
|
||||
'app_secrect' => '', // TODO:密钥
|
||||
),
|
||||
|
||||
/**
|
||||
* 项目配置
|
||||
*/
|
||||
'project' => array(
|
||||
// 项目名称
|
||||
'name' => '接口大师',
|
||||
// logo链接
|
||||
'logo' => '/logo.png',
|
||||
// 顶端图标
|
||||
'ico' => '/favicon.ico',
|
||||
// 查看文档的密码,为空时不需要密码
|
||||
'doc_view_code' => '',
|
||||
// 总开关,是否允许会员注册,true允许,false不允许
|
||||
'is_member_register' => true,
|
||||
// 总开关,是否允许开放者注册,true允许,false不允许
|
||||
'is_dev_register' => true,
|
||||
// 用户等级及映射,下标对应member表的member_level字段,建议按权限从低到高配置
|
||||
// 0,100,101,200,201为系统自带等级,不宜更改。可扩展追加
|
||||
'member_level_map' => array(
|
||||
// 0~99区间表示会员
|
||||
0 => array(
|
||||
'name' => '普通会员',
|
||||
'is_register' => true, // 是否允许注册
|
||||
),
|
||||
|
||||
// 100~199区间表示开发者
|
||||
100 => array(
|
||||
'name' => '个人开发者',
|
||||
'is_register' => true, // 是否允许开放平台注册
|
||||
'app_limit' => 0, // 开发者角色每日接口调用次数限制,为0时表示无限制(优先使用应用的app_limit)
|
||||
),
|
||||
101 => array(
|
||||
'name' => '企业开发者',
|
||||
'is_register' => true, // 是否允许开放平台注册
|
||||
'app_limit' => 0, // 开发者角色每日接口调用次数限制,为0时表示无限制(优先使用应用的app_limit)
|
||||
),
|
||||
|
||||
// 200~255区间表示内部管理员
|
||||
200 => array(
|
||||
'name' => '普通管理员',
|
||||
'is_register' => false, // 是否允许注册
|
||||
),
|
||||
255 => array(
|
||||
'name' => '超级管理员',
|
||||
'is_register' => false, // 是否允许注册
|
||||
),
|
||||
),
|
||||
// 每个开发者最多可以创建的应用数量上限
|
||||
'dev_max_app_num' => 10,
|
||||
// 计划任务专用的静态访问令牌,可以自行修改,通过HTTP请求时需要使用,CLI执行时不需要
|
||||
'task_access_token' => 'erVDwgv98Ls',
|
||||
// 默认应用接口每日接口次数上限,0表示没有限制
|
||||
'default_daily_app_limit' => 100000,
|
||||
// 默认接口权限,没有任何配置时应用对于接口调用的默认权限,推荐设置为false
|
||||
'default_app_api_rigths_is_allow' => false,
|
||||
// 开放接口的命名空间,配置后可提供接口权限分配,可配置多个
|
||||
'open_api_namespaces' => array('App'),
|
||||
// 默认语言,简体中文,可选:zh_cn/zh_tw/fr/de/en,或自行扩展
|
||||
'default_language' => 'zh_cn',
|
||||
// 语言列表
|
||||
'language_list' => array(
|
||||
'zh_cn' => '简体中文',
|
||||
'en' => 'English',
|
||||
),
|
||||
// 验证码
|
||||
'captcha' => array(
|
||||
'switch' => array(
|
||||
'admin_login_captcha' => true, // 管理后台登录页面验证码开关
|
||||
'platform_login_catpcha' => true, // 开放平台登录页面验证码开关
|
||||
'platform_register_captcha' => true, // 开放平台注册页面验证码开关
|
||||
),
|
||||
'options' => array(
|
||||
'charset' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', // 验证码字符
|
||||
'length' => 4, // 验证码长度(默认长度为4,范围4~5)
|
||||
'height' => 50, // 验证码显示高度(默认40,单位像素)
|
||||
'width' => 200, // 验证码显示宽度(默认300,单位像素)
|
||||
'is_case_sensitive' => false, // 是否区分大小写
|
||||
),
|
||||
),
|
||||
// IP白名单,为空时不限制IP,只针对App开放接口
|
||||
'allow_ips' => array(
|
||||
// '127.0.0.1', // 每一组一个IP地址
|
||||
),
|
||||
|
||||
),
|
||||
|
||||
//工单模块配置
|
||||
'work_order_config'=> array(
|
||||
1=>'API USE'
|
||||
),
|
||||
|
||||
//首页sdk配置
|
||||
'index_sdk_config'=> array(
|
||||
[
|
||||
'id' => 1,
|
||||
'label' => '.NET',
|
||||
'content' => '.NET SDK',
|
||||
'download_url'=>'#'
|
||||
],
|
||||
[
|
||||
'id' => 2,
|
||||
'label' => 'Java',
|
||||
'content' => 'Java SDK',
|
||||
'download_url'=>'#'
|
||||
],
|
||||
[
|
||||
'id' => 3,
|
||||
'label' => 'PHP',
|
||||
'content' => 'PHP SDK',
|
||||
'download_url'=>'#'
|
||||
],
|
||||
[
|
||||
'id' => 4,
|
||||
'label' => 'Ruby',
|
||||
'content' => 'Ruby SDK',
|
||||
'download_url'=>'#'
|
||||
],
|
||||
[
|
||||
'id' => 5,
|
||||
'label' => 'Python',
|
||||
'content' => 'Python SDK',
|
||||
'download_url'=>'#'
|
||||
],
|
||||
[
|
||||
'id' => 5,
|
||||
'label' => 'Js',
|
||||
'content' => 'Js SDK',
|
||||
'download_url'=>'#'
|
||||
]
|
||||
),
|
||||
|
||||
//文件类型配置
|
||||
'file_uplods_config'=> array(
|
||||
'.zip',
|
||||
'.jpg',
|
||||
'.jpeg',
|
||||
'.rar',
|
||||
'.xls',
|
||||
'.psd',
|
||||
'.doc',
|
||||
'.docx',
|
||||
),
|
||||
|
||||
//第三方登录总开关
|
||||
'authorization_app'=>array(
|
||||
//自己编写获取第三方登录链接对应的方法,注释后,登录页面不显示此第三方登录方式
|
||||
/**
|
||||
'weChat'=>[
|
||||
'icon' => '/images/login_wechat.png', // 第三方应用的图标
|
||||
'app_callback_url'=>'\Base\Domain\Authorization', //自己编写获取第三方微信登录链接的类---包含命名空间
|
||||
'desc'=>'微信', //第三方应用的描述
|
||||
'sort_id'=>1, //排序字段
|
||||
|
||||
'can_unbind'=>1, //可以解绑的
|
||||
'type'=>1, //用于解绑的
|
||||
|
||||
'authorization_type'=>1,
|
||||
'can_bing'=>1, //可以在个人中心进行绑定
|
||||
'can_bing_url_class'=>'\Base\Domain\Authorization',//自己编写获取第三方登录绑定链接的类--包含命名空间
|
||||
'can_bing_url_fun'=>'weChat', //自己编写获取第三方登录绑定链接的类对应的方法
|
||||
|
||||
//以下根据自己申请得到的资料进行填写
|
||||
'appid'=>'', //appid
|
||||
'secret'=>'', //密钥
|
||||
'login_redirect_uri'=>'http://xxx.com/server_callback/wechat_login.php', //请填写你的域名,登录回调地址配置
|
||||
],
|
||||
*/
|
||||
),
|
||||
);
|
||||
57
config/dbs.php
Normal file
57
config/dbs.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* 分库分表的自定义数据库路由配置
|
||||
*
|
||||
* @license http://www.phalapi.net/license GPL 协议
|
||||
* @link http://www.phalapi.net/
|
||||
* @author: dogstar <chanzonghuang@gmail.com> 2015-02-09
|
||||
*/
|
||||
|
||||
return array(
|
||||
/**
|
||||
* DB数据库服务器集群
|
||||
*/
|
||||
'servers' => array(
|
||||
'db_master' => array( // 服务器标记
|
||||
'type' => 'mysql', // 数据库类型,暂时只支持:mysql, sqlserver
|
||||
'host' => '127.0.0.1', // 数据库域名
|
||||
'name' => 'phalapi_pro', // 数据库名字
|
||||
'user' => 'root', // 数据库用户名
|
||||
'password' => '', // 数据库密码
|
||||
'port' => 3306, // 数据库端口
|
||||
'charset' => 'utf8mb4', // 数据库字符集
|
||||
'pdo_attr_string' => false, // 数据库查询结果统一使用字符串,true是,false否
|
||||
'driver_options' => array( // PDO初始化时的连接选项配置
|
||||
// 若需要更多配置,请参考官方文档:https://www.php.net/manual/zh/pdo.constants.php
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* 自定义路由表
|
||||
*/
|
||||
'tables' => array(
|
||||
// 通用路由
|
||||
'__default__' => array( // 固定的系统标志,不能修改!
|
||||
'prefix' => '', // 数据库统一表名前缀,无前缀保留空
|
||||
'key' => 'id', // 数据库统一表主键名,通常为id
|
||||
'keep_suffix_if_no_map' => true, // 当分表未匹配时依然保留数字作为表后缀
|
||||
'map' => array( // 数据库统一默认存储路由
|
||||
array('db' => 'db_master'), // db_master对应前面servers.db_master配置,须对应!
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
// 单表路由(当某个表的配置或存储或存在分表时,可单独配置,请参考以下示例)
|
||||
/**
|
||||
'demo' => array( // 表名,不带表前缀,不带分表后缀
|
||||
'prefix' => '', // 当前的表名前缀
|
||||
'key' => 'id', // 当前的表主键名
|
||||
'map' => array( // 当前的分表存储路由配置
|
||||
array('db' => 'db_master'), // 单表配置:array('db' => 服务器标记)
|
||||
array('start' => 0, 'end' => 2, 'db' => 'db_master'), // 三张分表的配置:array('start' => 开始下标, 'end' => 结束下标, 'db' => 服务器标记)
|
||||
),
|
||||
),
|
||||
*/
|
||||
),
|
||||
);
|
||||
53
config/dbs_plus.php
Normal file
53
config/dbs_plus.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* 其他数据库连接,可用于连接其他或原有的数据库
|
||||
*/
|
||||
|
||||
return array(
|
||||
/**
|
||||
* DB数据库服务器集群
|
||||
* 数据库连接文档:http://docs.phalapi.net/#/v2.0/database-connect
|
||||
*/
|
||||
'servers' => array(
|
||||
'db_master' => array( // 服务器标记
|
||||
'type' => 'mysql', // TODO: 数据库类型,暂时只支持:mysql, sqlserver
|
||||
'host' => '127.0.0.1', // TODO: 数据库域名
|
||||
'name' => 'phalapi_pro', // TODO: 数据库名字
|
||||
'user' => 'root', // TODO: 数据库用户名
|
||||
'password' => '', // TODO: 数据库密码
|
||||
'port' => 3306, // 数据库端口
|
||||
'charset' => 'utf8mb4', // 数据库字符集 utf8mb4或utf8
|
||||
'pdo_attr_string' => false, // 数据库查询结果统一使用字符串,true是,false否
|
||||
'driver_options' => array( // PDO初始化时的连接选项配置
|
||||
// 若需要更多配置,请参考官方文档:https://www.php.net/manual/zh/pdo.constants.php
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
/**
|
||||
* 自定义路由表
|
||||
*/
|
||||
'tables' => array(
|
||||
// 通用路由
|
||||
'__default__' => array( // 固定的系统标志,不能修改!
|
||||
'prefix' => '', // 数据库统一表名前缀,无前缀保留空
|
||||
'key' => 'id', // 数据库统一表主键名,通常为id
|
||||
'map' => array( // 数据库统一默认存储路由
|
||||
array('db' => 'db_master'), // db_master对应前面servers.db_master配置,须对应!
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
// 单表路由(当某个表的配置或存储或存在分表时,可单独配置,请参考以下示例)
|
||||
/**
|
||||
'demo' => array( // 表名,不带表前缀,不带分表后缀
|
||||
'prefix' => '', // 当前的表名前缀
|
||||
'key' => 'id', // 当前的表主键名
|
||||
'map' => array( // 当前的分表存储路由配置
|
||||
array('db' => 'db_master'), // 单表配置:array('db' => 服务器标记)
|
||||
array('start' => 0, 'end' => 2, 'db' => 'db_master'), // 三张分表的配置:array('start' => 开始下标, 'end' => 结束下标, 'db' => 服务器标记)
|
||||
),
|
||||
),
|
||||
*/
|
||||
),
|
||||
);
|
||||
154
config/di.php
Normal file
154
config/di.php
Normal file
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
// ---------------------------------------------------------------------------------
|
||||
// _____ _ _ _ _____
|
||||
// | __ \ | | | | /\ (_) | __ \
|
||||
// | |__) || |__ __ _ | | / \ _ __ _ | |__) |_ __ ___
|
||||
// | ___/ | '_ \ / _` || | / /\ \ | '_ \ | | | ___/| '__|/ _ \
|
||||
// | | | | | || (_| || | / ____ \ | |_) || | | | | | | (_) |
|
||||
// |_| |_| |_| \__,_||_|/_/ \_\| .__/ |_| |_| |_| \___/
|
||||
// | |
|
||||
// |_|
|
||||
// PhalApi Pro 专业版
|
||||
// 广州果创网络科技有限公司
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
//
|
||||
// 一、协议的许可和权利
|
||||
// 1. 您可以在完全遵守本协议的基础上,将本软件应用于商业用途;
|
||||
// 2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求;
|
||||
// 3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权,并独立承担与其内容相关的
|
||||
// 法律义务;
|
||||
// 4. 获得商业授权之后,您可以将本软件应用于商业用途,自授权时刻起,在技术支持期限内拥有通过
|
||||
// 指定的方式获得指定范围内的技术支持服务;
|
||||
//
|
||||
// 二、协议的约束和限制
|
||||
// 1. 未获商业授权之前,禁止将本软件用于商业用途(包括但不限于企业法人经营的产品、经营性产品
|
||||
// 以及以盈利为目的或实现盈利产品);
|
||||
// 2. 未获商业授权之前,禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
|
||||
// 方版本用于重新开发;
|
||||
// 3. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回并承担相应法律责任;
|
||||
//
|
||||
// 三、有限担保和免责声明
|
||||
// 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的;
|
||||
// 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未获得商业授权之前,我们不承
|
||||
// 诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任;
|
||||
// 3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任,但在不侵犯用户隐
|
||||
// 私信息的前提下,保留以任何方式获取用户信息及商品信息的权利;
|
||||
//
|
||||
// 有关本产品最终用户授权协议、商业授权与技术服务的详细内容,均由广州果创网络科技有限公司独家
|
||||
// 提供。广州果创网络科技有限公司拥有在不事先通知的情况下,修改授权协议的权力,修改后的协议对
|
||||
// 改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和
|
||||
// 等同的法律效力。您一旦开始修改、安装或使用本产品,即被视为完全理解并接受本协议的各项条款,
|
||||
// 在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本
|
||||
// 授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* DI依赖注入配置文件
|
||||
*
|
||||
* @license http://www.phalapi.net/license GPL 协议
|
||||
* @link http://www.phalapi.net/
|
||||
* @author dogstar <chanzonghuang@gmail.com> 2017-07-13
|
||||
*/
|
||||
|
||||
use PhalApi\Config\FileConfig;
|
||||
use PhalApi\Logger;
|
||||
use PhalApi\Logger\FileLogger;
|
||||
use PhalApi\Database\NotORMDatabase;
|
||||
use Base\Common\Context;
|
||||
use PhalApi\Error\ApiError;
|
||||
|
||||
// 对客户端加密的数据进行解密
|
||||
if (!empty($_REQUEST['encrypt_data'])) {
|
||||
// 公钥加密-由客户端完成-示例
|
||||
// $public_key = openssl_pkey_get_public(file_get_contents(dirname(__FILE__) . '/phalapi_pro_rsa.pub'));
|
||||
// openssl_public_encrypt('{"name":"phalapi pro"}', $crypted, $public_key);
|
||||
// $_REQUEST['encrypt_data'] = base64_encode($crypted);
|
||||
// K07LIy/V+cfZqfHgZpIPnmdkwlkFbTkyRXVXx2JfQrF3YFAIsFcHnC9TjGTezzyup2f0V24nYH71Uf3oXVIqz/X9wgPXW0AGAbJw4kDOIq9Jao5L0mG7t5FV/2DLzJ14qO6fvANv6e/Hy2pFBcKvHnQ8uRJ/wyAV+RpUAa21wCY6zzuo9OhS89NPZg4B4CUORR8SIuIqWTUlXHB0woFIfRiO/AKCGltc9oDkyzJFYVvgI0LwijkQUV9RoruCEx6EvmZY7OVLB5+AXwfnfFKKtCw3jucqHyclzXwCQoif8FXN1NzCNpYvwj7DbzqU/WzRgxnPgXQSyjbCDlw19BrWoQ==
|
||||
|
||||
// 私钥解密-由服务端完成
|
||||
$privateKey = file_get_contents(dirname(__FILE__) . '/phalapi_pro_rsa.pri');
|
||||
if($privateKey){
|
||||
openssl_private_decrypt(base64_decode($_REQUEST['encrypt_data']), $decrypted, $privateKey);
|
||||
$decrypted = $decrypted ? json_decode($decrypted, TRUE) : array();
|
||||
if(!empty($decrypted) && is_array($decrypted)) {
|
||||
$_REQUEST = array_merge($_REQUEST, $decrypted);
|
||||
$_POST = array_merge($_POST, $decrypted);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** ---------------- 基本注册 必要服务组件 ---------------- **/
|
||||
|
||||
$di = \PhalApi\DI();
|
||||
|
||||
// 配置
|
||||
$di->config = new FileConfig(API_ROOT . DIRECTORY_SEPARATOR . 'config');
|
||||
|
||||
// 调试模式,$_GET['__debug__']可自行改名
|
||||
$di->debug = !empty($_GET['__debug__']) ? true : $di->config->get('sys.debug');
|
||||
|
||||
// 日记纪录
|
||||
$di->logger = FileLogger::create($di->config->get('sys.file_logger'));
|
||||
|
||||
// 数据操作 - 基于NotORM
|
||||
$di->notorm = new NotORMDatabase($di->config->get('dbs'), $di->config->get('sys.notorm_debug'));
|
||||
|
||||
// 连接其他数据库(或项目原有的数据库,需要时去掉注释)
|
||||
// $di->notorm_plus = new NotORMDatabase($di->config->get('dbs_plus'), $di->config->get('sys.notorm_debug'));
|
||||
|
||||
// 当前上下文,通过签名验证后将会刷新此数据
|
||||
$di->context = new Context();
|
||||
|
||||
// JSON中文输出
|
||||
// $di->response = new \PhalApi\Response\JsonResponse(JSON_UNESCAPED_UNICODE);
|
||||
|
||||
// 错误处理
|
||||
$di->error = new ApiError();
|
||||
|
||||
/** ---------------- 第三应用 服务注册 ---------------- **/
|
||||
|
||||
// 加载plugins目录下的第三方应用初始化文件
|
||||
foreach (glob(API_ROOT . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . '*.php') as $pluginFile) {
|
||||
include_once $pluginFile;
|
||||
}
|
||||
|
||||
/** ---------------- 定制注册 可选服务组件 ---------------- **/
|
||||
|
||||
// 签名验证服务
|
||||
$di->filter = new \App\Common\Filter();
|
||||
// 如果你需要使用第二套加密算法,请开启以下服务
|
||||
// $di->filter = new \App\Common\SignFilter();
|
||||
|
||||
// 缓存
|
||||
$di->cache = new \PhalApi\Cache\FileCache(array('path' => API_ROOT . '/runtime'));
|
||||
|
||||
// 计划任务
|
||||
$mq = new \PhalApi\Task\MQ\DBMQ();
|
||||
$di->taskLite = new \PhalApi\Task\Lite($mq);
|
||||
|
||||
// 支持JsonP的返回
|
||||
// if (!empty($_GET['callback'])) {
|
||||
// $di->response = new \PhalApi\Response\JsonpResponse($_GET['callback']);
|
||||
// }
|
||||
|
||||
// 生成二维码扩展,参考示例:?s=App.Examples_QrCode.Png
|
||||
$di->qrcode = function() {
|
||||
return new \PhalApi\QrCode\Lite();
|
||||
};
|
||||
|
||||
// 拼音拓展
|
||||
$di->pinyin = function() {
|
||||
return new \PhalApi\Pinyin\Lite();
|
||||
};
|
||||
|
||||
// 条形码
|
||||
$di->barcode = function() {
|
||||
return new \PhalApi\BarCode\Lite();
|
||||
};
|
||||
|
||||
// 注册扩展的追踪器,将SQL写入日志文件
|
||||
// $di->tracer = function() {
|
||||
// return new \App\Common\Tracer();
|
||||
// };
|
||||
5
config/license.php
Normal file
5
config/license.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'serial_number' => '5768-B03B-C420-2DA5-7F80-91E5-D2F6-49C4',
|
||||
'active_time' => '2021-02-01 10:32:13',
|
||||
);
|
||||
60
config/mall.php
Normal file
60
config/mall.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
// 商城相关的配置
|
||||
return array(
|
||||
// 商品套餐的有效时间列表
|
||||
'product_expire_time_list' => array(
|
||||
2592000 => '1个月',
|
||||
5184000 => '2个月',
|
||||
7776000 => '3个月',
|
||||
15552000 => '6个月',
|
||||
31536000 => '1年',
|
||||
63072000 => '2年',
|
||||
),
|
||||
// 下单时购买数量列表
|
||||
'order_amount_list' => array(
|
||||
1 => 1,
|
||||
2 => 2,
|
||||
3 => 3,
|
||||
4 => 4,
|
||||
5 => 5,
|
||||
6 => 6,
|
||||
7 => 7,
|
||||
8 => 8,
|
||||
9 => 9,
|
||||
10 => 10,
|
||||
),
|
||||
// 默认支付配置
|
||||
'default_pay_type_list' => array(
|
||||
'alipay' => array(
|
||||
'switch' => 1,
|
||||
'mode' => 'production', // sandbox | production
|
||||
'name' => '支付宝',
|
||||
'app_id' => '2021001143654222',
|
||||
'seller_id' => '',
|
||||
'rsa_private_key' => "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCNK1j7s5ZdnwNyyb4kO6d9MhQrnl2FL8E1HGUCHlBHoFFKOS5Sd7UxW9CTByfvEL4xcle6v9ggQ5/njKI6aM3ZOvfmBKJKD3WVszvg+4eNU7O/FrVzbUGdt1QZvw17gLZh7qF2448y4mu1H5dWeTaLxBxBd5Uz1TshL8zt0usw789I2+REZa0zN2wzBZJN+cHl6oXIaUHG8cCTiLw8JBCLhbC3O7NJ9soWQluA0iaHgeQBDzhe9z2++lmQHvShzrrvpr33KQ3v8Pd6CntZOJewpOuE/ptFpQQM5gT2Xgj9ZvkP+072zq
|
||||
eSmh/z16OOycFDNORUGuPamqgvkUeTls9/AgMBAAECggEAdKo7OqBbBvoP7oBdfDI0o9mMI9QX86bYpFzX+R02OUt7gryo1IyLmMQJJkkGrqKGm/SkHfjH0zov3zsxItZUME90aYqw2EXYZiQeuzsD9j8TUDujL0Y+sOm+PhzPNp7TmzGMD
|
||||
OXZBTNr0d7Owi8gbfdfZpc+Hfz9hdqsIGtr5R8+FsRR7ikfKhD74E1jEF+zlksmsZLcaY+fiD1KGdFKt6LucBp9C+pB4py2agbAcfz158oAW1qsEVLFFTGUmg/KfBZ/0U74SJwICtKAV3W3fAWQu96J1SBPu4g8iDZVJcD1LBp+KJok/cYo
|
||||
ahxKGfshP/JBmbqe6amXFEYmZAt8cQKBgQDWQ8Zt/f2WwrUWvwxCigwhAGBWcQlW5wq0wAE6iU31+8in+WXYAhkZ169zsyOw7iq2fTOChvNmJvzdtYDHVqXEsGPmi2jnqYfZYOHfyUeiUqrY8czeSBKIrYgaEUB3UcBNWeojckTtWEiUbq8
|
||||
IBOQACuUUuEtGzV+8O36T+AmnaQKBgQCoqrLtUDpzSL49V041vKBtp7KS/pnS3uZ6gse1A+pYcDkIXjOSNHAhYwcU5tEnzLGTUGeGHf4ur9xKlppeQ2uuQZAkPAzdbNnYVWlPWs3SIZRZ/OPrjLHF441t9UWWfcTcNgdKQTIte5fElqOghi
|
||||
S3pLcNdPdinC0B9hmGEyyKpwKBgDGGQNszleW+43R6fC71EZCfMaVJQ0te486bgq0xB2AP7nVE5BFlir+6ZsdrZJiEtEKx9bH511CJOnFUfouUr4Qi8TRcjMbfHJNWHV9IetI+IVc7rIrEReRpl8fOrQPnVXeLjN7cjqn9eek1HCfSWZDY8
|
||||
9IyNtQKrFIpvjwdXL3hAoGBAJK2GHlQZedNiRz2SjN35dw8GJrAF7FS7gv2ohwUUc2noBRlTFqKflasOsa1l40VAglv0PzaLfUSR34hzhjccFfc87JxAYfBXSRN9xJtm8aCKvazgNWtRh0puCXDSUqED6602FaAq1LgxLzdg2roBBwxjICK
|
||||
E32U95lTJhR3rTDVAoGBAIZABIIX0bGm4htapAe+k5ylSV0jsnstwB5Ml0smJ78qlbbZbnJZLhi2erLqF93Qp+ts62zLF8NwO3ngppHMImjIs5n4yhsZPUK2VFOT19mTxEWy2JflAfIA0ifZCe4WqiW7Ui+m0Jl9sBloO1cIc01e5h2bl8B
|
||||
yMSNp7ZTRETUd", // 应用密钥
|
||||
'rsa_public_key' => '',
|
||||
'alipay_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAncBlnhc7nvHsuteKeSPbVAHGr4Tq35uAs52Sc/uNvHywAVW3T0/JuZhwLzfFbqHlnk9E3PeQeZHOHJ6Y9R1H1vPbeKLx0q7saEYDQjkT72rMtI/7lBhMSM0VvWZRAWZcrZ40HM8l6Ds6g9orTs2yPfCSdov0L1v5DUEdYGphJQ98fHWMXiT/3A8rCBWiAqWKYpgYwPE0sgBg+/r0zxuo/i+Yw6dyoC9fJdyy0YCHYW87VDdUZTbN+MwNDsnFKHShRM4ICe3VhPmU9su2NsoWc4aiUzQAwn/ror9hH/kai8dg+MrrQfMtTg2jfBPgi/eXWu01PVBVDuRmZ0eisF7CewIDAQAB', // 支付宝公钥
|
||||
),
|
||||
'paypal' => array(
|
||||
'switch' => 1,
|
||||
'mode' => 'sandbox',
|
||||
'name' => 'PayPal',
|
||||
'client_id' => 'AYRifj8mhRHYv163Szknac9SVLgP2eZ4Wnau-8vlnZX7rOEOm60t3EZIrIS7GvtwJz9lW4zubor6UYVD',
|
||||
'secret_key' => 'EE7LsZM46FroFLf4YxCNXfBI0ZtVCH_8NxhPSrYGovDPAr6YzSAAysB-SWLwJjuILTfe0d_GUNUOvu9t',
|
||||
'currency' => 'USD',
|
||||
),
|
||||
'cash' => array(
|
||||
'switch' => 0,
|
||||
'desc' => '请进行线下付款',
|
||||
'name' => '现金支付',
|
||||
),
|
||||
),
|
||||
);
|
||||
28
config/phalapi_pro_rsa.pri
Normal file
28
config/phalapi_pro_rsa.pri
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDGlj9IKNn4/C1N
|
||||
AQiAoNNEUZthoUncrIOZL5iiWrMH4FQieKlziwGFsklmSs1Ng+4lxV9sBiVubkiX
|
||||
yXqzIzhfW8pSDu7tzg7wLC8eSlIo7rH1cd+44Y8LC21mq8wWAhEx1NOAZhAuiwcg
|
||||
k5RRfd9NH3TdrBmA8oX96pR/IpnsmWqRuTec2rjyZmplhFH/pRQ+WE/s7cz7d7Eb
|
||||
ZZJC29ZOVofOu/GdnadYOYw29FvA4bzwgk25a/n5jpZvE4PPOavogkbzbwlky5xv
|
||||
KGJT2hN7EN41IkOBFIXP5mDPgQLS47iBtzNiPkV7cSJ/hJaZjEBt7oDuQW0trawW
|
||||
UF5W5EeFAgMBAAECggEAaVllgtNhJywooBQvPYWT7kdYpcdZlr7SJV7RmzeAiGoi
|
||||
WBMo2cnhadq2A5UlKr0VhmYZhAYSr23EBvn0pLnHexcH0tZnPDK3TAQ0jt4gjeRq
|
||||
9emOJNdL+jD6vZ/f6cD4/DWKajA632YTxt1jroOXBaPtbHeTJAwEtzpNwtBJVfDx
|
||||
qH8qIzEutSNf6ComYFzdbLEt/OjB15H2VzVqcfxrsQlH+cTzGfJz4vMpII2LvB+N
|
||||
GLTDm0GpFaE1t+k2MvXqiYeGRpH+sG178ALllYVsmoFcgO0W8WUfy7pQUubAEL26
|
||||
qFtMh7Sp0LzrkIDl/T6p7xHaUv2A74EyRxI7lMpT4QKBgQDvRqQgcvqIYxyEjO3i
|
||||
geaJUCEMDI0YGePlaYTI1b5wjv24x4QT+bimqcWbROYA+co3xGv+412Fs1d2INLr
|
||||
EdsFXwFaT3zs0ePGQlmZbbAmjccM6n1HjwktCRssjWvmGrKo35g0Ym193W1OkRAn
|
||||
shc+rmksVarXb4dHxmdJjxoU2QKBgQDUd47cMhN7sytgaWEVmoLOR1CVIUAWxh0X
|
||||
rtEVXGxXgOJa6ncPASs2hr4D9a5k1qI6f8HkihKTPB46ccum3l8HnndrdxvM/Pci
|
||||
h2KN9cnkceT0dsaXW/NCkAKNwAniJe2w9nBHyvmc4K8rctYU7GpFEqHLSUtH7WRX
|
||||
RvIRJI2sjQKBgBb6u8x5/mGW0yhPuJDmVNOfJG1ZzzsfUWm45o27KVz5/pf+YUrh
|
||||
0r/+0gGFbmltk+QjMxP5lgO/I4kuwdLdliE/7ItV0vOTfMKPoLdBd4dcWl99Labv
|
||||
r7vpgfiXZGNm8P2S67UsNsO9vj+rYtfNHLpiWatuVsf16BIWldjUq3aRAoGBAIct
|
||||
3k4I6k58y29W/LcDDJBz3ThU5HLY76+ewVaG7EOsM9hGbyOzyauyhPj9+kwcJzFz
|
||||
EYj3tCPLTyw+NKVhvDKbxz0vlheRJyfn3XOW2zImqNZFL8sjbJ2ABK/tbBxfp2A9
|
||||
G2kCIliGt8y8DqtXU7HIzfoKEwSbbIj/EYqIqD8NAoGBAIxA8UkVt4ZCMMv5kQ3X
|
||||
l8C9GcgK3ULAaogF0AYEltN50LkCv41Uj6PNzM4BRLC1ykG5Ev9+evrYWSuUJ8xC
|
||||
ljWG9yjrit6CV8MxHq6ZDuQbBH6Xk1RJ7Yq0yuzuLgjn3wZgUKX4l7Asv+c6WnlS
|
||||
9Dhjic0gNJgtwf0VbfUaXLeT
|
||||
-----END PRIVATE KEY-----
|
||||
9
config/phalapi_pro_rsa.pub
Normal file
9
config/phalapi_pro_rsa.pub
Normal file
@@ -0,0 +1,9 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxpY/SCjZ+PwtTQEIgKDT
|
||||
RFGbYaFJ3KyDmS+YolqzB+BUInipc4sBhbJJZkrNTYPuJcVfbAYlbm5Il8l6syM4
|
||||
X1vKUg7u7c4O8CwvHkpSKO6x9XHfuOGPCwttZqvMFgIRMdTTgGYQLosHIJOUUX3f
|
||||
TR903awZgPKF/eqUfyKZ7Jlqkbk3nNq48mZqZYRR/6UUPlhP7O3M+3exG2WSQtvW
|
||||
TlaHzrvxnZ2nWDmMNvRbwOG88IJNuWv5+Y6WbxODzzmr6IJG828JZMucbyhiU9oT
|
||||
exDeNSJDgRSFz+Zgz4EC0uO4gbczYj5Fe3Eif4SWmYxAbe6A7kFtLa2sFlBeVuRH
|
||||
hQIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
129
config/sys.php
Normal file
129
config/sys.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
// ---------------------------------------------------------------------------------
|
||||
// _____ _ _ _ _____
|
||||
// | __ \ | | | | /\ (_) | __ \
|
||||
// | |__) || |__ __ _ | | / \ _ __ _ | |__) |_ __ ___
|
||||
// | ___/ | '_ \ / _` || | / /\ \ | '_ \ | | | ___/| '__|/ _ \
|
||||
// | | | | | || (_| || | / ____ \ | |_) || | | | | | | (_) |
|
||||
// |_| |_| |_| \__,_||_|/_/ \_\| .__/ |_| |_| |_| \___/
|
||||
// | |
|
||||
// |_|
|
||||
// PhalApi Pro 专业版
|
||||
// 广州果创网络科技有限公司
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
//
|
||||
// 一、协议的许可和权利
|
||||
// 1. 您可以在完全遵守本协议的基础上,将本软件应用于商业用途;
|
||||
// 2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求;
|
||||
// 3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权,并独立承担与其内容相关的
|
||||
// 法律义务;
|
||||
// 4. 获得商业授权之后,您可以将本软件应用于商业用途,自授权时刻起,在技术支持期限内拥有通过
|
||||
// 指定的方式获得指定范围内的技术支持服务;
|
||||
//
|
||||
// 二、协议的约束和限制
|
||||
// 1. 未获商业授权之前,禁止将本软件用于商业用途(包括但不限于企业法人经营的产品、经营性产品
|
||||
// 以及以盈利为目的或实现盈利产品);
|
||||
// 2. 未获商业授权之前,禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
|
||||
// 方版本用于重新开发;
|
||||
// 3. 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回并承担相应法律责任;
|
||||
//
|
||||
// 三、有限担保和免责声明
|
||||
// 1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的;
|
||||
// 2. 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未获得商业授权之前,我们不承
|
||||
// 诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任;
|
||||
// 3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任,但在不侵犯用户隐
|
||||
// 私信息的前提下,保留以任何方式获取用户信息及商品信息的权利;
|
||||
//
|
||||
// 有关本产品最终用户授权协议、商业授权与技术服务的详细内容,均由广州果创网络科技有限公司独家
|
||||
// 提供。广州果创网络科技有限公司拥有在不事先通知的情况下,修改授权协议的权力,修改后的协议对
|
||||
// 改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和
|
||||
// 等同的法律效力。您一旦开始修改、安装或使用本产品,即被视为完全理解并接受本协议的各项条款,
|
||||
// 在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本
|
||||
// 授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。
|
||||
//
|
||||
// ---------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* 以下配置为系统级的配置,通常放置不同环境下的不同配置
|
||||
*
|
||||
* @license http://www.phalapi.net/license GPL 协议
|
||||
* @link http://www.phalapi.net/
|
||||
* @author dogstar <chanzonghuang@gmail.com> 2017-07-13
|
||||
*/
|
||||
|
||||
return array(
|
||||
/**
|
||||
* @var boolean 是否开启接口调试模式,开启后在客户端可以直接看到更多调试信息
|
||||
*/
|
||||
'debug' => false,
|
||||
|
||||
/**
|
||||
* @var boolean 是否开启NotORM调试模式,开启后仅针对NotORM服务开启调试模式
|
||||
*/
|
||||
'notorm_debug' => true,
|
||||
|
||||
/**
|
||||
* @var boolean 是否纪录SQL到日志,需要同时开启notorm_debug方可写入日志
|
||||
*/
|
||||
'enable_sql_log' => true,
|
||||
|
||||
/**
|
||||
* @var boolean 是否开启URI匹配,若未提供service(或s)参数且开启enable_uri_match才尝试进行URI路由匹配。例如:/App/User/Login映射到s=App.Usre.Login
|
||||
*/
|
||||
'enable_uri_match' => false,
|
||||
|
||||
/**
|
||||
* MC缓存服务器参考配置
|
||||
*/
|
||||
'mc' => array(
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 11211,
|
||||
),
|
||||
|
||||
/**
|
||||
* Redis缓存服务器参考配置
|
||||
*/
|
||||
'redis' => array(
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 6379,
|
||||
),
|
||||
|
||||
/**
|
||||
* 加密
|
||||
*/
|
||||
'crypt' => array(
|
||||
'mcrypt_iv' => '12345678', //8位
|
||||
),
|
||||
|
||||
/**
|
||||
* es配置
|
||||
*/
|
||||
'es' => array(
|
||||
'host' => '127.0.0.1:9200',
|
||||
),
|
||||
|
||||
/**
|
||||
* 文件日记
|
||||
*/
|
||||
'file_logger' => array(
|
||||
'log_folder' => API_ROOT . '/runtime', // 日记目录,需要使用已存在且有写入权限的绝对目录路径
|
||||
'level' => 7, // 需要纪录的日记级别,默认:Logger::LOG_LEVEL_DEBUG(1) | Logger::LOG_LEVEL_INFO(2) | Logger::LOG_LEVEL_ERROR(4)
|
||||
'date_format' => 'Y-m-d H:i:s', // 时间日期格式
|
||||
'debug' => NULL, // 是否调试,文件日记服务独有的调度开关,为NULL时默认跟随DI的调试模式
|
||||
'file_prefix' => '', // 文件名前缀,必须为有效的文件名组成部分,自动使用下划线连接系统文件
|
||||
'separator' => "|", // 日记内容分隔符,如:\t,注意使用双引号保持转义
|
||||
),
|
||||
|
||||
/**
|
||||
* 返回结果
|
||||
*/
|
||||
'response' => array(
|
||||
'structure_map' => array( // 返回结构字段映射配置
|
||||
'ret' => 'ret',
|
||||
'data' => 'data',
|
||||
'msg' => 'msg',
|
||||
'debug' => 'debug',
|
||||
),
|
||||
),
|
||||
);
|
||||
328
data/database_tables.md
Normal file
328
data/database_tables.md
Normal file
@@ -0,0 +1,328 @@
|
||||
# phalapi_pro数据库表结构设计
|
||||
|
||||
## pp_api_design表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20) unsigned||不为NULL|PRI|
|
||||
uid|int(11)|0|允许NULL||登录的用户ID
|
||||
api_name|varchar(100)||不为NULL||接口服务名称
|
||||
api_modules|varchar(50)||不为NULL||接口模块
|
||||
api_title|varchar(100)||不为NULL||接口标题
|
||||
api_desc|varchar(500)||不为NULL||接口描述
|
||||
api_request_params|varchar(1024)||不为NULL||接口请求参数(json)
|
||||
api_response_params|varchar(1024)||不为NULL||接口返回参数(json)
|
||||
api_response_example|varchar(1024)||不为NULL||接口返回示例(json)
|
||||
add_time|datetime||允许NULL||添加时间
|
||||
is_finish|tinyint(4)|0|不为NULL||是否完成(0表示未完成,1表示已完成)
|
||||
|
||||
|
||||
## pp_apps表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
app_key|varchar(100)||不为NULL|UNI|app_key,客户端key
|
||||
app_secret|varchar(200)||不为NULL||app密钥
|
||||
app_name|varchar(100)||允许NULL||应用名称
|
||||
app_status|tinyint(4)|1|不为NULL||应用状态(0表示禁止,1表示正常)
|
||||
app_limit|int(11)|0|不为NULL||应用每日接口限制,0表示无限制
|
||||
uid|int(11)|0|不为NULL||账号ID
|
||||
app_owner|varchar(100)||允许NULL||申请机构/授权机构
|
||||
verify_status|tinyint(4)|0|不为NULL||审核状态,0待审核1审核通过2审核不通过
|
||||
add_time|datetime||允许NULL||创建时间
|
||||
app_icon|varchar(255)||允许NULL||应用图标
|
||||
apply_reason|varchar(2000)||允许NULL||申请说明
|
||||
rsa_private_key|text||允许NULL||RSA密钥
|
||||
rsa_public_key|text||允许NULL||RSA公钥
|
||||
|
||||
|
||||
## pp_config表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
config_name|varchar(100)||允许NULL|UNI|配置名称
|
||||
config_desc|varchar(500)||允许NULL||配置描述
|
||||
config_value|text||允许NULL||配置值
|
||||
add_time|datetime||允许NULL||创建时间
|
||||
|
||||
|
||||
## pp_file表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
file_name|varchar(500)||允许NULL||文件名
|
||||
file_type|varchar(200)||允许NULL||文件类型
|
||||
file_size|int(11)|0|允许NULL||文件大小,单位:B
|
||||
file_url|varchar(1000)||允许NULL||文件相对链接
|
||||
web_url|varchar(1000)||允许NULL||对外访问的链接,或者CDN链接
|
||||
upload_time|datetime||允许NULL||上传时间
|
||||
|
||||
|
||||
## pp_global_at_config表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20)||不为NULL|PRI|
|
||||
uid|int(11)|0|不为NULL||添加的用户ID
|
||||
title|varchar(100)||不为NULL||配置名称
|
||||
type|tinyint(4)||不为NULL||获取方式(1 App.Auth.UserLogin ; 2 App.Auth.ApplyToken)
|
||||
param|varchar(512)||不为NULL||账号参数(json)
|
||||
num|int(11)|0|不为NULL||测试用例绑定用例数量
|
||||
|
||||
|
||||
## pp_login表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11) unsigned||不为NULL|PRI|自增id
|
||||
username|varchar(50)||不为NULL||登陆username
|
||||
login_status|tinyint(4)||不为NULL||登陆状态(1登陆成功, 2密码错误, 3账号被禁用, 4不是管理员,5账号不存在)
|
||||
login_ip|varchar(30)||不为NULL||登陆ip
|
||||
login_time|datetime||允许NULL||登录时间
|
||||
|
||||
|
||||
## pp_mall_config表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
config_name|varchar(100)||允许NULL|UNI|配置名称
|
||||
config_desc|varchar(500)||允许NULL||配置描述
|
||||
config_value|text||允许NULL||配置值
|
||||
add_time|datetime||允许NULL||创建时间
|
||||
|
||||
|
||||
## pp_mall_flow表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
member_id|int(11)||不为NULL|MUL|
|
||||
product_name|varchar(200)||不为NULL||接口名称
|
||||
product_key|varchar(100)||不为NULL||接口服务
|
||||
product_key_lower|varchar(100)||不为NULL|MUL|接口服务,小写
|
||||
total_amount|int(11)|0|不为NULL||总次数
|
||||
used_amount|int(11)|0|不为NULL||已使用次数
|
||||
expire_time|bigint(11)|0|不为NULL||过期时间戳
|
||||
add_time|datetime||允许NULL||
|
||||
flow_status|tinyint(4)|0|不为NULL||流量套餐状态,0已失效10未使用20使用中30已用完40已过期
|
||||
product_type|varchar(50)||不为NULL||接口套餐类型
|
||||
order_id|varchar(100)||不为NULL||
|
||||
username|varchar(50)||不为NULL||
|
||||
finish_time|datetime||允许NULL||消耗完时间
|
||||
|
||||
|
||||
## pp_mall_order表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
member_id|int(11)|0|不为NULL||会员ID
|
||||
order_id|varchar(100)||不为NULL|UNI|订单编号
|
||||
order_name|varchar(500)||不为NULL||订单名称
|
||||
price|decimal(10,2)|0.00|不为NULL||订单总价格,单位:元
|
||||
add_time|datetime||允许NULL||下单时间
|
||||
product_key|varchar(200)||不为NULL||产品key
|
||||
product_type|varchar(50)||不为NULL||产品类型
|
||||
product_expire_time|int(11)||不为NULL||有效时间,单位:秒
|
||||
product_amount|int(11)||不为NULL||产品规格数量
|
||||
order_status|tinyint(4)|0|不为NULL||订单状态,0待支付10已支付20已购买30已退款40已取消
|
||||
product_id|int(11)|0|不为NULL||产品ID
|
||||
product_expire_time_desc|varchar(100)||不为NULL||产品有效时间描述
|
||||
username|varchar(50)||不为NULL||账号
|
||||
num|int(11)|0|不为NULL||购买数量
|
||||
pay_type|varchar(20)||不为NULL||支付方式,alipay支付宝,paypal,cash现金
|
||||
note|text||允许NULL||买家备注
|
||||
is_deliver|tinyint(4)|0|不为NULL||是否发货,1是0否
|
||||
pay_time|datetime||允许NULL||支付时间
|
||||
third_payment_id|varchar(40)||不为NULL||第三方支付ID
|
||||
|
||||
|
||||
## pp_mall_product表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
product_name|varchar(200)||不为NULL||产品名称
|
||||
product_key|varchar(100)||不为NULL||产品key
|
||||
product_type|varchar(50)||不为NULL||产品类型,api_free为免费试用接口流量,api_buy为付费购买接口流量
|
||||
price|decimal(10,2)|0.00|不为NULL||产品售价,单位:元
|
||||
original_price|decimal(10,2)|0.00|不为NULL||产品原始价格,用于对比,单位:元
|
||||
amount|int(11)|1|不为NULL||产品规格数量,例如接口流量多少次
|
||||
expire_time|int(11)|86400|不为NULL||产品有效时间,单位:秒,多少秒内有效
|
||||
product_desc|text||允许NULL||套餐说明
|
||||
product_status|tinyint(4)|1|不为NULL||产品状态,0关闭1正常
|
||||
add_time|datetime||允许NULL||添加时间
|
||||
expire_time_desc|varchar(100)||允许NULL||有效时间描述
|
||||
product_key_lower|varchar(200)||不为NULL||小写
|
||||
|
||||
|
||||
## pp_member表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20) unsigned||不为NULL|PRI|
|
||||
username|varchar(50)||不为NULL|UNI|账号
|
||||
salt|varchar(64)||不为NULL||盐值
|
||||
password|varchar(64)||允许NULL||密码
|
||||
register_time|datetime||允许NULL||注册时间
|
||||
avatar|varchar(500)||允许NULL||头像
|
||||
nickname|varchar(100)||允许NULL||昵称
|
||||
email|varchar(100)||允许NULL||邮箱
|
||||
sex|varchar(10)||允许NULL||性别,0未知1男2女
|
||||
mobile|varchar(20)||允许NULL||手机号
|
||||
ip|varchar(30)||允许NULL||注册IP
|
||||
member_level|smallint(4)|0|不为NULL||用户等级(0~99区间表示用户,100~199区间表示开发者, 200~255区间表示内部管理员)
|
||||
member_status|tinyint(4)|1|不为NULL||用户状态(0表示禁止,1表示正常)
|
||||
uuid|varchar(64)||允许NULL||UUID,全局唯一ID
|
||||
|
||||
|
||||
## pp_operation表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
project|varchar(20)||不为NULL||项目
|
||||
path|varchar(255)||不为NULL||路径
|
||||
title|varchar(200)||允许NULL||菜单标题
|
||||
white_list|text||允许NULL||账号ID白名单,多个使用英文逗号分割
|
||||
|
||||
|
||||
## pp_operation_permission表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
op_id|int(11)|0|不为NULL||菜单操作ID
|
||||
is_allow|tinyint(4)|0|不为NULL||是否允许,1允许0禁止
|
||||
member_level|smallint(6)|0|不为NULL||
|
||||
project|varchar(200)||不为NULL||项目
|
||||
|
||||
|
||||
## pp_requests表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
service|varchar(150)||不为NULL|MUL|接口名称
|
||||
app_key|varchar(64)||允许NULL||app_key
|
||||
uid|int(11)|0|允许NULL||登录的用户ID
|
||||
ret|int(11)|200|允许NULL||返回状态码
|
||||
msg|varchar(1024)||允许NULL||返回的错误信息
|
||||
excute_time|int(11)|0|允许NULL||执行的时间,单位毫秒
|
||||
request_time|datetime||允许NULL|MUL|完成请求的时间
|
||||
ip|varchar(30)||允许NULL||客户端IP
|
||||
method|varchar(20)||允许NULL||HTTP请求方式
|
||||
|
||||
|
||||
## pp_requests_limit_log表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
app_key|varchar(100)||不为NULL|MUL|app_key,客户端key
|
||||
service|varchar(100)||不为NULL||接口服务
|
||||
record_time|int(11)|0|不为NULL||请求次数
|
||||
fail_time|int(11)|0|不为NULL||超出次数
|
||||
record_day|date||不为NULL||记录时间
|
||||
|
||||
|
||||
## pp_rights表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|ID
|
||||
app_key|varchar(100)||不为NULL||app_key,空表示全部应用
|
||||
service|varchar(150)||不为NULL|MUL|接口服务名称
|
||||
is_allow|tinyint(4)|1|不为NULL||是否允许,1是0否
|
||||
admin_uid|int(11)|0|允许NULL||管理员ID
|
||||
add_time|datetime||允许NULL||添加时间
|
||||
member_type|smallint(6)|0|不为NULL||开发者账号类型,100~199之间,0表示全部类型
|
||||
service_lower|varchar(150)||不为NULL|MUL|接口服务名称,方便查找
|
||||
uid|int(11)|0|不为NULL||账号ID,0表示全部账号
|
||||
|
||||
|
||||
## pp_rights_service表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
service|varchar(150)||不为NULL||接口服务
|
||||
service_lower|varchar(150)||不为NULL|UNI|接口服务名称小写,以便查找
|
||||
service_desc|varchar(1000)||允许NULL||接口描述
|
||||
add_time|datetime||允许NULL||添加时间
|
||||
|
||||
|
||||
## pp_sms_cache表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20) unsigned||不为NULL|PRI|
|
||||
aliyunKey|varchar(100)||不为NULL||缓存key
|
||||
code|int(11)||不为NULL||验证码
|
||||
expire_in|int(11)||不为NULL||过期时间(时间戳)
|
||||
times|int(11)||不为NULL||尝试次数
|
||||
|
||||
|
||||
## pp_task_mq表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20) unsigned||不为NULL|PRI|
|
||||
service|varchar(200)||允许NULL||接口服务名称
|
||||
params|text||允许NULL||json格式的参数
|
||||
create_time|int(11)|0|允许NULL||
|
||||
ext_data|text||允许NULL||json data here
|
||||
|
||||
|
||||
## pp_task_progress表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20)||不为NULL|PRI|
|
||||
title|varchar(200)||允许NULL||任务标题
|
||||
trigger_class|varchar(50)||允许NULL||触发器类名
|
||||
fire_params|varchar(255)||允许NULL||需要传递的参数,格式自定
|
||||
interval_time|int(11)|0|允许NULL||执行间隔,单位:秒
|
||||
enable|tinyint(1)|1|允许NULL||是否启动,1启动,0禁止
|
||||
result|varchar(255)||允许NULL||运行的结果,以json格式保存
|
||||
state|tinyint(1)|0|允许NULL||进程状态,0空闲,1运行中,-1异常退出
|
||||
last_fire_time|int(11)|0|允许NULL||上一次运行时间
|
||||
api_params|text||允许NULL||接口服务的初始参数
|
||||
crontab_interval_time|int(11)|60|不为NULL||执行间隔周期时间
|
||||
crontab_last_run_time|int(11)|0|允许NULL||执行时间
|
||||
add_time|datetime||允许NULL||添加时间
|
||||
|
||||
|
||||
## pp_test_log表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20) unsigned||不为NULL|PRI|
|
||||
sample_id|bigint(20)||不为NULL||
|
||||
test_time|datetime||不为NULL||测试的时间
|
||||
test_status|tinyint(4)|0|不为NULL||用例测试结果(0为未测试,1测试通过,2测试失败,3网络调用无返回)
|
||||
test_result|varchar(1024)||不为NULL||测试结果
|
||||
test_detail|varchar(1024)||允许NULL||失败原因
|
||||
|
||||
|
||||
## pp_test_sample表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|bigint(20) unsigned||不为NULL|PRI|
|
||||
uid|int(11)|0|不为NULL||登录的用户ID
|
||||
api_name|varchar(50)||不为NULL||待测试的接口名
|
||||
sample_name|varchar(50)||不为NULL||用例名字
|
||||
sample_request|varchar(1024)||不为NULL||用例的请求参数(json)
|
||||
sample_response|varchar(1024)||不为NULL||用例的返回参数(json)
|
||||
sample_host|varchar(255)||不为NULL||测试域名
|
||||
access_token|varchar(255)||不为NULL||测试使用的accessToken
|
||||
sample_status|tinyint(4)|0|不为NULL||用例测试结果(0为测试,1测试通过,2测试失败,3网络调用无返回,4未找到配置)
|
||||
add_time|datetime||允许NULL||添加时间
|
||||
last_time|datetime||允许NULL||最后测试时间
|
||||
|
||||
|
||||
## pp_work_order表结构
|
||||
字段|类型|默认值|是否允许为NULL|索引|注释
|
||||
---|---|---|---|---|---
|
||||
id|int(11)||不为NULL|PRI|
|
||||
order_no|varchar(64)||不为NULL||订单号
|
||||
title|text||允许NULL||工单标题
|
||||
module_id|int(11)|0|不为NULL||模块id
|
||||
problem_desc|text||不为NULL||问题描述
|
||||
email|text||允许NULL||邮箱
|
||||
phone_pre|varchar(255)||不为NULL||手机前缀
|
||||
phone|varchar(11)||不为NULL||手机号码
|
||||
file_ids|text||允许NULL||文件ids
|
||||
status|tinyint(1) unsigned|1|不为NULL||审核状态:1待受理,2待回复 3已解决 4已关闭
|
||||
chat_recode|text||不为NULL||聊天记录
|
||||
admin_id|int(11)|0|不为NULL||用户ID
|
||||
accept_service_id|int(11)|0|不为NULL||受理客户id
|
||||
accept_service_name|varchar(255)||不为NULL||受理客户名字
|
||||
add_time|datetime||允许NULL||
|
||||
update_time|datetime||允许NULL||更新时间
|
||||
app_key|varchar(100)||不为NULL||
|
||||
|
||||
|
||||
483
data/phalapi_pro.sql
Normal file
483
data/phalapi_pro.sql
Normal file
@@ -0,0 +1,483 @@
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
DROP TABLE IF EXISTS `pp_config`;
|
||||
|
||||
CREATE TABLE `pp_config` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`config_name` varchar(100) DEFAULT '' COMMENT '配置名称',
|
||||
`config_desc` varchar(500) DEFAULT '' COMMENT '配置描述',
|
||||
`config_value` text COMMENT '配置值',
|
||||
`add_time` datetime COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `config_name` (`config_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '配置表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_file`;
|
||||
|
||||
CREATE TABLE `pp_file` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`file_name` varchar(500) DEFAULT '' COMMENT '文件名',
|
||||
`file_type` varchar(200) DEFAULT '' COMMENT '文件类型',
|
||||
`file_size` int(11) DEFAULT '0' COMMENT '文件大小,单位:B',
|
||||
`file_url` varchar(1000) DEFAULT '' COMMENT '文件相对链接',
|
||||
`web_url` varchar(1000) DEFAULT '' COMMENT '对外访问的链接,或者CDN链接',
|
||||
`upload_time` datetime COMMENT '上传时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '素材文件表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_member`;
|
||||
|
||||
CREATE TABLE `pp_member` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(50) NOT NULL COMMENT '账号',
|
||||
`salt` varchar(64) NOT NULL COMMENT '盐值',
|
||||
`password` varchar(64) DEFAULT NULL COMMENT '密码',
|
||||
`register_time` datetime COMMENT '注册时间',
|
||||
`avatar` varchar(500) DEFAULT '' COMMENT '头像',
|
||||
`nickname` varchar(100) DEFAULT '' COMMENT '昵称',
|
||||
`email` varchar(100) DEFAULT '' COMMENT '邮箱',
|
||||
`sex` varchar(10) DEFAULT '' COMMENT '性别,0未知1男2女',
|
||||
`mobile` varchar(20) DEFAULT '' COMMENT '手机号',
|
||||
`ip` varchar(60) DEFAULT '' COMMENT '注册IP',
|
||||
`uuid` varchar(64) DEFAULT '' COMMENT 'UUID,全局唯一ID',
|
||||
`member_level` smallint(4) NOT NULL DEFAULT 0 COMMENT '用户等级(0~99区间表示用户,100~199区间表示开发者, 200~255区间表示内部管理员)',
|
||||
`member_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '用户状态(0表示禁止,1表示正常)',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username` (`username`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '用户表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_requests`;
|
||||
|
||||
CREATE TABLE `pp_requests` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`service` varchar(150) NOT NULL DEFAULT '' COMMENT '接口名称',
|
||||
`app_key` varchar(64) DEFAULT '' COMMENT 'app_key',
|
||||
`uid` int(11) DEFAULT '0' COMMENT '登录的用户ID',
|
||||
`ret` int(11) DEFAULT '200' COMMENT '返回状态码',
|
||||
`msg` text COMMENT '返回的错误信息',
|
||||
`excute_time` int(11) DEFAULT '0' COMMENT '执行的时间,单位毫秒',
|
||||
`request_time` datetime COMMENT '完成请求的时间',
|
||||
`ip` varchar(60) DEFAULT '' COMMENT '客户端IP',
|
||||
`method` varchar(20) DEFAULT '' COMMENT 'HTTP请求方式',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `service` (`service`),
|
||||
KEY `request_time` (`request_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '请求日志表';
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `pp_apps`;
|
||||
|
||||
CREATE TABLE `pp_apps` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`app_key` varchar(100) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'app_key,客户端key',
|
||||
`app_secret` varchar(200) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'app密钥',
|
||||
`app_name` varchar(100) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '应用名称',
|
||||
`app_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '应用状态(0表示禁止,1表示正常)',
|
||||
`app_limit` int(11) NOT NULL DEFAULT '0' COMMENT '应用每日接口限制,0表示无限制',
|
||||
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '账号ID',
|
||||
`app_owner` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '申请机构/授权机构',
|
||||
`verify_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '审核状态,0待审核1审核通过2审核不通过',
|
||||
`add_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`app_icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '应用图标',
|
||||
`apply_reason` varchar(2000) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '申请说明',
|
||||
`rsa_private_key` text COMMENT 'RSA密钥',
|
||||
`rsa_public_key` text COMMENT 'RSA公钥',
|
||||
`allow_ips` text COMMENT 'App应用访问的IP白名单,没有不限制,多个用英文逗号分割',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `app_key` (`app_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '应用表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_login`;
|
||||
|
||||
CREATE TABLE `pp_login` (
|
||||
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '登陆username',
|
||||
`login_status` tinyint(4) NOT NULL COMMENT '登陆状态(1登陆成功, 2密码错误, 3账号被禁用, 4不是管理员,5账号不存在)',
|
||||
`login_ip` varchar(60) NOT NULL COMMENT '登陆ip',
|
||||
`login_time` datetime COMMENT '登录时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '登陆日志表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_rights`;
|
||||
|
||||
CREATE TABLE `pp_rights` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`app_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'app_key,空表示全部应用',
|
||||
`service` varchar(150) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '接口服务名称',
|
||||
`is_allow` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否允许,1是0否',
|
||||
`admin_uid` int(11) DEFAULT '0' COMMENT '管理员ID',
|
||||
`add_time` datetime DEFAULT NULL COMMENT '添加时间',
|
||||
`member_type` smallint(6) NOT NULL DEFAULT '0' COMMENT '开发者账号类型,100~199之间,0表示全部类型',
|
||||
`service_lower` varchar(150) NOT NULL DEFAULT '' COMMENT '接口服务名称,方便查找',
|
||||
`uid` int(11) NOT NULL DEFAULT '0' COMMENT '账号ID,0表示全部账号',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_s_ak` (`service`,`app_key`),
|
||||
INDEX (`service_lower`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '接口权限表';
|
||||
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '101', 'App.Auth.UserLogin', '0', '', 'app.auth.userlogin', '1', '1', '2020-04-14 14:55:19');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '101', 'App.Auth.AppUserLogin', '0', '', 'app.auth.appuserlogin', '1', '1', '2020-04-14 15:20:52');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '100', 'App.HelloWorld.Say', '0', '', 'app.helloworld.say', '1', '1', '2020-04-14 16:08:10');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '100', 'App.Auth.AppUserLogin', '0', '', 'app.auth.appuserlogin', '1', '1', '2020-04-14 16:08:53');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '101', 'App.Auth.ApplyToken', '0', '', 'app.auth.applytoken', '1', '1', '2020-04-15 10:03:52');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '100', 'App.Auth.ApplyToken', '0', '', 'app.auth.applytoken', '1', '1', '2020-04-15 10:25:09');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '100', 'App.Auth.UserLogin', '0', '', 'app.auth.userlogin', '1', '1', '2020-04-15 10:41:42');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '100', 'App.HelloWorld.HiApp', '0', '', 'app.helloworld.hiapp', '1', '1', '2020-04-15 11:45:28');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '100', 'App.HelloWorld.HiMember', '0', '', 'app.helloworld.himember', '1', '1', '2020-04-15 11:45:28');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '101', 'App.HelloWorld.HiApp', '0', '', 'app.helloworld.hiapp', '1', '1', '2020-04-15 11:45:29');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '101', 'App.HelloWorld.HiMember', '0', '', 'app.helloworld.himember', '1', '1', '2020-04-15 11:45:30');
|
||||
insert into `pp_rights` ( `member_type`, `service`, `uid`, `app_key`, `service_lower`, `is_allow`, `admin_uid`, `add_time`) values ( '101', 'App.HelloWorld.Say', '0', '', 'app.helloworld.say', '1', '1', '2020-04-15 11:45:32');
|
||||
|
||||
DROP TABLE IF EXISTS `pp_task_progress`;
|
||||
|
||||
CREATE TABLE `pp_task_progress` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(200) DEFAULT '' COMMENT '任务标题',
|
||||
`trigger_class` varchar(50) DEFAULT '' COMMENT '触发器类名',
|
||||
`fire_params` varchar(255) DEFAULT '' COMMENT '需要传递的参数,格式自定',
|
||||
`interval_time` int(11) DEFAULT '0' COMMENT '执行间隔,单位:秒',
|
||||
`enable` tinyint(1) DEFAULT '1' COMMENT '是否启动,1启动,0禁止',
|
||||
`result` text COMMENT '运行的结果,以json格式保存',
|
||||
`state` tinyint(1) DEFAULT '0' COMMENT '进程状态,0空闲,1运行中,-1异常退出',
|
||||
`last_fire_time` int(11) DEFAULT '0' COMMENT '上一次运行时间',
|
||||
`api_params` text COMMENT '接口服务的初始参数',
|
||||
`crontab_interval_time` int(11) NOT NULL DEFAULT 60 COMMENT '执行间隔周期时间',
|
||||
`crontab_last_run_time` int(11) DEFAULT 0 COMMENT '执行时间',
|
||||
`add_time` datetime NULL COMMENT '添加时间',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '计划任务表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_task_mq`;
|
||||
|
||||
CREATE TABLE `pp_task_mq` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`service` varchar(200) DEFAULT '' COMMENT '接口服务名称',
|
||||
`params` text COMMENT 'json格式的参数',
|
||||
`create_time` int(11) DEFAULT '0',
|
||||
`ext_data` text COMMENT 'json data here',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '计划任务MQ表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_api_design`;
|
||||
|
||||
CREATE TABLE `pp_api_design` (
|
||||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uid` int(11) NULL DEFAULT 0 COMMENT '登录的用户ID',
|
||||
`api_name` varchar(100) NOT NULL COMMENT '接口服务名称',
|
||||
`api_modules` varchar(50) NOT NULL COMMENT '接口模块',
|
||||
`api_title` varchar(100) NOT NULL COMMENT '接口标题',
|
||||
`api_desc` text COMMENT '接口描述',
|
||||
`api_request_params` text COMMENT '接口请求参数(json)',
|
||||
`api_response_params` text COMMENT '接口返回参数(json)',
|
||||
`api_response_example` text COMMENT '接口返回示例(json)',
|
||||
`add_time` datetime NULL COMMENT '添加时间',
|
||||
`is_finish` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否完成(0表示未完成,1表示已完成)',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET= utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '接口设计表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_test_sample`;
|
||||
|
||||
CREATE TABLE `pp_test_sample` (
|
||||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uid` int(11) NOT NULL DEFAULT 0 COMMENT '登录的用户ID',
|
||||
`api_name` varchar(50) NOT NULL COMMENT '待测试的接口名',
|
||||
`sample_name` varchar(50) NOT NULL COMMENT '用例名字',
|
||||
`sample_request` varchar(1024) NOT NULL COMMENT '用例的请求参数(json)',
|
||||
`sample_response` varchar(1024) NOT NULL COMMENT '用例的返回参数(json)',
|
||||
`sample_host` varchar(255) NOT NULL DEFAULT '' COMMENT '测试域名',
|
||||
`access_token` varchar(255) NOT NULL COMMENT '测试使用的accessToken',
|
||||
`sample_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '用例测试结果(0为测试,1测试通过,2测试失败,3网络调用无返回,4未找到配置)',
|
||||
`add_time` datetime NULL COMMENT '添加时间',
|
||||
`last_time` datetime NULL DEFAULT NULL COMMENT '最后测试时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '请求用例表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_test_log`;
|
||||
|
||||
CREATE TABLE `pp_test_log` (
|
||||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`sample_id` bigint(20) NOT NULL,
|
||||
`test_time` datetime NOT NULL COMMENT '测试的时间',
|
||||
`test_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '用例测试结果(0为未测试,1测试通过,2测试失败,3网络调用无返回)',
|
||||
`test_result` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '测试结果',
|
||||
`test_detail` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '失败原因',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用例测试结果快照表';
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `pp_sms_cache`;
|
||||
|
||||
CREATE TABLE `pp_sms_cache` (
|
||||
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`aliyunKey` varchar(100) NOT NULL COMMENT '缓存key',
|
||||
`code` int(11) NOT NULL COMMENT '验证码',
|
||||
`expire_in` int(11) NOT NULL COMMENT '过期时间(时间戳)',
|
||||
`times` int(11) NOT NULL COMMENT '尝试次数',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '阿里云短信缓存表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_global_at_config`;
|
||||
|
||||
CREATE TABLE `pp_global_at_config` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`uid` int(11) NOT NULL DEFAULT 0 COMMENT '添加的用户ID',
|
||||
`title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '配置名称',
|
||||
`type` tinyint(4) NOT NULL COMMENT '获取方式(1 App.Auth.UserLogin ; 2 App.Auth.ApplyToken)',
|
||||
`param` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号参数(json)',
|
||||
`num` int(11) NOT NULL DEFAULT 0 COMMENT '测试用例绑定用例数量',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '全局access token配置表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_requests_limit_log`;
|
||||
|
||||
CREATE TABLE `pp_requests_limit_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`app_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'app_key,客户端key',
|
||||
`service` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '接口服务',
|
||||
`record_time` int(11) NOT NULL DEFAULT 0 COMMENT '请求次数',
|
||||
`fail_time` int(11) NOT NULL DEFAULT 0 COMMENT '超出次数',
|
||||
`record_day` date NOT NULL COMMENT '记录时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `udx_k_d_s`(`app_key`, `record_day`, `service`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '应用次数限制记录表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_rights_service`;
|
||||
CREATE TABLE `pp_rights_service` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`service` varchar(150) NOT NULL DEFAULT '' COMMENT '接口服务',
|
||||
`service_lower` varchar(150) NOT NULL DEFAULT '' COMMENT '接口服务名称小写,以便查找',
|
||||
`service_desc` varchar(1000) DEFAULT '' COMMENT '接口描述',
|
||||
`add_time` datetime DEFAULT NULL COMMENT '添加时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `service_lower` (`service_lower`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT = '接口服务权限操作表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_operation`;
|
||||
CREATE TABLE `pp_operation` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`project` varchar(20) NOT NULL DEFAULT '' COMMENT '项目',
|
||||
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '路径',
|
||||
`title` varchar(200) DEFAULT '' COMMENT '菜单标题',
|
||||
`white_list` text COMMENT '账号ID白名单,多个使用英文逗号分割',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=204 DEFAULT CHARSET=utf8mb4 COMMENT='菜单操作';
|
||||
|
||||
INSERT INTO `pp_operation` VALUES ('49', 'admin', '/user', '账号管理', ''), ('50', 'admin', '/user/list', '账号列表', ''), ('51', 'admin', '/user/add', '添加账号', ''), ('52', 'admin', '/user/look-over', '账号信息', ''), ('53', 'admin', '/user/compile\'', '编辑账号', ''), ('55', 'admin', '/application/list', '应用列表', ''), ('56', 'admin', '/application/add', '添加应用', ''), ('57', 'admin', '/application/update', '修改应用', ''), ('64', 'platform', '/application', '应用管理', ''), ('65', 'platform', '/application/list', '应用管理列表', ''), ('66', 'platform', '/permission', '接口权限', ''), ('67', 'platform', '/permission/settings', '接口权限', ''), ('68', 'platform', '/account', '开发者中心', ''), ('69', 'platform', '/account/accountInfo', '开发者资料', ''), ('70', 'platform', '/account/resetPassword', '修改密码', ''), ('71', 'platform', '/account/accountSettings', '修改资料', ''), ('165', 'admin', '/application', '应用管理', ''), ('166', 'admin', '/user/compile', '账号信息修改', ''), ('167', 'admin', '/techzones/apis-mangement', '接口权限', ''), ('168', 'admin', '/techzones', '接口管理', ''), ('169', 'admin', '/techzones/techzones/assignment', '接口权限分配', ''), ('170', 'admin', '/techzones/techzones/assignmentList', '权限预览', ''), ('171', 'admin', '/techzones/techzones/assignmentRules', '接口权限规则设置', ''), ('172', 'admin', '/techzones/techzones/apisList', '接口服务操作列表', ''), ('173', 'admin', '/techzones/apitest', '接口测试', ''), ('174', 'admin', '/techzones/design', '可视化接口设计', ''), ('175', 'admin', '/techzones/apitest/test', '接口测试列表', ''), ('176', 'admin', '/techzones/apitest/add', '添加新用例', ''), ('177', 'admin', '/techzones/apitest/compile', '编辑用例', ''), ('178', 'admin', '/techzones/apitest/look', '查看用例', ''), ('179', 'admin', '/pictures', '素材库', ''), ('180', 'admin', '/techzones/apitest/config', '全局access_token配置', ''), ('181', 'admin', '/pictures/assets_manage', '文件管理', ''), ('182', 'admin', '/pictures/assets_upload', '上传文件', ''), ('183', 'admin', '/account', '个人中心', ''), ('184', 'admin', '/account/accountInfo', '个人资料', ''), ('185', 'admin', '/account/loginRecord', '最近登录', ''), ('186', 'admin', '/account/resetPassword', '修改密码', ''), ('187', 'admin', '/account/accountSettings', '个人资料修改', ''), ('188', 'admin', '/configuration', '配置管理', ''), ('189', 'admin', '/configuration/list', '配置管理列表', ''), ('190', 'admin', '/configuration/add', '添加配置', ''), ('191', 'admin', '/scheduledtask', '计划任务', ''), ('192', 'admin', '/configuration/edit', '修改配置', ''), ('193', 'admin', '/scheduledtask/list', '计划任务列表', ''), ('194', 'admin', '/scheduledtask/add', '添加计划任务', ''), ('195', 'admin', '/scheduledtask/edit', '编辑计划任务', ''), ('196', 'admin', '/database/statis', '数据库统计', ''), ('197', 'admin', '/stats/port_stats', '接口统计', ''), ('198', 'admin', '/database', '数据库管理', ''), ('199', 'admin', '/database/process', '数据库实时进程', ''), ('200', 'admin', '/stats', '统计', ''), ('201', 'admin', '/stats/register_stats', '注册统计', ''), ('202', 'admin', '/stats/login_stats', '登录统计', ''), ('203', 'admin', '/stats/accessLog', '访问日志', '');
|
||||
|
||||
DROP TABLE IF EXISTS `pp_operation_permission`;
|
||||
CREATE TABLE `pp_operation_permission` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`op_id` int(11) NOT NULL DEFAULT '0' COMMENT '菜单操作ID',
|
||||
`is_allow` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否允许,1允许0禁止',
|
||||
`member_level` smallint(6) NOT NULL DEFAULT '0',
|
||||
`project` varchar(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8mb4 COMMENT='菜单操作授权';
|
||||
|
||||
INSERT INTO `pp_operation_permission` VALUES ('55', '68', '1', '100', 'platform'), ('56', '68', '1', '101', 'platform'), ('57', '69', '1', '101', 'platform'), ('58', '69', '1', '100', 'platform'), ('59', '71', '1', '101', 'platform'), ('60', '71', '1', '100', 'platform'), ('61', '70', '1', '101', 'platform'), ('62', '70', '1', '100', 'platform'), ('65', '67', '1', '101', 'platform'), ('66', '67', '1', '100', 'platform'), ('67', '66', '1', '101', 'platform'), ('68', '66', '1', '100', 'platform'), ('71', '64', '1', '100', 'platform'), ('72', '64', '1', '101', 'platform'), ('74', '52', '1', '200', 'admin'), ('75', '50', '1', '200', 'admin'), ('76', '53', '1', '200', 'admin'), ('77', '166', '1', '200', 'admin'), ('78', '183', '1', '200', 'admin'), ('79', '51', '1', '200', 'admin'), ('80', '174', '1', '200', 'admin'), ('81', '184', '1', '200', 'admin'), ('82', '178', '1', '200', 'admin'), ('83', '187', '1', '200', 'admin'), ('84', '180', '1', '200', 'admin'), ('85', '185', '1', '200', 'admin'), ('86', '177', '1', '200', 'admin'), ('87', '186', '1', '200', 'admin'), ('88', '176', '1', '200', 'admin'), ('89', '56', '1', '200', 'admin'), ('90', '49', '1', '200', 'admin'), ('92', '57', '1', '200', 'admin'), ('93', '175', '1', '200', 'admin'), ('94', '188', '1', '200', 'admin'), ('95', '190', '1', '200', 'admin'), ('96', '192', '1', '200', 'admin'), ('97', '173', '1', '200', 'admin'), ('98', '171', '1', '200', 'admin'), ('99', '170', '1', '200', 'admin'), ('100', '169', '1', '200', 'admin'), ('101', '189', '1', '200', 'admin'), ('102', '172', '1', '200', 'admin'), ('103', '198', '1', '200', 'admin'), ('104', '199', '1', '200', 'admin'), ('105', '196', '1', '200', 'admin'), ('106', '179', '1', '200', 'admin'), ('107', '181', '1', '200', 'admin'), ('108', '167', '1', '200', 'admin'), ('109', '182', '1', '200', 'admin'), ('110', '168', '1', '200', 'admin'), ('111', '191', '1', '200', 'admin'), ('112', '201', '1', '200', 'admin'), ('113', '197', '1', '200', 'admin'), ('114', '194', '1', '200', 'admin'), ('115', '195', '1', '200', 'admin'), ('116', '202', '1', '200', 'admin'), ('117', '203', '1', '200', 'admin'), ('118', '193', '1', '200', 'admin'), ('119', '200', '1', '200', 'admin'), ('121', '55', '1', '200', 'admin'), ('122', '165', '1', '200', 'admin');
|
||||
|
||||
INSERT INTO `pp_operation_permission` ( `member_level`, `project`, `op_id`, `is_allow`) values ( '100', 'platform', '65', '1');
|
||||
INSERT INTO `pp_operation_permission` ( `member_level`, `project`, `op_id`, `is_allow`) values ( '101', 'platform', '65', '1');
|
||||
|
||||
DROP TABLE IF EXISTS `pp_mall_config`;
|
||||
CREATE TABLE `pp_mall_config` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`config_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '配置名称',
|
||||
`config_desc` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '配置描述',
|
||||
`config_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '配置值',
|
||||
`add_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `config_name` (`config_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商城配置表';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_mall_flow`;
|
||||
CREATE TABLE `pp_mall_flow` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`member_id` int(11) NOT NULL,
|
||||
`product_name` varchar(200) NOT NULL DEFAULT '' COMMENT '接口名称',
|
||||
`product_key` varchar(100) NOT NULL DEFAULT '' COMMENT '接口服务',
|
||||
`product_key_lower` varchar(100) NOT NULL DEFAULT '' COMMENT '接口服务,小写',
|
||||
`total_amount` int(11) NOT NULL DEFAULT '0' COMMENT '总次数',
|
||||
`used_amount` int(11) NOT NULL DEFAULT '0' COMMENT '已使用次数',
|
||||
`expire_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '过期时间戳',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`flow_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '流量套餐状态,0已失效10未使用20使用中30已用完40已过期',
|
||||
`product_type` varchar(50) NOT NULL DEFAULT '' COMMENT '接口套餐类型',
|
||||
`order_id` varchar(100) NOT NULL DEFAULT '',
|
||||
`username` varchar(50) NOT NULL DEFAULT '',
|
||||
`finish_time` datetime DEFAULT NULL COMMENT '消耗完时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `member_id` (`member_id`),
|
||||
KEY `product_key_lower` (`product_key_lower`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='接口流量套餐';
|
||||
|
||||
DROP TABLE IF EXISTS `pp_mall_order`;
|
||||
CREATE TABLE `pp_mall_order` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员ID',
|
||||
`order_id` varchar(100) NOT NULL DEFAULT '' COMMENT '订单编号',
|
||||
`order_name` varchar(500) NOT NULL DEFAULT '' COMMENT '订单名称',
|
||||
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '订单总价格,单位:元',
|
||||
`add_time` datetime DEFAULT NULL COMMENT '下单时间',
|
||||
`product_key` varchar(200) NOT NULL COMMENT '产品key',
|
||||
`product_type` varchar(50) NOT NULL COMMENT '产品类型',
|
||||
`product_expire_time` int(11) NOT NULL COMMENT '有效时间,单位:秒',
|
||||
`product_amount` int(11) NOT NULL COMMENT '产品规格数量',
|
||||
`order_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '订单状态,0待支付10已支付20已购买30已退款40已取消',
|
||||
`product_id` int(11) NOT NULL DEFAULT '0' COMMENT '产品ID',
|
||||
`product_expire_time_desc` varchar(100) NOT NULL DEFAULT '' COMMENT '产品有效时间描述',
|
||||
`username` varchar(50) NOT NULL DEFAULT '' COMMENT '账号',
|
||||
`num` int(11) NOT NULL DEFAULT '0' COMMENT '购买数量',
|
||||
`pay_type` varchar(20) NOT NULL DEFAULT '' COMMENT '支付方式,alipay支付宝,paypal,cash现金',
|
||||
`note` text COMMENT '买家备注',
|
||||
`is_deliver` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否发货,1是0否',
|
||||
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
|
||||
`third_payment_id` varchar(40) NOT NULL DEFAULT '' COMMENT '第三方支付ID',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `order_id` (`order_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
DROP TABLE IF EXISTS `pp_mall_product`;
|
||||
CREATE TABLE `pp_mall_product` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`product_name` varchar(200) NOT NULL DEFAULT '' COMMENT '产品名称',
|
||||
`product_key` varchar(100) NOT NULL DEFAULT '' COMMENT '产品key',
|
||||
`product_type` varchar(50) NOT NULL DEFAULT '' COMMENT '产品类型,api_free为免费试用接口流量,api_buy为付费购买接口流量',
|
||||
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '产品售价,单位:元',
|
||||
`original_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '产品原始价格,用于对比,单位:元',
|
||||
`amount` int(11) NOT NULL DEFAULT '1' COMMENT '产品规格数量,例如接口流量多少次',
|
||||
`expire_time` int(11) NOT NULL DEFAULT '86400' COMMENT '产品有效时间,单位:秒,多少秒内有效',
|
||||
`product_desc` text COMMENT '套餐说明',
|
||||
`product_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '产品状态,0关闭1正常',
|
||||
`add_time` datetime DEFAULT NULL COMMENT '添加时间',
|
||||
`expire_time_desc` varchar(100) DEFAULT '' COMMENT '有效时间描述',
|
||||
`product_key_lower` varchar(200) NOT NULL DEFAULT '' COMMENT '小写',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service', '205', 'admin', '服务大厅', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/set-meal', '206', 'admin', '接口流量套餐', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/set-meal/list', '207', 'admin', '接口流量套餐列表', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/set-meal/add', '208', 'admin', '添加套餐', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/order-manage', '209', 'admin', '订单管理', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/set-meal-manage', '210', 'admin', '套餐管理', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/config', '211', 'admin', '支付配置', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service', '212', 'platform', '服务大厅', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/my-order', '213', 'platform', '我的订单', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/service/my-set-meal', '214', 'platform', '我的套餐', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/place-an-order', '216', 'platform', '下单', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/place-an-order/index', '217', 'platform', '下单流程', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/place-an-order/result', '218', 'platform', '下单结果', '');
|
||||
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '125', '101', 'platform', '65', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '126', '100', 'platform', '65', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '127', '101', 'platform', '69', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '128', '100', 'platform', '69', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '131', '100', 'platform', '212', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '132', '101', 'platform', '212', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '133', '100', 'platform', '213', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '134', '101', 'platform', '213', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '135', '100', 'platform', '215', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '136', '100', 'platform', '216', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '137', '101', 'platform', '216', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '138', '100', 'platform', '217', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '139', '101', 'platform', '217', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '140', '101', 'platform', '218', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '141', '100', 'platform', '218', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '142', '101', 'platform', '215', '1');
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `pp_work_order`;
|
||||
CREATE TABLE `pp_work_order` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`order_no` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',
|
||||
`title` text COMMENT '工单标题',
|
||||
`module_id` int(11) NOT NULL DEFAULT '0' COMMENT '模块id',
|
||||
`problem_desc` text NOT NULL COMMENT '问题描述',
|
||||
`email` text COMMENT '邮箱',
|
||||
`phone_pre` varchar(255) NOT NULL DEFAULT '' COMMENT '手机前缀',
|
||||
`phone` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号码',
|
||||
`file_ids` text COMMENT '文件ids',
|
||||
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '审核状态:1待受理,2待回复 3已解决 4已关闭',
|
||||
`chat_recode` text NOT NULL COMMENT '聊天记录',
|
||||
`admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
|
||||
`accept_service_id` int(11) NOT NULL DEFAULT '0' COMMENT '受理客户id',
|
||||
`accept_service_name` varchar(255) NOT NULL DEFAULT '' COMMENT '受理客户名字',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`app_key` varchar(100) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表';
|
||||
|
||||
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder/list', '219', 'platform', '工单列表', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder/add', '220', 'platform', '创建工单', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder', '221', 'platform', '工单管理', '');
|
||||
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '143', '100', 'platform', '219', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '144', '101', 'platform', '219', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '145', '100', 'platform', '220', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '146', '101', 'platform', '220', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '147', '100', 'platform', '221', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '148', '101', 'platform', '221', '1');
|
||||
|
||||
DROP TABLE IF EXISTS `pp_app_daily_stat`;
|
||||
CREATE TABLE `pp_app_daily_stat` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`app_key` varchar(100) DEFAULT '' COMMENT '为空时表示全部',
|
||||
`stat_day` date DEFAULT NULL COMMENT '统计的日期',
|
||||
`total_order` int(11) NOT NULL DEFAULT 0 COMMENT '总订单量',
|
||||
`total_user` int(11) NOT NULL DEFAULT '0' COMMENT '总用户数量',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`total_app` int(11) NOT NULL DEFAULT '0' COMMENT 'app数量',
|
||||
`app_key_visit` int(11) DEFAULT '0' COMMENT 'app的日活量',
|
||||
`user_visit` int(11) DEFAULT '0' COMMENT '用户日活',
|
||||
`api_request_times` int(11) DEFAULT '0' COMMENT '接口访问次数',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `app_key` (`app_key`),
|
||||
KEY `stat_day` (`stat_day`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用日常统计汇总';
|
||||
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/stats/app_stats', '224', 'admin', '应用统计', '');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '150', '200', 'admin', '224', '1');
|
||||
|
||||
|
||||
ALTER TABLE `pp_member` ADD COLUMN `from_channel` varchar(100) NOT NULL DEFAULT '' COMMENT '来源';
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `pp_authorization`;
|
||||
CREATE TABLE `pp_authorization` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`openid` varchar(10000) NOT NULL DEFAULT '0' COMMENT '第三方平台对应用户的唯一id',
|
||||
`unionid` varchar(1000) NOT NULL DEFAULT '0' COMMENT '微信开放平台对应的unionidid',
|
||||
`authorization_type` int(11) NOT NULL DEFAULT '0' COMMENT '第三登录类型:0无 1微信 2微信小程序 3qq 4是短信 5程序员客栈 等等',
|
||||
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '版本的用户id',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方授权表';
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `pp_authorization_details`;
|
||||
CREATE TABLE `pp_authorization_details` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '昵称',
|
||||
`sex` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '性别:1未知 2男 3女',
|
||||
`headimgurl` varchar(10000) NOT NULL DEFAULT '' COMMENT '用户头像url',
|
||||
`province` varchar(255) NOT NULL DEFAULT '' COMMENT '省',
|
||||
`city` varchar(255) NOT NULL DEFAULT '' COMMENT '城市',
|
||||
`country` varchar(255) NOT NULL DEFAULT '' COMMENT '国家',
|
||||
`privilege` varchar(1000) NOT NULL DEFAULT '' COMMENT '用户特权信息',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`authorization_id` int(11) NOT NULL DEFAULT '0' COMMENT '关联第三方表',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='授权详情表';
|
||||
|
||||
-- 工单详情菜单权限
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder/info', '227', 'platform', '工单详情', '');
|
||||
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '175', '101', 'platform', '227', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '176', '100', 'platform', '227', '1');
|
||||
|
||||
SHOW TABLES; -- 最后结束
|
||||
|
||||
27
data/phalapi_pro_v2.2.0.sql
Normal file
27
data/phalapi_pro_v2.2.0.sql
Normal file
@@ -0,0 +1,27 @@
|
||||
DROP TABLE IF EXISTS `pp_operation`;
|
||||
CREATE TABLE `pp_operation` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`project` varchar(20) NOT NULL DEFAULT '' COMMENT '项目',
|
||||
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '路径',
|
||||
`title` varchar(200) DEFAULT '' COMMENT '菜单标题',
|
||||
`white_list` text COMMENT '账号ID白名单,多个使用英文逗号分割',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=204 DEFAULT CHARSET=utf8mb4 COMMENT='菜单操作';
|
||||
|
||||
INSERT INTO `pp_operation` VALUES ('49', 'admin', '/user', '账号管理', ''), ('50', 'admin', '/user/list', '账号列表', ''), ('51', 'admin', '/user/add', '添加账号', ''), ('52', 'admin', '/user/look-over', '账号信息', ''), ('53', 'admin', '/user/compile\'', '编辑账号', ''), ('55', 'admin', '/application/list', '应用列表', ''), ('56', 'admin', '/application/add', '添加应用', ''), ('57', 'admin', '/application/update', '修改应用', ''), ('64', 'platform', '/application', '应用管理', ''), ('65', 'platform', '/application/list', '应用管理列表', ''), ('66', 'platform', '/permission', '接口权限', ''), ('67', 'platform', '/permission/settings', '接口权限', ''), ('68', 'platform', '/account', '开发者中心', ''), ('69', 'platform', '/account/accountInfo', '开发者资料', ''), ('70', 'platform', '/account/resetPassword', '修改密码', ''), ('71', 'platform', '/account/accountSettings', '修改资料', ''), ('165', 'admin', '/application', '应用管理', ''), ('166', 'admin', '/user/compile', '账号信息修改', ''), ('167', 'admin', '/techzones/apis-mangement', '接口权限', ''), ('168', 'admin', '/techzones', '接口管理', ''), ('169', 'admin', '/techzones/apis-mangement/assignment', '接口权限分配', ''), ('170', 'admin', '/techzones/apis-mangement/assignmentList', '权限预览', ''), ('171', 'admin', '/techzones/apis-mangement/assignmentRules', '接口权限规则设置', ''), ('172', 'admin', '/techzones/apis-mangement/apisList', '接口服务操作列表', ''), ('173', 'admin', '/techzones/apitest', '接口测试', ''), ('174', 'admin', '/techzones/design', '可视化接口设计', ''), ('175', 'admin', '/techzones/apitest/test', '接口测试列表', ''), ('176', 'admin', '/techzones/apitest/add', '添加新用例', ''), ('177', 'admin', '/techzones/apitest/compile', '编辑用例', ''), ('178', 'admin', '/techzones/apitest/look', '查看用例', ''), ('179', 'admin', '/pictures', '素材库', ''), ('180', 'admin', '/techzones/apitest/config', '全局access_token配置', ''), ('181', 'admin', '/pictures/assets_manage', '文件管理', ''), ('182', 'admin', '/pictures/assets_upload', '上传文件', ''), ('183', 'admin', '/account', '个人中心', ''), ('184', 'admin', '/account/accountInfo', '个人资料', ''), ('185', 'admin', '/account/loginRecord', '最近登录', ''), ('186', 'admin', '/account/resetPassword', '修改密码', ''), ('187', 'admin', '/account/accountSettings', '个人资料修改', ''), ('188', 'admin', '/configuration', '配置管理', ''), ('189', 'admin', '/configuration/list', '配置管理列表', ''), ('190', 'admin', '/configuration/add', '添加配置', ''), ('191', 'admin', '/scheduledtask', '计划任务', ''), ('192', 'admin', '/configuration/edit', '修改配置', ''), ('193', 'admin', '/scheduledtask/list', '计划任务列表', ''), ('194', 'admin', '/scheduledtask/add', '添加计划任务', ''), ('195', 'admin', '/scheduledtask/edit', '编辑计划任务', ''), ('196', 'admin', '/database/statis', '数据库统计', ''), ('197', 'admin', '/stats/port_stats', '接口统计', ''), ('198', 'admin', '/database', '数据库管理', ''), ('199', 'admin', '/database/process', '数据库实时进程', ''), ('200', 'admin', '/stats', '统计', ''), ('201', 'admin', '/stats/register_stats', '注册统计', ''), ('202', 'admin', '/stats/login_stats', '登录统计', ''), ('203', 'admin', '/stats/accessLog', '访问日志', '');
|
||||
|
||||
DROP TABLE IF EXISTS `pp_operation_permission`;
|
||||
CREATE TABLE `pp_operation_permission` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`op_id` int(11) NOT NULL DEFAULT '0' COMMENT '菜单操作ID',
|
||||
`is_allow` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否允许,1允许0禁止',
|
||||
`member_level` smallint(6) NOT NULL DEFAULT '0',
|
||||
`project` varchar(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8mb4 COMMENT='菜单操作授权';
|
||||
|
||||
INSERT INTO `pp_operation_permission` VALUES ('55', '68', '1', '100', 'platform'), ('56', '68', '1', '101', 'platform'), ('57', '69', '1', '101', 'platform'), ('58', '69', '1', '100', 'platform'), ('59', '71', '1', '101', 'platform'), ('60', '71', '1', '100', 'platform'), ('61', '70', '1', '101', 'platform'), ('62', '70', '1', '100', 'platform'), ('65', '67', '1', '101', 'platform'), ('66', '67', '1', '100', 'platform'), ('67', '66', '1', '101', 'platform'), ('68', '66', '1', '100', 'platform'), ('71', '64', '1', '100', 'platform'), ('72', '64', '1', '101', 'platform'), ('74', '52', '1', '200', 'admin'), ('75', '50', '1', '200', 'admin'), ('76', '53', '1', '200', 'admin'), ('77', '166', '1', '200', 'admin'), ('78', '183', '1', '200', 'admin'), ('79', '51', '1', '200', 'admin'), ('80', '174', '1', '200', 'admin'), ('81', '184', '1', '200', 'admin'), ('82', '178', '1', '200', 'admin'), ('83', '187', '1', '200', 'admin'), ('84', '180', '1', '200', 'admin'), ('85', '185', '1', '200', 'admin'), ('86', '177', '1', '200', 'admin'), ('87', '186', '1', '200', 'admin'), ('88', '176', '1', '200', 'admin'), ('89', '56', '1', '200', 'admin'), ('90', '49', '1', '200', 'admin'), ('92', '57', '1', '200', 'admin'), ('93', '175', '1', '200', 'admin'), ('94', '188', '1', '200', 'admin'), ('95', '190', '1', '200', 'admin'), ('96', '192', '1', '200', 'admin'), ('97', '173', '1', '200', 'admin'), ('98', '171', '1', '200', 'admin'), ('99', '170', '1', '200', 'admin'), ('100', '169', '1', '200', 'admin'), ('101', '189', '1', '200', 'admin'), ('102', '172', '1', '200', 'admin'), ('103', '198', '1', '200', 'admin'), ('104', '199', '1', '200', 'admin'), ('105', '196', '1', '200', 'admin'), ('106', '179', '1', '200', 'admin'), ('107', '181', '1', '200', 'admin'), ('108', '167', '1', '200', 'admin'), ('109', '182', '1', '200', 'admin'), ('110', '168', '1', '200', 'admin'), ('111', '191', '1', '200', 'admin'), ('112', '201', '1', '200', 'admin'), ('113', '197', '1', '200', 'admin'), ('114', '194', '1', '200', 'admin'), ('115', '195', '1', '200', 'admin'), ('116', '202', '1', '200', 'admin'), ('117', '203', '1', '200', 'admin'), ('118', '193', '1', '200', 'admin'), ('119', '200', '1', '200', 'admin'), ('121', '55', '1', '200', 'admin'), ('122', '165', '1', '200', 'admin');
|
||||
|
||||
INSERT INTO `pp_operation_permission` ( `member_level`, `project`, `op_id`, `is_allow`) values ( '100', 'platform', '65', '1');
|
||||
INSERT INTO `pp_operation_permission` ( `member_level`, `project`, `op_id`, `is_allow`) values ( '101', 'platform', '65', '1');
|
||||
|
||||
2
data/phalapi_pro_v2.4.0.sql
Normal file
2
data/phalapi_pro_v2.4.0.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE pp_apps ADD COLUMN `allow_ips` text COMMENT 'App应用访问的IP白名单,没有不限制,多个用英文逗号分割';
|
||||
|
||||
55
data/phalapi_pro_v3.5.0.sql
Normal file
55
data/phalapi_pro_v3.5.0.sql
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
Navicat MySQL Data Transfer
|
||||
|
||||
Source Server : yesdevnew
|
||||
Source Server Version : 50640
|
||||
Source Host : 120.78.152.115:33348
|
||||
Source Database : phalapi_pro_2x
|
||||
|
||||
Target Server Type : MYSQL
|
||||
Target Server Version : 50640
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 2021-01-18 13:28:53
|
||||
*/
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for `pp_work_order`
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pp_work_order`;
|
||||
CREATE TABLE `pp_work_order` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`order_no` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',
|
||||
`title` text COMMENT '工单标题',
|
||||
`module_id` int(11) NOT NULL DEFAULT '0' COMMENT '模块id',
|
||||
`problem_desc` text NOT NULL COMMENT '问题描述',
|
||||
`email` text COMMENT '邮箱',
|
||||
`phone_pre` varchar(255) NOT NULL DEFAULT '' COMMENT '手机前缀',
|
||||
`phone` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号码',
|
||||
`file_ids` text COMMENT '文件ids',
|
||||
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '审核状态:1待受理,2待回复 3已解决 4已关闭',
|
||||
`chat_recode` text NOT NULL COMMENT '聊天记录',
|
||||
`admin_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
|
||||
`accept_service_id` int(11) NOT NULL DEFAULT '0' COMMENT '受理客户id',
|
||||
`accept_service_name` varchar(255) NOT NULL DEFAULT '' COMMENT '受理客户名字',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`app_key` varchar(100) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工单表';
|
||||
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder/list', '219', 'platform', '工单列表', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder/add', '220', 'platform', '创建工单', '');
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder', '221', 'platform', '工单管理', '');
|
||||
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '139', '100', 'platform', '219', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '140', '101', 'platform', '219', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '142', '100', 'platform', '220', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '143', '101', 'platform', '220', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '144', '100', 'platform', '221', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '145', '101', 'platform', '221', '1');
|
||||
|
||||
|
||||
|
||||
21
data/phalapi_pro_v3.7.0.sql
Normal file
21
data/phalapi_pro_v3.7.0.sql
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
DROP TABLE IF EXISTS `pp_app_daily_stat`;
|
||||
CREATE TABLE `pp_app_daily_stat` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`app_key` varchar(100) DEFAULT '' COMMENT '为空时表示全部',
|
||||
`stat_day` date DEFAULT NULL COMMENT '统计的日期',
|
||||
`total_order` int(11) NOT NULL DEFAULT 0 COMMENT '总订单量',
|
||||
`total_user` int(11) NOT NULL DEFAULT '0' COMMENT '总用户数量',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`total_app` int(11) NOT NULL DEFAULT '0' COMMENT 'app数量',
|
||||
`app_key_visit` int(11) DEFAULT '0' COMMENT 'app的日活量',
|
||||
`user_visit` int(11) DEFAULT '0' COMMENT '用户日活',
|
||||
`api_request_times` int(11) DEFAULT '0' COMMENT '接口访问次数',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `app_key` (`app_key`),
|
||||
KEY `stat_day` (`stat_day`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用日常统计汇总';
|
||||
|
||||
-- 应用统计 新增权限
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/stats/app_stats', '224', 'admin', '应用统计', '');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '150', '200', 'admin', '224', '1');
|
||||
33
data/phalapi_pro_v3.8.0.sql
Normal file
33
data/phalapi_pro_v3.8.0.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
ALTER TABLE `pp_member` ADD COLUMN `from_channel` varchar(100) NOT NULL DEFAULT '' COMMENT '来源';
|
||||
|
||||
CREATE TABLE `pp_authorization` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`openid` varchar(10000) NOT NULL DEFAULT '0' COMMENT '第三方平台对应用户的唯一id',
|
||||
`unionid` varchar(1000) NOT NULL DEFAULT '0' COMMENT '微信开放平台对应的unionidid',
|
||||
`authorization_type` int(11) NOT NULL DEFAULT '0' COMMENT '第三登录类型:0无 1微信 2微信小程序 3qq 4是短信 5程序员客栈 等等',
|
||||
`member_id` int(11) NOT NULL DEFAULT '0' COMMENT '版本的用户id',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方授权表';
|
||||
|
||||
|
||||
CREATE TABLE `pp_authorization_details` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`nickname` varchar(255) NOT NULL DEFAULT '' COMMENT '昵称',
|
||||
`sex` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '性别:1未知 2男 3女',
|
||||
`headimgurl` varchar(10000) NOT NULL DEFAULT '' COMMENT '用户头像url',
|
||||
`province` varchar(255) NOT NULL DEFAULT '' COMMENT '省',
|
||||
`city` varchar(255) NOT NULL DEFAULT '' COMMENT '城市',
|
||||
`country` varchar(255) NOT NULL DEFAULT '' COMMENT '国家',
|
||||
`privilege` varchar(1000) NOT NULL DEFAULT '' COMMENT '用户特权信息',
|
||||
`add_time` datetime DEFAULT NULL,
|
||||
`authorization_id` int(11) NOT NULL DEFAULT '0' COMMENT '关联第三方表',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='授权详情表';
|
||||
|
||||
-- 工单详情菜单权限
|
||||
insert into `pp_operation` ( `path`, `id`, `project`, `title`, `white_list`) values ( '/api-usb-workorder/info', '227', 'platform', '工单详情', '');
|
||||
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '175', '101', 'platform', '227', '1');
|
||||
insert into `pp_operation_permission` ( `id`, `member_level`, `project`, `op_id`, `is_allow`) values ( '176', '100', 'platform', '227', '1');
|
||||
|
||||
9
language/de/common.php
Normal file
9
language/de/common.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
// 德语 de - de 德标
|
||||
// 德语 de - at 奥地利
|
||||
// 德语 de - ch 瑞士
|
||||
// 德语 de - ru 俄罗斯(欧境)
|
||||
return array(
|
||||
'Hi {name}, welcome to use PhalApi!' => '{name}Hallo, Willkommen PhalApi!',
|
||||
'user not exists' => 'Der nutzer gibt es nicht',
|
||||
);
|
||||
29
language/en/common.php
Normal file
29
language/en/common.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'App\\' => 'App API',
|
||||
'Admin\\' => 'Admin API',
|
||||
'Platform\\' => 'Platform API',
|
||||
'Task\\' => 'Task API',
|
||||
'Hello {name}, Welcome to use PhalApi!' => 'Hello {name}, Welcome to use PhalApi!',
|
||||
'user not exists' => 'user not exists',
|
||||
|
||||
'{service} free api can not repeat' => '{service} free api can not repeat',
|
||||
'price can not be zero' => 'price can not be zero',
|
||||
'order_status_0' => 'payment_pending',
|
||||
'order_status_10' => 'payment_confirmed',
|
||||
'order_status_20' => 'dispatched',
|
||||
'order_status_30' => 'refunded',
|
||||
'order_status_40' => 'canceled',
|
||||
'mall_flow_status_0' => 'canceled',
|
||||
'mall_flow_status_10' => 'new',
|
||||
'mall_flow_status_20' => 'using',
|
||||
'mall_flow_status_30' => 'completed',
|
||||
'mall_flow_status_40' => 'expired_out',
|
||||
'free' => 'Free',
|
||||
'time_unit' => '',
|
||||
'money_unit' => 'RMB',
|
||||
'money_symbol' => '¥',
|
||||
'api flow not enough' => 'api flow not enough',
|
||||
'product not exists' => 'product not exists',
|
||||
);
|
||||
7
language/fr/common.php
Normal file
7
language/fr/common.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
// 法语 fr - fr 法标
|
||||
// 法语 fr - lu 卢森堡
|
||||
return array(
|
||||
'Hi {name}, welcome to use PhalApi!' => '{name}Bonjour, bienvenue PhalApi!',
|
||||
'user not exists' => "L'utilisateur n'existe pas",
|
||||
);
|
||||
216
language/zh_cn/common.php
Normal file
216
language/zh_cn/common.php
Normal file
@@ -0,0 +1,216 @@
|
||||
<?php
|
||||
/**
|
||||
* 翻译说明:
|
||||
*
|
||||
* 1、带大括号的保留原来写法,如:{name},会被系统动态替换
|
||||
* 2、没在以下出现的,可以自行追加
|
||||
*
|
||||
* @author dogstar <chanzonghuang@gmail.com> 2015-02-09
|
||||
*/
|
||||
|
||||
return array(
|
||||
'Hi {name}, welcome to use PhalApi!' => '{name}您好,欢迎使用PhalApi!',
|
||||
'user not exists' => '用户不存在',
|
||||
'user not login' => '用户未登录',
|
||||
'App\\' => 'OpenAPI',
|
||||
'Admin\\' => '后台接口',
|
||||
'Platform\\' => '平台接口',
|
||||
'Portal' => '运营平台',
|
||||
'Portal\\' => '运营平台',
|
||||
'Task\\' => '任务接口',
|
||||
'unknown application' => '未知应用',
|
||||
'api inadequate permissions' => '接口权限不足',
|
||||
'can not get user info' => '找不到此用户的信息',
|
||||
'app does not exist or is disabled' => 'app不存在或已被禁用',
|
||||
'user does not exist or is blocked' => '用户不存在或已被禁用',
|
||||
'invalid access_token type {type}' => 'access_token类型{type}非法',
|
||||
'application failed, app_key does not exist' => '申请失败,app_key不存在',
|
||||
'application failed, app has been unregistered or disabled' => '申请失败,应用已被注销或禁用',
|
||||
'application failed, app approval failed' => '申请失败,应用审核未通过',
|
||||
'application failed, app_secret error' => '申请失败,app_secret错误',
|
||||
'illegal request the api of admin, please use the entry of /api/admin.php' => '非法请求Admin管理后台接口,请改用/api/admin.php后台API入口',
|
||||
'illegal request the api of platform, please use the entry of /api/platform.php' => '非法请求Platform开放平台接口,请改用/api/platform.php开放平台API入口',
|
||||
'illegal request the api of task, please use the entry of /api/task.php or CLI' => '非法请求Task计划任务接口,请改用/api/task.php计划任务API入口,或通过CLI方式执行',
|
||||
'sorry, the current account has been disabled' => '抱歉,当前账号已被禁用',
|
||||
'sorry, the current app has reached the maximum number of interface calls today' => '抱歉,当前应用今日接口调用次数已达到上限',
|
||||
'upload file type {filetype} error, currently only support: {supporttype}' => '上传文件类型{fileType}错误,目前只支持:{supportType}',
|
||||
'too much time span' => '时间跨度太大',
|
||||
'app rsa init failure, unable to find app or app RSA public / private key is empty' => 'app rsa 初始失败,无法找到应用或应用RSA公钥/私钥为空',
|
||||
'aliyun sms service is not configured' => '阿里云短信服务未配置',
|
||||
'there is a problem with the time format' => '时间格式有问题',
|
||||
'client exception : {msg}' => '客户端异常 : {msg}',
|
||||
'server exception : {msg}' => '服务端异常 : {msg}',
|
||||
'number of applications created has reached the maximum and no more new applications can be created, please contact the administrator' => '当前创建的应用已经达到数量上限,无法再创建新应用,请联系管理员',
|
||||
'application does not exist' => '应用不存在',
|
||||
'application has been approved and cannot be modified' => '应用审核已通过,不能再修改',
|
||||
'current application does not belong to current developer account' => '当前应用不属于当前开发者账号',
|
||||
'developer registration is currently disabled, please contact the administrator' => '当前已禁止开发者注册,请联系管理员',
|
||||
'the account is illegal, current account type does not allow developers to register' => '账号类型非法,当前账号类型不允许开发者注册',
|
||||
'member registration is currently disabled, please contact the administrator' => '当前已禁止会员注册,请联系管理员',
|
||||
'the account is illegal, current account type does not allow member to register' => '账号类型非法,当前账号类型不允许会员注册',
|
||||
'the account already exists, and repeated registration is not allowed' => '账号已存在,不允许重复注册',
|
||||
'login failed, wrong account or password, or account is disabled' => '登录失败,账号或密码错误,或账号已被禁用',
|
||||
'login failed, the current account is not administrator' => '登录失败,当前账号不是管理员',
|
||||
'the current account is not a developer account' => '当前账号不是开发者账号',
|
||||
'the current account is not administrator' => '当前账号不是管理员',
|
||||
'super administrator password cannot be modified' => '不能修改超级管理员密码',
|
||||
'insufficient permission, unable to change administrator password' => '权限不足,不能修改管理员密码',
|
||||
'member does not exist or has been deleted' => '会员不存在或已被删除',
|
||||
'account does not exist or has been deleted' => '账号不存在或已被删除',
|
||||
'super administrator account cannot be deleted' => '超级管理员账号无法删除',
|
||||
'/api/platform.php entry can only be used to request the api of platform' => '/api/platform.php开放平台API入口只能调用Platform系列接口',
|
||||
'/api/admin.php entry can only be used to request the api of admin' => '/api/admin.php后台API入口只能调用Admin系列接口',
|
||||
'access_token check fail' => 'access_token校验不通过',
|
||||
'invalid access_token' => 'access_token无效',
|
||||
'illegal interface service operation format' => '接口服务操作格式非法',
|
||||
'permission rule already exists, cannot be added repeatedly' => '权限规则已存在,不能重复添加',
|
||||
'current api entry can only be used to request the api of task' => '当前API入口只能请求Task计划任务接口',
|
||||
'image upload failed, please try again' => '图片上传失败,请重试',
|
||||
'the uploaded picture is in the wrong format and cannot be recognized, correct example:{example}' => '上传的图片格式错误,无法识别。正确示例:{example}',
|
||||
'Home' => '首页',
|
||||
'Open API' => 'OpenAPI',
|
||||
'Open Platform' => '开放平台',
|
||||
'Docs' => '技术文档',
|
||||
'Management System' => '管理后台',
|
||||
'welcome' => '欢迎',
|
||||
'Sign In' => '登录',
|
||||
'Sign Up' => '注册',
|
||||
'Search API' => '搜索接口',
|
||||
'best choice to build cloud platform' => '一套开发、管理和提供接口的软件源代码和解决方案',
|
||||
'Online API Docs' => '在线接口文档',
|
||||
'API List' => '接口服务列表',
|
||||
'login management system to see all APIs' => '管理员登录后可查看全部接口',
|
||||
'API Service' => '接口服务',
|
||||
'API Title' => '接口名称',
|
||||
'API Description' => '接口描述',
|
||||
'Language' => '语言',
|
||||
'API Docs' => '接口文档',
|
||||
'API Url' => '接口地址',
|
||||
'Protocol' => '请求协议',
|
||||
'Method' => '请求方式',
|
||||
'Charset' => '编码格式',
|
||||
'Format' => '返回格式',
|
||||
'API Parameters' => '接口参数',
|
||||
'Parameter Name' => '参数名字',
|
||||
'Type' => '类型',
|
||||
'Is Required' => '是否必须',
|
||||
'Required' => '必须',
|
||||
'Optional' => '可选',
|
||||
'Default' => '默认值',
|
||||
'Note' => '其他',
|
||||
'Description' => '说明',
|
||||
'Response Result' => '返回结果',
|
||||
'Return Field' => '返回字段',
|
||||
'Test Online' => '在线测试',
|
||||
'Parameter' => '参数',
|
||||
'Value' => '值',
|
||||
'Client Request Demo' => '客户端请求示例',
|
||||
'Request API' => '请求当前接口',
|
||||
'Error List' => '错误列表',
|
||||
'Error Status' => '错误状态码',
|
||||
'Error Description' => '错误描述信息',
|
||||
'Last generated at: ' => '本文档生成时间:',
|
||||
'string' => '字符串',
|
||||
'int' => '整型',
|
||||
'float' => '浮点型',
|
||||
'boolean' => '布尔型',
|
||||
'date' => '日期',
|
||||
'array' => '字符串', // 转换成客户端看到的参数类型
|
||||
'fixed' => '固定值',
|
||||
'enum' => '枚举类型',
|
||||
'object' => '对象',
|
||||
'object/mixed' => '对象或混合类型',
|
||||
'json' => 'JSON格式',
|
||||
'seperated by %s' => '用%s分割',
|
||||
'min: ' => '最小:',
|
||||
'max: ' => '最大:',
|
||||
'range: ' => '范围:',
|
||||
'source: ' => '数据源:',
|
||||
'business data, decided by API implementation' => '业务数据,由各自接口指定,通常为对象',
|
||||
'status code, 200 is ok, 4xx is bad request, 5xx is server inside error' => '状态码,200表示成功,4xx表示客户端非法请求,5xx表示服务器错误',
|
||||
'message, usually error message' => '提示信息,失败时的错误提示',
|
||||
'Select' => '请选择',
|
||||
'json demo' => 'HTTP通用示例',
|
||||
'js demo' => 'Javascript示例',
|
||||
'oc demo' => 'Object-C示例',
|
||||
'java demo' => 'Java示例',
|
||||
'curl demo' => 'CURL示例',
|
||||
'php demo' => 'PHP示例',
|
||||
'py demo' => 'Python示例',
|
||||
'go demo' => 'Golang示例',
|
||||
'cs demo' => 'C#示例',
|
||||
'API Document Password: ' => '文档查看密码:',
|
||||
'please input view password' => '请输入查看密码',
|
||||
'Submit' => '确定',
|
||||
'wrong view password' => '查看密码错误!',
|
||||
'To Be Reviewed' => '待审核',
|
||||
'Not Passed' => '未通过',
|
||||
'Canceled' => '已注销',
|
||||
'wrong sign' => '签名错误',
|
||||
'wrong captcha' => '验证码错误',
|
||||
'operation exists' => '操作已存在',
|
||||
'operation not exists' => '操作不存在',
|
||||
'not super admin' => '非超级管理员',
|
||||
'wrong service name' => '接口服务名称有误',
|
||||
'wrong API params config' => '接口设计的请求参数有误,请根据文档规则传递',
|
||||
'wrong API response config' => '接口设计的返回参数有误,请根据文档规则传递',
|
||||
'no data updated' => '无数据需要更新',
|
||||
'update successfully' => '更新成功',
|
||||
'fail to generate code' => '生成代码失败',
|
||||
'fail to generate demo file' => '生成示例文件失败',
|
||||
'wrong config' => '配置出错',
|
||||
'file exists' => '文件已存在',
|
||||
'succeed to generate code' => '生成代码成功',
|
||||
'no write permission' => '当前环境没有权限写入文件。注意请不要在生产环境上保存接口代码,避免覆盖!',
|
||||
'no write permission:src/view/docs/demos' => '没有权限写入示例文件,请先为src/view/docs/demos目录添加写入权限。注意不要在生产环境上操作。',
|
||||
'succeed to generate demo file' => '生成示例成功',
|
||||
'fail to delete' => '删除失败',
|
||||
'succeed to delete' => '删除成功',
|
||||
'fail to add' => '添加失败',
|
||||
'succeed to add' => '添加成功',
|
||||
'test case is running or not exists' => '测试用例使用中或不存在该配置',
|
||||
'succeed to verify' => '验证成功',
|
||||
'wrong expect response' => '期待返回有误',
|
||||
'test case name repeat' => '用例名称已存在',
|
||||
'data not exists' => '数据不存在',
|
||||
'test case not exists' => '用例不存在',
|
||||
'finish to test' => '测试结束',
|
||||
'unkonw' => '未知',
|
||||
'test case crontab switch' => '全部接口测试定时任务开关',
|
||||
'field not exists' => '字段不存在',
|
||||
'fail to verify, can not tell true or not' => '验证失败:期望值或实际值为bool,无法判断',
|
||||
'FAIL, Expected: ' => '验证失败:期望值:',
|
||||
'Actual: ' => '实际值:',
|
||||
'sorry, the current IP not allowed' => '抱歉,当前IP禁止访问',
|
||||
|
||||
'{service} free api can not repeat' => '{service}接口流量的免费套餐不能重复设置',
|
||||
'price can not be zero' => '价格不能为0',
|
||||
'order_status_0' => '未支付',
|
||||
'order_status_10' => '已支付',
|
||||
'order_status_20' => '已购买',
|
||||
'order_status_30' => '已退款',
|
||||
'order_status_40' => '已取消',
|
||||
'mall_flow_status_0' => '已失效',
|
||||
'mall_flow_status_10' => '未使用',
|
||||
'mall_flow_status_20' => '使用中',
|
||||
'mall_flow_status_30' => '已用完',
|
||||
'mall_flow_status_40' => '已过期',
|
||||
'free' => '免费',
|
||||
'Fee' => '付费',
|
||||
'time_unit' => '次',
|
||||
'money_unit' => '元',
|
||||
'money_symbol' => '¥',
|
||||
'api flow not enough' => '接口流量不足',
|
||||
'product not exists' => '套餐版本不存在',
|
||||
'Enable' => '开启',
|
||||
'Disable' => '关闭',
|
||||
'Sandbox' => '沙箱环境',
|
||||
'Production' => '生产环境',
|
||||
'order not exists' => '订单不存在',
|
||||
'pay config not exists' => '支付配置不存在',
|
||||
'do not repeat to pay order' => '订单不能重复支付',
|
||||
'unknow pay type' => '未知支付类型',
|
||||
'API USE' => 'API 使用',
|
||||
'The user uid does not exist, please check the parameter' => '该用户uid不存在,请检测参数',
|
||||
'product_key_more can not empty' => '组合套餐不能为空',
|
||||
);
|
||||
6
language/zh_tw/common.php
Normal file
6
language/zh_tw/common.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'Hi {name}, welcome to use PhalApi!' => '{name}您好,歡迎使用PhalApi!',
|
||||
'user not exists' => '用戶不存在',
|
||||
);
|
||||
11
plugins/README.md
Normal file
11
plugins/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# 第三方插件初始化文件
|
||||
|
||||
## 加载时机
|
||||
加载时机为./config/di.php完成PhalApi框架初始之后,在项目进行初始化之前
|
||||
|
||||
## 文件名
|
||||
文件名,使用插件名作为文件名,推荐使用小写蛇形命名格式,例如:demo.php。
|
||||
|
||||
## 加载顺序
|
||||
插件与插件之间的加载顺序不分先后,默认以操作系统扫描文件的顺序加载。如果需要指定依赖关系,可在手动```include_once```。
|
||||
|
||||
0
public/.htaccess
Normal file
0
public/.htaccess
Normal file
2
public/admin/css/app.0a903684.css
Normal file
2
public/admin/css/app.0a903684.css
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/css/chunk-05568127.e430642c.css
Normal file
1
public/admin/css/chunk-05568127.e430642c.css
Normal file
@@ -0,0 +1 @@
|
||||
.main[data-v-0df2cf2e]{padding:18px;background-color:#fff;height:800px}.main h3[data-v-0df2cf2e]{font-size:18px;padding-bottom:20px}.main .content[data-v-0df2cf2e]{width:660px;margin:5px 20px;display:-webkit-box;display:-ms-flexbox;display:flex}.main .content .form[data-v-0df2cf2e]{width:350px}
|
||||
1
public/admin/css/chunk-086abdee.17f68669.css
Normal file
1
public/admin/css/chunk-086abdee.17f68669.css
Normal file
@@ -0,0 +1 @@
|
||||
.portStats__query[data-v-058a0222]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;padding:0 30px}.portStats__query__btn[data-v-058a0222]{margin-left:30px}.portStats__tab[data-v-058a0222]{background:#fff;border-radius:10px}#my_chart[data-v-058a0222]{padding:20px;background-color:#fff;border-radius:10px;margin-bottom:20px}[data-v-058a0222] .ivu-input{text-align:center}
|
||||
1
public/admin/css/chunk-09591b9d.ed68662e.css
Normal file
1
public/admin/css/chunk-09591b9d.ed68662e.css
Normal file
@@ -0,0 +1 @@
|
||||
.application__h[data-v-079d1fb4]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.application__h--p[data-v-079d1fb4]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.application__h--left[data-v-079d1fb4]{margin-right:10%}.application__h--right[data-v-079d1fb4]{height:80%;width:120px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.application__h--right img[data-v-079d1fb4]{width:120px;height:120px;border:2px solid #999;margin-bottom:30px}.application__form[data-v-079d1fb4]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff}.application__form--box[data-v-079d1fb4]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.application[data-v-079d1fb4] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.application[data-v-079d1fb4] .ivu-form-item-content{margin-left:0}.application .formitem[data-v-079d1fb4]{display:-webkit-box;display:-ms-flexbox;display:flex}.application .ivu-form-item-label[data-v-079d1fb4]{width:100vh}.application__btn[data-v-079d1fb4]{margin:20px 100px}[data-v-079d1fb4] .ivu-form-item-content{margin-left:0!important}[data-v-079d1fb4] .ivu-modal{top:50px}[data-v-079d1fb4] .cropper-wrapper{max-height:80%}[data-v-079d1fb4] .cropper-wrapper .cropper-box{width:80%;height:300px}[data-v-079d1fb4] .cropper-wrapper .cropper-box .img-box,[data-v-079d1fb4] .cropper-wrapper .cropper-box .img-box img{width:inherit;height:inherit}[data-v-079d1fb4] .cropper-wrapper .cropper-box .img-box .cropper-container .cropper-bg{height:300px}
|
||||
0
public/admin/css/chunk-0ba88572.0e433876.css
Normal file
0
public/admin/css/chunk-0ba88572.0e433876.css
Normal file
1
public/admin/css/chunk-0ee9d8f4.4f8fa30d.css
Normal file
1
public/admin/css/chunk-0ee9d8f4.4f8fa30d.css
Normal file
@@ -0,0 +1 @@
|
||||
.loginForm .flexbox{margin-top:25px;width:400px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row;flex-flow:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.loginForm .flexbox-btn{width:100%;height:34px}.loginForm .label{position:absolute;top:-33px;left:0}.login{text-align:center;margin:0;padding:0;height:100%;width:100%;position:relative;background-image:url(../img/pic_bg.d0fb9062.png);background-repeat:no-repeat;background-size:auto 100%;background-attachment:fixed;background-position:100%}.login__logomini{position:absolute;top:1%;left:2%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.login__logomini p{font-size:24px;height:32px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600}.login__title{position:absolute;z-index:10;letter-spacing:10px;left:11%;top:32%;font-size:54px;font-family:HelveticaNeue-Bold,HelveticaNeue;font-weight:700;color:#333}.login__loginyuan{position:absolute;border-radius:50%;width:114px;height:114px;background:linear-gradient(170deg,#ffdf89,#f78c00);top:27%;left:8%}.login__loginyuan-rightcen{position:absolute;border-radius:50%;top:10%;right:33%;width:32px;height:32px;background:linear-gradient(135deg,#ffdf89,#f78c00)}.login__img{position:absolute;right:8%;top:15%}.login-title{font-size:36px;color:#fff;text-align:center;margin:15px;border-bottom:1px solid #d4d4d4;height:60px}.login-con{position:absolute;left:11%;top:45%;width:450px}.login-con-header{font-size:16px;font-weight:300;text-align:center;padding:30px 20px}.login-con .form-con{padding:10px 0 0}.login-con .login-tip{font-size:10px;text-align:center;color:#c3c3c3}.login-con .ivu-card-body{padding:16px 25px}.login-con .ivu-card-body .ivu-card-head{color:#405480}.login-tip{display:-webkit-box;display:-ms-flexbox;display:flex;width:48%;height:100vh;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.login-tip-p{height:34px;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#6c6c6d}
|
||||
1
public/admin/css/chunk-0f7d5f2a.9670b1e4.css
Normal file
1
public/admin/css/chunk-0f7d5f2a.9670b1e4.css
Normal file
@@ -0,0 +1 @@
|
||||
.setmeal__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.setmeal__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.setmeal__form{text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:20px}.setmeal__form,.setmeal__form--box{display:-webkit-box;display:-ms-flexbox;display:flex}.setmeal__form--box{margin-top:30px}.ql-toolbar.ql-snow+.ql-container.ql-snow{height:250px}
|
||||
1
public/admin/css/chunk-0fe8ed3a.ac7c29a4.css
Normal file
1
public/admin/css/chunk-0fe8ed3a.ac7c29a4.css
Normal file
@@ -0,0 +1 @@
|
||||
.configuration__h[data-v-021de566]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.configuration__h--p[data-v-021de566]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.configuration__form[data-v-021de566]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:20px}.configuration__btn[data-v-021de566]{margin:20px 100px}.configuration[data-v-021de566] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.configuration[data-v-021de566] .ivu-form-item-content{margin-left:0}.configuration .formitem[data-v-021de566]{display:-webkit-box;display:-ms-flexbox;display:flex}.configuration .ivu-form-item-label[data-v-021de566]{width:100vh}[data-v-021de566] .ivu-form-item-content{margin-left:0!important}
|
||||
1
public/admin/css/chunk-11f514df.9a49dca7.css
Normal file
1
public/admin/css/chunk-11f514df.9a49dca7.css
Normal file
@@ -0,0 +1 @@
|
||||
.main[data-v-80c8c30e]{padding:18px;background-color:#fff;height:800px}.main h3[data-v-80c8c30e]{font-size:18px;padding-bottom:20px}.content[data-v-80c8c30e]{width:660px;margin:10px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content .form[data-v-80c8c30e]{width:350px}.content .form .username[data-v-80c8c30e]{padding:13px 17px;margin-bottom:12px}.content .form .username span[data-v-80c8c30e]{padding-left:11px}.content .header[data-v-80c8c30e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.content .header img[data-v-80c8c30e]{width:150px;height:150px;margin-bottom:22px}.content .btn[data-v-80c8c30e]{width:80px}[data-v-80c8c30e] .ivu-modal{top:50px}[data-v-80c8c30e] .cropper-wrapper{max-height:80%}[data-v-80c8c30e] .cropper-wrapper .cropper-box{width:80%;height:300px}[data-v-80c8c30e] .cropper-wrapper .cropper-box .img-box,[data-v-80c8c30e] .cropper-wrapper .cropper-box .img-box img{width:inherit;height:inherit}[data-v-80c8c30e] .cropper-wrapper .cropper-box .img-box .cropper-container .cropper-bg{height:300px}
|
||||
1
public/admin/css/chunk-14b9857b.0dc416de.css
Normal file
1
public/admin/css/chunk-14b9857b.0dc416de.css
Normal file
@@ -0,0 +1 @@
|
||||
.error-page{width:100%;height:100%;position:relative;background:#f8f8f9}.error-page .content-con{width:700px;height:600px;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-60%);transform:translate(-50%,-60%)}.error-page .content-con img{display:block;width:100%;height:100%}.error-page .content-con .text-con{position:absolute;left:0;top:0}.error-page .content-con .text-con h4{position:absolute;left:0;top:0;font-size:80px;font-weight:700;color:#348eed}.error-page .content-con .text-con h5{position:absolute;width:700px;left:0;top:100px;font-size:20px;font-weight:700;color:#67647d}.error-page .content-con .back-btn-group{position:absolute;right:0;bottom:20px}
|
||||
1
public/admin/css/chunk-1725a332.46b4cf66.css
Normal file
1
public/admin/css/chunk-1725a332.46b4cf66.css
Normal file
@@ -0,0 +1 @@
|
||||
.apiTestAdd__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.apiTestAdd__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.apiTestAdd__form{text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:30px}.apiTestAdd__form,.apiTestAdd__form--box{display:-webkit-box;display:-ms-flexbox;display:flex}.apiTestAdd__form--box{margin-top:30px}.formItemStyle{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.formItemStyle .ivu-form-item-content{width:100%!important}.formItemStyle__box{margin-left:-110px;position:relative}#formItemStyleWay .ivu-form-item-label{width:200px!important}.star{position:absolute;color:red}.ivu-btn>span>p{color:#00f!important}
|
||||
1
public/admin/css/chunk-177baa9a.3274f4e8.css
Normal file
1
public/admin/css/chunk-177baa9a.3274f4e8.css
Normal file
@@ -0,0 +1 @@
|
||||
.content-layer[data-v-222a0de2]{margin-bottom:20px}.content-layer .title[data-v-222a0de2]{height:50px;margin:0 -20px;margin-top:-20px;padding:14px 30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-bottom:1px solid #e9e9e9;font-size:14px;font-weight:600}.content-layer .title .desc[data-v-222a0de2]{font-size:12px;margin-left:20px;color:#666;font-weight:500}.content-layer[data-v-222a0de2]:last-child{margin-bottom:0}
|
||||
1
public/admin/css/chunk-180c49bb.bb3ea910.css
Normal file
1
public/admin/css/chunk-180c49bb.bb3ea910.css
Normal file
@@ -0,0 +1 @@
|
||||
.application__h[data-v-04ae3d31]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.application__h--p[data-v-04ae3d31]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.application__form[data-v-04ae3d31]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:20px}.application__form--box[data-v-04ae3d31]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.application__btn[data-v-04ae3d31]{margin:20px 150px}.application[data-v-04ae3d31] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.application[data-v-04ae3d31] .ivu-form-item-content{margin-left:0}.application .formitem[data-v-04ae3d31]{display:-webkit-box;display:-ms-flexbox;display:flex}.application .ivu-form-item-label[data-v-04ae3d31]{width:100vh}.formitem__icon[data-v-04ae3d31]{width:300px;height:50px;padding:4px 7px;border-radius:4px;border:1px solid #dcdee2;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[data-v-04ae3d31] .ivu-form-item-content{margin-left:0!important}[data-v-04ae3d31] .ivu-modal{top:50px}[data-v-04ae3d31] .cropper-wrapper{max-height:80%}[data-v-04ae3d31] .cropper-wrapper .cropper-box{width:80%;height:300px}[data-v-04ae3d31] .cropper-wrapper .cropper-box .img-box,[data-v-04ae3d31] .cropper-wrapper .cropper-box .img-box img{width:inherit;height:inherit}[data-v-04ae3d31] .cropper-wrapper .cropper-box .img-box .cropper-container .cropper-bg{height:300px}
|
||||
1
public/admin/css/chunk-1a327599.abf6a1b1.css
Normal file
1
public/admin/css/chunk-1a327599.abf6a1b1.css
Normal file
@@ -0,0 +1 @@
|
||||
.look__h{margin-bottom:30px}.look__steps{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.look__box__left-p,.look__steps{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.look__box__left-p{height:72px;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px}.look__box__left-look,.look__box__left-p{margin-right:40px;background:#fff;border-radius:10px}.look__box__left-look{min-height:664px}.look__box__left-look-content{margin-bottom:10px}.look__box__left-look-form,.look__box__right-p{display:-webkit-box;display:-ms-flexbox;display:flex}.look__box__right-p{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.look__box__right-p h3{font-size:18px;margin-right:5px}.look__box__right-generate{min-height:664px;background:#fff;border-radius:10px}.look__box__right-generate-content{margin-bottom:10px}.testAll{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.testAll__box{width:33%;text-align:center}
|
||||
1
public/admin/css/chunk-1b990f4c.152e20b3.css
Normal file
1
public/admin/css/chunk-1b990f4c.152e20b3.css
Normal file
@@ -0,0 +1 @@
|
||||
.main[data-v-1066d163]{padding:18px;background-color:#fff;height:800px}.main h3[data-v-1066d163]{font-size:18px;padding-bottom:20px}.main .content[data-v-1066d163]{width:660px;margin:5px 20px}
|
||||
1
public/admin/css/chunk-21d05076.48d447fa.css
Normal file
1
public/admin/css/chunk-21d05076.48d447fa.css
Normal file
@@ -0,0 +1 @@
|
||||
.queryKeyWord[data-v-4b37c288]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;margin-bottom:20px}.queryKeyWord__level__p[data-v-4b37c288]{margin-left:40px}.queryKeyWord__input[data-v-4b37c288]{margin-right:40px}.ListTab[data-v-4b37c288]{background:#fff;border-radius:10px}.pagination[data-v-4b37c288]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn[data-v-4b37c288]{margin:0 5px}
|
||||
1
public/admin/css/chunk-25381b2d.81e3e58d.css
Normal file
1
public/admin/css/chunk-25381b2d.81e3e58d.css
Normal file
@@ -0,0 +1 @@
|
||||
.taskConfig__header[data-v-688aa724]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px;padding:0 30px}.taskConfig__header--p[data-v-688aa724]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.taskConfig__tab[data-v-688aa724]{background:#fff;border-radius:10px}.pagination[data-v-688aa724]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn[data-v-688aa724]{margin:0 5px}
|
||||
1
public/admin/css/chunk-27ad7f22.d6c178e3.css
Normal file
1
public/admin/css/chunk-27ad7f22.d6c178e3.css
Normal file
@@ -0,0 +1 @@
|
||||
.content-layer[data-v-cc226e96]{margin-bottom:20px}.content-layer .title[data-v-cc226e96]{height:50px;margin:0 -20px;margin-top:-20px;padding:14px 30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-bottom:1px solid #e9e9e9;font-size:14px;font-weight:600}.content-layer .title .desc[data-v-cc226e96]{font-size:12px;margin-left:20px;color:#666;font-weight:500}.content-layer[data-v-cc226e96]:last-child{margin-bottom:0}
|
||||
1
public/admin/css/chunk-2b2a4fa7.241ff436.css
Normal file
1
public/admin/css/chunk-2b2a4fa7.241ff436.css
Normal file
@@ -0,0 +1 @@
|
||||
.head{height:72px;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.head,.head__tab{background:#fff;border-radius:10px}.head__tab{max-width:2000px;min-width:1000px}.tips-title{font-size:16px;font-weight:600}.tips-content{position:relative;width:100%;border-radius:10px;background:#fff;color:#9090f6;overflow:inherit;height:inherit}.tips-content .ivu-icon-ios-close{position:absolute;right:5px;top:5px}.tips-content .tips-content{padding:30px 60px}
|
||||
1
public/admin/css/chunk-2c359864.0dc416de.css
Normal file
1
public/admin/css/chunk-2c359864.0dc416de.css
Normal file
@@ -0,0 +1 @@
|
||||
.error-page{width:100%;height:100%;position:relative;background:#f8f8f9}.error-page .content-con{width:700px;height:600px;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-60%);transform:translate(-50%,-60%)}.error-page .content-con img{display:block;width:100%;height:100%}.error-page .content-con .text-con{position:absolute;left:0;top:0}.error-page .content-con .text-con h4{position:absolute;left:0;top:0;font-size:80px;font-weight:700;color:#348eed}.error-page .content-con .text-con h5{position:absolute;width:700px;left:0;top:100px;font-size:20px;font-weight:700;color:#67647d}.error-page .content-con .back-btn-group{position:absolute;right:0;bottom:20px}
|
||||
1
public/admin/css/chunk-3148df44.7f8c8114.css
Normal file
1
public/admin/css/chunk-3148df44.7f8c8114.css
Normal file
@@ -0,0 +1 @@
|
||||
.common{float:left;height:100%;display:table;text-align:center}.size{width:100%;height:100%}.middle-center{display:table-cell;vertical-align:middle}.info-card-wrapper{overflow:hidden}.info-card-wrapper,.info-card-wrapper .ivu-card-body{width:100%;height:100%}.info-card-wrapper .content-con{width:100%;height:100%;position:relative}.info-card-wrapper .content-con .left-area{float:left;height:100%;display:table;text-align:center}.info-card-wrapper .content-con .left-area>.icon{display:table-cell;vertical-align:middle}.info-card-wrapper .content-con .right-area{float:left;height:100%;display:table;text-align:center}.info-card-wrapper .content-con .right-area>div{display:table-cell;vertical-align:middle}.count-to-wrapper .content-outer{display:inline-block}.count-to-wrapper .content-outer .count-to-unit-text{font-style:normal}
|
||||
1
public/admin/css/chunk-3385141a.0dc416de.css
Normal file
1
public/admin/css/chunk-3385141a.0dc416de.css
Normal file
@@ -0,0 +1 @@
|
||||
.error-page{width:100%;height:100%;position:relative;background:#f8f8f9}.error-page .content-con{width:700px;height:600px;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-60%);transform:translate(-50%,-60%)}.error-page .content-con img{display:block;width:100%;height:100%}.error-page .content-con .text-con{position:absolute;left:0;top:0}.error-page .content-con .text-con h4{position:absolute;left:0;top:0;font-size:80px;font-weight:700;color:#348eed}.error-page .content-con .text-con h5{position:absolute;width:700px;left:0;top:100px;font-size:20px;font-weight:700;color:#67647d}.error-page .content-con .back-btn-group{position:absolute;right:0;bottom:20px}
|
||||
1
public/admin/css/chunk-33f9744e.46b4cf66.css
Normal file
1
public/admin/css/chunk-33f9744e.46b4cf66.css
Normal file
@@ -0,0 +1 @@
|
||||
.apiTestAdd__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.apiTestAdd__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.apiTestAdd__form{text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:30px}.apiTestAdd__form,.apiTestAdd__form--box{display:-webkit-box;display:-ms-flexbox;display:flex}.apiTestAdd__form--box{margin-top:30px}.formItemStyle{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.formItemStyle .ivu-form-item-content{width:100%!important}.formItemStyle__box{margin-left:-110px;position:relative}#formItemStyleWay .ivu-form-item-label{width:200px!important}.star{position:absolute;color:red}.ivu-btn>span>p{color:#00f!important}
|
||||
1
public/admin/css/chunk-3615acbe.3b225db5.css
Normal file
1
public/admin/css/chunk-3615acbe.3b225db5.css
Normal file
@@ -0,0 +1 @@
|
||||
.main[data-v-16860099]{padding:18px;background-color:#fff;height:800px}.main h3[data-v-16860099]{font-size:18px;padding-bottom:20px}.header[data-v-16860099]{width:660px;height:140px;padding:20px 30px;position:relative;border-bottom:1px solid #afafaf;background:#f7f6f5}.header img[data-v-16860099]{width:100px;height:100px;float:left}.header .username[data-v-16860099]{font-size:30px;margin-left:15px;line-height:100px;float:left}.header button[data-v-16860099]{position:absolute;left:500px;bottom:45px}.content[data-v-16860099]{width:660px;margin:10px 40px}
|
||||
1
public/admin/css/chunk-476210f2.82db88d5.css
Normal file
1
public/admin/css/chunk-476210f2.82db88d5.css
Normal file
@@ -0,0 +1 @@
|
||||
.lookOver{background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;padding:20px}.lookOver__header{margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.lookOver__header,.lookOver__header--left{display:-webkit-box;display:-ms-flexbox;display:flex}.lookOver__header--left img{display:inline-block;width:120px;height:120px;border:2px solid #999;margin-right:20px}.lookOver__header--left p{font-weight:700;font-size:18px}.lookOver__header--right{margin-right:50%}.lookOver__header--right--btn{margin-right:20px}.lookOver__body{outline:1px solid #999;width:600px}.lookOver__body /deep/ .ivu-form-item{border-bottom:1px solid #999;margin-bottom:0}.lookOver__body /deep/ .ivu-form-item:last-child{border-bottom:none}.lookOver__body /deep/ .ivu-form-item-content{border-left:1px solid #999;height:33px;text-align:center}
|
||||
1
public/admin/css/chunk-4a12ae14.6885433b.css
Normal file
1
public/admin/css/chunk-4a12ae14.6885433b.css
Normal file
@@ -0,0 +1 @@
|
||||
.item-card{overflow:hidden;width:23%;font-size:14px;margin-left:2%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:30px;background:#fff;border-radius:10px;height:292px}.item-card .img-container{width:100%;height:158px;margin-bottom:22px}.item-card .img-container img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.item-card .item-headline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer}.item-card .item-headline .item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:20px;width:280px;font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#333}.item-card .item-headline .item-delet{display:none;padding-right:5px;padding-top:5px;color:#fff}.item-card .item-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:#666;margin:5px 20px 13px;font-size:12px}.item-card .item-span{width:100%;height:1px;background:#e8e8e8;display:inline-block}.item-card .item-operation{height:46px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 20px;text-align:center}.item-card .item-operation-copy,.item-card .item-operation-move{width:50%}.item-card .item-operation-copy:hover,.item-card .item-operation-move:hover{color:#f7b500;cursor:pointer}.item-card .copyButton{color:#515a6e}.item-card .copyButton:hover{color:#57a3f3}.item-span{width:100%;height:1px;background:#e8e8e8}.item-card:hover .item-delet,.item-span{display:inline-block}.item-card:hover .item-delet:hover{display:inline-block;color:#ff3c00}.assets-manage-search{margin-bottom:20px}.assets-manage-searchFile{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.assets-manage-inputN,.assets-manage-inputT{width:224px}.assets-manage-inputT{margin:0 20px}.assets-manage-input{width:200px;margin-right:10px}.assets-manage .dropdown{margin-right:10px;font-size:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.assets-manage .assets-container{width:100%}.assets-manage .assets-container .assets-collection{width:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-1%}.assets-manage .assets-container .assets-collection-item:nth-child(5n+0){margin-right:0}.assets-manage .pagination{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.assets-manage .demo-spin-icon-load{margin-bottom:5px;-webkit-animation:ani-demo-spin 1s linear infinite;animation:ani-demo-spin 1s linear infinite}@-webkit-keyframes ani-demo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ani-demo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.assets-manage .demo-spin-col{height:100px;position:relative}
|
||||
1
public/admin/css/chunk-4fd7929c.9a57b075.css
Normal file
1
public/admin/css/chunk-4fd7929c.9a57b075.css
Normal file
@@ -0,0 +1 @@
|
||||
.setmeal__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.setmeal__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.ListTab{background:#fff;border-radius:10px}.pagination{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn{margin:0 5px}
|
||||
1
public/admin/css/chunk-506209df.a8557983.css
Normal file
1
public/admin/css/chunk-506209df.a8557983.css
Normal file
@@ -0,0 +1 @@
|
||||
.addService .ivu-form-item[data-v-c504bbbe]{padding-left:15px}.addService__h[data-v-c504bbbe]{margin-bottom:30px}.addService[data-v-c504bbbe] .ivu-form-item-content{margin-left:0}.addService .flexbox[data-v-c504bbbe]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.addService .flexbox .app_icon[data-v-c504bbbe]{width:100px;height:100px;-o-object-fit:cover;object-fit:cover;margin-right:15px;border-radius:3px;border:1px solid #e4e4e6}.addService .tips[data-v-c504bbbe]{padding:0 16px;color:#888}.addService .ivu-form-item[data-v-c504bbbe]{margin-bottom:15px!important}.addService .ivu-modal-body h2[data-v-c504bbbe]{margin-bottom:20px}.apis-list__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px}.apis-list .addService{color:#00f;font-size:12px;cursor:pointer;font-weight:600}
|
||||
1
public/admin/css/chunk-558c7f5e.01d21fa7.css
Normal file
1
public/admin/css/chunk-558c7f5e.01d21fa7.css
Normal file
@@ -0,0 +1 @@
|
||||
.setmeal__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.setmeal__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.config__box{background:#fff;border-radius:10px;padding:30px}.ql-toolbar.ql-snow+.ql-container.ql-snow{height:250px}
|
||||
1
public/admin/css/chunk-5a05ee36.9b6b679a.css
Normal file
1
public/admin/css/chunk-5a05ee36.9b6b679a.css
Normal file
@@ -0,0 +1 @@
|
||||
.workorderInfo[data-v-22e93598]{background-color:#fff;border-radius:10px}.workorderInfo__h[data-v-22e93598]{height:72px;border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;padding:30px}.workorderInfo__h__line[data-v-22e93598]{display:block;width:1px;height:10px;background-color:#999;margin:0 20px}.workorderInfo__h__fanhui[data-v-22e93598]{color:#486dbe;font-size:14px;cursor:pointer}.workorderInfo__h--p[data-v-22e93598]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.workorderInfo__box[data-v-22e93598]{font-size:14px;border-top:1px solid #c8c8c8;padding:0 30px;display:-webkit-box;display:-ms-flexbox;display:flex}.workorderInfo__box__left[data-v-22e93598]{width:300px;border-right:1px solid #c8c8c8;display:-webkit-box;display:-ms-flexbox;display:flex;padding:30px 0}.workorderInfo__box__left-img[data-v-22e93598]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:20px}.workorderInfo__box__left-box-status[data-v-22e93598]{margin-bottom:15px}.workorderInfo__box__left-box-result[data-v-22e93598]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.workorderInfo__box__left-box-result-circle[data-v-22e93598]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-right:20px;padding:5px 0}.workorderInfo__box__left-box-result-circle-box[data-v-22e93598]{width:10px;height:10px;border-radius:50%;background-color:#333}.workorderInfo__box__left-box-result-circle-line[data-v-22e93598]{background-color:#333;width:1px;position:absolute;height:calc(100% - 10px);left:5px;top:5px}.workorderInfo__box__left-box-result-text div[data-v-22e93598]{margin-bottom:30px}.workorderInfo__box__right[data-v-22e93598]{margin-top:30px;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word}.workorderInfo__box__right-info[data-v-22e93598]{margin-bottom:30px;padding:20px 0 20px 50px;border-bottom:1px solid #c8c8c8}.workorderInfo__box__right-info-title[data-v-22e93598]:before{content:"";width:2px;height:10px;display:block;background-color:#486dbe;margin-right:5px}.workorderInfo__box__right-info-title[data-v-22e93598]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.workorderInfo__box__right-accessory[data-v-22e93598]{padding:20px 0 20px 50px;border-bottom:1px solid #c8c8c8;margin-bottom:30px}.workorderInfo__box__right-accessory-box[data-v-22e93598]{display:-webkit-box;display:-ms-flexbox;display:flex}.workorderInfo__box__right-accessory-box-img[data-v-22e93598]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100px;height:100px;margin-right:10px}.workorderInfo__box__right-reply[data-v-22e93598]{padding:20px 0 20px 50px;border-bottom:1px solid #c8c8c8;margin-bottom:30px}.workorderInfo__box__right-reply-box-msg[data-v-22e93598]{margin-bottom:15px;display:-webkit-box;display:-ms-flexbox;display:flex}
|
||||
1
public/admin/css/chunk-5e77a3dc.297880f6.css
Normal file
1
public/admin/css/chunk-5e77a3dc.297880f6.css
Normal file
@@ -0,0 +1 @@
|
||||
.taskConfig__h[data-v-63ac5eb0]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.taskConfig__h--p[data-v-63ac5eb0]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.taskConfig__form[data-v-63ac5eb0]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:20px}.taskConfig__btn[data-v-63ac5eb0]{margin:20px 130px}.taskConfig[data-v-63ac5eb0] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.taskConfig[data-v-63ac5eb0] .ivu-form-item-content{margin-left:0}.taskConfig .formitem[data-v-63ac5eb0]{display:-webkit-box;display:-ms-flexbox;display:flex}.taskConfig .ivu-form-item-label[data-v-63ac5eb0]{width:100vh}[data-v-63ac5eb0] .scheduledtask__api .ivu-input-inner-container{width:200px!important}[data-v-63ac5eb0] .ivu-form-item-content{margin-left:0!important}.scheduledtask__api[data-v-63ac5eb0]{display:-webkit-box;display:-ms-flexbox;display:flex}.scheduledtask__api[data-v-63ac5eb0] .ivu-form-item{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}
|
||||
1
public/admin/css/chunk-67e7f631.a97c4be1.css
Normal file
1
public/admin/css/chunk-67e7f631.a97c4be1.css
Normal file
@@ -0,0 +1 @@
|
||||
.queryKeyWord[data-v-11806f75]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;margin-bottom:20px;padding:0 30px}.queryKeyWord__input[data-v-11806f75]{margin-right:40px}.queryKeyWord__tab[data-v-11806f75]{background:#fff;border-radius:10px}.pagination[data-v-11806f75]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn[data-v-11806f75]{margin:0 5px}
|
||||
1
public/admin/css/chunk-6fbdb75f.0400d20b.css
Normal file
1
public/admin/css/chunk-6fbdb75f.0400d20b.css
Normal file
@@ -0,0 +1 @@
|
||||
.application__h[data-v-802652d2]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.application__h--p[data-v-802652d2]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.application__form[data-v-802652d2]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:30px}.application__form--box[data-v-802652d2]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.application__btn[data-v-802652d2]{margin:20px 150px}.application[data-v-802652d2] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.application[data-v-802652d2] .ivu-form-item-content{margin-left:0}.application .formitem[data-v-802652d2]{display:-webkit-box;display:-ms-flexbox;display:flex}.application .ivu-form-item-label[data-v-802652d2]{width:100vh}.formitem__btn[data-v-802652d2]{margin-left:20px}.formitem__info[data-v-802652d2]{display:-webkit-box;display:-ms-flexbox;display:flex}.formitem__info-p[data-v-802652d2]{margin-right:5px}.formitem__icon[data-v-802652d2]{width:300px;height:50px;padding:4px 7px;border-radius:4px;border:1px solid #dcdee2;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[data-v-802652d2] .ivu-form-item-content{margin-left:0!important}[data-v-802652d2] .ivu-modal{top:50px}[data-v-802652d2] .cropper-wrapper{max-height:80%}[data-v-802652d2] .cropper-wrapper .cropper-box{width:80%;height:300px}[data-v-802652d2] .cropper-wrapper .cropper-box .img-box,[data-v-802652d2] .cropper-wrapper .cropper-box .img-box img{width:inherit;height:inherit}[data-v-802652d2] .cropper-wrapper .cropper-box .img-box .cropper-container .cropper-bg{height:300px}
|
||||
11
public/admin/css/chunk-7175b263.06f50679.css
Normal file
11
public/admin/css/chunk-7175b263.06f50679.css
Normal file
@@ -0,0 +1,11 @@
|
||||
.bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-wrapper{min-height:500px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cropper-wrapper,.cropper-wrapper .cropper-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.cropper-wrapper .cropper-box{margin-top:20px}.cropper-wrapper .img-box{margin:0 auto;height:540px;width:960px;border:1px solid #ebebeb;display:inline-block;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-wrapper .img-box img{max-width:100%;display:block}.cropper-wrapper .button-box{padding:10px 0 0;margin-bottom:25px;visibility:hidden}.cropper-wrapper .button-box button{margin:0 5px}.cropper-wrapper .file_logo .file_name{text-align:center;padding-bottom:15px}.cropper-wrapper .underline{display:-webkit-box;display:-ms-flexbox;display:flex}
|
||||
|
||||
/*!
|
||||
* Cropper.js v1.5.6
|
||||
* https://fengyuanchen.github.io/cropperjs
|
||||
*
|
||||
* Copyright 2015-present Chen Fengyuan
|
||||
* Released under the MIT license
|
||||
*
|
||||
* Date: 2019-10-04T04:33:44.164Z
|
||||
*/.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}
|
||||
1
public/admin/css/chunk-739b3014.3dacbe95.css
Normal file
1
public/admin/css/chunk-739b3014.3dacbe95.css
Normal file
@@ -0,0 +1 @@
|
||||
.taskConfig__h[data-v-59919237]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.taskConfig__h--p[data-v-59919237]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.taskConfig__tab[data-v-59919237]{background:#fff;border-radius:10px}.taskConfig__input[data-v-59919237]{margin-right:40px}.ListTab[data-v-59919237]{background:#fff;border-radius:10px}.pagination[data-v-59919237]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.formItemStyle[data-v-59919237]{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.formItemStyle[data-v-59919237] .ivu-form-item-content{width:100%!important}.formItemStyle__box[data-v-59919237]{margin-left:-110px;position:relative}#formItemStyleWay .ivu-form-item-label[data-v-59919237]{width:200px!important}.star[data-v-59919237]{position:absolute;color:red}.operation__btn[data-v-59919237]{margin:0 5px}[data-v-59919237] .ivu-form .ivu-form-item-label{text-align:left!important;white-space:nowrap}
|
||||
1
public/admin/css/chunk-775964ca.0093ced2.css
Normal file
1
public/admin/css/chunk-775964ca.0093ced2.css
Normal file
@@ -0,0 +1 @@
|
||||
.taskConfig__h[data-v-2541d228]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.taskConfig__h--p[data-v-2541d228]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.taskConfig__form[data-v-2541d228]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff;padding-top:20px}.taskConfig__btn[data-v-2541d228]{margin:20px 130px}.taskConfig[data-v-2541d228] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.taskConfig[data-v-2541d228] .ivu-form-item-content{margin-left:0}.taskConfig .formitem[data-v-2541d228]{display:-webkit-box;display:-ms-flexbox;display:flex}.taskConfig .ivu-form-item-label[data-v-2541d228]{width:100vh}[data-v-2541d228] .scheduledtask__api .ivu-input-inner-container{width:200px!important}[data-v-2541d228] .ivu-form-item-content{margin-left:0!important}.scheduledtask__api[data-v-2541d228]{display:-webkit-box;display:-ms-flexbox;display:flex}.scheduledtask__api[data-v-2541d228] .ivu-form-item{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}
|
||||
1
public/admin/css/chunk-79b8a506.d55f400d.css
Normal file
1
public/admin/css/chunk-79b8a506.d55f400d.css
Normal file
@@ -0,0 +1 @@
|
||||
.process__header{margin-bottom:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:72px;background:#fff;padding:0 30px;border-radius:10px}.process__header__p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.process__tab{background:#fff;border-radius:10px}.count-style{font-size:50px}
|
||||
1
public/admin/css/chunk-7aff9deb.041c4281.css
Normal file
1
public/admin/css/chunk-7aff9deb.041c4281.css
Normal file
@@ -0,0 +1 @@
|
||||
.assignment__h[data-v-a2e5af1e]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.assignment__h--p[data-v-a2e5af1e]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.assignment__form[data-v-a2e5af1e]{background:#fff;border-radius:10px}
|
||||
1
public/admin/css/chunk-8524bd28.196abffb.css
Normal file
1
public/admin/css/chunk-8524bd28.196abffb.css
Normal file
@@ -0,0 +1 @@
|
||||
.accessLog[data-v-707a547e]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;padding:0 30px}.accessLog__input[data-v-707a547e]{margin-right:40px}.accessLog__btn[data-v-707a547e]{margin-left:30px}.ListTab[data-v-707a547e]{background:#fff;border-radius:10px}.pagination[data-v-707a547e]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn[data-v-707a547e]{margin:0 5px}
|
||||
1
public/admin/css/chunk-92ba96de.fb31c233.css
Normal file
1
public/admin/css/chunk-92ba96de.fb31c233.css
Normal file
@@ -0,0 +1 @@
|
||||
.count-style{font-size:50px}#my_chart{margin:10px 0 20px;padding:50px 0}#my_chart,.statisTab{background:#fff;border-radius:10px}
|
||||
1
public/admin/css/chunk-9b61c4ce.afd03d69.css
Normal file
1
public/admin/css/chunk-9b61c4ce.afd03d69.css
Normal file
@@ -0,0 +1 @@
|
||||
.ListTab[data-v-9b20109c]{background:#fff;margin:20px 0}.assign-byMemberLevel .desc[data-v-9b20109c]{color:#eca71b}.assign-byMemberLevel .ivu-form-item[data-v-9b20109c]{padding-left:15px}.assign-byMemberLevel h2[data-v-9b20109c]{margin-bottom:20px}.assign-byMemberLevel .ivu-form-item-content[data-v-9b20109c]{margin-left:0}.assign-byMemberLevel .tips[data-v-9b20109c]{padding:0 16px;color:#888}.assign-byMemberLevel .ivu-form-item[data-v-9b20109c]{margin-bottom:15px!important}.assign-byMemberLevel .ivu-modal-body h2[data-v-9b20109c]{margin-bottom:20px}.ListTab[data-v-ad45c9c0]{background:#fff;margin:20px 0}.operation a[data-v-ad45c9c0]{margin-right:15px}.add-operation h2[data-v-ad45c9c0],.assign-operation h2[data-v-ad45c9c0]{margin-bottom:20px}.add-operation .ivu-form-item[data-v-ad45c9c0],.assign-operation .ivu-form-item[data-v-ad45c9c0]{padding:0 15px}.operation-permission .add_btn[data-v-ad45c9c0]{margin:15px 0 -10px 0}.assign-operation .ivu-form-item[data-v-ad45c9c0]{margin-bottom:0}.assign-operation .tips[data-v-ad45c9c0]{color:#9090f6}.assign-operation .ivu-form .ivu-form-item-label[data-v-ad45c9c0]{font-weight:600}
|
||||
1
public/admin/css/chunk-a5a5d3e0.99eaf872.css
Normal file
1
public/admin/css/chunk-a5a5d3e0.99eaf872.css
Normal file
@@ -0,0 +1 @@
|
||||
.portStats__query[data-v-0120f89a]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;padding:0 30px}.portStats__query__btn[data-v-0120f89a]{margin-left:30px}.portStats__tab[data-v-0120f89a]{background:#fff;border-radius:10px}#my_chart[data-v-0120f89a]{padding:20px;background-color:#fff;border-radius:10px;margin-bottom:20px}[data-v-0120f89a] .ivu-input{text-align:center}
|
||||
1
public/admin/css/chunk-a89426bc.bcc6eba0.css
Normal file
1
public/admin/css/chunk-a89426bc.bcc6eba0.css
Normal file
@@ -0,0 +1 @@
|
||||
.queryKeyWord[data-v-e09748e4]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;margin-bottom:20px}.queryKeyWord__input[data-v-e09748e4]{margin-right:40px}.ListTab[data-v-e09748e4]{background:#fff;border-radius:10px}.pagination[data-v-e09748e4]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn[data-v-e09748e4]{margin:0 5px}
|
||||
1
public/admin/css/chunk-b1b78d76.5e77e4b5.css
Normal file
1
public/admin/css/chunk-b1b78d76.5e77e4b5.css
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/css/chunk-b8718d50.947f7348.css
Normal file
1
public/admin/css/chunk-b8718d50.947f7348.css
Normal file
@@ -0,0 +1 @@
|
||||
.cm-s-eclipse span.cm-meta{color:#ff1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:700;color:#7f0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:#000}.cm-s-eclipse span.cm-type,.cm-s-eclipse span.cm-variable-2,.cm-s-eclipse span.cm-variable-3{color:#0000c0}.cm-s-eclipse span.cm-operator,.cm-s-eclipse span.cm-property{color:#000}.cm-s-eclipse span.cm-comment{color:#3f7f5f}.cm-s-eclipse span.cm-string{color:#2a00ff}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:red}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-eclipse .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}
|
||||
1
public/admin/css/chunk-c5e5fa26.32572c4f.css
Normal file
1
public/admin/css/chunk-c5e5fa26.32572c4f.css
Normal file
@@ -0,0 +1 @@
|
||||
.portStats__query[data-v-1fd6a8d0]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;padding:0 30px}.portStats__query__btn[data-v-1fd6a8d0]{margin-left:30px}#my_chart[data-v-1fd6a8d0]{padding:20px;background-color:#fff;border-radius:10px}[data-v-1fd6a8d0] .ivu-input{text-align:center}
|
||||
1
public/admin/css/chunk-c7b6077e.3a96015d.css
Normal file
1
public/admin/css/chunk-c7b6077e.3a96015d.css
Normal file
@@ -0,0 +1 @@
|
||||
.application__h[data-v-184477b7]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.application__h--p[data-v-184477b7]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;margin-left:30px;color:#23232a}.application__h--left[data-v-184477b7]{margin-right:10%}.application__h--right[data-v-184477b7]{height:80%;width:120px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.application__h--right img[data-v-184477b7]{width:120px;height:120px;border:2px solid #999;margin-bottom:30px}.application__form[data-v-184477b7]{display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;background:#fff}.application__form--box[data-v-184477b7]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.application[data-v-184477b7] .formitem .ivu-form-item .ivu-form-item-required{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.application[data-v-184477b7] .ivu-form-item-content{margin-left:0}.application .formitem[data-v-184477b7]{display:-webkit-box;display:-ms-flexbox;display:flex}.application .formitem__gray[data-v-184477b7]{color:#999}.application .formitem__red[data-v-184477b7]{color:red}.application .formitem p[data-v-184477b7]{margin:0;padding:0;height:20px}.application .ivu-form-item-label[data-v-184477b7]{width:100vh}.application__btn[data-v-184477b7]{margin:20px 110px}[data-v-184477b7] .ivu-form-item-content{margin-left:0!important}[data-v-184477b7] .cropper-wrapper .cropper-box{width:80%;height:300px}[data-v-184477b7] .cropper-wrapper .cropper-box .img-box,[data-v-184477b7] .cropper-wrapper .cropper-box .img-box img{width:inherit;height:inherit}[data-v-184477b7] .cropper-wrapper .cropper-box .img-box .cropper-container .cropper-bg{height:300px}
|
||||
1
public/admin/css/chunk-c7ef87a6.52390fe4.css
Normal file
1
public/admin/css/chunk-c7ef87a6.52390fe4.css
Normal file
@@ -0,0 +1 @@
|
||||
.portStats__query[data-v-048f31a4]{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;padding:0 30px}.portStats__query__btn[data-v-048f31a4]{margin-left:30px}.portStats__tab[data-v-048f31a4]{background:#fff;border-radius:10px}#my_chart[data-v-048f31a4]{padding:20px;background-color:#fff;border-radius:10px;margin-bottom:20px}[data-v-048f31a4] .ivu-input{text-align:center}
|
||||
20
public/admin/css/chunk-c85dd286.1f0a25b2.css
Normal file
20
public/admin/css/chunk-c85dd286.1f0a25b2.css
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/css/chunk-d3fa1920.e73ef435.css
Normal file
1
public/admin/css/chunk-d3fa1920.e73ef435.css
Normal file
@@ -0,0 +1 @@
|
||||
.register-form .flexbox{margin-top:10px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.register-form .flexbox-l{width:80px}.register-form .flexbox-r{width:350px}.register-form .flexbox-btn{width:65%;height:34px}.login{width:100%;height:100%;background-image:url(../img/login-bg.b594aa18.jpg);background-size:cover;background-position:50%;position:relative}.login-title{font-size:36px;color:#fff;text-align:center;margin:20px;border-bottom:1px solid #d4d4d4}.login-con{position:absolute;right:50%;top:45%;-webkit-transform:translate(50%,-55%);transform:translate(50%,-55%);width:450px}.login-con-header{font-size:16px;font-weight:300;text-align:center;padding:30px 20px}.login-con .form-con{padding:10px 0 0}.login-con .login-tip{font-size:10px;text-align:center;color:#c3c3c3}.login-con .ivu-card-body{padding:16px 40px}
|
||||
1
public/admin/css/chunk-db2eef9e.9a57b075.css
Normal file
1
public/admin/css/chunk-db2eef9e.9a57b075.css
Normal file
@@ -0,0 +1 @@
|
||||
.setmeal__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.setmeal__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.ListTab{background:#fff;border-radius:10px}.pagination{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn{margin:0 5px}
|
||||
1
public/admin/css/chunk-eca8caf6.852680af.css
Normal file
1
public/admin/css/chunk-eca8caf6.852680af.css
Normal file
@@ -0,0 +1 @@
|
||||
#app .ivu-input,#app .ivu-input-number-input{height:34px!important}.workorder,.workorder__h{border-radius:10px}.workorder__h{height:72px;background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.workorder__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.workorder__table{padding:30px 30px 0 30px;margin-bottom:30px}.workorder__table,.workorder__table__header{display:-webkit-box;display:-ms-flexbox;display:flex}.workorder__table__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.workorder__table__header-line{display:block;width:2px;height:14px;background-color:#999;margin:0 20px}.workorder__table__header-status{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.workorder__table__header-reset{margin-left:50px}.workorder__table__add{margin:30px}.workorder__table__list{padding:0 30px}.pagination{margin-right:30px;padding:30px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}
|
||||
1
public/admin/css/chunk-f0987ce8.0e6659ed.css
Normal file
1
public/admin/css/chunk-f0987ce8.0e6659ed.css
Normal file
@@ -0,0 +1 @@
|
||||
.test{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;margin:10px 0 20px;padding:0 30px}.test__input{margin-right:40px}.test__allBtn{margin-right:0}.ListTab{background:#fff;border-radius:10px}.pagination{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn{margin:0 3px}
|
||||
1
public/admin/css/chunk-f11cb01a.9a57b075.css
Normal file
1
public/admin/css/chunk-f11cb01a.9a57b075.css
Normal file
@@ -0,0 +1 @@
|
||||
.setmeal__h{height:72px;background:#fff;-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.05);box-shadow:0 0 30px 0 rgba(0,0,0,.05);border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 30px}.setmeal__h--p{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:#23232a}.ListTab{background:#fff;border-radius:10px}.pagination{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.operation__btn{margin:0 5px}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user