diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7846e89 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea +composer.lock +*.log +thinkphp diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..e69de29 diff --git a/.keep b/.keep new file mode 100644 index 0000000..e69de29 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..36f7b6f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,42 @@ +sudo: false + +language: php + +branches: + only: + - stable + +cache: + directories: + - $HOME/.composer/cache + +before_install: + - composer self-update + +install: + - composer install --no-dev --no-interaction --ignore-platform-reqs + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip . + - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0" + - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0" + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip . + +script: + - php think unit + +deploy: + provider: releases + api_key: + secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw= + file: + - ThinkPHP_Core.zip + - ThinkPHP_Full.zip + skip_cleanup: true + on: + tags: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..56c9a4c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1236 @@ +## 2019-1-11 V5.0.24 + +本次更新包含了一个安全更新,建议更新 + +- 改进关联的save方法 +- 改进模型数据验证 +- Collection增加values方法 +- 改进unique验证方法 +- 改进Request类的method方法 + +## 2018-12-9 V5.0.23 + +本次版本更新主要涉及一个安全更新,推荐尽快更新到最新版本。 + +* Query支持调用模型的查询范围 +* 聚合查询字段支持`DISTINCT` +* 改进闭包验证的参数 +* 多对多关联支持指定中间表数据名称 +* after/before验证支持指定字段验证 +* 改进多对多关联 +* 改进验证类 +* 增加`afterWith`和`beforeWith`验证规则 用于比较日期字段 +* 完善规则提示 +* 改进断线重连 +* 修正软删除的`destroy`方法 +* 修复模型的`save`方法当`data`变量为空 数据不验证 +* 模型增加`replace`方法 +* MorphOne 增加 make 方法创建关联对象实例 +* 改进`count`方法返回值类型 +* 改进聚合查询方法的正则判断 +* 改进`sqlsrv`驱动 +* 完善关联的`save`方法 +* 修正控制器名获取 + + +## 2018-10-22 V5.0.22 + +该版本主要增加了JSON日志格式的支持,并且包含了一个安全更新。 + +* 调试模式下关闭路由解析缓存 +* 改进Log类支持`json`日志格式 +* 改进聚合查询的安全性 +* 改进`count`查询的返回值类型 + +## 2018-9-7 V5.0.21 + +该版本主要做了一些已知问题的修正,改进了对Swoole的支持,以及增加路由解析缓存功能。 + +* 增加路由解析缓存功能 +* 改进url生成的端口问题 +* 改进缓存驱动 +* 改进value方法的缓存处理 +* 修正Builder类的insertAll方法 +* 改进对Swoole的支持(使用参考:[xavier-swoole](https://github.com/xavieryang007/xavier-swoole)) + +## 2018-5-11 V5.0.20 + +该版本为修正版本,修正了一些已知的问题。 + +* `join`方法的条件支持传入`Expression`对象 +* 改进驱动的`parseKey`方法 +* 改进Request类的`host`方法 +* 使用`exp`表达式更新数据的异常提示 +* 修正查询 +* 改进多对多关联的中间表模型更新 + +## 2018-4-25 V5.0.19 + +该版本属于改进版本,主要改进了composer自动加载及内置模板引擎的一处可能的安全隐患。 + +* 改进composer自动加载 +* 改进模板引擎一处安全隐患 +* 改进`comment`方法解析 +* 改进分布式写入数据后及时读取的问题 +* 改进url操作方法的自动转换 +* 改进分页类魔术方法的返回值 +* SQL日志增加主从标记 + +## 2018-4-14 V5.0.18 + +该版本主要修正上一个发布的一些BUG,并且改进了`exp`表达式查询/写入的严谨性。 + +* 修正`field`方法`*`兼容问题; +* 修正`inc/dec`方法; +* 修正`setInc/setDec`方法; +* 改进`insertAll`方法; +* 改进`parseTime`方法; +* 改进`exp`表达式查询/写入的严谨性; + +## 2018-4-12 V5.0.17 + +该版本主要是一些修正和改进,并且包含了一个安全更新。 + +* 改进Response类`create`方法 +* 改进`inc/dec`查询 +* 默认模板渲染规则支持直接使用操作方法名 +* 改进视图驱动 +* 改进Request类ip方法 支持代理设置 +* 修正request类的`create`方法 +* 闭包查询使用`cache(true)`抛出异常 +* 改进composer自动加载文件 +* 增加`Expression`类及相关方法 + +## 2018-3-26 V5.0.16 + +该版本主要做了一些修正和改进,由于包含了一个安全更新,是一个推荐更新的版本。 + +* 改进Url生成 +* 改进composer自动加载性能 +* 改进一对一查询 +* 改进查询缓存 +* 改进field方法 +* 优化Template类 +* 修正分页参数 +* 改进默认模板的自动识别 +* 改进Query类查询 +* Collection类改进 +* 改进模型类`readTransform`方法对序列化类型的处理 +* 改进trace显示 +* 文件日志支持自动清理 +* 改进断线重连的判断 +* 改进验证方法 +* 修正Query类view方法的数组表名定义 +* 改进参数绑定 +* 改进文件缓存的并发删除 +* 改进`inc/dec/exp`更新的安全性 +* 增加控制台配置 + +## 2018-1-31 V5.0.15 + +该版本主要进行了一些修正和完善 + +* 改进View类 +* 改进chunk方法 +* 改进模板引擎的表达式语法 +* 改进自关联查询多级调用问题 +* 关联定义增加`selfRelation`方法用于设置是否自关联 +* 改进file类型的缓存`inc`和`dec`方法不改变缓存有效期 +* 改进软删除 支持设置`deleteTime`属性关闭 +* 改进`union`查询 +* 改进查询缓存 +* 优化File缓存自动生成空目录的问题 +* 改进日志写入并发问题 +* 修正`MorphTo`关联 +* 改进`join`自关联查询 +* 改进`case`标签解析 +* 改进Url类对`url_convert`配置的支持 + + +## 2018-1-1 V5.0.14 + +V5.0.14版本主对复合主键进行了更多支持,改进了PHP7的兼容性,并且对数据库的一些问题做了改进。 + +主要更新如下: + +* 改进Validate类的unique验证 +* Validate类增加checkRule方法用于静态验证多个规则 +* 改进多对多关联的save方法 +* 改进多对多的pivot对象 +* 修正setDec方法的延迟写入 +* max和min方法增加第二个参数用于设置是否强制转换数字 +* 改进View类 +* 改进join关联自身的问题 +* 改进union查询 +* 改进Url类 +* 改进同名路由不同请求的注册 +* 改进Builder类parseData对空数组的判断 +* 改进模板替换 +* 调整BelongsTo的hasWhere方法 +* 改进模板的编译缓存命名规则 增加布局模板的标识 +* 改进insertall方法 +* 改进chunk方法支持复合主键 +* 改进Error类的一个兼容问题 +* 改进model类的save方法的复合主键包含自增的情况 +* save方法改进复合主键的支持 +* 改进mysql的insertAll方法 +* 改进redis长连接多编号库的情况 + +## 2017-12-12 V5.0.13 + +`V5.0.13`主要是对模型和日志方面做了一些改进 + +### [数据库和模型] + +* 改进Model类`save`方法对`oracle`的支持 +* 改进中间表模型的实例化 +* 改进`Pivot`类 +* 模型`saveall`方法支持配合`isUpdate`方法 +* 模型类增加`force`方法设置是否强制更新所有数据 +* 关联自动删除增加一对多关联删除支持 +* 改进`hasWhere`查询的数据重复问题 +* 改进一对多`with`关联查询的`field`支持 +* 模型`saveall`方法支持返回数据集 读取`resultSetType`属性 +* 改进废弃字段判断 +* 模型的`hasWhere`方法增加`fields`参数 +* 改进断线重连异常捕获机制 +* 修正Query类的`inc`和`dec`方法的Mysql关键词问题 +* 修正数据集对象的BUG + +### [其它] + +* 增加`app_dispatch`钩子位置 +* cookie类`httponly`参数默认改为false +* File日志驱动增加`single`参数配置是否记录单个文件日志 +* 单个日志文件支持大小设置 +* 改进日志记录的ip地址 +* Redis缓存驱动改用`serialize`序列化替代json序列化 +* 改进异常捕获 +* 改进上传文件验证 +* 修正redis驱动 +* 改进File缓存的`clear`方法 +* 代码格式化规范 +* 改进一处PHP7.2的兼容问题 +* 调试模式下不读取字段缓存文件 +* `default_filter`支持在模块中配置生效 + +## 2017-11-06 V5.0.12 + +5.0.12是一个修正版本,包含了上个版本发布以来的一些修正和完善,主要包括: + +* 上传类和验证类的多语言支持; +* 模型增加排除和废弃字段支持; +* 改进insertAll方法的分批处理; +* 改进对枚举类型的参数绑定支持; +* 修正社区反馈的问题; + + +### [数据库和模型] + +* 改进Connection类的getRealSql方法 +* 改进append方法支持一对一关联的bind设置 +* 改进whereTime查询 +* 改进model类的`destroy`方法 +* 修正softdelete +* 修正`chunk`方法对时间字段的支持 +* Collection类增加`push`方法 +* 改进alias方法 +* 修正模型类的`append`处理 +* 改进`appendRelationAttr`方法 +* 改进HasManyThrough关联 +* 改进MorphTo关联 +* 模型增加废除字段`disuse`定义 +* 增加排除字段方法`except` +* 修正`has`方法 +* 改进参数绑定类型对枚举类型的支持 +* 改进`insertAll`方法的分批处理 + + +### [其它] + +* 改进Loader类`controller`和`validate`方法支持多层 +* 验证提示信息支持多语言 +* File类错误信息支持多语言 +* 模板渲染异常处理 +* 修正rest控制器 +* 改进trace驱动 +* 改进Cache类的`remember`方法 +* 改进`url_common_param`的情况下urlencode的问题 +* 改进Url类 +* 改进`exception_handle`配置参数对闭包的支持 +* 执行路由缓存命令前检测RUNTIME_PATH是否存在 +* 调整部分`CacheDriver::dec`在为空的时候递减的行为 +* 优化移动端的显示 +* 改进对JSON-Handle插件的支持 +* 改进redis的`get`方法 +* 改进Request类的`host`方法 + + +## 2017-09-08 V5.0.11 + +5.0.11是一个安全及修正版本,包含了上个版本发布以来的一些修正和完善,更新了几处可能的安全问题,主要包括: + +* 完善缓存驱动; +* 改进数据库查询; +* 改进URL生成类; +* 缓存有效期支持指定过期时间; + +### [数据库和模型] + +* 改进数据库驱动类 +* 改进`group`方法的字段关键字冲突 +* 修正聚合查询返回null的问题 +* 改进Db类的强制重连 +* 改进关联的属性绑定 +* 修正事务的断线重连 +* 修正对象的条件查询 +* Db类增加`clear`方法 +* 改进数组查询条件中的`null`查询 +* 改进Query类的`chunk`方法支持排序设置 +* 改进HasOne和HasMany关联的`has`方法 +* 改进软删除的关联删除 +* 改进一个字段多次查询条件 + +### [其它] + +* 缓存有效期支持指定过期时间(`DateTime`); +* 改进Url生成对端口号的支持 +* 改进`RouteNotFound`异常提示 +* 改进路由分组的全局完整路由匹配 +* 修正部分验证规则的错误提示问题 +* 支持数据集和模型的XML响应输出 +* 改进模板的三元运算标签 +* 改进控制器不存在的错误提示 +* input助手函数支持`route`变量获取 +* 支持在配置文件中读取额外配置参数 +* 完善分页类 +* 修复Trait命名空间重复问题 +* 修正Request类的env方法 +* 优先使用Cookie中的多语言设置 +* 获取缓存标签的时候过滤无效的缓存标识 +* 修正路由批量注册的一个BUG +* `exception_handle`配置参数支持使用闭包定义`render`处理 +* 请求缓存支持缓存标签设置 +* 缓存类`remember`方法增加并发锁定机制 +* 改进上传类对`swf`的支持 +* 改进Session类的`prefix`方法 + +## 2017-07-04 V5.0.10 + +5.0.10是一个修正版本,并包含了一个安全更新,推荐更新,主要包含: + +* 数据库和模型的多处改进 +* 添加新的行为监听 +* 路由支持Response设置 +* 改进调试模式下数据库敏感信息暴露 + +### [数据库和模型] + +* 修正join其他表时生成的delete语句错误 +* 修正远程一对多 +* insertall支持replace +* 修正多对多默认的中间表获取 +* 改进更新后的模型`update_time`数据更新 +* model类增加`removeRelation`方法 +* 模型类增加`setInc`和`setDec`方法 +* 模型类增加`autoWriteTimestamp`方法动态设置时间字段写入 +* 改进驱动类方法的断线重连判断 +* 改进多对多的数据更新 +* 改进BelongsToMany关联查询 +* 修正Query类的value和column方法 +* 改进in查询的去重问题 +* 修正模型类的scope方法传值问题 +* 调整模型的save方法`before_update`检查位置 +* 修改器和获取器方法支持第三个关联数据参数 + +### [其它] + +* 默认关闭调试模式 +* 修复配置extra目录临时文件的错误加载 +* 添加log存储完成行为监听 `log_write_done` +* 改进Build类生成公共文件的目录判断 +* 增加`response_send`行为监听 +* 路由增加response参数用于绑定response处理行为 +* 改进redirect的参数传入 +* 改进环境变量的布尔值读取 +* 改进Url类的域名传入 +* 修正命令行文件生成 +* 改进命令行下面的URL生成 +* 添加`app_host`参数设置默认的URL根地址 +* 改进`Request`类`isSsl`方法判断支持CDN +* 增加`record_trace`配置参数用于日志记录trace信息 + +## 2017-05-20 V5.0.9 + +5.0.9是一个修正版本,推荐更新,主要更新包含: + +### [数据库和模型] + +* 修正关联自动写入 +* 修正模型数据变化判断对为空数据的支持 +* 修正Query类的useSoftDelete方法返回值 +* 修正一对一嵌套关联数组定义的问题 +* 修正使用了手动参数绑定的时候的缓存BUG +* 改进数据库类的一处不能嵌套查询的缺陷 +* 改进数据库断线重连判断 +* 改进模型的appendRelationAttr方法 +* 改进模型类destroy方法传入空数组的时候不进行任何删除操作 +* 改进一对多关联数据的输出 +* 改进模型的save方法对allowField方法的支持 +* 改进分页类的toarray方法 增加总页数 +* 比较运算增加闭包子查询支持 +* db助手函数默认不再强制重新连接 +* 改进belongsToMany的查询字段指定 +* 分页类增加each方法 + +### [其它] + +* 修正路由分组的路由规则大小写识别问题 +* 修正命令行的日志切割生成 +* 修复URL生成时路由规则中的参数没有进行 urlencode +* 改进Request类的filter过滤机制 支持正则 +* 改进Response类支持手动设置contentType +* 修正异常模板中助手函数未定义错误 + +## 2017-04-28 V5.0.8 + +### 主要调整 + +* 改进关联模型 +* 改进日志记录 +* 增加多态一对一关联 +* 修正社区反馈的一些BUG + +### [ 请求和路由 ] + +* 修正Request类`cookie`方法对前缀的支持 +* 改进全局请求缓存的缓存标识 +* 改进Request类`param`方法 +* 修正别名路由 + +### [ 模型和数据库 ] + +* 改进模型数据的更新检查 +* 改进Query类的`column`方法 +* 改进软删除条件在使用闭包查询情况下多次生成的问题 +* belongsToMany增加数据同步方法 +* 查询范围支持静态调用 +* 增加多态一对一(MorphOne)关联 +* 改进BelongsTo关联 +* 改进多态关联支持关联数据添加和注销 +* 改进多对多关联,支持中间表模型自定义 并且定义的时候不需要使用完整表名 +* 改进浮点数类型转换避免出现逗号 +* 调整关联模型的save方法返回值 +* 模型类的get方法第一个参数必须 如果传入null则返回null +* model的save方法改进如果数据没有更新不执行 +* Query增加`useSoftDelete`方法可以单独设置软删除条件 +* 重载BelongsToMany的`selectOrFail`和`findOrFail`方法 +* 重载BelongsToMany的`select` 、`find`和 `paginate`方法 +* 增加模型和`Pivot`对象的`parent`属性 +* 多对多关联支持设置中间表模型 +* 改进Query类的`view`方法中字段的关键字问题 +* 主从数据库的时候开启事务始终操作主库 + +### [ 其它 ] + +* 改进Cookie类的`get`方法支持获取全部 +* `schema`指令增加`config`参数,支持传入数据库连接配置 +* 改进cache类的`store`方法为当次有效 +* 修正cache助手函数对`option`传参的支持 +* 修复`optimize:autoload`命令在`EXTEND_PATH`目录不存在的情况下,类库映射生成错误问题 +* 支持自定义的根命名空间也可以生成类库映射缓存 +* 验证字段比较支持对比其他字段 +* 修复`Session::prefix('xxx');`设置当前作用域BUG +* 改进`optimize::schema`指令 +* 修复`clear`指令无法删除多级目录下文件的问题 +* 改进默认语言读取和自动侦测 +* 改进日志记录格式 并且命令行下面日志改为实时写入 +* 修正模板标签默认值某些情况无效bug +* 改进Url生成对完整域名的支持 +* 改进`Clear`指令不删除`.gitignore` 文件 +* 修复Memcache缓存驱动的`inc`方法 + +### 调整 + +* 如果自定义了应用的命名空间的话,原来的`app_namespace`配置参数改为`APP_NAMESPACE`常量在入口文件中定义 +* 多对多关联的中间表名称不需要添加表前缀 +* 模型的scope方法之后只能使用数据库查询方法而不能使用模型的方法 + +## 2017-02-24 V5.0.7 + +### 主要调整 + +本次更新主要为BUG修正和改进,主要改进如下: + +* 改进全局请求缓存对子域名的支持; +* 改进数据缓存自动更新机制; +* 关联统计支持指定统计属性名; +* 模型嵌套关联支持数组方式; +* HasOne关联支持`has`和`hasWhere`方法; +* 路由的`ext`和`deny_ext`参数允许设置为空(表示不允许任何后缀或者必须使用后缀访问); + +### 修正如下 + +* 修正 IN / NOT IN 型查询条件为空导致的 sql 语法错误 +* 修正分页类的`toArray`方法对简洁模式的支持 +* 修正Model类`delete`方法对多主键的处理 +* 修正软删除对`Mongodb`的支持 +* 修正`Connection`类一处可能的错误 +* 改进Query类的find方法的缓存机制 +* 修正BelongsTo关联 +* 修正JOIN方式一对一关联预载入闭包查询 +* 修正Query类的`insert`方法一处可能存在的警告错误 +* 修正Model类一处Collection的`use`冲突 +* 修正Model类`hasWhere`方法 +* 修正URl生成对`ext`参数的支持 +* 文件缓存`clear`方法会删除空目录 +* 修正Route类的`parseUrlPath`方法一处问题 + +### 调整如下 + +* 默认关闭session的安全参数`secure`,此选项仅能在HTTPS下设置开启 + +## 2017-02-07 V5.0.6 + +### 主要调整: + +本次更新主要为BUG修正及优化(可无缝升级): + +* 数据库支持断线重连机制; +* 改进查询事件的回调参数; +* 改进数据自动缓存机制; +* 增加时间字段自动格式转换设置; +* `MongoDb`和`Oracle`扩展更新至最新核心框架; + +### [数据库和模型] + +* 修正hasMany关联的`has`方法 +* 去除一些数据库惯例配置 避免使用数据库扩展的时候影响 +* 改进多对多的`attach`方法的返回值 +* 增加Mysql的断线重连机制和开关 +* 改进Query类的`find`方法数据缓存机制 +* 改进Query类查询事件的回调参数 +* 改进Query类的自动缓存更新 +* Model类增加`readonly`方法 +* 改进Model类的`has`和`hasWhere`方法 +* 改进模型类的`get`和`all`方法 第二个参数为true或者数字表示缓存参数 +* 修复闭包查询条件为空导致的 sql 语法错误 +* 改进Query类的`setBuilder`方法 避免因自定义连接器类后找不到生成器类 +* 删除Connection类废弃属性`resultSetType` +* 优化Connection类`close`方法 +* 修正Connection类的`bindParam`方法对存储过程的支持 +* 数据库配置参数`datetime_format` 设置为`false`表示关闭时间字段自动转换输出 +* 改进软删除的数据库兼容性问题 支持`Mongodb` + +### [其它] + +* 改进Url类生成 `root`为`/`的情况 +* redirect助手函数和controller类的redirect方法增加with参数 +* 全局请求缓存添加排除规则 添加request_cache_except配置参数 +* Cache类store方法参数允许为空 表示获取当前缓存驱动句柄 +* 改进Validate类的ip验证规则 + +## 2017-01-23 V5.0.5 +### 主要调整: + +本次更新主要改进了数据访问层和模型关联: + +* 增加快捷查询及设置方法; +* 增加关联统计功能; +* 增加关联查询延迟预载入功能; +* 增加关联一对一自动写入和删除; +* 改进存储过程查询; +* 改进关联数据输出; +* 优化查询性能; +* 模型时间字段自动格式化输出; + +### [请求和路由] + +* 改进路由定义的后缀检测 +* Route类的`rest`方法支持覆盖定义 +* 改进Request类的`put`和`post`方法对`json`格式参数的接收 +* Request类增加`contentType`方法 +* 改进Route类`setRule`方法 +* 改进Request类的`create`方法 +* 改进路由到控制器类的方法对默认渲染模板的影响 +* 修正Url类`build`方法定义路由别名后的BUG + +### [数据库和模型] + +* 增加关联统计功能 +* 增加一对一关联自动写入功能 +* 修正聚合模型的`delete`方法 +* 改进Model类的`useGlobalScope`方法 +* Model类的日期类型支持设置为类名 +* Query类增加`data`/`inc`/`dec`/`exp`方法用于快捷设置数据 `insert`和`update`方法参数可以为空 读取`data`设置数据 +* 优化Connection的查询性能 +* 修正Builder类的`parseOrder`方法 +* 修正BelongsToMany类的`attach`方法 +* BelongsToMany类的`attach`方法改进 支持批量写入 +* 改进BelongsToMany类的`saveall`方法 增加第三个参数 用于指定额外参数是否一致 +* Query类的`order`方法支持多次调用合并 +* 改进`count`方法对`group`查询的支持 +* 增加时间戳自动写入的判断 +* 改进Model类`writeTransform`方法 +* 改进Model的时间戳字段写入和读取 +* 写入数据为对象的时候检测是否有`__toString`方法 +* 改进Mysql驱动的`getFields`方法 +* 改进自动时间字段的输出 +* `like`查询条件支持数组 +* 自动时间字段的获取自动使用时间格式化 +* 改进单个字段多次Or查询情况的查询 +* 修正`null`查询的条件合并 +* 改进Query类`paginate`方法第一个参数可以使用数组参数 +* 改进数据集对象的返回,由Query类的select方法进行数据集转换,原生查询不再支持返回数据集对象 +* 增加`whereNull`、`whereIn`等一系列快捷查询方法 +* `fetchPdo`方法调整 +* 改进对存储过程调用的支持 改进`getRealSql`的调用机制 改进数据表字段使用中划线的参数绑定支持 +* 数据库配置参数增加`result_type` 用于设置数据返回类型 方法参数名称调整 +* 改进Query类的`whereTime`方法支持更多的时间日期表达式(默认查询条件为大于指定时间表达式) +* 取消`min`/`max`/`sum`/`avg`方法的参数默认值 +* Query类增加`getPdo`方法用于返回`PDOStatement`对象 +* 改进`today`的日期表达式查询 +* 改进关联属性的获取 +* 改进关联定义中包含查询条件后重复执行的问题 +* 改进参数绑定支持中文字段自动绑定 +* 改进Builder类的`insertall`方法 增加对null和对象数据的处理 +* 改进参数绑定类型 支持`bit`类型自动绑定 +* Connection类`model`方法更改为`getQuery` +* 优化Connection类`__call`方法 +* 修正聚合模型 +* 一对一关联预载入默认改为IN查询方式 +* 增加`collection`助手函数用于数据集转换 +* 增加`load_relation`助手函数用于数组的延迟预载入 +* 改进Model类的`has`方法第二个参数支持使用数组和闭包,无需再使用`hasWhere` +* `relation`方法支持嵌套关联查询 +* 增加`think\model\Collection`作为模型的数据集查询集合对象 +* 取消关联定义的`alias`参数(仅`morphTo`保留) +* Model类的`delete`方法,支持没有主键的情况 +* Model类的`allowField`方法支持逗号分割的字符串 +* 改进写入数据的自动参数绑定的参数名混淆问题 +* 关联预载入查询的属性名默认使用小写+下划线命名 +* Query类的`with`和`relation`方法支持多次调用 +* Collection类增加`hidden`、`visible`和`append`方法 +* 修正软删除的强制删除方法 + +### [其它] + +* `unique`验证规则支持指定完整模型类 并且默认会优先检测模型类是否存在 不存在则检测数据表 +* 改进`Loader`类的`model`、`controller` 和 `validate`方法 支持直接传入类名实例化 +* `Session`类增加安全选项`httponly`和`secure` +* 可以允许自定义`Output`的driver,以适应命令行模式下调用其它命令行指令 +* 改进`loader`类`action`的参数污染问题 +* Validate类的`confirm`验证改为恒等判断 +* 改进`Validate`类的错误信息处理 +* 修正`Validate`类的布尔值规则验证 +* 改进`cookie`助手函数对前缀的支持 +* 文件缓存默认开启子目录缓存避免文件过多导致性能问题 + +### [调整] +* Connection类`model`方法更改为`getQuery` +* 原生查询不再支持返回数据集对象 +* 分页查询返回类型变成`think\Paginator`(用法不变) +* 模型的时间日期字段会自动进行格式化输出,不需要进行额外处理。 +* Session类添加了`secure`和`httponly`参数,并且默认是true + +## 2016-12-20 V5.0.4 +### 主要调整: + +* 关联模型重构并增加多态一对多关联; +* 数据库支持一个字段多次调用不同查询条件; +* 增加数据库CURD事件支持; +* 路由到类和控制器的方法支持传入额外参数; +* 支持全局模板变量赋值; +* 模型支持独立设置查询数据集对象; +* 日志针对命令行及调试做出改进; +* 改进Hook类的行为方法调用 + +### [请求和路由] +* 请求缓存支持模块单独开启 +* Request类`post`方法支持获取`json`方式的请求数据 +* 路由到类的方法和控制器方法 支持传入额外参数,用于方法的参数 +* 改进控制器自动搜索的目录规范 +* 改进请求缓存 +* 改进自动参数绑定 +* 修正路由的请求缓存设置 +* 改进Route类name方法 + +### [数据库和模型] +* 增加数据库查询(CURD)事件 +* 改进多表更新的字段不存在问题 +* 改进Model类的`useGlobalScope`方法 +* 修正子查询作为表名查询的问题 +* Model类增加`resultSetType`属性 用于指定模型查询的数据集对象(默认为空返回数组) +* Model类增加`toCollection`方法(自动调用) +* 关联模型架构调整 +* 改进预载入`with`方法的参数支持小写和下划线定义 +* 修正关联多对多一处错误 +* 改进关联多对多的查询 +* 关联模型支持多态一对多关联 +* 预载入关联查询支持关联对象属性绑定到当前模型 +* 支持追加关联对象的属性到当前模型数据 +* 一对一关联预载入支持JOIN和IN两种方式(默认为JOIN) +* 改进多对多查询 +* 改进模型更新的数据变化比较规则 +* 查询支持一个字段多次查询条件 +* 改进sql日志的sql语句 +* 修正`join`自身表的别名覆盖问题 +* 模型类的`connection`属性和数据库默认配置合并 +* 改进`in`和`between`查询条件的自动参数绑定 +* 改进Query类对数据集对象以及关联字段排序的支持 +* 增加模型的快捷事件方法 +* 改进Query类的`getTableInfo`方法缓存读取 +* model类的`saveAll`方法支持调用`allowField`方法进行字段过滤 +* 修正关联查询的时候 `whereTime`方法的bug +* 改进Query类的聚合查询 +* table方法支持字符串方式的子查询 +* 修正`count` `avg`方法使用`fetchsql`无法正确返回sql的问题 + +### [其它] +* 改进命令行下的日志记录 +* 部署模式下简化日志记录 +* 增加debug日志类型 仅限调试模式记录 +* 改进Template类`parseTemplateFile`方法 +* 改进Validate类的`getRuleMsg`方法 +* 控制器的`error`方法在AJAX请求默认返回url为空 +* Validate类架构方法增加`field`参数 用于设置验证字段的描述 +* 改进App类`invokeMethod`方法对架构函数依赖注入的支持 +* 增加RedirectResponse的`restore`方法返回值 +* View类增加`share`静态方法 用于静态赋值模板变量 +* 验证类增加`hasScene`方法判断是否存在某个场景的验证配置 +* 修正redis和session驱动的`destroy`方法返回值 +* 空操作方法的参数传入去掉操作方法后缀 +* 在控制器中调用request和view增加类型提示 +* 改进`input`助手函数支持多维数据获取 +* Cache类增加`pull`和`remember`方法 +* 改进验证类的`confirm`验证规则 支持自动规则识别 +* 改进验证类的错误信息定义 +* 增加Validate类自定义验证错误信息的替换规则 +* Cookie类增加`forever`方法用于永久保存 +* 模板渲染支持从视图根目录读取模板 +* 改进Hook类的exec方法 + +### [调整] +* Db类查询不再支持设置自定义数据集对象 +* 废除Query类的`fetchClass`方法 +* 控制器的`error`方法在AJAX请求默认返回的url为空 +* 关联方法定义不支持使用小写下划线,必须使用驼峰法 +* 行为类的方法必须使用驼峰法命名 + +## 2016-11-11 V5.0.3 +### 主要调整: +* 请求缓存增强; +* 路由增强; +* 数据库和模型完善; +* 支持反射的异常捕获; +* File类改进; +* 修正社区反馈的一些BUG; + +### [ 请求和路由 ] + +* 资源路由自动注册的路由规则的时候会记录当前使用的资源标识; +* 增强请求缓存功能和规则定义,支持全局自动缓存 +* 修正控制器自动搜索的大小写问题 +* 修正路由绑定到命名空间后 类的自动定位 +* 改进Route类的parseRule方法 路由地址中的变量替换不自动去除路由变量 +* 改进控制器自动搜索 +* Route类增加setOption和getOption方法 用于记录当前路由执行过程中的参数信息 +* 优化路由分组方法 +* 改进分组路由的url生成 + +### [ 数据库和模型 ] + +* 一对一关联查询方法支持定义`field`方法 +* 聚合模型支持设置`field`属性 +* 改进Query类的`alias`方法 +* 改进Query类`join`和`view`方法的table参数 +* 改进Query类`where`方法 +* 改进Query类的`paginate`方法,支持`order`方法 +* 改进Query类的`min`和`max`方法支持日期类型 +* 修正软删除`withTrashed`方法 +* 优化Connection类的`getRealSql`方法生成的sql + +### [ 其它 ] +* 增加request_cache和request_cache_expire配置参数用于配置全局请求缓存; +* 修正input助手函数的数组过滤 +* cache助手函数支持清空操作 +* 改进Config类load方法 一级配置名称强制转为小写 +* 修正Url多次生成的问题 +* File类修正某些环境下面无法识别上传文件的问题 +* 改进App类的空操作方法调用 +* 域名部署URL生成不依赖 url_domain_deploy 配置参数 +* 修正Url类域名部署的问题 +* 视图文件目录支持集中式存放 不放入模块目录 +* cache助手函数支持 remember方法 +* Request类的input方法或者input助手函数的`filter`参数支持传入null 表示不过滤 + +## 2016-10-24 V5.0.2 +### 主要调整: + +* 数据库和模型完善; +* 路由功能完善; +* 增加`yaml`配置格式支持; +* 依赖注入完善; +* Session类完善; +* Cookie类完善; +* Validate类完善; +* 支持反射类的异常捕获; +* 修正社区反馈BUG; + +### [ 请求和路由 ] +* 依赖注入的类如果定义了`invoke`方法则自动调用 +* Request类的`header`方法增加自定义header支持 +* Request类禁止直接实例化调用 +* 改进Request类ip方法 +* 路由变量规则支持闭包定义 +* 路由参数增加`ajax`和`pjax`判断 +* 别名路由增加允许和排除操作 +* 改进路由域名绑定后的url生成 +* 路由生成改进对路由到类的支持 +* 路由生成支持`url_param_type`配置参数 +* 路由生成支持别名路由 +* Route重定向规则支持更多` schema` +* 别名路由支持定义单独方法的请求类型 +* 改进路由分组的url生成 +* 路由规则的组合变量支持可选分隔符定义 +* 改进路由合并参数的获取 +* 路由规则支持单独设置url分隔符,路由参数为 `param_depr` +* 自动搜索控制器支持自定义访问控制器层的情况 +* 改进路由标识不区分大小写 +* 改进路由地址是否定义过路由规则的检测 + +### [ 数据库和模型 ] +* 改进Query类的join方法 +* 改进Query类分页方法的参数绑定 +* 修正软删除方法 +* 修正Query类parseOrder方法一处错误 +* 修正sqlsrv驱动parseOrder方法 +* 修正Query类setInc和setDec方法 +* 改进Model类的save方法支持非自增主键的处理 +* 整型字段的参数绑定如果为空写入默认值0 +* 改进Model类has和hasWhere方法 +* 改进Query类的value方法缓存判断 +* 改进Query类join方法对子查询支持 +* 改进Query类的table方法和alias方法用法 +* 关联预载入支持`hasOne`自关联 +* 改进Builder类的parseKey方法 +* 改进Builder类的join/alias/table方法的解析 +* 改进全局查询范围 +* 改进Query类的聚合查询方法的返回值 +* 改进关联属性的读取 +* 改进聚合模型主键和关联键相同的情况 +* 改进模型在开启`class_suffix`参数情况下的name属性的识别 + +### [ 其它 ] +* Cache类增加`remember`方法 用于当获取的缓存不存在的时候自动写入 +* Session类增加`flash`方法用于设置下一次请求有效的值 +* Session类增加`flush`方法用于清空当前请求有效的值 +* Session类增加`push`方法用于更新数组数据 +* 增加yaml配置格式支持 +* 改进App类的反射异常无法捕获问题 +* 修正session助手函数的清空操作 +* 改进验证类的`image`方法 +* 改进验证类的`activeUrl`方法 +* 改进自定义验证规则的使用 +* 改进控制器自动搜索后的控制器名获取 +* 修正import方法加载extend目录类库 +* 修正json_encode时 "Failed calling XXX::jsonSerialize()" 的异常 +* 改进Loader类model和validate方法的单例问题 +* 改进方法执行的日志记录 +* 改进模板引擎的Think变量解析 +* 改进Lang类`load`方法 +* 验证错误信息支持多语言读取 +* 改进ROOT_PATH常量 +* 改进语言包加载 +* 改进模板session和cookie变量获取,自动判断前缀 +* 缓存驱动统一增加handler方法用于获取操作对象的句柄(某些缓存类型可能为null) +* File类增加`__call`方法用于兼容5.0版本的`md5`和 `sha1`方法 +* 改进文件缓存驱动的`clear`方法 +* Lang类增加`setLangCookieExpire`方法设置多语言cookie过期时间 +* 增加`route_complete_match`配置参数 + +### [ 调整 ] +下列模型属性和方法由原来的静态(static)定义改为动态定义: +* 聚合模型的`relationModel`属性 +* Model类的`useGlobalScope `属性 +* 全局查询范围方法`base`改为动态方法 +* 软删除属性 `deleteTime`属性 + + +## 2016-9-28 V5.0.1 +### 主要调整: +* [依赖注入](215849)完善; +* [扩展配置](118027)文件位置调整; +* 新增数据表[字段缓存命令](211524); +* 支持设置当前的查询对象; +* 支持[请求和路由缓存](215850); + +### [ 请求和路由 ] +* 改进Controller类的`success`和`error`方法的跳转地址识别 支持更多Scheme +* 操作方法和架构方法支持任何对象自动注入 +* Requesst类增加`getInput`方法 用于获取` php://input`值 +* 路由到方法的时候 支持架构方法注入请求对象 +* 改进Route类路由到类的判断 +* Request增加`cache`方法,支持请求缓存 +* 绑定到模块后 路由依然优先检查 +* 路由增加请求缓存参数 +* 修正路由组合变量的可选变量的BUG + +### [ 数据库 ] +* 修正`pgsql`数据库驱动的数据表字段信息读取 +* 改进Query类的`view`方法 第二个参数默认值更改为true 获取全部的字段 +* 数据库配置信息增加`query`参数用于配置查询对象名称 +* 型类增加`query`属性用于配置模型需要的查询对象名称 +* 改进数据表字段缓存读取 +* 改进数据表字段缓存生成 模型为抽象类或者 没有继承Model类 不生成字段缓存 +* 改进模型的字段缓存 虚拟模型不生成字段缓存 +* 改进数据表字段缓存生成 支持读取模块的模型生成 +* 改进聚合模型的`save`方法 主键写入 +* 模型类的field属性定义简化 取消`Query`类的`allowField`和`setFieldType`方法及相关属性 +* 改进数据表字段缓存生成 支持生成多个数据库的 +* 更新数据库驱动类 改进`getTables`方法 +* 增加` optimize:schema` 命令 用于生成数据表字段信息缓存 +* 修正一个查询条件多个条件的时候的参数绑定BUG +* 分页查询方法`paginate`第二个参数传入数字表示总记录数 +* 修正mysql的`JSON`字段查询 +* 改进Query类的getOptions方法 当name参数不存在的时候返回null + +### [ 模型和关联 ] +* 模型类的field属性不需要添加字段类型定义 +* 改进Model类 添加`getDb`静态方法获取db查询对象 +* 改进聚合模型`save`方法返回值 +* 改进Relation类`save`方法 +* 修正关联模型 多对多`save`方法一处问题 +* 改进Model类的save方法 修正不按主键查询的更新问题 +* 时间字段获取器获取的时候为NULL则不做转换 + +### [ 其它 ] + +* 改进配置缓存生成 支持扩展配置 +* 取消`extra_config_list`配置参数 扩展配置文件直接放到 `extra`目录下面即可自动加载(数据库配置文件位置不变) +* cache助手函数支持判断缓存是否有效 +* 修正 模板引擎驱动类的`config`方法 +* 修复在配置Model属性field=true情况下,通过`__call`调用db()引发的BUG +* 改进模板引擎驱动的config方法 支持获取配置参数值 +* 改进redirct的url地址解析 +* 删除`File`类的`md5`和`sha1`方法 改为`hash`方法 支持更多的散列值类型生成 +* 增加`response_end`行为标签 +* 改进默认语言的加载 + +## 2016-9-15 V5.0 + +### [ 请求和路由 ] + +* Request对象支持动态绑定属性 +* 定义了路由规则的URL原地址禁止访问 +* 改进路由规则存储结构 +* 路由分组功能增强,支持嵌套和虚拟分组 +* 路由URL高效反解 +* 改进Request对象param方法获取优先级 +* 路由增加name方法设置和获取路由标识 +* 增加MISS和AUTO路由规则 +* Route类增加auto方法 支持注册一个自动解析URL的路由 +* 路由规则支持模型绑定 +* 路由变量统一使用param方法获取 +* 路由规则标识功能和自动标识 +* 增加生成路由缓存指令 optimize:route +* Request对象增加route方法单独获取路由变量 +* Request对象的param get post put request delete server cookie env方法的第一个参数传入false 则表示获取原始数据 不进行过滤 +* 改进自动路由标识生成 支持不同的路由规则 指向同一个路由标识,改进Url自动生成对路由标识的支持 +* 改进Request类 filter属性的初始化 +* 改进Request类的isAjax和isPjax方法 +* Request类增加token方法 +* 路由配置文件支持多个 使用 route_config_file 配置参数配置 +* 域名绑定支持https检测 +* 改进域名绑定 支持同时绑定模块和其他 支持绑定到数组定义的路由规则,取消域名绑定到分组 +* 路由规则增加PATCH请求类型支持 +* 增加route_complete_match配置参数设置全局路由规则定义是否采用完整匹配 可以由路由规则的参数complete_match 进行覆盖 +* 改进路由的 后缀参数识别 优先于系统的伪静态后缀参数 +* Url类增加root方法用于指定当前root地址(不含域名) +* 改进Url生成对可选参数的支持 + +### [ 数据库 ] + +* 查询条件自动参数绑定 +* 改进分页方法支持参数绑定 +* Query类的cache方法增加缓存标签参数 +* Query类的update和delete方法支持调用cache方法 会自动清除指定key的缓存 配合查询方法的cache方法一起使用 +* 改进Query类的延迟写入方法 +* Query类的column和value方法支持fetchsql +* 改进日期查询方法 +* 改进存储过程方法exec的支持 +* 改进Connection类的getLastInsID方法获取 +* 记录数据库的连接日志(连接时间和DSN) +* 改进Query类的select方法的返回结果集判断 +* Connection类增加getNumRows方法 +* 数据库事务方法取消返回值 +* 改进Query类的chunk方法对主键的获取 +* 改进当数据库驱动类型使用完整命名空间的时候 Query类的builder方法的问题 + +### [ 模型 ] + +* 增加软删除功能 +* 关联模型和预载入改进 +* 关联预载入查询闭包支持更多的连贯操作 +* 完善savell方法支持更新和验证 +* 关联定义统一返回Relation类 +* Model类的has和hasWhere方法对join类型的支持 +* Model类的data方法 批量赋值数据的时候 清空原始数据 +* Model类的get方法第三个参数传入true的时候会自动更新缓存 +* Model类增加只读字段支持 +* Model类增加useGlobalScope方法设置是否启用全局查询范围 +* Model类的base方法改为静态定义 全局多次调用有效 +* Model类支持设定主键、字段信息和字段类型,不依赖自动获取,提高性能 +* Model类的data方法 支持修改器 +* 改进Relation类对非数字类型主键的支持 +* 改进Relation类的一对多删除 +* 修正Relation类的一对多关联预载入查询 + +### [ 日志和缓存 ] + +* 支持日志类型分离存储 +* 日志允许设置记录级别 +* 增加缓存标签功能 +* 缓存类增加pull方法用于获取并删除 +* cache助手函数增加tag参数 +* 简化日志信息,隐藏数据库密码 +* 增加cache/session redis驱动的库选择逻辑; +* memcached驱动的配置参数支持option参数 +* 调试模式下面 日志记录增加页面的header和param参数记录 +* memcached缓存驱动增加连接账号密码参数 +* 缓存支持设置complex类型 支持配置多种缓存并用store切换 +* 缓存类增加tag方法 用于缓存标签设置 clear方法支持清除某个缓存标签的数据 +* File类型日志驱动支持设置单独文件记录不同的日志级别 +* 改进文件缓存和日志的存储文件名命名规范 +* 缓存类增加inc和dec方法 针对数值型数据提供自增和自减操作 +* Cache类增加has方法 get方法支持默认值 + +### [ 其它 ] + +* 视图类支持设置模板引擎参数 +* 增加表单令牌生成和验证 +* 增加中文验证规则 +* 增加image和文件相关验证规则 +* 重定向Response对象支持with方法隐含传参 +* 改进Session类自动初始化 +* session类增加pull方法用于获取并删除 +* 增加Env类用于获取环境变量 +* Request类get/post/put等更改赋值后param方法依然有效 +* 改进Jump跳转地址支持Url::build 解析 +* 优化Hook类 +* 应用调试模式和页面trace支持环境变量设置 +* config助手函数支持 config('?name') 用法 +* 支持使用BIND_MODULE常量的方式绑定模块 +* 入口文件自动绑定模块功能 +* 改进验证异常类的错误信息和模板输出,支持批量验证的错误信息抛出 +* 完善console 增加output一些常用的方法 +* 增加token助手函数 用于在页面快速显示令牌 +* 增加halt方法用于变量调试并中断输出 +* 改进Validate类的number验证规则 和 integer区分开 +* optimize:autoload增加对extend扩展目录的扫描 +* 改进Validate类的boolean验证规则 支持表单数据 +* 改进cookie助手函数支持 判断是否存在某个cookie值 +* 改进abort助手函数 支持抛出HttpResponseException异常 +* 改进File类增加对上传错误的处理 +* 改进File类move方法的返回对象增加上传表单信息,增加获取文件散列值的方法 +* 改进File类的move方法的返回对象改为返回File对象实例 +* 增加clear和optimize:config 指令 +* 改进File类和Validate类的图像文件类型验证 +* 控制器的操作方法支持注入Request之外的对象实例 +* Request类 param(true) 支持获取带文件的数据 +* input助手函数第一个参数增加默认值 +* Validate类增加image验证规则 并改进max min length支持多种数据类型 +* json输出时数据编码失败后抛出异常 + +### [ 调整 ] +* 废除路由映射(静态路由)定义 +* 取消url_deny_suffix配置 改由路由的deny_ext参数设置 +* 模型save方法返回值改为影响的记录数,取消getId参数 +* Request对象controller方法返回驼峰控制器名 +* 控制器前置操作方法不存在则抛出异常 +* Loader类db方法增加name标识参数 +* db助手函数增加第三个参数用于指定连接标识 +* Sqlsrv驱动默认不对数据表字段进行小写转换 +* 移除sae驱动 改为扩展包 +* Oracle驱动移出核心包 +* Firebird驱动移出核心包 +* 取消别名定义文件alias.php +* 配置参数读取的时候取消环境变量判断 需要读取环境变量的时候使用Env类 +* 环境变量定义文件更改为 .env 由原来的PHP数组改为ini格式定义(支持数组方式) +* 状态配置和扩展配置的加载顺序调整 便于状态配置文件中可以更改扩展配置的参数 +* 取消域名绑定到路由分组功能 +* 控制器类的success和error方法url参数支持传入空字符串,则不做任何处理 +* 控制器的error success result redirect方法均不需要使用return +* 创建目录的权限修改为0644 + + +## 2016-7-1 RC4版本 +### [ 底层架构 ] +* 增加Request类 并支持自动注入 +* 统一Composer的自动加载机制 +* 增加Response类的子类扩展 +* 增加File类用于上传和文件操作 +* 取消模式扩展 SAE支持降权 +* 优化框架入口文件 +* 改进异常机制 +* App类输入/输出调整 +* 单元测试的完美支持 +* 增加新的控制台指令 +* 取消系统路径之外的大部分常量定义 +* 类库映射文件由命令行动态生成 包含应用类库 + +### [ 数据库 ] + +* 增加分表规则方法 +* 增加日期和时间表达式查询方法 +* 增加分页查询方法 +* 增加视图查询方法 +* 默认保持数据表字段大小写 +* 数据缓存自动更新机制 +* 完善事务嵌套支持 +* 改进存储过程数据读取 +* 支持设置数据库查询数据集返回类型 + +### [ 模型 ] +* 增加Merge扩展模型 +* 模型支持动态查询 +* 增加更多的类型自动转换支持 +* 增加全局查询范围 +* toJson/toArray支持隐藏和增加属性输出 +* 增加远程一对多关联 + +### [ 其它 ] +* 日志存储结构调整 +* Trace调试功能从日志类独立并增强 +* 原Input类功能并入Request类 +* 类库映射文件采用命令行生成 包含应用类库 +* 验证类的check方法data数据取消引用传参 +* 路由增加MISS路由规则 +* 路由增加路由别名功能 + +## 2016-4-23 RC3版本 +### [ 底层架构 ] +* 框架核心仓库和应用仓库分离 便于composer独立更新 +* 数据库类重构,拆分为Connection(连接器)/Query(查询器)/Builder(SQL生成器) +* 模型类重构,更加对象化 + +### [ 数据库 ] + +* 新的查询语法 +* 闭包查询和闭包事务 +* Query对象查询 +* 数据分批处理 +* 数据库SQL执行监听 + +### [ 模型 ] +* 对象化操作 +* 支持静态调用(查询) +* 支持读取器/修改器 +* 时间戳字段 +* 对象/数组访问 +* JSON序列化 +* 事件触发 +* 命名范围 +* 类型自动转换 +* 数据验证和完成 +* 关联查询/写入 +* 关联预载入 + +### [ 其它更新 ] +* 路由类增加快速路由支持 +* 验证Validate类重构 +* Build类增加快速创建模块的方法 +* Url生成类改进 +* Validate类改进 +* View类及模板引擎驱动设计改进 +* 取消模板引擎的模板主题设计 +* 修正社区反馈的一些问题 +* 助手函数重新命名 +* `router.php`文件位置移动 + +## 2016-3-11 RC2版本 + +* 重新设计的自动验证和自动完成机制(原有自动验证和完成支持采用traits\model\Auto兼容); +* 验证类Validate独立设计; +* 自动生成功能交给Console完成; +* 对数据表字段大小写的处理; +* 改进Controller类(取消traits\contorller\View); +* 改进Input类; +* 改进Url类; +* 改进Cookie类; +* 优化Loader类; +* 优化Route类; +* 优化Template类; +* Session类自动初始化; +* 增加traits\model\Bulk模型扩展用于大批量数据写入和更新; +* 缓存类和日志类增加Test驱动; +* 对异常机制和错误处理的改进; +* 增加URL控制器和操作是否自动转换开关; +* 支持类名后缀设置; +* 取消操作绑定到类的功能; +* 取消use_db_switch参数设计; + +## 2016-1-30 RC1版本 +### [ 底层架构 ] + +* 真正的惰性加载 +* 核心类库组件化 +* 框架引导文件 +* 完善的类库自动加载(支持Composer) +* 采用Traits扩展 +* API友好(输出、异常和调试) +* 文件命名规范调整 + +### [ 调试和异常 ] + +* 专为API开发而设计的输出、调试和异常处理 +* 日志类支持本地文件/SAE/页面Trace/SocketLog输出,可以实现远程浏览器插件调试 +* 内置trace方法直接远程调试 +* 异常预警通知驱动设计 +* 数据库SQL性能分析支持 + +### [ 路由 ] + +* 动态注册路由 +* 自定义路由检测方法 +* 路由分组功能 +* 规则路由中的变量支持采用正则规则定义(包括全局和局部) +* 闭包路由 +* 支持路由到多层控制器 + +### [ 控制器 ] + +* 控制器类无需继承controller类 +* 灵活的多层控制器支持 +* 可以Traits引入高级控制器功能 +* rest/yar/rpc/hprose/jsonrpc控制器扩展 +* 前置操作方法支持排除和指定操作 + + +### [ 模型 ] + +* 简化的核心模型 +* Traits引入高级模型/视图模型/关联模型 +* 主从分布时候主数据库读操作支持 +* 改进的join方法和order方法 + +### [ 视图 ] + +* 视图解析驱动设计(模板引擎) +* 所有方法不再直接输出而是返回交由系统统一输出处理 +* 动态切换模板主题设计 +* 动态切换模板引擎设计 + +### [ 数据库 ] + +* 完全基于PDO实现 +* 简化的数据库驱动设计 +* SQL性能监控(需要开启数据库调试模式) +* PDO参数绑定改进 + +### [ 其他方面 ] + +* 目录和MVC文件自动生成支持 +* I函数默认添加变量修饰符为/s +* 一个行为类里面支持为多个标签位定义不同的方法 +* 更多的社交扩展类库 \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..2cb9a8a --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,32 @@ + +ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 +版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn) +All rights reserved。 +ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 + +Apache Licence是著名的非盈利开源组织Apache采用的协议。 +该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, +允许代码修改,再作为开源或商业软件发布。需要满足 +的条件: +1. 需要给代码的用户一份Apache Licence ; +2. 如果你修改了代码,需要在被修改的文件中说明; +3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 +带有原来代码中的协议,商标,专利声明和其他原来作者规 +定需要包含的说明; +4. 如果再发布的产品中包含一个Notice文件,则在Notice文 +件中需要带有本协议内容。你可以在Notice中增加自己的 +许可,但不可以表现为对Apache Licence构成更改。 +具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/application/.htaccess b/application/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/application/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/application/api/common.php b/application/api/common.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/application/api/common.php @@ -0,0 +1 @@ +'http://www.tougao.com/', + //网站根目录 + 'base_web_url' => 'http://submission.tmrjournals.com/', + //邮件模板--注册成功 + 'email_hello'=>'Dear author,You have successfully registered in Traditional Medicine Research.Your registering informaion in our journal is:', + //邮件模板--找回密码 + 'email_retrieve'=>'', + //邮件模板--发送文章成功 + 'email_add_article'=>'

Thank you for your submission to Traditional Medicine Research. +The editor will take a preliminary review of your manuscript soon, deciding whether your manuscript is suitable for Traditional Medicine Research. +You can track the status of your manuscript through our online "Author Center" .

 ', + //邮件模板--更改文章状态 + 'email_article_change_state'=>'' + +]; \ No newline at end of file diff --git a/application/api/controller/Admin.php b/application/api/controller/Admin.php new file mode 100644 index 0000000..42bdccd --- /dev/null +++ b/application/api/controller/Admin.php @@ -0,0 +1,634 @@ +user_obj = Db::name('user'); + $this->captcha_obj = Db::name('captcha'); + $this->user_act_obj = Db::name('user_act'); + $this->admin_obj = Db::name('admin'); + $this->reviewer_major_obj = Db::name('reviewer_major'); + $this->journal_obj = Db::name('journal'); + $this->user_reviewer_obj = Db::name('user_reviewer_apply'); + $this->user_reviewer_info_obj = Db::name('user_reviewer_info'); + $this->reviewer_to_journal_obj = Db::name('reviewer_to_journal'); + $this->article_obj = Db::name('article'); + $this->user_msg_obj = Db::name('user_msg'); + $this->article_msg_obj = Db::name('article_msg'); + $this->article_author_obj = Db::name('article_author'); + $this->country_obj = Db::name('country'); + } + + /** + * 获取编辑人员列表(分页) + */ + public function getEditor() { + $data = $this->request->post(); + $where['type'] = 2; + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; + $res = $this->user_obj->where($where)->limit($limit_start, $data['pageSize'])->select(); + $count = $this->user_obj->where($where)->count(); + return json(['total' => $count, 'data' => $res]); + } + + /** + * 获取所有编辑 + */ + public function getEditorList() { + $where['type'] = 2; + $res = $this->user_obj->where($where)->select(); + return $res == null ? json(['code' => 1, 'msg' => 'Acquisition failed']) : json(['code' => 0, 'data' => $res]); + } + + /** + * 添加编辑 + */ + public function addEditor() { + $data = $this->request->post(); + $checkres = $this->user_obj->where(['account' => $data['username']])->whereOr(['email' => $data['email']])->find(); + if ($checkres != null) { + return json(['code' => 1, 'msg' => 'username or email has registered']); + } + $insert_data['account'] = $data['username']; + $insert_data['password'] = md5($data['password']); + $insert_data['email'] = $data['email']; + $insert_data['phone'] = $data['phone']; + $insert_data['realname'] = $data['realname']; + $insert_data['type'] = 2; + $insert_data['ctime'] = time(); + $this->user_obj->insert($insert_data); + return json(['code' => 0]); + } + + /** + * 获取文章(admin) + */ + public function getArticle() { + //接收参数 + $data = $this->request->post(); +// $data['journal'] = 0; +// $data['pageIndex'] = 1; +// $data['pageSize'] = 10; + //构造查询条件 + $where = []; + if ($data['journal'] != 0) { + $where['t_article.journal_id'] = $data['journal']; + } + if ($data['state'] >= 0) { + $where['t_article.state'] = $data['state']; + } else { + if ($data['act'] == 1) { + $where['t_article.state'] = array('in', [0, 1, 2, 4]); + } else if ($data['act'] == 2) { + $where['t_article.state'] = array('in', [3, 5]); + } + } + + //分页查询数据 + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; + $res = $this->article_obj->field('t_article.*,t_journal.title journalname,t_journal.abbr abbr,t_user.account username,t_user.realname realname') + ->join('t_journal', 't_journal.journal_id = t_article.journal_id', 'LEFT') + ->join('t_user', 't_journal.editor_id = t_user.user_id', 'LEFT') + ->where($where) + ->order('article_id desc') + ->limit($limit_start, $data['pageSize'])->select(); + $count = $this->article_obj->where($where)->count(); + //收集文章的国家 + foreach ($res as $k => $v) { + $c_res = $this->article_author_obj->where('article_id', $v['article_id'])->select(); + $c_frag = []; + foreach ($c_res as $vv) { + if ($vv['country'] == "") { + continue; + } + if (!in_array($vv['country'], $c_frag)) { + $c_frag[] = $vv['country']; + } + } + $res[$k]['country'] = implode(',', $c_frag); + } + + //返回数据 + return json(['total' => $count, 'data' => $res]); + } + + /** + * 获取文章详情 + */ + public function getArticleDetail() { + //接受参数 + $data = $this->request->post(); + + //查询文章基础数据 + $where['t_article.article_id'] = $data['articleId']; + $article_res = $this->article_obj->field('t_article.*,t_journal.title journalname,t_user.account')->join(array(['t_journal', 't_journal.journal_id = t_article.journal_id', 'LEFT'], ['t_user', 't_user.user_id = t_article.user_id', 'LEFT']))->where($where)->find(); + + //查询文章状态跟踪信息 + $article_msg = $this->article_msg_obj->where(['article_id' => $data['articleId']])->select(); + + $suggest = ''; + //如果是退修状态,显示退休信息 + if ($article_res['state'] == 4) { + $lastbean = end($article_msg); + $suggest = $lastbean['content']; + } + //查询major信息 + $major_data = []; + if($article_res['major_id']!=0){ + $major_data['major'] = $this->reviewer_major_obj->where('major_id',$article_res['major_id'])->find(); + }else{ + $major_data['major'] = null; + } + if($article_res['cmajor_id']!=0){ + $major_data['cmajor'] = $this->reviewer_major_obj->where('major_id',$article_res['cmajor_id'])->find(); + }else{ + $major_data['cmajor'] = null; + } + + //查询文章作者信息 + $author_res = $this->article_author_obj->where('article_id', $data['articleId'])->where('state', 0)->select(); + + + return json(['article' => $article_res, 'msg' => $article_msg, 'authors' => $author_res, 'suggest' => $suggest,'major'=>$major_data]); + } + + /** + * 获取期刊列表 + */ + public function getJournals() { + $data = $this->request->post(); + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize'] ; + $res = $this->journal_obj->field('t_journal.*,t_user.account editor')->join('t_user', 't_user.user_id=t_journal.editor_id', 'left')->order('t_journal.journal_id')->limit($limit_start, $data['pageSize'])->select(); + $count = $this->journal_obj->count(); + return json(['total' => $count, 'data' => $res]); + } + + /** + * 添加期刊 + */ + public function journalAdd() { + $data = $this->request->post(); + $checkres = $this->journal_obj->where(['title' => $data['title']])->whereOr(['issn' => $data['issn']])->find(); + if ($checkres != null) { + return json(['code' => 1, 'msg' => 'title or issn already exists']); + } + $insert_data['title'] = $data['title']; + $insert_data['issn'] = $data['issn']; + $insert_data['alias'] = $data['alias']; + $this->journal_obj->insert($insert_data); + return json(['code' => 0]); + } + + /** + * 更改期刊编辑 + */ + public function journalEditorChange() { + $data = $this->request->post(); + $update['editor_id'] = $data['editorId']; + $where['journal_id'] = $data['journalId']; + $res = $this->journal_obj->where($where)->update($update); + return json(['code' => $res == null ? 1 : 0]); + } + + /** + * 上传reviewer申请 + */ + public function reviewer() { + //接受参数 + $data = $this->request->post(); + $journal_info = $this->journal_obj->where('journal_id', $data['journal'])->find(); + $editor_info = $this->user_obj->where('user_id', $journal_info['editor_id'])->find(); +// $data['company'] = 'dsadsa'; +// $data['country'] = 'china'; +// $data['email'] = "dsadsad@126.com"; +// $data['field'] = 'dsadsada'; +// $data['gender'] = 1; +// $data['introduction'] = 'dsadsads'; +// $data['journal'] = 1; +// $data['major'] = 6; +// $data['qualifications'] = "reviewer/20200729/8355df2ee29d8313cf39e1c3b0b6ebd8.rar"; +// $data['technical'] = 'Ph.D.'; +// $data['username'] = '"wangjinlei11"'; +// return json($data); + //组合数据,insert + $insert_data['journal_id'] = $data['journal']; + $insert_data['name'] = $data['username']; + $insert_data['introduction'] = $data['introduction']; + $insert_data['email'] = $data['email']; + $insert_data['company'] = $data['company']; + $insert_data['country'] = $data['country']; + $insert_data['major'] = $data['major']; + $insert_data['technical'] = $data['technical']; + $insert_data['field'] = $data['field']; + $insert_data['gender'] = $data['gender']; + $insert_data['qualifications'] = $data['qualifications']; + $insert_data['ctime'] = time(); + $res = $this->user_reviewer_obj->insertGetId($insert_data); + + if ($res > 0) { + //发送email-》编辑 + $tt = 'Dear editor,
'; + $tt .= 'Please check the new reviewer application.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //发送消息信息--编辑 + $journal_res = $this->journal_obj->where('journal_id', $data['journal'])->find(); + add_usermsg($journal_res['editor_id'], '新增审稿人申请,申请人(' . $data['username'] . ')', '/reviewerApplyDetail?id=' . $res); + return json(['code' => 0]); + } else { + return json(['code' => 1, 'msg' => 'reviewer submit error']); + } + } + + /** + * 作者申请成为审稿人 + */ + public function becameReviewer() { + //接受参数,查询参数 + $data = $this->request->post(); +// +// return json($data); +// $data['company'] = 'sssssssssssssssssssss'; +// $data['country'] = 'China'; +// $data['field'] = 'asdsadsa'; +// $data['gender'] = 1; +// $data['introduction'] = 'dsds'; +// $data['journal'] = 1; +// $data['major'] = 6; +// $data['qualifications'] = "reviewer/20200821/8e291c09e53fbbe12541563d59790464.rar"; +// $data['technical'] = 'Ph.D.'; +// $data['username'] = 'wangjinlei'; + + $user_info = $this->user_obj->where('account', $data['username'])->find(); + $journal_info = $this->journal_obj->where('journal_id', $data['journal'])->find(); + $editor_info = $this->user_obj->where('user_id', $journal_info['editor_id'])->find(); + + //存储数据 + $insert['journal_id'] = $data['journal']; + $insert['name'] = $data['username']; + $insert['gender'] = $data['gender']; + $insert['technical'] = $data['technical']; + $insert['country'] = $data['country']; + $insert['introduction'] = $data['introduction']; + $insert['email'] = $user_info['email']; + $insert['company'] = $data['company']; + $insert['major'] = $data['major']; + $insert['field'] = $data['field']; + $insert['qualifications'] = $data['qualifications']; + $insert['ctime'] = time(); + $res = $this->user_reviewer_obj->insertGetId($insert); + + //发送email-》编辑 + $tt = 'Dear editor,
'; + $tt .= 'Please check the new reviewer application.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //发送消息信息--编辑 + $journal_res = $this->journal_obj->where('journal_id', $data['journal'])->find(); + add_usermsg($journal_res['editor_id'], 'New reviewer apply(' . $data['username'] . ')', '/reviewerApplyDetail?id=' . $res); + return json(['code' => 0]); + } + + /** + * 获取城市 + */ + public function getCountrys() { + $res = $this->country_obj->order('en_name')->select(); + return json($res); + } + + /** + * 导入reviewer + */ + public function reviewerImport() { + //接收信息 + $data = $this->request->post(); + +// $data['journal'] = 7; +// $data['url'] = 'reviewer/import/20200826/a8c03d7f9ac899c0a590ff26663402f2.xlsx'; + + $journal = $data['journal']; + $journal_info = $this->journal_obj->where('journal_id', $journal)->find(); + + //读取excel + $path = ROOT_PATH . 'public' . DS . $data['url']; + $frag = self::readExcel($path); + + //check数据分开存储 + $su_data = []; + $er_data = []; + foreach ($frag as $v) { + //验证数据完整性 + if ($v['username'] == '' || $v['email'] == '' || $v['realname'] == '' || $v['major'] == '' || $v['username'] == null || $v['email'] == null || $v['realname'] == null || $v['major'] == null) { + $er_data[] = [ + 'username' => $v['username'], + 'realname' => $v['realname'], + 'email' => $v['email'], + 'reason' => 'Missing data' + ]; + continue; + } + //验证major + $major = self::get_major($v['major']); + if ($major === null) { + $er_data[] = [ + 'username' => $v['username'], + 'realname' => $v['realname'], + 'email' => $v['email'], + 'reason' => 'major is error' + ]; + continue; + } + //验证是否存在此用户并且存在对应关系 + $this_reviewer = self::get_username($v['username']); + if ($this_reviewer == null && self::get_userByEmail($v['email']) != null) { + $er_data[] = [ + 'username' => $v['username'], + 'realname' => $v['realname'], + 'email' => $v['email'], + 'reason' => 'Email occupied' + ]; + continue; + } + if ($this_reviewer != null && $this_reviewer['type'] == 2) { + $er_data[] = [ + 'username' => $v['username'], + 'realname' => $v['realname'], + 'email' => $v['email'], + 'reason' => "Editor can't become reviewer" + ]; + continue; + } + if ($this_reviewer != null && self::get_retojo($this_reviewer['user_id'], $journal) != null) { + $su_data[] = [ + 'username' => $v['username'], + 'realname' => $v['realname'], + 'email' => $v['email'], + 'reason' => 'success(has register)' + ]; + continue; + } + + //执行存储,按实际逻辑存储 + $cache_id = 0; + if ($this_reviewer == null) { + //添加user主体基本信息 + $cache_reviewer['account'] = trim($v['username']); + $cache_reviewer['password'] = md5('123456qwe'); + $cache_reviewer['email'] = $v['email']; + $cache_reviewer['realname'] = $v['realname']; + $cache_reviewer['is_reviewer'] = 1; + $cache_reviewer['ctime'] = time(); + $cache_id = $this->user_obj->insertGetId($cache_reviewer); + //添加reviewer_info信息 + $cache_insert_info['reviewer_id'] = $cache_id; + $cache_insert_info['gender'] = $v['gender'] == '女' ? 2 : 1; + $cache_insert_info['technical'] = $v['technical'] == null ? '' : $v['technical']; + $cache_insert_info['country'] = $v['country'] == null ? '' : $v['country']; + $cache_insert_info['introduction'] = $v['introduction'] == null ? '' : $v['introduction']; + $cache_insert_info['company'] = $v['company'] == null ? '' : $v['company']; + $cache_insert_info['major'] = $major['major_id']; + $cache_insert_info['field'] = $v['field'] == null ? '' : $v['field']; + $this->user_reviewer_info_obj->insert($cache_insert_info); + } else if ($this_reviewer != null && $this_reviewer['is_reviewer'] == 0) { + $this->user_obj->where('user_id', $this_reviewer['user_id'])->update(['is_reviewer' => 1]); + //添加reviewer_info信息 + $cache_insert_info['reviewer_id'] = $this_reviewer['user_id']; + $cache_insert_info['gender'] = $v['gender'] == '女' ? 2 : 1; + $cache_insert_info['technical'] = $v['technical'] == null ? '' : $v['technical']; + $cache_insert_info['country'] = $v['country'] == null ? '' : $v['country']; + $cache_insert_info['introduction'] = $v['introduction'] == null ? '' : $v['introduction']; + $cache_insert_info['company'] = $v['company'] == null ? '' : $v['company']; + $cache_insert_info['major'] = $major['major_id']; + $cache_insert_info['field'] = $v['field'] == null ? '' : $v['field']; + $this->user_reviewer_info_obj->insert($cache_insert_info); + } + //存储关系表信息 + $cache_insert_rtj['reviewer_id'] = $this_reviewer == null ? $cache_id : $this_reviewer['user_id']; + $cache_insert_rtj['journal_id'] = $journal; + $cache_insert_rtj['account'] = $v['username']; + $cache_insert_rtj['journal_title'] = $journal_info['title']; + $cache_insert_rtj['ctime'] = time(); + $this->reviewer_to_journal_obj->insert($cache_insert_rtj); + + //增加成功信息 + $su_data[] = [ + 'username' => $v['username'], + 'realname' => $v['realname'], + 'email' => $v['email'], + 'reason' => 'success' + ]; + + //发送邮件提醒审稿人 + $tt = 'Dear Reviewer,
'; + $tt .= 'In order to provide a better online experience for both authors and readers, the submission system was changed to new.
'; + $tt .= 'Website was closed between 18:00 Aug. 2, 2020 to 24:00 Aug. 2, 2020 Beijing time.
'; + $tt .= 'You could log in with your account in submission.tmrjournals.com .
'; + $tt .= 'Your username:'.$v['username'].'
'; + $tt .= 'Your password: 123456qwe (you could change your password in the system by yourself later.)
'; + $tt .= 'Thank you so much for your kindly support.

'; + $tt .= $journal_info['title'].'
'; + $tt .= date('Y-m-d'); + $maidata['email'] = $v['email']; + $maidata['title'] = $journal_info['title']; + $maidata['content'] = $tt; + $maidata['tmail'] = $journal_info['email']; + $maidata['tpassword'] = $journal_info['epassword']; + Queue::push( 'app\api\job\mail@fire' , $maidata , "mail" ); + } + return json(['sudata' => $su_data, 'erdata' => $er_data]); + } + + /** + * 获取领域分类 + */ + public function getMajor(){ + $majors = $this->reviewer_major_obj->where('pid',0)->select(); + return json(['code'=>0,'data'=>$majors]); + } + + public function getMajors(){ + $rid = $this->request->post('rid'); + $reviewer_info = $this->user_reviewer_info_obj->where('reviewer_id',$rid)->find(); + $majors = $this->reviewer_major_obj->where('pid',0)->select(); + $cmajors = $this->reviewer_major_obj->where('pid',$reviewer_info['major'])->select(); + return json(['code'=>0,'data'=>$majors,'cmajors'=>$cmajors]); + } + + /** + * 获取major子项目 + */ + public function majorChild(){ + $majorid = $this->request->post('majorid'); + $ds = $this->reviewer_major_obj->where('pid',$majorid)->select(); + return json(['code'=>0,'data'=>$ds]); + } + + /** + * 获取期刊除了已申请过的期刊 + */ + public function getJournalchu() { + $data = $this->request->post(); + $journals = $this->reviewer_to_journal_obj->where('account', $data['username'])->column('journal_id'); + $res = $this->journal_obj->where('journal_id', 'not in', $journals)->select(); + return json($res); + } + + /** + * 获取excel数据 + */ + public function getExcelData() { + //接收数据 + $data = $this->request->post(); + $path = ROOT_PATH . 'public' . DS . $data['url']; + $frag = self::readExcel($path); + return json($frag); + } + + /** + * 验证用户名是否存在 + */ + private function get_username($username) { + return $this->user_obj->where('account', $username)->find(); + } + + /** + * 验证major是否合法 + */ + private function get_major($major) { + return $this->reviewer_major_obj->where('title', $major)->find(); + } + + /** + * 获取对应关系 + */ + private function get_retojo($reviewer_id, $journal_id) { + return $this->reviewer_to_journal_obj->where('reviewer_id', $reviewer_id)->where('journal_id', $journal_id)->find(); + } + + /** + * 获取此邮箱注册用户 + */ + private function get_userByEmail($email) { + return $this->user_obj->where('email', $email)->find(); + } + + /** + * 读取excel数据 + */ + private function readExcel($path) { + $extension = substr($path, strrpos($path, '.') + 1); + vendor("PHPExcel.PHPExcel"); + if ($extension == 'xlsx') { + $objReader = new \PHPExcel_Reader_Excel2007(); + $objPHPExcel = $objReader->load($path); + } else if ($extension == 'xls') { + $objReader = new \PHPExcel_Reader_Excel5(); + $objPHPExcel = $objReader->load($path); + } + + $sheet = $objPHPExcel->getSheet(0); + $highestRow = $sheet->getHighestRow(); + $frag = []; + for ($i = 2; $i <= $highestRow; $i++) { + $aa['username'] = $objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue(); + $aa['realname'] = $objPHPExcel->getActiveSheet()->getCell("B" . $i)->getValue(); + $aa['gender'] = $objPHPExcel->getActiveSheet()->getCell("C" . $i)->getValue(); + $aa['email'] = $objPHPExcel->getActiveSheet()->getCell("D" . $i)->getValue(); + $aa['technical'] = $objPHPExcel->getActiveSheet()->getCell("E" . $i)->getValue(); + $aa['country'] = $objPHPExcel->getActiveSheet()->getCell("F" . $i)->getValue(); + $aa['company'] = $objPHPExcel->getActiveSheet()->getCell("G" . $i)->getValue(); + $aa['major'] = $objPHPExcel->getActiveSheet()->getCell("H" . $i)->getValue(); + $aa['field'] = $objPHPExcel->getActiveSheet()->getCell("I" . $i)->getValue(); + $aa['introduction'] = $objPHPExcel->getActiveSheet()->getCell("J" . $i)->getValue(); + $aa['qualifications'] = $objPHPExcel->getActiveSheet()->getCell("K" . $i)->getValue(); + $frag[] = $aa; + } + return $frag; + } + + /** + * 接收文件 + */ + public function up_file() { + $file = request()->file('qualifications'); + if ($file) { + $info = $file->move(ROOT_PATH . 'public' . DS . 'reviewer'); + if ($info) { + return json(['code' => 0, 'upurl' => str_replace("\\", "/", $info->getSaveName())]); + } else { + return json(['code' => 1, 'msg' => $file->getError()]); + } + } + } + + /** + * 接收导入文件 + * @return type + */ + public function up_import() { + $file = request()->file('importExcel'); + if ($file) { + $info = $file->move(ROOT_PATH . 'public' . DS . 'reviewer' . DS . 'import'); + if ($info) { + return json(['code' => 0, 'upurl' => str_replace("\\", "/", $info->getSaveName())]); + } else { + return json(['code' => 1, 'msg' => $file->getError()]); + } + } + } + + public function info(){ + phpinfo(); + } + + public function testmail() { + $jobHandlerClassName = 'app\api\job\mail@fire'; + $jobQueueName = "mail"; + $data = []; +// $data['email'] = '751475802@qq.com'; + $data['email'] = '13662001490@126.com'; + $data['title'] = 'ttttssdsadsadsadasdss'; + $tt = 'Dear Reviewer,
'; + $tt .= 'In order to provide a better online experience for both authors and readers, the submission system was changed to new.
'; + $tt .= 'Website was closed between 18:00 Aug. 2, 2020 to 24:00 Aug. 2, 2020 Beijing time.
'; + $tt .= 'You could log in with your account in submission.tmrjournals.com .
'; + $tt .= 'Your username:aaasssss
'; + $tt .= 'Your password: 123456qwe (you could change your password in the system by yourself later.)
'; + $tt .= 'Thank you so much for your kindly support.

'; + $tt .= 'tmr
'; + $tt .= date('Y-m-d'); + $data['content'] = $tt; + $data['tmail'] = 'ghr@tmrjournals.com'; + $data['tpassword'] = 'Wu999999gh'; + $isPushed = Queue::push( $jobHandlerClassName , $data , $jobQueueName ); + echo '
';
+        var_dump($isPushed);
+        echo '
'; + die; +// sendEmail($v['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } + +} diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php new file mode 100644 index 0000000..c0280e8 --- /dev/null +++ b/application/api/controller/Article.php @@ -0,0 +1,977 @@ +user_obj = Db::name('user'); + $this->user_act_obj = Db::name('user_act'); + $this->article_obj = Db::name('article'); + $this->journal_obj = Db::name('journal'); + $this->user_log_obj = Db::name('user_log'); + $this->reviewer_major_obj = Db::name('reviewer_major'); + $this->reviewer_to_journal_obj = Db::name('reviewer_to_journal'); + $this->article_msg_obj = Db::name('article_msg'); + $this->article_file_obj = Db::name('article_file'); + $this->article_reviewer_obj = Db::name('article_reviewer'); + $this->article_author_obj = Db::name('article_author'); + $this->article_transfer_obj = Db::name('article_transfer'); + } + + /** + * 获取文章列表(作者) + */ + public function getArticle() { + //接收参数 + $data = $this->request->post(); + //构造查询条件 + $userres = $this->user_obj->where(['account' => $data['username']])->column('user_id'); + $where['user_id'] = $userres[0]; + if ($data['journal'] != 0) { + $where['t_article.journal_id'] = $data['journal']; + } + if($data['state'] != 0){ + $where['t_article.state'] = $data['state']; + } + if ($data['name'] != '') { + $where['t_article.title'] = array('like', "%" . $data['name'] . "%"); + } + + //分页查询数据 + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; + $res = $this->article_obj->field('t_article.*,t_journal.title journalname') + ->join('t_journal', 't_journal.journal_id = t_article.journal_id', 'LEFT') + ->where($where) + ->order('article_id desc') + ->limit($limit_start, $data['pageSize'])->select(); + $count = $this->article_obj->where($where)->count(); + + //返回数据 + return json(['total' => $count, 'data' => $res]); + } + + /** + * 获取文章列表(编辑) + */ + public function getArticleForEditor() { + //接受参数 + $data = $this->request->post(); + + //构造查询条件 + if ($data['journal'] == 0) {//全部期刊 + $userres = $this->user_obj->where(['account' => $data['username']])->column('user_id'); + $journal_list = $this->journal_obj->where(['editor_id' => $userres[0]])->column('journal_id'); + $where['t_article.journal_id'] = ['in', $journal_list]; + } else { + $where['t_article.journal_id'] = $data['journal']; + } + if($data['state'] >= 0){ + $where['t_article.state'] = $data['state']; + }else{ + if($data['act']==1){ + $where['t_article.state'] = array('in',[0,1,2,4]); + }else if($data['act']==2){ + $where['t_article.state'] = array('in',[3,5]); + } + } + if ($data['name'] != '') { + $where['t_article.title'] = array('like', "%" . $data['name'] . "%"); + } + + //分页查询数据 + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; + $res = $this->article_obj->field('t_article.*,t_journal.title journalname') + ->join('t_journal', 't_journal.journal_id = t_article.journal_id', 'LEFT') + ->where($where) + ->order('t_article.article_id desc') + ->limit($limit_start, $data['pageSize']) + ->select(); + + + $count = $this->article_obj->where($where)->count(); + + return json(['total' => $count, 'data' => $res]); + } + + + + /** + * 获取文章详情(作者,编辑) + */ + public function getArticleDetail() { + //接受参数 + $data = $this->request->post(); + + //查询文章基础数据 + $where['t_article.article_id'] = $data['articleId']; + $article_res = $this->article_obj->field('t_article.*,t_journal.title journalname,t_user.account')->join(array(['t_journal', 't_journal.journal_id = t_article.journal_id', 'LEFT'], ['t_user', 't_user.user_id = t_article.user_id', 'LEFT']))->where($where)->find(); + + //查询文章状态跟踪信息 + $article_msg = $this->article_msg_obj->where(['article_id' => $data['articleId']])->select(); + + $suggest = ''; + //如果是退修状态,显示退休信息 +// if($article_res['state']==4){ +// $lastbean = end($article_msg); +// $suggest = $lastbean['content']; +// } + //查询审稿人审稿建议 + if($article_res['state']==4){ + $suggest = $this->article_reviewer_obj->field('t_article_reviewer.*,t_article_reviewer_question.comments comments') + ->join('t_article_reviewer_question','t_article_reviewer.art_rev_id=t_article_reviewer_question.art_rev_id','left') + ->where('t_article_reviewer.state','<',4) + ->where('t_article_reviewer.article_id',$article_res['article_id']) + ->select(); + } + + //查询major信息 + $major_data = []; + if($article_res['major_id']!=0){ + $major_data['major'] = $this->reviewer_major_obj->where('major_id',$article_res['major_id'])->find(); + }else{ + $major_data['major'] = null; + } + if($article_res['cmajor_id']!=0){ + $major_data['cmajor'] = $this->reviewer_major_obj->where('major_id',$article_res['cmajor_id'])->find(); + }else{ + $major_data['cmajor'] = null; + } + + //查询文章作者信息 + $author_res = $this->article_author_obj->where('article_id', $data['articleId'])->where('state', 0)->select(); + + //查询转投信息 + $transfer_res = $this->article_transfer_obj->where('article_id',$data['articleId'])->select(); + + //查询建议转投详情 + $transfer_info = $this->article_transfer_obj + ->field('t_article_transfer.*,t_journal.title jourtitle') + ->join('t_journal','t_journal.journal_id = t_article_transfer.journal_id','LEFT') + ->where('t_article_transfer.article_id',$data['articleId']) + ->where('t_article_transfer.state',2) + ->find(); + + //更新文章操作记录状态 + if ($data['human'] == 'editor') { + $up_data['author_act'] = 0; + } else { + $up_data['editor_act'] = 0; + } + $this->article_obj->where('article_id', $data['articleId'])->update($up_data); + + return json(['article' => $article_res, 'msg' => $article_msg, 'authors' => $author_res,'suggest'=>$suggest,'transfer'=>$transfer_res,'transinfo'=>$transfer_info,'major'=>$major_data]); + } + + /** + * 作者同意转投 + */ + public function trans_manu(){ + //接受参数 + $data = $this->request->post(); + $article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); + $editor_info = $this->user_obj->where('user_id',$journal_info['editor_id'])->find(); + + //更新文章状态 + $this->article_obj->where('article_id',$data['article_id'])->update(['journal_id'=>$data['journal_id'],'editor_id'=>$journal_info['editor_id'],'state'=>1]); + + //跟新转投表状态 + $this->article_transfer_obj->where('transfer_id',$data['transfer_id'])->update(['state'=>1]); + + //添加文章状态信息 + $insert_data['article_id'] = $data['article_id']; + $insert_data['content'] = 'manuscript transfer to :'.$journal_info['title']; + $insert_data['state_from'] = $article_info['state']; + $insert_data['state_to'] = 1; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + + //发送邮件提醒编辑有新的转投稿件 + $tt1 = 'Dear editor'; + $tt1 .= 'Please check the new transfer manuscript in the submission system.'; + sendEmail($editor_info['email'],$journal_info['title'], $journal_info['title'], $tt1, $journal_info['email'], $journal_info['epassword']); + + //发送消息给编辑 + add_usermsg($journal_info['editor_id'], 'New transfer manuscript ', '/articleDetailEditor?id=' . $article_info['article_id']); + + return json(['code'=>0]); + } + + /** + * 修改文章详情(作者) + */ + public function editArticle() { + //接受参数查询信息 + $data = $this->request->post(); + +// return json($data); +// $data['abstrart'] = "dsadsadsadsa"; +// $data['accept_sn'] = "20200811001"; +// $data['articleId'] = 7; +// $data['authorList'] = [ +// [ +// 'address'=>"dsad", +// 'art_aut_id'=>5, +// 'company'=>"sads", +// 'country'=>"China", +// 'department'=>"adsa", +// 'email'=>"dsadsadsa", +// 'firstname'=>"dsadsa", +// 'isReport'=>'true', +// 'isSuper'=>"true", +// 'lastname'=>"dsadsa", +// 'title'=>"Ph.D." +// ], +// [ +// 'address'=>"", +// 'art_aut_id'=>6, +// 'company'=>"dsadsa", +// 'country'=>"Angola", +// 'department'=>"dsa", +// 'email'=>"dsadsa", +// 'firstname'=>"dsad7", +// 'isReport'=>"false", +// 'isSuper'=>"true", +// 'lastname'=>"sada", +// 'title'=>"Associate Prof." +// ] +// ]; +// $data['coverLetter']=''; +// $data['ctime']="1597138197"; +// $data['fund']="sadsadasd"; +// $data['journal']="20"; +// $data['journalname']="Infectious Diseases Research"; +// $data['keyWords']="dsadsad"; +// $data['manuscirpt']=''; +// $data['picturesAndTables']=''; +// $data['state']='4'; +// $data['title']="dsadsadsa"; +// $data['username']="wangjinlei"; + + + + $username = $data['username']; + $user_res = $this->user_obj->where(['account' => $username])->find(); + $article_old_info = $this->article_obj->where('article_id',$data['articleId'])->find(); + + Db::startTrans(); + + //更新文章信息 + $inset_data['keywords'] = $data['keyWords']; + $inset_data['fund'] = $data['fund']; + $inset_data['abstrart'] = $data['abstrart']; + $inset_data['author_act'] = 1; + $inset_data['state'] = $article_old_info['accept_sn']==''?0:1; + $where['article_id'] = $data['articleId']; + $up_res = $this->article_obj->where($where)->update($inset_data); + $article_info = $this->article_obj->where($where)->find(); + + //更新作者信息 + $aids = []; + foreach ($data['authorList'] as $v) { + if (isset($v['art_aut_id'])) {//改 + $up['art_aut_id'] = $aids[] = $v['art_aut_id']; + $up['firstname'] = $v['firstname']; + $up['lastname'] = $v['lastname']; + $up['company'] = $v['company']; + $up['department'] = $v['department']; + $up['author_title'] = $v['title']; + $up['country'] = $v['country']; + $up['email'] = $v['email']; + $up['address'] = $v['address']; + $up['is_super'] = $v['isSuper'] == 'true'?1:0; + $up['is_report'] = $v['isReport'] == 'true'?1:0; + $this->article_author_obj->update($up); + } else {//增 + if ($v['firstname'] == '') { + continue; + } + $ins['article_id'] = $data['articleId']; + $ins['firstname'] = $v['firstname']; + $ins['lastname'] = $v['lastname']; + $ins['company'] = $v['company']; + $ins['department'] = $v['department']; + $ins['author_title'] = $v['title']; + $ins['country'] = $v['country']; + $ins['email'] = $v['email']; + $ins['address'] = $v['address']; + $ins['is_super'] = $v['isSuper'] == 'true'?1:0; + $ins['is_report'] = $v['isReport'] == 'true'?1:0; + $aids[] = $this->article_author_obj->insertGetId($ins); + } + } + //删 + $this->article_author_obj->where('article_id', $data['articleId'])->where('art_aut_id', 'not in', $aids)->update(['state' => 1]); + + //增加article_msg + $insmsg_data['article_id'] = $data['articleId']; + $insmsg_data['content'] = ''; + $insmsg_data['state_from'] = $article_old_info['state']; + $insmsg_data['state_to'] = $article_old_info['accept_sn']==''?0:1; + $insmsg_data['ctime'] = time(); + $msg_res = $this->article_msg_obj->insert($insmsg_data); + + //发送邮件 + $editor_info = $this->user_obj->where('user_id',$article_old_info['editor_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id',$article_old_info['journal_id'])->find(); + $tt = 'Dear editor,
'; + $tt .= 'The author changed the manuscript’s status, please check.

'; + $tt .= 'TMR Publishing Group'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt,$journal_info['email'],$journal_info['epassword']); + + + //记录历史file信息 + $res1 = self::save_article_file($data['articleId'], $user_res['user_id'], $user_res['account'], $data['coverLetter'], 'coverLetter'); + $res2 = true; + if(isset($data['picturesAndTables'])){ + foreach ($data['picturesAndTables'] as $v){ + $res2=$res2?self::save_article_file($data['articleId'], $user_res['user_id'], $user_res['account'], $v, 'picturesAndTables'):false; + } + } +// self::save_article_file($data['articleId'], $user_res['user_id'], $user_res['account'], $data['picturesAndTables'], 'picturesAndTables'); + $res3=self::save_article_file($data['articleId'], $user_res['user_id'], $user_res['account'], $data['manuscirpt'], 'manuscirpt'); + $res4=self::save_article_file($data['articleId'],$user_res['user_id'],$user_res['account'],$data['totalpage'],'totalpage'); + + //增加用户操作log + $log_data['user_id'] = $article_info['user_id']; + $log_data['type'] = 1; + $log_data['content'] = $data['username'] . "(" . $user_res['realname'] . "),修改了一篇文章:" . $article_info['title'] . ",时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $log_res=$this->user_log_obj->insert($log_data); + + //增加usermsg + $umsg_res=add_usermsg($article_info['editor_id'], 'The manuscript has new process: ' . $article_info['title'], '/articleDetailEditor?id=' . $article_info['article_id']); + + if($up_res&&$msg_res&&$res1&&$res2&&$res3&&$res4&&$log_res&&$umsg_res){ + Db::commit(); + return json(['code' => 0]); + }else{ + Db::rollback(); + return json(['code' => 1]); + } + + } + + /** + * 修改文章的作者(作者) + */ + public function saveAuthor() { + $data = $this->request->post(); + $article_info = $this->article_obj->where('article_id',$data['articleId'])->find(); + //更新作者(增删改) + $aids = []; + foreach ($data['authorList'] as $v) { + if (isset($v['art_aut_id'])) {//改 + $up['art_aut_id'] = $aids[] = $v['art_aut_id']; + $up['author'] = $v['author']; + $up['company'] = $v['company']; + $up['email'] = $v['email']; + $up['address'] = $v['address']; + $up['is_super'] = $v['is_super'] == 'true' ? 1 : 0; + $up['is_report'] = $v['is_report'] == 'true'?1:0; + $this->article_author_obj->update($up); + } else {//增 + if ($v['author'] == '') { + continue; + } + $ins['author'] = $v['author']; + $ins['article_id'] = $data['articleId']; + $ins['company'] = $v['company']; + $ins['email'] = $v['email']; + $ins['address'] = $v['address']; + $ins['is_super'] = $v['is_super'] == 'true' ? 1 : 0; + $ins['is_report'] = $v['is_report'] == 'true'?1:0; + $aids[] = $this->article_author_obj->insertGetId($ins); + } + } + //删 + $this->article_author_obj->where('article_id', $data['articleId'])->where('art_aut_id', 'not in', $aids)->update(['state' => 1]); + + //更新文章操作状态 + $this->article_obj->where('article_id',$data['articleId'])->update(['author_act'=>1]); + + //发送邮件通知编辑 + $editor_info = $this->user_obj->where('user_id',$article_info['editor_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); + $tt = 'Dear editor,
'; + $tt .= 'The author changed the manuscript’s information, please check.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt,$journal_info['email'],$journal_info['epassword']); + + //添加usermsg + add_usermsg($article_info['editor_id'], 'Manuscript authors be changed,please contact the author to confirm.', 'articleDetailEditor?id='.$data['articleId']); + + return json(['code' => 0]); + } + + /** + * 修改文章状态(编辑) + */ + public function editArticleEditor() { + //接受参数,查询信息 + $data = $this->request->post(); + $where_editor['account'] = $data['editname']; + $editor_info = $this->user_obj->where($where_editor)->find(); + $where_article['article_id'] = $data['articleId']; + $article_info = $this->article_obj->where($where_article)->find(); + $journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); + $transfer_list = $this->article_transfer_obj->where('article_id',$data['articleId'])->where('state',0)->select(); + $user_info = $this->user_obj->where(['user_id' => $article_info['user_id']])->find(); +// $sn_content = '';//显示接收sn信息 +// +// //接受文章时,生成流水号 +// if ($article_info['state'] == 0 && $data['state'] == 1) { +// $update_data['accept_sn'] = getArticleSN($journal_info['abbr'],$article_info['type']); +// $sn_content .= 'your Manuscript ID: '.$update_data['accept_sn'].' '; +// } + + + if($data['state']==3 && count($transfer_list)>0){ + //查询转投期刊信息 + $transfer_journal = $this->journal_obj->where('journal_id',$transfer_list[0]['journal_id'])->find(); + //转投 + $this->article_obj->where('article_id',$data['articleId'])->update(['state'=>1,'journal_id'=>$transfer_list[0]['journal_id'],'editor_id'=>$transfer_journal['editor_id']]); + //转投信息表信息状态改变 + $this->article_transfer_obj->where('transfer_id',$transfer_list[0]['transfer_id'])->update(['state'=>1]); + //查找转投journal信息 + $tran_journal = $this->journal_obj->where('journal_id',$transfer_list[0]['journal_id'])->find(); + //转投后的作者信息 + $trans_editor_info = $this->user_obj->where('user_id',$transfer_journal['editor_id'])->find(); + + //添加文章状态信息 + $insert_data['article_id'] = $data['articleId']; + $insert_data['content'] = 'manuscript transfer to :'.$tran_journal['title']; + $insert_data['state_from'] = $article_info['state']; + $insert_data['state_to'] = 1; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + + //发送邮件提醒转投给作者 + $tt = '"'.$article_info['title'].'"
'; + $tt .= $article_info['accept_sn'].'
'; + $tt .= 'journal:'.$journal_info['title'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting your paper to '.$journal_info['title'].'. Your manuscript has undergone review.
'; + $tt .= 'Unfortunately the editors feel that '.$journal_info['title'].' is not the appropriate venue for your manuscript. I am writing just to follow up on the suggestion from the editor of Traditional Medicine Research that you might be interested in submitting your paper to '.$tran_journal['title'].' instead.

Yours sincerely,

'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'].'
'; + $tt .= 'Email: '.$journal_info['email'].'
'; + $tt .= 'Website: '.$tran_journal['website']; + sendEmail($user_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //发送邮件提醒编辑有新的转投稿件 + $tt1 = 'Dear editor'; + $tt1 .= 'Please check the new transfer manuscript in the submission system.'; + sendEmail($trans_editor_info['email'],$journal_info['title'], $journal_info['title'], $tt1, $journal_info['email'], $journal_info['epassword']); + + //增加usermsg + add_usermsg($tran_journal['editor_id'], 'New transfer manuscript ', '/articleDetailEditor?id=' . $article_info['article_id']); + + return json(['code'=>0]); + }else{ + //添加文章状态信息(如果状态未更新可做通话用,并结束操作) + $insert_data['article_id'] = $data['articleId']; + $insert_data['content'] = $data['editormsg']; + $insert_data['state_from'] = $article_info['state']; + $insert_data['state_to'] = $data['state']; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + if ($article_info['state'] == $data['state']) { + $this->article_obj->where($where_article)->update(['editor_act'=>1]); + return json(['code' => 0]); + } + //更新文章状态 + $update_data['state'] = $data['state']; + $update_data['editor_act'] = 1; + $this->article_obj->where($where_article)->update($update_data); + } + + //发送文章状态更改邮件 + if($data['state']==3){//拒稿 + if($data['trsjournal']==0){ + $tt = '"'.$article_info['title'].'"
'; + $tt .= $article_info['accept_sn'].'
'; + $tt .= 'journal:'.$journal_info['title'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting your paper to '.$journal_info['title'].'. Your manuscript has undergone review.
'; + $tt .= 'Unfortunately the editors feel that '.$journal_info['title'].' is not the appropriate venue for your manuscript,' + . ' and we are returning your manuscript to you so that you can submit it to another journal without delay. ' + . '

Yours sincerely,

'; + $tt .= 'Sincerely,
Editorial Office
'; + }else{//转投 + //查找转投journal信息 + $trans_journal = $this->journal_obj->where('journal_id',$data['trsjournal'])->find(); + $tt = '"'.$article_info['title'].'"
'; + $tt .= $article_info['accept_sn'].'
'; + $tt .= 'journal:'.$journal_info['title'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting your paper to '.$journal_info['title'].'. Your manuscript has undergone review.
'; + $tt .= 'Unfortunately the editors feel that '.$journal_info['title'].' is not the appropriate venue for your manuscript. I am writing just to follow up on the suggestion from the editor of Traditional Medicine Research that you might be interested in submitting your paper to '.$trans_journal['title'].' instead.

'; + $tt .= 'If you choose to pursue publication in '.$trans_journal['title'].', please submit your manuscript to ('.$trans_journal['website'].').'; + $tt .= '

Yours sincerely,

'; + $tt .= 'Sincerely,
Editorial Office
'; + } + }else if($data['state']==5){//录用 + $tt = 'Manuscript ID: '.$article_info['accept_sn'].'
'; + $tt .= 'Manuscript Title: '.$article_info['title'].'
'; + $tt .= 'Authors’ Name: '.self::getArticleAuthors($article_info['article_id']).'

'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
It is a distinct pleasure to inform you that your manuscript has been accepted for publication in '.$journal_info['title'].' (ISSN '.$journal_info['issn'].').
The editor of TMR will contact you further by email soon.


'; + $tt .= 'Sincerely,
Editorial Office
'; + }else if($data['state']==4){//退修 + $tt = $article_info['accept_sn'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting the manuscript to '.$journal_info['title'].'.
'; + $tt .= 'Please find the new comments in the "Author Center", Please submit your revised manuscript within two weeks.

'; + $tt .= 'If you need more time to revise, you can send E-mial to tell us.
'; + $tt .= 'Sincerely,
Editorial Office
'; + }else{ + $tt = '"'.$article_info['title'].'"
'; + $tt .= $article_info['accept_sn'].'
'; + $tt .= 'journal:'.$journal_info['title'].'

'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
Please check the new status of your manuscript online.

'; + } + $tt .= $journal_info['title'].'
'; + $tt .= 'Email: '.$journal_info['email'].'
'; + $tt .= 'Website: '.$journal_info['website']; + sendEmail($user_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //转投操作 + if($data['trsjournal']!=0){ + $tran_data['article_id'] = $data['articleId']; + $tran_data['journal_id'] = $data['trsjournal']; + $tran_data['ctime'] = time(); + $tran_data['state'] = 2; + $this->article_transfer_obj->insert($tran_data); + } + + //增加用户操作log + $log_data['user_id'] = $editor_info['user_id']; + $log_data['type'] = 1; + $log_data['content'] = $editor_info['account'] . "(" . $editor_info['realname'] . "),更改了一篇文章:(" . $article_info['title'] . ")的状态,更改时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $this->user_log_obj->insert($log_data); + + //增加usermsg + add_usermsg($article_info['user_id'], 'Your manuscript has new process: ' . $article_info['title'] , '/articleDetail?id=' . $article_info['article_id']); + + return json(['code' => 0]); + } + + /** + * 编辑文章备注 + */ + public function editArticleRemark(){ + //接受参数 + $data = $this->request->post(); + $this->article_obj->where('article_id',$data['articleId'])->update(['remarks'=>$data['content']]); + return json(['code'=>0]); + } + + /** + * 更改重复率(编辑) + */ + public function changeRepetition(){ + //接受参数 + $data = $this->request->post(); + $this->article_obj->where('article_id',$data['articleId'])->update(['repetition'=>$data['repefen'],'repeurl'=>$data['zipurl']]); + return json(['code'=>0]); + } + + /** + * 更改文章详情(编辑) + */ + public function changeArticleFileEditor() { + //接受参数查询信息 + $data = $this->request->post(); + $article_info = $this->article_obj->where(['article_id' => $data['articleId']])->find(); +// $author_info = $this->user_obj->where('user_id',$article_info['user_id'])->find(); + $editor_info = $this->user_obj->where(['user_id' => $article_info['editor_id']])->find(); +// $journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); + + //存储文件入文件表 +// self::save_article_file($data['articleId'], $editor_info['user_id'], $editor_info['account'], $data['coverLetter'], 'coverLetter'); +// self::save_article_file($data['articleId'], $editor_info['user_id'], $editor_info['account'], $data['picturesAndTables'], 'picturesAndTables'); + self::save_article_file($data['articleId'], $editor_info['user_id'], $editor_info['account'], $data['manuscirpt'], 'manuscirpt'); + + //更新文章状态(提醒用户) + $this->article_obj->where('article_id', $data['articleId'])->update(['editor_act' => 1]); + + //添加article_msg信息 +// $insmsg_data['article_id'] = $data['articleId']; +// $insmsg_data['content'] = ''; +// $insmsg_data['state_from'] = $article_info['state']; +// $insmsg_data['state_to'] = 4; +// $insmsg_data['ctime'] = time(); +// $this->article_msg_obj->insert($insmsg_data); + + //发送email提醒用户 +// $tt = $article_info['accept_sn'].'
'; +// $tt .= 'Dear author,
'; +// $tt .= 'Thanks for submitting the manuscript to '.$journal_info['title'].'.
'; +// $tt .= 'Here are the comments in the "Author Center", Please submit your revised manuscript within two weeks.

'; +// $tt .= 'Sincerely,
Editorial Office
'; +// $tt .= $journal_info['title'].'
'; +// $tt .= 'Email:'.$journal_info['email'].'
'; +// $tt .= 'Website: '.$journal_info['website']; +// sendEmail($author_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //增加用户操作log + $log_data['user_id'] = $editor_info['user_id']; + $log_data['type'] = 1; + $log_data['content'] = $editor_info['account'] . "(" . $editor_info['realname'] . "),更改了一篇文章:" . $data['title'] . ",上传时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $this->user_log_obj->insert($log_data); + + //增加usermsg + add_usermsg($article_info['user_id'], 'Your manuscript has new process: ' . $article_info['title'], '/articleDetail?id=' . $article_info['article_id']); + + return json(['code' => 0]); + } + + /** + * 添加文章审稿实例(编辑) + */ + public function addArticleReviewer() { + //接收参数,查询数据 + $data = $this->request->post(); + $article_info = $this->article_obj->where('article_id', $data['articleId'])->find(); + $editor_info = $this->user_obj->where('user_id', $article_info['editor_id'])->find(); + $reviewer_info = $this->user_obj->where('user_id', $data['uid'])->find(); + $journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); + + //增加信息到文章审稿表 + $insert_data['reviewer_id'] = $data['uid']; + $insert_data['article_id'] = $data['articleId']; + $insert_data['editor_act'] = 1; + $insert_data['ctime'] = time(); + $res = $this->article_reviewer_obj->insertGetId($insert_data); + + //修改文章状态->审稿中 + $this->article_obj->where('article_id',$data['articleId'])->update(['state'=>2]); + + //添加article_msg信息 + $insmsg_data['article_id'] = $data['articleId']; + $insmsg_data['content'] = ''; + $insmsg_data['state_from'] = $article_info['state']; + $insmsg_data['state_to'] = 2; + $insmsg_data['ctime'] = time(); + $this->article_msg_obj->insert($insmsg_data); + + //发送email提醒审稿员 + $tt = $article_info['accept_sn'] . '
'; + $tt .= 'Dear '.$reviewer_info['realname'].'

'; + $tt .= 'The manuscript entitled “'.$article_info['title'].'” has' + . ' been submitted to the journal '.$journal_info['title'].'. The Editor-in-Chief would' + . ' be most grateful if you could offer an opinion regarding its suitability for publication' + . ' in the journal '.$journal_info['title'].'.
'; + $tt .= 'Please bring into our knowledge if there is any potential Conflict of Interest. If you agree to review this manuscript, we ask you to complete your review and submit it by submission system within 10 days of receipt of the manuscript.

'; + $tt .= 'Thank you for your consideration.
Look forward for your reply.
'; + $tt .= 'Reviewer Center
'; + $tt .= 'Your username:'.$reviewer_info['account'].'

'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'].'
'; + $tt .= 'Email:'.$journal_info['email'].'
'; + $tt .= 'Website:'.$journal_info['website']; + sendEmail($reviewer_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //记录userlog + $log_data['user_id'] = $article_info['editor_id']; + $log_data['type'] = 2; + $log_data['content'] = $editor_info['account'] . "(" . $editor_info['realname'] . "),添加了一个文章审稿实例:(" . $article_info['title'] . "-----" . $reviewer_info['account'] . "),添加时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $this->user_log_obj->insert($log_data); + + //添加usermsg + add_usermsg($data['uid'], 'You have new manuscript to be approved', '/reviewerArticleDetail?id=' . $res); + + return json(['code' => 0]); + } + + /** + * 添加文章(作者) + */ + public function addArticle() { + //接受参数,查询信息 + $data = $this->request->post(); + +// return json($data); + +// $data['abstrart'] = '大萨达撒多'; +// $data['authorList'] = [ +// [ +// 'address'=>'dsadsa', +// 'company'=>'dasdsa', +// 'country'=>'china', +// 'department'=>'dsadsa', +// 'email'=>'6541654@qq.com', +// 'firstname'=>'dsadsa', +// 'isReport'=>'true', +// 'isSuper'=>'true', +// 'lastname'=>'dsadsa', +// 'title'=>'Ph.D.' +// ] +// ]; +// $data['coverLetter'] = ''; +// $data['fund'] = 'dsads'; +// $data['journal'] = 1; +// $data['keyWords'] = 'dsads'; +// $data['manuscirpt'] = "manuscirpt/20200727/cd67d8e8f944b5f1589cceb8e1aa967c.pdf"; +// $data['picturesAndTables'] = []; +// $data['title'] = "大萨达撒多"; +// $data['username'] = "wangjinlei"; + $user_res = $this->user_obj->where('account', $data['username'])->find(); + $journal_info = $this->journal_obj->where('journal_id', $data['journal'])->find(); + + Db::startTrans(); + + //添加文章基础信息 + $inset_data['user_id'] = $user_res['user_id']; + $inset_data['journal_id'] = $data['journal']; + $inset_data['editor_id'] = $journal_info['editor_id']; + $inset_data['title'] = $data['title']; + $inset_data['keywords'] = $data['keyWords']; + $inset_data['fund'] = $data['fund']; + $inset_data['accept_sn'] = getArticleSN($journal_info['abbr'],$data['type']); + $inset_data['type'] = $data['type']; + $inset_data['major_id'] = $data['major']; + $inset_data['cmajor_id'] = $data['cmajor']; + $inset_data['approval'] = $data['approval']=='true'?1:0; + $inset_data['abstrart'] = $data['abstrart']; + $inset_data['author_act'] = 1; + $inset_data['ctime'] = time(); + $res = $this->article_obj->insertGetId($inset_data); + + //上传文章作者信息 + $authors = []; + foreach ($data['authorList'] as $v) { + if ($v['firstname'] == '') { + continue; + } + $i['article_id'] = $res; + $i['firstname'] = $v['firstname']; + $i['lastname'] = $v['lastname']; + $i['company'] = $v['company']; + $i['department'] = $v['department']; + $i['author_title'] = $v['title']; + $i['country'] = $v['country']; + $i['email'] = $v['email']; + $i['address'] = $v['address']; + $i['is_super'] = $v['isSuper'] == 'true' ? 1 : 0; + $i['is_report'] = $v['isReport'] == 'true'?1:0; + $authors[] = $i; + } + $res_author = $this->article_author_obj->insertAll($authors); + + //增加转投信息 + $transr = true; + if($data['istransfer']=='true'){ + foreach ($data['checkedjours'] as $val){ + $trans_insert['article_id'] = $res; + $trans_insert['journal_id'] = $val; + $trans_insert['ctime'] = time(); + $transr = $transr?$this->article_transfer_obj->insert($trans_insert):false; + } + } + + //增加articlefile表的信息 + $res_file1 = self::save_article_file($res, $user_res['user_id'], $user_res['account'], $data['coverLetter'], 'coverLetter'); + $res_file2 = true; + if(isset($data['picturesAndTables'])){ + foreach ($data['picturesAndTables'] as $v){ + $res_file2 = $res_file2?self::save_article_file($res, $user_res['user_id'], $user_res['account'], $v, 'picturesAndTables'):false; + } + } + $res_file4 = self::save_article_file($res, $user_res['user_id'], $user_res['account'], $data['totalpage'], 'totalpage'); + $res_file3 = self::save_article_file($res, $user_res['user_id'], $user_res['account'], $data['manuscirpt'], 'manuscirpt'); + + //发送邮件到编辑,提醒有待审文章 + $editor_info = $this->user_obj->where('user_id',$journal_info['editor_id'])->find(); + $tt = 'Dear editor,
'; + $tt .= 'Please check the new manuscript in the submission system.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt,$journal_info['email'],$journal_info['epassword']); + + //增加用户操作log + $log_data['user_id'] = $user_res['user_id']; + $log_data['type'] = 0; + $log_data['content'] = $user_res['account'] . "(" . $user_res['realname'] . "),上传了一篇文章:" . $data['title'] . ",上传时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $res_log = $this->user_log_obj->insert($log_data); + + //增加usermsg + $res_msg = add_usermsg($journal_info['editor_id'], 'New manuscript', '/articleDetailEditor?id=' . $res); + + if ($res && $res_author && $transr && $res_file1 && $res_file2 && $res_file3 && $res_file4 && $res_log && $res_msg) { + Db::commit(); + return json(['code' => 0]); + } else { + Db::rollback(); + return json(['code' => 1]); + } + } + + /** + * 作者发送消息 + */ + public function authorMessage(){ + $data = $this->request->post(); + $insert['article_id'] = $data['articleId']; + $insert['content'] = $data['content']; + $insert['ftype'] = 1; + $insert['ctime'] = time(); + $this->article_msg_obj->insert($insert); + return json(['code'=>0]); + } + + /** + * 获取期刊列表 + */ + public function getJournal() { + $username = $this->request->post('username'); + $where = []; + if ($username) { + $uidres = $this->user_obj->where(['account' => $username])->column('user_id'); + $where['editor_id'] = $uidres[0]; + } + $list = $this->journal_obj->where($where)->select(); + return json($list); + } + + /** + * 获取文章历史上传file列表 + */ + public function getFilelistByArticleID() { + $article_id = $this->request->post('articleId'); + $where['article_id'] = $article_id; + $res = $this->article_file_obj->where($where)->select(); + $frag = []; + foreach ($res as $v) { + $frag[$v['type_name']][] = $v; + } + return json($frag); + } + + /** + * 上传文章的文件 + */ + public function up_file($type) { + $file = request()->file($type); + if ($file) { + $info = $file->move(ROOT_PATH . 'public' . DS . $type); + if ($info) { + return json(['code' => 0, 'upurl' => str_replace("\\", "/", $info->getSaveName())]); + } else { + return json(['code' => 1, 'msg' => $file->getError()]); + } + } + } + + /** + * 获取文章审稿实例列表 + */ + public function getReviewerList() { + $data = $this->request->post(); + $limit_start = $data['pageIndex'] == 1 ? 0 : ($data['pageIndex'] - 1) * $data['pageSize'] - 1; + $where['t_article_reviewer.article_id'] = $data['articleId']; + $res = $this->article_reviewer_obj->field('t_article_reviewer.*,t_user.account reviewer,t_user_reviewer_info.country country,t_user_reviewer_info.field,t_user_reviewer_info.company,t_reviewer_major.title major_title,t_reviewer_major.ctitle major_ctitle')->join('t_user', 't_article_reviewer.reviewer_id = t_user.user_id', 'LEFT')->join('t_user_reviewer_info', 't_article_reviewer.reviewer_id = t_user_reviewer_info.reviewer_id', 'LEFT')->join('t_reviewer_major', 't_reviewer_major.major_id = t_user_reviewer_info.major', 'LEFT')->where($where)->limit($limit_start, $data['pageSize'])->select(); + $count = $this->article_reviewer_obj->where($where)->count(); + if ($res) { + return json(['code' => 0, 'data' => $res, 'totle' => $count]); + } else { + return json(['code' => 1]); + } + } + + /** + * 根据期刊别名获取期刊信息 + */ + public function getJournalByAlias(){ + //接收参数 + $data = $this->request->post(); + $res = $this->journal_obj->where('alias',$data['alias'])->find(); + return json($res); + } + + /** + * 获取审核人详情 + */ + public function getReviewerdetail() { + $uid = $this->request->post('uid'); + $res = $this->user_obj->field('t_user.*,t_user_reviewer_info.*,t_reviewer_major.title major_title')->join('t_user_reviewer_info', 't_user.user_id = t_user_reviewer_info.reviewer_id', 'LEFT')->join('t_reviewer_major', 't_reviewer_major.major_id = t_user_reviewer_info.major', 'LEFT')->where('t_user.user_id', $uid)->find(); + return json(['code' => 0, 'data' => $res]); + } + + /** + * 获取文章审核员list + */ + public function getArticleReviewerList() { + $data = $this->request->post(); + $article_info = $this->article_obj->where('article_id', $data['articleId'])->find(); + $revids = $this->reviewer_to_journal_obj->where('journal_id', $article_info['journal_id'])->column('reviewer_id'); + + $noids = $this->article_reviewer_obj->where('article_id', $data['articleId'])->column('reviewer_id'); + if ($noids != null) { + $where['t_user.user_id'] = [['in', $revids], ['not in', $noids]]; + } else { + $where['t_user.user_id'] = ['in', $revids]; + } + $res = $this->user_obj->field('t_user.*,t_user_reviewer_info.*')->join('t_user_reviewer_info', 't_user.user_id = t_user_reviewer_info.reviewer_id', 'LEFT')->where($where)->select(); + if ($res) { + return json(['code' => 0, 'data' => $res]); + } else { + return json(['code' => 1]); + } + } + + /** + * 存储article文件历史信息 + */ + private function save_article_file($article_id, $user_id, $username, $url, $type_name) { + //首先确定数据库里面是否存在此数据 + $res = $this->article_file_obj->where(['file_url' => $url])->find(); + if ($res) { + return true; + }else if($type_name=='picturesAndTables' && $url == ''){ + return true; + }else if($type_name=='coverLetter' && $url == ''){ + return true; + } + $insert_data['article_id'] = $article_id; + $insert_data['user_id'] = $user_id; + $insert_data['username'] = $username; + $insert_data['file_url'] = $url; + $insert_data['type_name'] = $type_name; + $insert_data['ctime'] = time(); + return $this->article_file_obj->insert($insert_data); + } + + /** + * 获取文章作者字符串 + * @param type $article_id + */ + private function getArticleAuthors($article_id){ + $res = $this->article_author_obj->where('article_id',$article_id)->where('state',0)->select(); + $frag = ''; + foreach ($res as $v){ + $frag .= $v['firstname'].$v['lastname'].','; + } + return substr($frag, 0,-1); + } + +} diff --git a/application/api/controller/Auto.php b/application/api/controller/Auto.php new file mode 100644 index 0000000..4d1d273 --- /dev/null +++ b/application/api/controller/Auto.php @@ -0,0 +1,277 @@ +article_obj = Db::name('article'); + $this->article_reviewer_obj = Db::name('article_reviewer'); + $this->user_obj = Db::name('user'); + + + $this->rev_to_jour_obj = Db::name('reviewer_to_journal'); + $this->journal_obj = Db::name('journal'); + $this->reviewer_obj = Db::name('article_reviewer'); + $this->article_msg_obj = Db::name('article_msg'); + $this->user_log_obj = Db::name('user_log'); + $this->reviewer_info_obj = Db::name('user_reviewer_info'); + } + + /** + * 自动审稿主方法 + */ + public function initAutoReview() { + //查找对应状态的article列表 + $alist = $this->article_obj->where('state', 2)->select(); + foreach ($alist as $v) { + Queue::push('app\api\job\review@fire', $v, "emailtest"); + } + } + + public function testrev(){ + $a = $this->article_obj->where('article_id',261)->find(); + $this->checkrev($a); + } + + /** + * 处理过期审稿 + */ + public function overdue_reviewer() { + $where['state'] = 0; + $where['ctime'] = ['lt', time() - 3600 * 24 * 14]; + $revs = $this->article_reviewer_obj->where($where)->select(); + foreach ($revs as $v) { + //审稿人失败次数+1 + $this->user_obj->where('user_id', $v['reviewer_id'])->setInc('rd_num'); + //此审稿案例超时 + $this->article_reviewer_obj->where('art_rev_id', $v['art_rev_id'])->update(['state' => 4]); + } + } + + public function testmail() { + $maidata['email'] = '751475802@qq.com'; + $maidata['title'] = 'test'.date('Ymd His', time()); + $maidata['content'] = 'dsadsaas'; + $maidata['tmail'] = 'tmrcancer@tmrjournals.com'; + $maidata['tpassword'] = 'Wu999999tmrcance'; + Queue::push('app\api\job\mail@fire', $maidata, "mail"); + } + + + + /** + * 审查文章审稿人状态,返回结果 + */ + public function checkrev($data) { + //查找审稿案例状态 + $rev_list = $this->reviewer_obj->where('article_id', $data['article_id'])->where('state','<>',4)->select(); + $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); + $user_info = $this->user_obj->where('user_id',$data['user_id'])->find(); + $editor_info = $this->user_obj->where('user_id',$data['editor_id'])->find(); + //分析审稿人状况 + $all = count($rev_list); + $s_num = 0; //初始数量 + $p_num = 0; //通过数量 + $np_num = 0; //不通过数量 + foreach ($rev_list as $v) { + if ($v['state'] == 0) { + $s_num++; + } else if ($v['state'] == 1 || $v['state'] == 3) { + $p_num++; + } else { + $np_num++; + } + } + //分情况执行 + if ($all == 0) { + //分配两次审稿人 + $this->add_reviewer($data); + $this->add_reviewer($data); + return true; + } elseif ($all == 1) { + //分配一次审稿人 + $this->add_reviewer($data); + return true; + } elseif ($all == 2) { + if ($s_num > 0) {//不做任何处理 + return true; + } + if ($p_num == 2) {//通过 + //更新文章状态 + $this->article_obj->where('article_id', $data['article_id'])->update(['state'=>4,'editor_act'=>1]); + //添加文章msg信息 + $insert_data['article_id'] = $data['article_id']; + $insert_data['content'] = 'Review completed'; + $insert_data['state_from'] = $data['state']; + $insert_data['state_to'] = 4; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + //添加通知信息 + add_usermsg($data['user_id'], 'Your manuscript has new process', '/articleDetail?id=' . $data['article_id']); + //发送邮件通知编辑 + $tt = $data['accept_sn'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting the manuscript to '.$journal_info['title'].'.
'; + $tt .= 'Please find the new comments in the "Author Center", Please submit your revised manuscript within two weeks.

'; + $tt .= 'If you need more time to revise, you can send E-mial to tell us.
'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'].'
'; + $tt .= 'Email: '.$journal_info['email'].'
'; + $tt .= 'Website: '.$journal_info['website']; + sendEmail($user_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } elseif ($np_num == 2) {//不通过 + //发送邮件通知编辑 + $tt = 'Reviewers final opinions on the manuscript ID'.$data['accept_sn'].' are rejection. Please login and deal with the next step of this manuscript manually.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } else {//一样一个增加一个审稿案例 + $this->add_reviewer($data); + return true; + } + } elseif ($all == 3) { + if ($s_num > 0) {//不做任何处理 + return true; + } + if ($p_num == 2) {//通过 + //更新文章状态 + $this->article_obj->where('article_id', $data['article_id'])->update(['state'=>4,'editor_act'=>1]); + //添加文章msg信息 + $insert_data['article_id'] = $data['article_id']; + $insert_data['content'] = 'Review completed'; + $insert_data['state_from'] = $data['state']; + $insert_data['state_to'] = 4; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + //添加通知信息 + add_usermsg($data['user_id'], 'Your manuscript has new process', '/articleDetail?id=' . $data['article_id']); + //发送邮件通知编辑 + $tt = $data['accept_sn'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting the manuscript to '.$journal_info['title'].'.
'; + $tt .= 'Please find the new comments in the "Author Center", Please submit your revised manuscript within two weeks.

'; + $tt .= 'If you need more time to revise, you can send E-mial to tell us.
'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'].'
'; + $tt .= 'Email: '.$journal_info['email'].'
'; + $tt .= 'Website: '.$journal_info['website']; + sendEmail($user_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } else {//不通过 + //发送邮件通知编辑 + $tt = 'Reviewers final opinions on the manuscript ID'.$data['accept_sn'].' are rejection. Please login and deal with the next step of this manuscript manually.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + } + } + } + + /** + * 增加一个审稿人 + */ + public function add_reviewer($article) { + $journal_info = $this->journal_obj->where('journal_id', $article['journal_id'])->find(); + $editor_info = $this->user_obj->where('user_id', $article['editor_id'])->find(); + //根据文章筛选候选人 + $reviewer = $this->chose_reviewer($article); + if ($reviewer == null) {//没有查询到审稿人,执行提醒操作 + //发送邮件到编辑,提醒需要手动添加审稿案例 + $tt = 'Dear editor,
'; + $tt .= 'There are no enough research area related reviewers in the reviewer list for manuscript ID ' . $article['accept_sn'] . ', please add reviewers for your journal or manual deal with this problem.

'; + $tt .= 'TMR Publishing Group'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } else {//查询到审稿人,执行添加操作 + //将审稿时间定义至现在 + $this->user_obj->where('user_id', $reviewer['user_id'])->update(['rtime' => time()]); + + $article_info = $article; + $reviewer_info = $reviewer; + + //增加信息到文章审稿表 + $insert_data['reviewer_id'] = $reviewer['user_id']; + $insert_data['article_id'] = $article_info['article_id']; + $insert_data['editor_act'] = 1; + $insert_data['ctime'] = time(); + $res = $this->article_reviewer_obj->insertGetId($insert_data); + + //修改文章状态->审稿中 + $this->article_obj->where('article_id', $article_info['article_id'])->update(['state' => 2]); + + //添加article_msg信息 + $insmsg_data['article_id'] = $article_info['article_id']; + $insmsg_data['content'] = ''; + $insmsg_data['state_from'] = $article_info['state']; + $insmsg_data['state_to'] = 2; + $insmsg_data['ctime'] = time(); + $this->article_msg_obj->insert($insmsg_data); + + //发送email提醒审稿员 + $tt = $article_info['accept_sn'] . '
'; + $tt .= 'Dear ' . $reviewer_info['realname'] . '

'; + $tt .= 'The manuscript entitled “' . $article_info['title'] . '” has' + . ' been submitted to the journal ' . $journal_info['title'] . '. The Editor-in-Chief would' + . ' be most grateful if you could offer an opinion regarding its suitability for publication' + . ' in the journal ' . $journal_info['title'] . '.
'; + $tt .= 'Please bring into our knowledge if there is any potential Conflict of Interest. If you agree to review this manuscript, we ask you to complete your review and submit it by submission system within 10 days of receipt of the manuscript.

'; + $tt .= 'Thank you for your consideration.
Look forward for your reply.
'; + $tt .= 'Reviewer Center
'; + $tt .= 'Your username:' . $reviewer_info['account'] . '

'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'] . '
'; + $tt .= 'Email:' . $journal_info['email'] . '
'; + $tt .= 'Website:' . $journal_info['website']; + sendEmail($reviewer_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //记录userlog + $log_data['user_id'] = $article_info['editor_id']; + $log_data['type'] = 2; + $log_data['content'] = $editor_info['account'] . "(" . $editor_info['realname'] . "),添加了一个文章审稿实例:(" . $article_info['title'] . "-----" . $reviewer_info['account'] . "),添加时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $this->user_log_obj->insert($log_data); + + //添加usermsg + add_usermsg($reviewer['user_id'], 'You have new manuscript to be approved', '/reviewerArticleDetail?id=' . $res); + } + } + + /** + * 筛选一个审稿人 + */ + public function chose_reviewer($article) { + //筛选符合期刊 + $rev_list = $this->rev_to_jour_obj->where('journal_id', $article['journal_id'])->column('reviewer_id'); + $fie_list = $this->reviewer_info_obj->where('major',$article['major_id'])->column('reviewer_id'); + $u_list = $this->user_obj + ->where('user_id',['in',$rev_list],['in',$fie_list])//审核人属于某期刊,并且属于某个领域 + ->where('rtime','<',time() - 3600 * 24 * 15)//审核人间隔时间 + ->order('rs_num desc')->select(); + if ($u_list) { + return $u_list[0]; + } else { + return null; + } + } + + +} diff --git a/application/api/controller/Index.php b/application/api/controller/Index.php new file mode 100644 index 0000000..45b0b19 --- /dev/null +++ b/application/api/controller/Index.php @@ -0,0 +1,18 @@ +article_obj = Db::name('article'); + $this->article_reviewer_obj = Db::name('article_reviewer'); + $this->user_obj = Db::name('user'); + + + $this->rev_to_jour_obj = Db::name('reviewer_to_journal'); + $this->journal_obj = Db::name('journal'); + $this->reviewer_obj = Db::name('article_reviewer'); + $this->article_msg_obj = Db::name('article_msg'); + $this->user_log_obj = Db::name('user_log'); + $this->reviewer_info_obj = Db::name('user_reviewer_info'); + } + + + public function mytest(){ + create_pdf('Traditional Medicine Research'); + } + + + public function pdftest() { + $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + $pdf->SetHeaderData('logo.png', 25, '', '', array(0, 64, 255), array(0, 64, 128)); + $pdf->setFooterData(array(0, 64, 0), array(0, 64, 128)); + $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); + $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); + $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); + $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); + $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); + $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); + $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); + $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); + if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) { + require_once(dirname(__FILE__) . '/lang/eng.php'); + $pdf->setLanguageArray($l); + } + $pdf->setFontSubsetting(true); + $pdf->SetFont('times', '', 14, '', true); + $pdf->AddPage(); + $pdf->setTextShadow(array('enabled' => true, 'depth_w' => 0.2, 'depth_h' => 0.2, 'color' => array(196, 196, 196), 'opacity' => 1, 'blend_mode' => 'Normal')); + $html ='

To whom it may concern

' + . 'You have reviewed 1 submission in the journal Traditional Medicine Research during 2020. +Thank you for your support to our journal. This contribution is greatly appreciated.' + .'

Regards
+Editorial Office
+Traditional Medicine Research

' + .'

Contact us

+TMR Publishing Group Address: 11 Cockle Bay Rd, Cockle Bay, Auckland 2014, New Zealand
+Telephone: +64 02108293806
+E-mail: publisher@tmrjournals.com

'; + + $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); + $pdf->Output('d:/example_001.pdf', 'F'); + } + +} diff --git a/application/api/controller/Reviewer.php b/application/api/controller/Reviewer.php new file mode 100644 index 0000000..4faf33e --- /dev/null +++ b/application/api/controller/Reviewer.php @@ -0,0 +1,383 @@ +user_obj = Db::name('user'); + $this->user_reviewer_obj = Db::name('user_reviewer_apply'); + $this->journal_obj = Db::name('journal'); + $this->reviewer_major_obj = Db::name('reviewer_major'); + $this->reviewer_to_journal_obj = Db::name('reviewer_to_journal'); + $this->user_reviewer_info_obj = Db::name('user_reviewer_info'); + $this->user_log_obj = Db::name('user_log'); + $this->article_obj = Db::name('article'); + $this->article_file_obj = Db::name('article_file'); + $this->article_reviewer_obj = Db::name('article_reviewer'); + $this->article_reviewer_file_obj = Db::name('article_reviewer_file'); + $this->article_reviewer_question_obj = Db::name('article_reviewer_question'); + } + + /** + * 获取文章审稿实例列表(审稿人) + */ + public function getReviewerList() { + $data = $this->request->post(); + $limit_start = $data['pageIndex'] == 1 ? 0 : ($data['pageIndex'] - 1) * $data['pageSize'] - 1; + $reviewer_info = $this->user_obj->where('account', $data['username'])->find(); + $res = $this->article_reviewer_obj->field('t_article_reviewer.*,t_article.title article_title,t_journal.title journal_title,t_article.accept_sn accept_sn') + ->join('t_article', 't_article_reviewer.article_id = t_article.article_id', 'LEFT') + ->join('t_journal', 't_article.journal_id = t_journal.journal_id', 'LEFT') + ->where('t_article_reviewer.reviewer_id', $reviewer_info['user_id']) + ->order('t_article_reviewer.state') + ->limit($limit_start, $data['pageSize']) + ->select(); + $count = $this->article_reviewer_obj->where('t_article_reviewer.reviewer_id', $reviewer_info['user_id'])->count(); + return json(['code' => 0, 'data' => $res, 'total' => $count]); + } + + /** + * 获取审稿人详情 + */ + public function getReviewerDetail(){ + $uid = $this->request->post('rid'); + //获取基本信息 + $base_info = $this->user_obj->join('t_user_reviewer_info','t_user.user_id = t_user_reviewer_info.reviewer_id')->where('t_user.user_id',$uid)->find(); + //增加major + $major_res = $this->reviewer_major_obj->where('major_id',$base_info['major'])->column('title'); + $base_info['major_title'] = $major_res?$major_res[0]:''; + $cmajor_res = $this->reviewer_major_obj->where('major_id',$base_info['cmajor'])->column('title'); + $base_info['cmajor_title'] = $cmajor_res?$cmajor_res[0]:''; + + return json(['data'=>$base_info]); + } + + /** + * 更改审稿人信息 + */ + public function editReviewer(){ + $data = $this->request->post(); + $this->user_reviewer_info_obj->where('reviewer_info_id',$data['reviewer_info_id'])->update(['major'=>$data['major'],'cmajor'=>$data['cmajor']]); + return json(['code'=>0]); + } + + + /** + * 上传/修改文章审核实例详情两个文件(编辑,审稿人) + */ + public function articleReviewerUpSubmit($type) { + //接受参数,查询信息 + $data = $this->request->post(); +// $data['article'] = "dsadsaddsa"; +// $data['articlefile'] = "articlefile/20200729/6e81db641bcf80bfcd2c9228cbb9ce71.docx"; +// $data['articlezip'] = ''; +// $data['artrevid'] = 1; +// $data['ctime'] = "1595993462"; +// $data['editor'] = 'pipixia'; +// $data['reviewer'] = 'nv'; +// $data['state'] = 0; + + $artrev_info = $this->article_reviewer_obj->where('art_rev_id', $data['artrevid'])->find(); + $article_info = $this->article_obj->where('article_id',$artrev_info['article_id'])->find(); + $editor_info = $this->user_obj->where('user_id',$article_info['editor_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); + if ($type == 'editor') { + $up_data['editor_act'] = 1; + $user_msg_url = '/reviewerArticleDetail?id='.$data['artrevid']; + $user_info = $this->user_obj->where('account', $data['editor'])->find(); + } else { + $up_data['reviewer_act'] = 1; + $user_msg_url = '/articleReviewerDetail?id='.$data['artrevid']; + $user_info = $this->user_obj->where('user_id', $artrev_info['reviewer_id'])->find(); + } + + //上传 + self::save_article_reviewer_file($data['artrevid'], $user_info['user_id'], $user_info['account'], $data['articlefile'], 'articlefile'); + if ($data['articlezip'] != '') { + self::save_article_reviewer_file($data['artrevid'], $user_info['user_id'], $user_info['account'], $data['articlezip'], 'articlezip'); + } + + //更新实例状态 + $this->article_reviewer_obj->where('art_rev_id',$data['artrevid'])->update($up_data); + + //记录userlog + $log_data['user_id'] = $user_info['user_id']; + $log_data['type'] = 3; + $log_data['content'] = $user_info['account'] . "(" . $user_info['realname'] . "),更改了一篇文章审稿实例:(" . $article_info['title'] . ")的状态,更改时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $this->user_log_obj->insert($log_data); + + //发送email提醒 + if ($type != 'editor') { + $tt = 'Dear editor,
'; + $tt .= 'Please check the new comments from the reviewer.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt,$journal_info['email'],$journal_info['epassword']); + } + + //保存usermsg + add_usermsg($type == 'editor'?$artrev_info['reviewer_id']:$article_info['editor_id'], 'New status of the manuscript', $user_msg_url); + + return json(['code' => 0]); + } + + /** + * 获取文章审稿实例文件列表 + */ + public function getFilelistByID() { + $rev_id = $this->request->post('revid'); + $where['art_rev_id'] = $rev_id; + $res = $this->article_reviewer_file_obj->where($where)->select(); + $frag = []; + foreach ($res as $v) { + $frag[$v['type_name']][] = $v; + } + return json($frag); + } + + /** + * 获取文章信息列表 + */ + public function getAFilelistByID(){ + $rev_id = $this->request->post('revid'); + $article_rev_info = $this->article_reviewer_obj->where('art_rev_id',$rev_id)->find(); + $file_list = $this->article_file_obj->where('article_id',$article_rev_info['article_id'])->where('type_name','manuscirpt')->select(); + return json(['data'=>$file_list]); + } + + /** + * 获取文章审稿实例详情(审稿人,编辑) + */ + public function getartrevdate() { + //接受参数 + $data = $this->request->post(); + + //查询实例数据 + $res = $this->article_reviewer_obj->field('t_article_reviewer.*,t_article.title article_title,t_article.accept_sn accept_sn,t_user.account account') + ->join('t_article', 't_article.article_id = t_article_reviewer.article_id', 'LEFT') + ->join('t_user', 't_user.user_id = t_article_reviewer.reviewer_id', 'LEFT') + ->where('t_article_reviewer.art_rev_id', $data['revid']) + ->find(); + + //更改实例状态(消息提醒) + if($data['human']=='editor'){ + $up_data['reviewer_act'] = 0; + }else{ + $up_data['editor_act'] = 0; + } + $this->article_reviewer_obj->where('art_rev_id', $data['revid'])->update($up_data); + + return json($res); + } + + /** + * 提交问卷(审稿人) + */ + public function questionSubmit() { + //接受参数,查询基础数据 + $data = $this->request->post(); + + $art_rev_info = $this->article_reviewer_obj->where('art_rev_id',$data['art_rev_id'])->find(); + $article_info = $this->article_obj->where('article_id',$art_rev_info['article_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find(); + $editor_info = $this->user_obj->where('user_id',$article_info['editor_id'])->find(); + //组合insert数据,存储 + $insert_data['art_rev_id'] = $data['art_rev_id']; + $insert_data['qu1'] = $data['qu1']; + $insert_data['qu2'] = $data['qu2']; + $insert_data['qu3'] = $data['qu3']; + $insert_data['qu4'] = $data['qu4']; + $insert_data['qu5'] = $data['qu5']; + $insert_data['qu6'] = $data['qu6']; + $insert_data['qu7'] = $data['qu7']; + $insert_data['qu8'] = $data['qu8']; + $insert_data['qu9'] = $data['qu9']?1:0; + $insert_data['qu9_contents'] = $data['qu9contents']; + $insert_data['qu10'] = $data['qu10']?1:0; + $insert_data['qu10_contents'] = $data['qu10contents']; + $insert_data['qu11'] = $data['qu11']?1:0; + $insert_data['qu11_contents'] = $data['qu11contents']; + $insert_data['qu12'] = $data['qu12']?1:0; + $insert_data['qu12_contents'] = $data['qu12contents']; + $insert_data['qu13'] = $data['qu13']?1:0; + $insert_data['qu13_contents'] = $data['qu13contents']; + $insert_data['qu14'] = $data['qu14']?1:0; + $insert_data['qu14_contents'] = $data['qu14contents']; + $insert_data['qu15'] = $data['qu15']?1:0; + $insert_data['qu15_contents'] = $data['qu15contents']; + $insert_data['rated'] = $data['rated']; + $insert_data['recommend'] = $data['recommend']; + $insert_data['other'] = $data['other']; + $insert_data['confidential'] = $data['confident']; + $insert_data['comments'] = $data['comment']; + if ($data['rev_qu_id'] == '') {//新增 + $insert_data['ctime'] = time(); + $res = $this->article_reviewer_question_obj->insert($insert_data); + } else {//更新 + $res = $this->article_reviewer_question_obj->where('rev_qu_id', $data['rev_qu_id'])->update($insert_data); + } + + //根据recommend问题,改变此实例的状态,并且更改act消息提醒状态 + if ($data['recommend'] == 1) { + $artrevstate = 3; + } else if ($data['recommend'] == 2) { + $artrevstate = 1; + } else { + $artrevstate = 2; + } + $this->article_reviewer_obj->where('art_rev_id', $data['art_rev_id'])->update(['state' => $artrevstate,'reviewer_act'=>1]); + //文章是从初始状态到其他状态,增加审稿人成功审核次数 + if($art_rev_info['state']==0){ + $this->user_obj->where('user_id',$art_rev_info['reviewer_id'])->setInc('rs_num'); + } + + //记录log + + //生成pdf文件 + $reviewer_pdf = self::pdftest($journal_info['title']); + + //发送email->编辑 + $tt = 'Dear editor,
'; + $tt .= 'Please check the new comments from the reviewer.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt,$journal_info['email'],$journal_info['epassword']); + + //发送email感谢reviewer并携带附件 + $reviewer_info = $this->user_obj->where('user_id',$art_rev_info['reviewer_id'])->find(); + $tt1 = 'You have reviewed 1 submission in the journal '.$journal_info['title'].' during '.date('Y').'.Thank you for your support to our journal. This contribution is greatly appreciated.

'; + $tt1 .= 'Regards
Editorial Office
'.$journal_info['title'].'

'; + $tt1 .= 'Contact us
TMR Publishing Group Address: 11 Cockle Bay Rd, Cockle Bay, Auckland 2014, New Zealand
Telephone: +64 02108293806
E-mail: publisher@tmrjournals.com'; + sendEmail($reviewer_info['email'],'Your contribution is greatly appreciated', $journal_info['title'], $tt1,$journal_info['email'],$journal_info['epassword'],$reviewer_pdf); + + + + //记录usermsg + add_usermsg($article_info['editor_id'], 'Feedback questionnaire be unloaded.', '/articleReviewerDetail?id='.$data['art_rev_id']); + + +// if ($res) { + return json(['code' => 0]); +// } else { +// return json(['code' => 1]); +// } + } + + /** + * 获取问卷详情 + */ + public function getQuestion() { + $id = $this->request->post('artrevid'); + $qu_info = $this->article_reviewer_question_obj->where('art_rev_id', $id)->find(); + if ($qu_info) { + return json(['code' => 0, 'data' => $qu_info]); + } else { + return json(['code' => 1]); + } + } + + + /** + * 上传文章的文件 + */ + public function up_file($type) { + $file = request()->file($type); + if ($file) { + $info = $file->move(ROOT_PATH . 'public' . DS . $type); + if ($info) { + return json(['code' => 0, 'upurl' => str_replace("\\", "/", $info->getSaveName())]); + } else { + return json(['code' => 1, 'msg' => $file->getError()]); + } + } + } + + /** + * 存储reviewer文件历史信息 + */ + private function save_article_reviewer_file($art_rev_id, $user_id, $username, $url, $type_name) { + //首先确定数据库里面是否存在此数据 + $res = $this->article_reviewer_file_obj->where(['file_url' => $url])->find(); + if ($res) { + return false; + } + $insert_data['art_rev_id'] = $art_rev_id; + $insert_data['up_user_id'] = $user_id; + $insert_data['up_username'] = $username; + $insert_data['file_url'] = $url; + $insert_data['type_name'] = $type_name; + $insert_data['ctime'] = time(); + return $this->article_reviewer_file_obj->insert($insert_data); + } + +// public function mytest(){ +// +// $journal_info = $this->journal_obj->where('journal_id',1)->find(); +// $ttt = self::pdftest('TMR'); +// $tt1 = 'You have reviewed 1 submission in the journal '.$journal_info['title'].' during '.date('Y').'.Thank you for your support to our journal. This contribution is greatly appreciated.

'; +// $tt1 .= 'Regards
Editorial Office
'.$journal_info['title'].'

'; +// $tt1 .= 'Contact us
TMR Publishing Group Address: 11 Cockle Bay Rd, Cockle Bay, Auckland 2014, New Zealand
Telephone: +64 02108293806
E-mail: publisher@tmrjournals.com'; +// sendEmail('751475802@qq.com','Your contribution is greatly appreciated', $journal_info['title'], $tt1,$journal_info['email'],$journal_info['epassword'],$ttt); +// } +// + /** + * 生成pdf感谢reviewer + */ + private function pdftest($title) { + $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + $pdf->SetHeaderData('logo.png', 25, '', '', array(0, 64, 255), array(0, 64, 128)); + $pdf->setFooterData(array(0, 64, 0), array(0, 64, 128)); + $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); + $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); + $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); + $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); + $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); + $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); + $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); + $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); + if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) { + require_once(dirname(__FILE__) . '/lang/eng.php'); + $pdf->setLanguageArray($l); + } + $pdf->setFontSubsetting(true); + $pdf->SetFont('times', '', 14, '', true); + $pdf->AddPage(); + $pdf->setTextShadow(array('enabled' => true, 'depth_w' => 0.2, 'depth_h' => 0.2, 'color' => array(196, 196, 196), 'opacity' => 1, 'blend_mode' => 'Normal')); + $html ='

To whom it may concern

' + . 'You have reviewed 1 submission in the journal '.$title.' during '.date('Y').' +Thank you for your support to our journal. This contribution is greatly appreciated.' + .'

Regards
+Editorial Office
+'.$title.'

' + .'

Contact us

+TMR Publishing Group Address: 11 Cockle Bay Rd, Cockle Bay, Auckland 2014, New Zealand
+Telephone: +64 02108293806
+E-mail: publisher@tmrjournals.com

'; + + $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); +// $pdf->Output('example_001.pdf', 'D'); +// $pdf_wj = 'd:/example_001.pdf'; + $pdf_wj = $_SERVER['DOCUMENT_ROOT'].'public/pdf/'.date('YmdHis').'thanks.pdf'; +// $pdf_wj = '/public/pdf/'.date('YMD').'/'.date('His').'thanks.pdf'; + $pdf->Output($pdf_wj, 'F'); + return $pdf_wj; + } + +} diff --git a/application/api/controller/User.php b/application/api/controller/User.php new file mode 100644 index 0000000..f2e688e --- /dev/null +++ b/application/api/controller/User.php @@ -0,0 +1,416 @@ +user_obj = Db::name('user'); + $this->captcha_obj = Db::name('captcha'); + $this->user_act_obj = Db::name('user_act'); + $this->admin_obj = Db::name('admin'); + $this->user_reviewer_obj = Db::name('user_reviewer_apply'); + $this->journal_obj = Db::name('journal'); + $this->reviewer_major_obj = Db::name('reviewer_major'); + $this->reviewer_to_journal_obj = Db::name('reviewer_to_journal'); + $this->user_reviewer_info_obj = Db::name('user_reviewer_info'); + $this->user_msg_obj = Db::name('user_msg'); + } + + /** + * 登录功能 + * @return type + */ + public function checkLogin() { + $data = $this->request->post(); + //判断是否管理员登录 + if ($data['username'] == 'superadmin'||$data['username'] == 'wuxiongzhi2') { + $where_admin['account'] = $data['username']; + $where_admin['password'] = md5($data['password']); + $admin_info = $this->admin_obj->where($where_admin)->find(); + if($admin_info==null){ + return json(['code'=>1]); + }else{ + $up_admin['last_login_time'] = time(); + $up_admin['last_login_ip'] = $this->request->ip(); + $this->admin_obj->where('admin_id = '.$admin_info['admin_id'])->update($up_admin); + return json(['code'=>0,'userinfo'=>$admin_info]); + } + } else {//用户登录 + $where['account'] = $data['username']; + $where['password'] = md5($data['password']); + $user_info = $this->user_obj->where($where)->find(); + if ($user_info == null) {//登陆失败 + return json(['code' => 1]); + } else {//登陆成功 + $up_data['last_login_time'] = time(); + $up_data['last_login_ip'] = $this->request->ip(); + $this->user_obj->where('user_id = ' . $user_info['user_id'])->update($up_data); + return json(['code' => 0, 'userinfo' => $user_info]); + } + } + } + + /** + * 根据account获取用户信息 + */ + public function getUserdata() { + $account = $this->request->post('account'); + $where['account'] = $account; + if($account=='superadmin'){ + $res = $this->admin_obj->where($where)->find(); + }else{ + $res = $this->user_obj->where($where)->find(); + } + if ($res == null) { + return json(['code' => 1, 'msg' => '获取失败']); + } else { + return json(['code' => 0, 'data' => $res]); + } + } + + /** + * 注册功能 + */ + public function register() { + $data = $this->request->post(); + //检测是否用户名和密码已经占用 + $account = $data['username']; + $email = $data['email']; + $res_once = $this->user_obj->where("account='$account' or email = '$email'")->find(); + if ($res_once != null) { + return json('existence'); + } + //验证验证码 + if (!$this->my_checkcaptcha($data['code'], $data['random_num'])) { + return json('errcaptcha'); + } + + //存入数据 + $inser_data['account'] = trim($account); + $inser_data['password'] = md5($data['password']); + $inser_data['email'] = $email; + $inser_data['phone'] = $data['phone']; + $inser_data['realname'] = $data['name']; + $inser_data['ctime'] = time(); + $this->user_obj->insert($inser_data); + //发送注册成功邮件 + $tt = "Dear author,You have successfully registered

"; + $content = $tt . '

Username:' . $account . '
Password:' . $data['password'] . '

'; + sendEmail($email, 'Dear ' . $data['name'], 'TMR', $content,); + return json($inser_data); + } + + /** + * 获取验证码图片(用户注册) + */ + public function testCaptcha() { + $data = $this->request->get(); + $config = config('captcha'); + $capt = new captcha\Captcha($config); + return $capt->entry($data['a']); + } + + /** + * 修改密码 + */ + public function retrieve() { + $data = $this->request->post(); + //获取act信息 + $act_where['act_key'] = $data['actkey']; + $actres = $this->user_act_obj->where($act_where)->find(); + $act = json_decode($actres['param']); + $where['email'] = $act->email; + $res = $this->user_obj->where($where)->update(['password' => md5($data['password'])]); + if ($res > 0) { + $this->user_act_obj->where($act_where)->update(['state' => 1]); + return json(['code' => 0]); + } else { + return json(['code' => 1, 'msg' => '失败!']); + } + } + + /** + * 获取验证码图片(密码找回) + */ + public function retrieveCaptcha() { + $data = $this->request->get(); + $config = config('captcha_retrieve'); + $capt = new captcha\Captcha($config); + return $capt->entry($data['a']); + } + + /** + * 找回密码第一步,获取邮箱 + */ + public function retrieveGetEmail() { + $data = $this->request->post(); + //验证验证码 + if (!$this->my_checkcaptcha($data['code'], $data['random_num'])) { + return json(['code' => 1, 'msg' => '验证码错误']); + } + $where['account'] = $data['username']; + $res = $this->user_obj->where($where)->find(); + if ($res == null) { + return json(['code' => 1, 'msg' => '查无此人']); + } else { + return json(['code' => 0, 'email' => $res['email']]); + } + } + + /** + * 找回密码第二部,发送邮件 + */ + public function retrievePushEmail() { + $email = $this->request->post('email'); + $where['email'] = $email; + $realname = $this->user_obj->where($where)->value('realname'); + //插入数据库隐形操作表数据 + $act_insert['act_key'] = authcode($email . time()); + $act_insert['type'] = 'retrieve'; + $act_insert['param'] = json_encode(['email' => $email]); + $act_insert['ctime'] = time(); + $this->user_act_obj->insert($act_insert); + //发送邮件 + $url = config('base_web_url') . 'retrieveact?actkey=' . $act_insert['act_key']; + $title = 'Your request to reset your password [TMR Publishing Group]'; + $content = "$realname, we've received your request to reset your password.Please click the link below to change your password. $url"; + $res = sendEmail($email, $title, 'TMR', $content,); + if ($res['status'] == 1) {//成功 + return json(['code' => 0, 'msg' => 'success']); + } else {//失败 + return json(['code' => 1, 'msg' => $res['data']]); + } + } + + /** + * 验证修改密码页面的合法性 + */ + public function checkActkey() { + $actkey = $this->request->post('actkey'); + $where['act_key'] = $actkey; + $where['state'] = 0; + $res = $this->user_act_obj->where($where)->find(); + if ($res == null) { + return json(['code' => 1, 'msg' => '查询失败']); + } else { + return json(['code' => 0, 'msg' => '查询成功']); + } + } + + /** + * 自定义验证验证码 + */ + public function my_checkcaptcha($code, $id) { + $nowcode = Cache::get(md5($id)); + $mbcode = authcode($code); + return $nowcode == $mbcode ? true : false; + } + /** + * 获取审稿人列表 + */ + public function getreviewerList(){ + $data = $this->request->post(); + $limit_start = ($data['pageIndex']-1)*$data['pageSize']; + $where['t_user.is_reviewer'] = 1; + if($data['journalId']==0){ + $subQuery = $this->user_obj->field('user_id')->where('account',$data['username'])->buildSql(); + $journals = $this->journal_obj->where("editor_id in $subQuery")->column('journal_id'); + $uids = $this->reviewer_to_journal_obj->where('journal_id','in',$journals)->column('reviewer_id'); + $where['t_user.user_id'] = ['in',$uids]; + }else{ + $uids = $this->reviewer_to_journal_obj->where('journal_id',$data['journalId'])->column('reviewer_id'); + $where['t_user.user_id'] = ['in',$uids]; + } + $res = $this->user_obj->field('t_user.*,t_user_reviewer_info.*')->join('t_user_reviewer_info','t_user_reviewer_info.reviewer_id = t_user.user_id','LEFT')->where($where)->limit($limit_start,$data['pageSize'])->select(); + $total = $this->user_obj->where($where)->count(); + if($res){ + return json(['code'=>0,'data'=>$res,'total'=>$total]); + }else{ + return json(['code'=>1]); + } + } + /** + * 获取审核员申请列表 + */ + public function getReviewerApplyList(){ + $data = $this->request->post(); + $limit_start = ($data['pageIndex']-1)*$data['pageSize']; + $where['state'] = 0; + if($data['journalId']==0){ + $subQuery = $this->user_obj->field('user_id')->where('account',$data['username'])->buildSql(); + $journals = $this->journal_obj->where("editor_id in $subQuery")->column('journal_id'); + $where['journal_id'] = ['in',$journals]; + }else{ + $where['journal_id'] = $data['journalId']; + } + $res = $this->user_reviewer_obj->where($where)->limit($limit_start,$data['pageSize'])->select(); + $count = $this->user_reviewer_obj->where($where)->count(); + return json(['total'=>$count,'data'=>$res]); + } + /** + * 获取申请详情 + */ + public function getApplyDetail(){ + $reviewerId = $this->request->post('reviewerId'); + $where['t_user_reviewer_apply.reviewer_id'] = $reviewerId; + $res = $this->user_reviewer_obj->field('t_user_reviewer_apply.*,t_journal.title journal,t_reviewer_major.title major_title')->join('t_journal','t_journal.journal_id = t_user_reviewer_apply.journal_id','left')->join('t_reviewer_major','t_user_reviewer_apply.major = t_reviewer_major.major_id','LEFT')->where($where)->find(); + if($res){ + return json(['code'=>0,'data'=>$res]); + }else{ + return json(['code'=>1]); + } + } + + /** + * 通过审核人 + */ + public function reviewerAdopt(){ + $reviewerId = $this->request->post('reviewerId'); + $where['reviewer_id'] = $reviewerId; + $apply_info = $this->user_reviewer_obj->where($where)->find(); + $journal_info = $this->journal_obj->where('journal_id',$apply_info['journal_id'])->find(); + $has_res = $this->user_obj->where('account',$apply_info['name'])->find(); + Db::startTrans(); + if($has_res==null){ + $insert_data['account'] = $apply_info['name']; + $insert_data['password'] = md5('123456qwe'); + $insert_data['email'] = $apply_info['email']; + $insert_data['realname'] = $apply_info['name']; + $insert_data['type'] = 1; + $insert_data['is_reviewer'] = 1; + $insert_data['ctime'] = time(); + $add_res = $this->user_obj->insertGetId($insert_data); + $insert_info['reviewer_id'] = $add_res; + $insert_info['gender'] = $apply_info['gender']; + $insert_info['technical'] = $apply_info['technical']; + $insert_info['country'] = $apply_info['country']; + $insert_info['introduction'] = $apply_info['introduction']; + $insert_info['company'] = $apply_info['company']; + $insert_info['major'] = $apply_info['major']; + $insert_info['field'] = $apply_info['field']; + $insert_info['qualifications'] = $apply_info['qualifications']; + $addinfo_res = $this->user_reviewer_info_obj->insertGetId($insert_info); + $has_res = $this->user_obj->where('account',$apply_info['name'])->find(); + }else{ + $add_res = true; + $addinfo_res = true; + } + $insert_rtj['reviewer_id'] = $has_res['user_id']; + $insert_rtj['journal_id'] = $journal_info['journal_id']; + $insert_rtj['account'] = $has_res['account']; + $insert_rtj['journal_title'] = $journal_info['title']; + $insert_rtj['ctime'] = time(); + $res = $this->reviewer_to_journal_obj->insert($insert_rtj); + //发送email + $content = "Thank you for registering as a ".$journal_info['title']." reviewer
" + . "At present, you have passed our examination"; + $content .= '

username:'.$apply_info['name'].'

'; + $content .= $has_res?'':'

password:123456qwe

'; + sendEmail($apply_info['email'],$journal_info['title'],$journal_info['title'], $content,$journal_info['email'],$journal_info['epassword']); + $update_res = $this->user_reviewer_obj->where($where)->update(['state'=>1]); + if($res && $add_res && $addinfo_res && $update_res){ + Db::commit(); + return json(['code'=>0]); + }else{ + Db::rollback(); + return json(['code'=>1]); + } + } + /** + * 获取用户消息 + */ + public function getUserMsg(){ + //接收参数 + $data = $this->request->post(); + $user_info = $this->user_obj->where('account',$data['account'])->find(); + + //查询msglist + $list = $this->user_msg_obj + ->where('user_id',$user_info['user_id']) + ->where('state',0) + ->order('user_msg_id desc') + ->select(); + + return json($list); + } + + /** + * 更改用户消息状态 + */ + public function changeMsgState(){ + //接收参数 + $id = $this->request->post('id'); + $this->user_msg_obj + ->where('user_msg_id',$id) + ->update(['state'=>1]); + return json(['code'=>0]); + } + + /** + * 审核人审查去重 + */ + public function checkReviewer(){ + $username = $this->request->post('username'); + $userres = $this->user_obj->where('account',$username)->find(); + $applyres= $this->user_reviewer_obj->where("name = '$username' and state <> 2")->find(); + if($applyres||$userres){ + return json(['code'=>1]); + }else{ + return json(['code'=>0]); + } + } + + /** + * 拒绝审核人 + */ + public function reviewerRejec(){ + $reviewerId = $this->request->post('reviewerId'); + $where['reviewer_id'] = $reviewerId; + $this->user_reviewer_obj->where($where)->update(['state'=>2]); + + //拒绝审稿人email-》审稿人 + + return json(['code'=>0]); + } + /** + * 获取专业列表 + */ + public function getMajorList(){ + $res = $this->reviewer_major_obj->select(); + return json(['code'=>0,'data'=>$res]); + } + + /** + * 测试发邮件 + */ + public function test_email() { + $email = '751475802@qq.com'; + $title = 'Dear ' . '王金磊'; + $tt = config('email_hello'); + $content = $tt . '

Username:wangjinlei
Password:29698073

'; + $res = sendEmail($email, $title, 'TMR', $content,); + echo '
';
+        var_dump($res);
+        echo '
'; + die; + } + +} diff --git a/application/api/job/mail.php b/application/api/job/mail.php new file mode 100644 index 0000000..8e9d8e6 --- /dev/null +++ b/application/api/job/mail.php @@ -0,0 +1,40 @@ +send($data); + if($res){ + $job->delete(); + }else{ + if($job->attempts()>3){ + // 第1种处理方式:重新发布任务,该任务延迟10秒后再执行 + //$job->release(10); + // 第2种处理方式:原任务的基础上1分钟执行一次并增加尝试次数 + //$job->failed(); + // 第3种处理方式:删除任务 + $job->delete(); + } + } + } + + /** + * 发送邮件的逻辑 + * @param type $data + */ + public function send($data){ + $r = sendEmail($data['email'],$data['title'],$data['title'],$data['content'],$data['tmail'],$data['tpassword']); + if($r['status']==1){ + return true; + }else{ + return false; + } + } + +} diff --git a/application/api/job/review.php b/application/api/job/review.php new file mode 100644 index 0000000..1ae2be6 --- /dev/null +++ b/application/api/job/review.php @@ -0,0 +1,253 @@ +user_obj = Db::name('user'); + $this->rev_to_jour_obj = Db::name('reviewer_to_journal'); + $this->journal_obj = Db::name('journal'); + $this->reviewer_obj = Db::name('article_reviewer'); + $this->article_reviewer_obj = Db::name('article_reviewer'); + $this->article_msg_obj = Db::name('article_msg'); + $this->user_log_obj = Db::name('user_log'); + $this->article_obj = Db::name('article'); + $this->reviewer_info_obj = Db::name('user_reviewer_info'); + } + + public function fire(Job $job, $data) { + $res = $this->checkrev($data); +// $res = $this->testemail($data); + if ($res) { + $job->delete(); + } else { + if ($job->attempts() > 3) { + // 第1种处理方式:重新发布任务,该任务延迟10秒后再执行 + //$job->release(10); + // 第2种处理方式:原任务的基础上1分钟执行一次并增加尝试次数 + //$job->failed(); + // 第3种处理方式:删除任务 + $job->delete(); + } + $job->delete(); + } + } + + public function testemail($data) { +// echo 'oookkk'; +// $this->add_reviewer($data); + return file_put_contents('/usr/local/1.txt', 'log_time:'.date('Y-m-d H:i:s').$data['title'].PHP_EOL, FILE_APPEND); + } + + /** + * 审查文章审稿人状态,返回结果 + */ + public function checkrev($data) { + //查找审稿案例状态 + $rev_list = $this->reviewer_obj->where('article_id', $data['article_id'])->where('state','<>',4)->select(); + $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); + $user_info = $this->user_obj->where('user_id',$data['user_id'])->find(); + $editor_info = $this->user_obj->where('user_id',$data['editor_id'])->find(); + //分析审稿人状况 + $all = count($rev_list); + $s_num = 0; //初始数量 + $p_num = 0; //通过数量 + $np_num = 0; //不通过数量 + foreach ($rev_list as $v) { + if ($v['state'] == 0) { + $s_num++; + } else if ($v['state'] == 1 || $v['state'] == 3) { + $p_num++; + } else { + $np_num++; + } + } + //分情况执行 + if ($all == 0) { + //分配两次审稿人 + $this->add_reviewer($data); + $this->add_reviewer($data); + return true; + } elseif ($all == 1) { + //分配一次审稿人 + $this->add_reviewer($data); + return true; + } elseif ($all == 2) { + if ($s_num > 0) {//不做任何处理 + return true; + } + if ($p_num == 2) {//通过 + //更新文章状态 + $this->article_obj->where('article_id', $data['article_id'])->update(['state'=>4,'editor_act'=>1]); + //添加文章msg信息 + $insert_data['article_id'] = $data['article_id']; + $insert_data['content'] = 'Review completed'; + $insert_data['state_from'] = $data['state']; + $insert_data['state_to'] = 4; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + //添加通知信息 + add_usermsg($data['user_id'], 'Your manuscript has new process', '/articleDetail?id=' . $data['article_id']); + //发送邮件通知编辑 + $tt = $data['accept_sn'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting the manuscript to '.$journal_info['title'].'.
'; + $tt .= 'Please find the new comments in the "Author Center", Please submit your revised manuscript within two weeks.

'; + $tt .= 'If you need more time to revise, you can send E-mial to tell us.
'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'].'
'; + $tt .= 'Email: '.$journal_info['email'].'
'; + $tt .= 'Website: '.$journal_info['website']; + sendEmail($user_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } elseif ($np_num == 2) {//不通过 + //发送邮件通知编辑 + $tt = 'Reviewers final opinions on the manuscript ID'.$data['accept_sn'].' are rejection. Please login and deal with the next step of this manuscript manually.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } else {//一样一个增加一个审稿案例 + $this->add_reviewer($data); + return true; + } + } elseif ($all >= 3) { + if ($s_num > 0) {//不做任何处理 + return true; + } + if ($p_num >= 2) {//通过 + //更新文章状态 + $this->article_obj->where('article_id', $data['article_id'])->update(['state'=>4,'editor_act'=>1]); + //添加文章msg信息 + $insert_data['article_id'] = $data['article_id']; + $insert_data['content'] = 'Review completed'; + $insert_data['state_from'] = $data['state']; + $insert_data['state_to'] = 4; + $insert_data['ctime'] = time(); + $this->article_msg_obj->insert($insert_data); + //添加通知信息 + add_usermsg($data['user_id'], 'Your manuscript has new process', '/articleDetail?id=' . $data['article_id']); + //发送邮件通知编辑 + $tt = $data['accept_sn'].'
'; + $tt .= 'Dear '.($user_info['realname']==''?'Authors':$user_info['realname']).',
'; + $tt .= 'Thank you for submitting the manuscript to '.$journal_info['title'].'.
'; + $tt .= 'Please find the new comments in the "Author Center", Please submit your revised manuscript within two weeks.

'; + $tt .= 'If you need more time to revise, you can send E-mial to tell us.
'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'].'
'; + $tt .= 'Email: '.$journal_info['email'].'
'; + $tt .= 'Website: '.$journal_info['website']; + sendEmail($user_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } else {//不通过 + //发送邮件通知编辑 + $tt = 'Reviewers final opinions on the manuscript ID'.$data['accept_sn'].' are rejection. Please login and deal with the next step of this manuscript manually.'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + } + } + } + + /** + * 增加一个审稿人 + */ + public function add_reviewer($article) { + $journal_info = $this->journal_obj->where('journal_id', $article['journal_id'])->find(); + $editor_info = $this->user_obj->where('user_id', $article['editor_id'])->find(); + //根据文章筛选候选人 + $reviewer = $this->chose_reviewer($article); + if ($reviewer == null) {//没有查询到审稿人,执行提醒操作 + //发送邮件到编辑,提醒需要手动添加审稿案例 + $tt = 'Dear editor,
'; + $tt .= 'There are no enough research area related reviewers in the reviewer list for manuscript ID ' . $article['accept_sn'] . ', please add reviewers for your journal or manual deal with this problem.

'; + $tt .= 'TMR Publishing Group'; + sendEmail($editor_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + } else {//查询到审稿人,执行添加操作 + //将审稿时间定义至现在 + $this->user_obj->where('user_id', $reviewer['user_id'])->update(['rtime' => time()]); + + $article_info = $article; + $reviewer_info = $reviewer; + + //增加信息到文章审稿表 + $insert_data['reviewer_id'] = $reviewer['user_id']; + $insert_data['article_id'] = $article_info['article_id']; + $insert_data['editor_act'] = 1; + $insert_data['ctime'] = time(); + $res = $this->article_reviewer_obj->insertGetId($insert_data); + + //修改文章状态->审稿中 + $this->article_obj->where('article_id', $article_info['article_id'])->update(['state' => 2]); + + //添加article_msg信息 + $insmsg_data['article_id'] = $article_info['article_id']; + $insmsg_data['content'] = ''; + $insmsg_data['state_from'] = $article_info['state']; + $insmsg_data['state_to'] = 2; + $insmsg_data['ctime'] = time(); + $this->article_msg_obj->insert($insmsg_data); + + //发送email提醒审稿员 + $tt = $article_info['accept_sn'] . '
'; + $tt .= 'Dear ' . $reviewer_info['realname'] . '

'; + $tt .= 'The manuscript entitled “' . $article_info['title'] . '” has' + . ' been submitted to the journal ' . $journal_info['title'] . '. The Editor-in-Chief would' + . ' be most grateful if you could offer an opinion regarding its suitability for publication' + . ' in the journal ' . $journal_info['title'] . '.
'; + $tt .= 'Please bring into our knowledge if there is any potential Conflict of Interest. If you agree to review this manuscript, we ask you to complete your review and submit it by submission system within 7 days of receipt of the manuscript.

'; + $tt .= 'Thank you for your consideration.
Look forward for your reply.
'; + $tt .= 'Reviewer Center
'; + $tt .= 'Your username:' . $reviewer_info['account'] . '

'; + $tt .= 'Sincerely,
Editorial Office
'; + $tt .= $journal_info['title'] . '
'; + $tt .= 'Email:' . $journal_info['email'] . '
'; + $tt .= 'Website:' . $journal_info['website']; + sendEmail($reviewer_info['email'], $journal_info['title'], $journal_info['title'], $tt, $journal_info['email'], $journal_info['epassword']); + + //记录userlog + $log_data['user_id'] = $article_info['editor_id']; + $log_data['type'] = 2; + $log_data['content'] = $editor_info['account'] . "(" . $editor_info['realname'] . "),添加了一个文章审稿实例:(" . $article_info['title'] . "-----" . $reviewer_info['account'] . "),添加时间是:" . date('Y-m-d H:i:s', time()); + $log_data['ctime'] = time(); + $this->user_log_obj->insert($log_data); + + //添加usermsg + add_usermsg($reviewer['user_id'], 'You have new manuscript to be approved', '/reviewerArticleDetail?id=' . $res); + } + } + + /** + * 筛选一个审稿人 + */ + public function chose_reviewer($article) { + //筛选符合期刊 + $rev_list = $this->rev_to_jour_obj->where('journal_id', $article['journal_id'])->column('reviewer_id'); + $fie_list = $this->reviewer_info_obj->where('major',$article['major_id'])->column('reviewer_id'); + $u_list = $this->user_obj + ->where('user_id',['in',$rev_list],['in',$fie_list])//审核人属于某期刊,并且属于某个领域 + ->where('rtime','<',time() - 3600 * 24 * 15)//审核人间隔时间 + ->order('rs_num desc')->select(); + if ($u_list) { + return $u_list[0]; + } else { + return null; + } + } + +} diff --git a/application/api/model/User.php b/application/api/model/User.php new file mode 100644 index 0000000..7b17357 --- /dev/null +++ b/application/api/model/User.php @@ -0,0 +1,9 @@ + +// +---------------------------------------------------------------------- + +return [ + // 生成应用公共文件 + '__file__' => ['common.php', 'config.php', 'database.php'], + + // 定义demo模块的自动生成 (按照实际定义的文件名生成) + 'demo' => [ + '__file__' => ['common.php'], + '__dir__' => ['behavior', 'controller', 'model', 'view'], + 'controller' => ['Index', 'Test', 'UserType'], + 'model' => ['User', 'UserType'], + 'view' => ['index/index'], + ], + // 其他更多的模块定义 + + // 定义api模块的自动生成 + 'api'=>[ + '__dir__' => ['behavior','controller','model','widget'], + 'controller'=> ['Index','Test','UserType'], + 'model' => ['User','UserType'], + 'view' => ['index/index','index/test'], + ], +]; diff --git a/application/command.php b/application/command.php new file mode 100644 index 0000000..826bb2b --- /dev/null +++ b/application/command.php @@ -0,0 +1,12 @@ + +// +---------------------------------------------------------------------- + +return []; diff --git a/application/common.php b/application/common.php new file mode 100644 index 0000000..4aa208b --- /dev/null +++ b/application/common.php @@ -0,0 +1,134 @@ + +// +---------------------------------------------------------------------- +// 应用公共文件 +function authcode($str) { + $key = substr(md5('ThinkPHP.CN'), 5, 8); + $str1 = substr(md5($str), 8, 10); + return md5($key . $str1); +} + +/** + * @function sendEmail + * @intro 发送邮件(带附件) + * @param $email 接收邮箱 + * @param $title 邮件标题 + * @param $from_name 发件人 + * @param $content 邮件内容 + * @param $memail 邮件内容 + * @param $mpassword 邮件内容 + * @param $attachmentFile 附件 (string | array) + * @return array + */ +function sendEmail($email = '', $title = '', $from_name = '', $content = '', $memail = '', $mpassword = '', $attachmentFile = '') { + date_default_timezone_set('PRC'); + //Create a new PHPMailer instance + $mail = new PHPMailer; + //Tell PHPMailer to use SMTP + $mail->isSMTP(); + //Enable SMTP debugging + // 0 = off (for production use) + // 1 = client messages + // 2 = client and server messages + $mail->SMTPDebug = 0; + //Ask for HTML-friendly debug output + $mail->Debugoutput = 'html'; + //charset + $mail->CharSet = 'UTF-8'; + //Set the hostname of the mail server + $mail->Host = "smtp.qiye.aliyun.com"; //请填写你的邮箱服务器 + //Set the SMTP port number - likely to be 25, 465 or 587 + $mail->Port = 25; //端口号 + //Whether to use SMTP authentication + $mail->SMTPAuth = true; + //Username to use for SMTP authentication + $mail->Username = $memail == '' ? "tmrweb@tmrjournals.com" : $memail; //发件邮箱用户名 + //Password to use for SMTP authentication + $mail->Password = $mpassword == '' ? "Wu999999tmrwe" : $mpassword; //发件邮箱密码 + //Set who the message is to be sent from + $mail->setFrom($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name); + //Set an alternative reply-to address(用户直接回复邮件的地址) + $mail->addReplyTo($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name); + //Set who the message is to be sent to + $mail->addAddress($email); + //Set the subject line + $mail->Subject = $title; + //Read an HTML message body from an external file, convert referenced images to embedded, + //convert HTML into a basic plain-text alternative body + $mail->msgHTML($content); + //Replace the plain text body with one created manually + $mail->AltBody = ''; + if (is_array($attachmentFile)) { + for ($i = 0; $i < count($attachmentFile); $i++) { + $mail->addAttachment($attachmentFile[$i], 'thanks.pdf' . $i); //这里可以是多维数组,然后循环附件的文件和名称 + } + } else { + if ($attachmentFile != '') { + //Attach an image file + $mail->addAttachment($attachmentFile, 'thanks.pdf'); + } + } + //send the message, check for errors + if (!$mail->send()) { + $status = 0; + $data = "邮件发送失败" . $mail->ErrorInfo; + ; + } else { + $status = 1; + $data = "邮件发送成功"; + } + return ['status' => $status, 'data' => $data]; //返回值(可选) +} + +/** + * 生成文章sn号 + * @return type + */ +function getArticleSN($abbr,$type) { + $str = $abbr; + $str .= date('Y', time()).$type.date('md', time()); + $where['accept_sn'] = ['like', "$str%"]; + $nowres = Db::name('article')->where($where)->select(); + $last_num = 1; + if ($nowres) { + foreach ($nowres as $v) { + $now_num = intval(substr($v['accept_sn'], -3)); + $last_num = $now_num > $last_num ? $now_num : $last_num; + } + $last_num += 1; + } + $last_str = sprintf("%03d", $last_num); + $str .= $last_str; + return $str; +} + +/** + * 增加usermsg + */ +function add_usermsg($userid, $content, $url) { + $msg_obj = Db::name('user_msg'); + $msg_info = $msg_obj->where('user_id', $userid) + ->where('url', $url) + ->where('state', 0) + ->find(); + if ($msg_info) { + return true; + } + $msgdata['user_id'] = $userid; + $msgdata['content'] = $content; + $msgdata['url'] = $url; + $msgdata['ctime'] = time(); + return $msg_obj->insert($msgdata); +} diff --git a/application/config.php b/application/config.php new file mode 100644 index 0000000..ef2458f --- /dev/null +++ b/application/config.php @@ -0,0 +1,273 @@ + +// +---------------------------------------------------------------------- + +return [ + // +---------------------------------------------------------------------- + // | 应用设置 + // +---------------------------------------------------------------------- + + // 应用调试模式 + 'app_debug' => true, + // 应用Trace + 'app_trace' => false, + // 应用模式状态 + 'app_status' => '', + // 是否支持多模块 + 'app_multi_module' => true, + // 入口自动绑定模块 + 'auto_bind_module' => false, + // 注册的根命名空间 + 'root_namespace' => [], + // 扩展函数文件 + 'extra_file_list' => [THINK_PATH . 'helper' . EXT], + // 默认输出类型 + 'default_return_type' => 'html', + // 默认AJAX 数据返回格式,可选json xml ... + 'default_ajax_return' => 'json', + // 默认JSONP格式返回的处理方法 + 'default_jsonp_handler' => 'jsonpReturn', + // 默认JSONP处理方法 + 'var_jsonp_handler' => 'callback', + // 默认时区 + 'default_timezone' => 'PRC', + // 是否开启多语言 + 'lang_switch_on' => false, + // 默认全局过滤方法 用逗号分隔多个 + 'default_filter' => '', + // 默认语言 + 'default_lang' => 'zh-cn', + // 应用类库后缀 + 'class_suffix' => false, + // 控制器类后缀 + 'controller_suffix' => false, + + // +---------------------------------------------------------------------- + // | 模块设置 + // +---------------------------------------------------------------------- + + // 默认模块名 + 'default_module' => 'index', + // 禁止访问模块 + 'deny_module_list' => ['common'], + // 默认控制器名 + 'default_controller' => 'Index', + // 默认操作名 + 'default_action' => 'index', + // 默认验证器 + 'default_validate' => '', + // 默认的空控制器名 + 'empty_controller' => 'Error', + // 操作方法后缀 + 'action_suffix' => '', + // 自动搜索控制器 + 'controller_auto_search' => false, + + // +---------------------------------------------------------------------- + // | URL设置 + // +---------------------------------------------------------------------- + + // PATHINFO变量名 用于兼容模式 + 'var_pathinfo' => 's', + // 兼容PATH_INFO获取 + 'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'], + // pathinfo分隔符 + 'pathinfo_depr' => '/', + // URL伪静态后缀 + 'url_html_suffix' => 'html', + // URL普通方式参数 用于自动生成 + 'url_common_param' => false, + // URL参数方式 0 按名称成对解析 1 按顺序解析 + 'url_param_type' => 0, + // 是否开启路由 + 'url_route_on' => true, + // 路由使用完整匹配 + 'route_complete_match' => false, + // 路由配置文件(支持配置多个) + 'route_config_file' => ['route'], + // 是否开启路由解析缓存 + 'route_check_cache' => false, + // 是否强制使用路由 + 'url_route_must' => false, + // 域名部署 + 'url_domain_deploy' => false, + // 域名根,如thinkphp.cn + 'url_domain_root' => '', + // 是否自动转换URL中的控制器和操作名 + 'url_convert' => true, + // 默认的访问控制器层 + 'url_controller_layer' => 'controller', + // 表单请求类型伪装变量 + 'var_method' => '_method', + // 表单ajax伪装变量 + 'var_ajax' => '_ajax', + // 表单pjax伪装变量 + 'var_pjax' => '_pjax', + // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则 + 'request_cache' => false, + // 请求缓存有效期 + 'request_cache_expire' => null, + // 全局请求缓存排除规则 + 'request_cache_except' => [], + + // +---------------------------------------------------------------------- + // | 模板设置 + // +---------------------------------------------------------------------- + + 'template' => [ + // 模板引擎类型 支持 php think 支持扩展 + 'type' => 'Think', + // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 + 'auto_rule' => 1, + // 模板路径 + 'view_path' => '', + // 模板后缀 + 'view_suffix' => 'html', + // 模板文件名分隔符 + 'view_depr' => DS, + // 模板引擎普通标签开始标记 + 'tpl_begin' => '{', + // 模板引擎普通标签结束标记 + 'tpl_end' => '}', + // 标签库标签开始标记 + 'taglib_begin' => '{', + // 标签库标签结束标记 + 'taglib_end' => '}', + ], + + // 视图输出字符串内容替换 + 'view_replace_str' => [], + // 默认跳转页面对应的模板文件 + 'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', + 'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', + + // +---------------------------------------------------------------------- + // | 异常及错误设置 + // +---------------------------------------------------------------------- + + // 异常页面的模板文件 + 'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl', + + // 错误显示信息,非调试模式有效 + 'error_message' => '页面错误!请稍后再试~', + // 显示错误信息 + 'show_error_msg' => false, + // 异常处理handle类 留空使用 \think\exception\Handle + 'exception_handle' => '', + + // +---------------------------------------------------------------------- + // | 日志设置 + // +---------------------------------------------------------------------- + + 'log' => [ + // 日志记录方式,内置 file socket 支持扩展 + 'type' => 'File', + // 日志保存目录 + 'path' => LOG_PATH, + // 日志记录级别 + 'level' => [], + ], + + // +---------------------------------------------------------------------- + // | Trace设置 开启 app_trace 后 有效 + // +---------------------------------------------------------------------- + 'trace' => [ + // 内置Html Console 支持扩展 + 'type' => 'Html', + ], + + // +---------------------------------------------------------------------- + // | 缓存设置 + // +---------------------------------------------------------------------- + + 'cache' => [ + // 驱动方式 + 'type' => 'File', + // 缓存保存目录 + 'path' => CACHE_PATH, + // 缓存前缀 + 'prefix' => '', + // 缓存有效期 0表示永久缓存 + 'expire' => 0, + ], + + // +---------------------------------------------------------------------- + // | 会话设置 + // +---------------------------------------------------------------------- + + 'session' => [ + 'id' => '', + // SESSION_ID的提交变量,解决flash上传跨域 + 'var_session_id' => '', + // SESSION 前缀 + 'prefix' => 'think', + // 驱动方式 支持redis memcache memcached + 'type' => '', + // 是否自动开启 SESSION + 'auto_start' => true, + ], + + // +---------------------------------------------------------------------- + // | Cookie设置 + // +---------------------------------------------------------------------- + 'cookie' => [ + // cookie 名称前缀 + 'prefix' => '', + // cookie 保存时间 + 'expire' => 0, + // cookie 保存路径 + 'path' => '/', + // cookie 有效域名 + 'domain' => '', + // cookie 启用安全传输 + 'secure' => false, + // httponly设置 + 'httponly' => '', + // 是否使用 setcookie + 'setcookie' => true, + ], + + //分页配置 + 'paginate' => [ + 'type' => 'bootstrap', + 'var_page' => 'page', + 'list_rows' => 15, + ], + //验证码配置(用户注册) + 'captcha' => [ + //验证码的字符集 + 'codeSet' => '1234567890', + //设置验证码大小 + 'fontSize' => 12, + //设置图片的高度、宽度 + 'imageW' => 140, + 'imageH' => 30, + //验证码位数 + 'length' =>5, + //验证成功后重置 + 'reset' =>false, + 'useNoise'=>false + ], + //验证码配置(密码找回) + 'captcha_retrieve' => [ + //验证码的字符集 + 'codeSet' => '1234567890', + //设置验证码大小 + 'fontSize' => 12, + //设置图片的高度、宽度 + 'imageW' => 93, + 'imageH' => 30, + //验证码位数 + 'length' =>4, + //验证成功后重置 + 'reset' =>false, + 'useNoise'=>false + ], +]; diff --git a/application/database.php b/application/database.php new file mode 100644 index 0000000..0915683 --- /dev/null +++ b/application/database.php @@ -0,0 +1,58 @@ + +// +---------------------------------------------------------------------- + +return [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 +// 'hostname' => 'tmrdatebase.cubychyntk7p.ap-southeast-1.rds.amazonaws.com', + 'hostname' => 'localhost', + // 数据库名 + 'database' => 'tougao', + // 用户名 +// 'username' => 'tmradmin', + 'username' => 'root', + // 密码 +// 'password' => 'UhUKzkifVWkTnoJ63Qfs', + 'password' => 'root', + // 端口 + 'hostport' => '3306', + // 连接dsn + 'dsn' => '', + // 数据库连接参数 + 'params' => [], + // 数据库编码默认采用utf8 + 'charset' => 'utf8', + // 数据库表前缀 + 'prefix' => 't_', + // 数据库调试模式 + 'debug' => true, + // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) + 'deploy' => 0, + // 数据库读写是否分离 主从式有效 + 'rw_separate' => false, + // 读写分离后 主服务器数量 + 'master_num' => 1, + // 指定从服务器序号 + 'slave_no' => '', + // 自动读取主库数据 + 'read_master' => false, + // 是否严格检查字段是否存在 + 'fields_strict' => true, + // 数据集返回类型 + 'resultset_type' => 'array', + // 自动写入时间戳字段 + 'auto_timestamp' => false, + // 时间字段取出后的默认时间格式 + 'datetime_format' => 'Y-m-d H:i:s', + // 是否需要进行SQL性能分析 + 'sql_explain' => false, +]; diff --git a/application/demo/common.php b/application/demo/common.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/application/demo/common.php @@ -0,0 +1 @@ +*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }

:)

ThinkPHP V5
十年磨一剑 - 为API开发设计的高性能框架

[ V5.0 版本由 七牛云 独家赞助发布 ]
'; + } +} diff --git a/application/demo/controller/Test.php b/application/demo/controller/Test.php new file mode 100644 index 0000000..e00e8a3 --- /dev/null +++ b/application/demo/controller/Test.php @@ -0,0 +1,7 @@ + +// +---------------------------------------------------------------------- + +return [ +// 'connector' => 'Sync' + 'connector' => 'Redis', // Redis 驱动 + 'expire' => null, // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null + 'default' => 'mail', // 默认的队列名称 + 'host' => '127.0.0.1', // redis 主机ip + 'port' => 6379, // redis 端口 + 'password' => '', // redis 密码 + 'select' => 0, // 使用哪一个 db,默认为 db0 + 'timeout' => 0, // redis连接的超时时间 + 'persistent' => false, // 是否是长连接 +]; diff --git a/application/index/controller/Index.php b/application/index/controller/Index.php new file mode 100644 index 0000000..bee187a --- /dev/null +++ b/application/index/controller/Index.php @@ -0,0 +1,10 @@ +*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }

:)

ThinkPHP V5
十年磨一剑 - 为API开发设计的高性能框架

[ V5.0 版本由 七牛云 独家赞助发布 ]
'; + } +} diff --git a/application/route.php b/application/route.php new file mode 100644 index 0000000..591e2c3 --- /dev/null +++ b/application/route.php @@ -0,0 +1,21 @@ + +// +---------------------------------------------------------------------- + +return [ + '__pattern__' => [ + 'name' => '\w+', + ], + '[hello]' => [ + ':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']], + ':name' => ['index/hello', ['method' => 'post']], + ], + +]; diff --git a/application/tags.php b/application/tags.php new file mode 100644 index 0000000..4b18d10 --- /dev/null +++ b/application/tags.php @@ -0,0 +1,28 @@ + +// +---------------------------------------------------------------------- + +// 应用行为扩展定义文件 +return [ + // 应用初始化 + 'app_init' => [], + // 应用开始 + 'app_begin' => [], + // 模块初始化 + 'module_init' => [], + // 操作开始执行 + 'action_begin' => [], + // 视图内容过滤 + 'view_filter' => [], + // 日志写入 + 'log_write' => [], + // 应用结束 + 'app_end' => [], +]; diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..f7b34fc --- /dev/null +++ b/composer.json @@ -0,0 +1,36 @@ +{ + "name": "topthink/think", + "description": "the new thinkphp framework", + "type": "project", + "keywords": [ + "framework", + "thinkphp", + "ORM" + ], + "homepage": "http://thinkphp.cn/", + "license": "Apache-2.0", + "authors": [ + { + "name": "liu21st", + "email": "liu21st@gmail.com" + } + ], + "require": { + "php": ">=5.4.0", + "topthink/framework": "5.0.*", + "topthink/think-captcha": "1.*", + "phpmailer/phpmailer": "^6.1", + "tecnickcom/tcpdf": "^6.3" + }, + "autoload": { + "psr-4": { + "app\\": "application" + } + }, + "extra": { + "think-path": "thinkphp" + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/error/400.html b/error/400.html new file mode 100644 index 0000000..6cee43c --- /dev/null +++ b/error/400.html @@ -0,0 +1,66 @@ + + + + + 400 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 400 - Bad Request

+
+
错误说明:因为错误的语法导致服务器无法理解请求信息。
+
原因1:客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误。
+
解决办法:
+
链接中有特殊字符或者链接长度过长导致,请对应修改.
+
原因2:request header 或者 cookie 过大所引起
+
解决办法:
+
crtl+shift+delete 快捷键清除cookie.
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/403.html b/error/403.html new file mode 100644 index 0000000..77270de --- /dev/null +++ b/error/403.html @@ -0,0 +1,66 @@ + + + + + 403 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

403 - Forbidden 禁止访问: 访问被拒绝

+
+
错误说明:禁止访问,服务器拒绝访问
+
原因1:未找到默认的索引文件
+
解决办法:
+
IIS中【启用默认内容文档】选项中将默认打开文档修改为程序首页文件格式,如:index.html或者index.php
+
原因2:文件夹安全权限导致
+
解决办法:
+
程序文件-右击-属性-安全-Users-修改为读取和执行权限
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/404.html b/error/404.html new file mode 100644 index 0000000..fb3d77e --- /dev/null +++ b/error/404.html @@ -0,0 +1,75 @@ + + + + + 404 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

404 - Page Not Found 未找到

+
+
错误说明:请求的页面不存在
+
原因1:访问的文档权限不够
+
解决办法:
+
修改文件权限为755,windos系统修改目录权限为可写可读。
+
原因2:防火墙的原因
+
解决办法:
+
先关闭让防火墙通过WWW服务。
+
原因3:站点根目录无默认访问文件
+
解决办法:
+
在根目录中创建index.html或者创建index.php。
+
原因4:站点配置目录不正确
+
解决办法:
+
将网站应用程序复制到站点目录中,或者修改站点配置目录指定到应用程序目录中。
+
原因5:站点使用了伪静态
+
解决办法:
+
将伪静态规则删除,或者重新编写正确的伪静态规则,或关闭伪静态配置。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/500.html b/error/500.html new file mode 100644 index 0000000..bbf2cf1 --- /dev/null +++ b/error/500.html @@ -0,0 +1,78 @@ + + + + + 500 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 500 - Internal Server Error 服务器内部错误

+
+
错误说明:服务器内部错误,无法完成请求
+
原因1:伪静态规则不正确
+
解决办法:
+
修改伪静态。
+
原因2:php版本与网站程序不兼容
+
解决办法:
+
更换PHP版本。
+
原因3:网站无法连接至数据库
+
解决办法:
+
正确修改站点的数据库配置文件。
+
原因4:php禁用了某一函数,需要开启
+
解决办法:
+
开启相关禁用函数。
+
原因5:站点需要访问站外目录
+
解决办法:
+
关闭防跨站处理。
+
原因6:源码本身有BUG
+
解决办法:
+
修复源码bug。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/501.html b/error/501.html new file mode 100644 index 0000000..c879908 --- /dev/null +++ b/error/501.html @@ -0,0 +1,63 @@ + + + + + 501 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 501 - Not Implemented

+
+
错误说明:服务器没有相应的执行动作来完成当前请求。
+
原因1:Web 服务器不支持实现此请求所需的功能
+
解决办法:
+
可以用来HttpWebRequest指定一个UserAgent来试试的,有时候你可以换电脑来测试一下的。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/502.html b/error/502.html new file mode 100644 index 0000000..194f16f --- /dev/null +++ b/error/502.html @@ -0,0 +1,75 @@ + + + + + 502 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 502 - Bad Gateway 没有响应

+
+
错误说明:坏的网关,http向后端节点请求,没有响应
+
原因1:DNS 缓冲
+
解决办法:
+
在dos窗口运行 ipconfig /flushdns,该命令会刷新DNS缓冲。
+
原因2:浏览器代理
+
解决办法:
+
关掉代理。
+
原因3:dns 被劫持了,即使使用国外的dns,也会被劫持
+
解决办法:
+
去掉VPN服务器的DNS。切换另外的dns。在windows系统中,可以在本地网络连接的属性中,去掉默认的dns,选用国外的dns,比如google的或opendns。
+
原因4:php执行超时
+
解决办法:
+
修改/usr/local/php/etc/php.ini 将max_execution_time 改为300。
+
原因5:nginx等待时间超时
+
解决办法:
+
适当增加nginx.conf配置文件中FastCGI的timeout时间。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/503.html b/error/503.html new file mode 100644 index 0000000..f21f507 --- /dev/null +++ b/error/503.html @@ -0,0 +1,66 @@ + + + + + 503 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 503 - Service Unavailable 服务不可用

+
+
错误说明:服务当前不可用
+
原因1:服务不可用状态
+
解决办法:
+
服务器或许就是正在维护或者暂停了,你可以联系一下服务器空间商。
+
原因2:程序占用资源太多
+
解决办法:
+
通过设置应用程序池把账户改为NetworkService即可解决。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/504.html b/error/504.html new file mode 100644 index 0000000..62fa692 --- /dev/null +++ b/error/504.html @@ -0,0 +1,69 @@ + + + + + 504 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 504 - Gateway Timeout 网关超时

+
+
错误说明:网关超时,服务器响应时间,达到超出设定的范围
+
原因1:后端电脑之间 IP 通讯缓慢而产生
+
解决办法:
+
如果您的 Web 服务器由某一网站托管, 只有负责那个网站设置的人员才能解决这个问题。
+
原因2:由于nginx默认的fastcgi进程响应的缓冲区太小造成的错误
+
解决办法:
+
一般默认的fastcgi进程响应的缓冲区是8K,这时可以设置大一点,在nginx.conf里,加入:fastcgi_buffers 8 128k这表示设置fastcgi缓冲区为8块128k大小的空间。当然如果在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:send_timeout 60;经过这两个参数的调整,一般不会再提示“504 Gateway Time-out”错误,问题基本解决。
+
原因3:PHP环境的配置问题
+
解决办法:
+
更改php-fpm的几处配置: 把max_children由之前的10改为现在的30,这样就可以保证有充足的php-cgi进程可以被使用; 把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程 处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。 接着再更改nginx的几个配置项,减少FastCGI的请求次数,尽量维持buffers不变: fastcgi_buffers由 4 64k 改为 2 256k; fastcgi_buffer_size 由 64k 改为 128K; fastcgi_busy_buffers_size 由 128K 改为 256K; fastcgi_temp_file_write_size 由 128K 改为 256K。 重新加载php-fpm和nginx的配置,再次测试,如果没有出现“504 Gateway Time-out”错误,问题解决。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/505.html b/error/505.html new file mode 100644 index 0000000..5e153c0 --- /dev/null +++ b/error/505.html @@ -0,0 +1,66 @@ + + + + + 505 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 505 - HTTP Version Not Supported

+
+
错误说明:HTTP 版本不受支持。
+
原因1:您的 Web 服务器不支持,或拒绝支持客户端(如您的浏览器)在发送给服务器的 HTTP 请求数据流中指定的 HTTP 协议版本
+
解决办法:
+
升级您的 Web 服务器软件。
+
原因2:http请求格式的错误
+
解决办法:
+
对照一下自己的代码,从打印的信息中终于找到问题所在。可能在请求后面多加了一个空格。http协议真是很严格了。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/506.html b/error/506.html new file mode 100644 index 0000000..d8ed766 --- /dev/null +++ b/error/506.html @@ -0,0 +1,63 @@ + + + + + 506 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 506 - Variant Also Negotiates

+
+
错误说明:
+
原因1:服务器存在内部配置错误
+
解决办法:
+
被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/507.html b/error/507.html new file mode 100644 index 0000000..9e6da66 --- /dev/null +++ b/error/507.html @@ -0,0 +1,63 @@ + + + + + 507 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 507 - Insufficient Storage

+
+
错误说明:
+
原因1:服务器无法存储完成请求所必须的内容
+
解决办法:
+
这个状况被认为是临时的。WebDAV (RFC 4918)。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/509.html b/error/509.html new file mode 100644 index 0000000..12ee6bc --- /dev/null +++ b/error/509.html @@ -0,0 +1,63 @@ + + + + + 509 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 509 - Bandwidth Limit Exceeded

+
+
错误说明:
+
原因1:网站流量已经超出您所购买的方案限制即服务器达到带宽限制
+
解决办法:
+
1.升级方案 2.等到下个月后流量重新计算,网站即可正常浏览。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/510.html b/error/510.html new file mode 100644 index 0000000..436ad68 --- /dev/null +++ b/error/510.html @@ -0,0 +1,63 @@ + + + + + 510 错误 - phpstudy + + + + + + + + + + + + + + + +
+
+

HTTP 510 - Not Extended

+
+
错误说明:
+
原因1:获取资源所需要的策略并没有被满足
+
解决办法:
+
需要请求有额外的扩展内容,服务器才能处理请求。
+
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/error/index.html b/error/index.html new file mode 100644 index 0000000..52da1e0 --- /dev/null +++ b/error/index.html @@ -0,0 +1,67 @@ + + + + + 站点创建成功-phpstudy for windows + + + + + + + + + + + + + + + +
+
+

站点创建成功

+
+
目录说明:
+
1:网站目录:/phpstudy安装目录/www/站点域名/
+
2:错误提示页面:/phpstudy安装目录/www/站点域名/error/
+
3:你可以删除或者修改该目录下的所有文件
+
操作注意事项:
+
1:新建站点、数据库、FTP可在phpstudy面板操作,数据库可在环境中下载数据库管理软件等;
+
2:将网站程序放到站点目录时请使用复制,剪切可能造成程序文件权限不正确;
+ +
+
使用手册,视频教程,BUG反馈,官网地址: www.xp.cn
+ +
+
+ + \ No newline at end of file diff --git a/extend/.gitignore b/extend/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/extend/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..112ce7b --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,7 @@ +include.path=${php.global.include.path} +php.version=PHP_74 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..df9f039 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.php.project + + + tougao + + + diff --git a/nginx.htaccess b/nginx.htaccess new file mode 100644 index 0000000..e69de29 diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/3fd3e847f34b462c61c9f62d99e562a0.docx b/public/articlefile/20200717/3fd3e847f34b462c61c9f62d99e562a0.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/4425d1377f8158a4088346ad7cd84dae.docx b/public/articlefile/20200717/4425d1377f8158a4088346ad7cd84dae.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/52ab3f516d425e946b0a52b666dad709.docx b/public/articlefile/20200717/52ab3f516d425e946b0a52b666dad709.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/8424d7cf26f52faa49868534a9bd51a8.docx b/public/articlefile/20200717/8424d7cf26f52faa49868534a9bd51a8.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/c0fcd0e3cca695e2e826ead3ecc705e3.docx b/public/articlefile/20200717/c0fcd0e3cca695e2e826ead3ecc705e3.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/cf91139edfff2348bcaf1e0af322ad3f.docx b/public/articlefile/20200717/cf91139edfff2348bcaf1e0af322ad3f.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/dc950e6ef829976fc7ae122cdd0ede36.docx b/public/articlefile/20200717/dc950e6ef829976fc7ae122cdd0ede36.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/ebc37ebe6ca1121df23d738f42f94a85.docx b/public/articlefile/20200717/ebc37ebe6ca1121df23d738f42f94a85.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200717/f7363e147b8348906adf17577049c031.docx b/public/articlefile/20200717/f7363e147b8348906adf17577049c031.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200720/13a6b559a7c8fe71abd4c773ea9008d5.docx b/public/articlefile/20200720/13a6b559a7c8fe71abd4c773ea9008d5.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200720/41c7694c6dfdabf834b9fb3c3aea3bf1.docx b/public/articlefile/20200720/41c7694c6dfdabf834b9fb3c3aea3bf1.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/articlefile/20200720/a5199f88c4108028b497a3a3a478b379.doc b/public/articlefile/20200720/a5199f88c4108028b497a3a3a478b379.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/articlefile/20200720/a5199f88c4108028b497a3a3a478b379.doc differ diff --git a/public/articlefile/20200811/296dfe7245ba48e8b84b3c9836601e9d.doc b/public/articlefile/20200811/296dfe7245ba48e8b84b3c9836601e9d.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/articlefile/20200811/296dfe7245ba48e8b84b3c9836601e9d.doc differ diff --git a/public/articlefile/20200825/89cee513e9647f95e9330d3cf8cad61b.docx b/public/articlefile/20200825/89cee513e9647f95e9330d3cf8cad61b.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/articlefile/20200825/89cee513e9647f95e9330d3cf8cad61b.docx differ diff --git a/public/articlefile/20201015/433b5caa02d291cf78ff84e0fd8d149c.doc b/public/articlefile/20201015/433b5caa02d291cf78ff84e0fd8d149c.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/articlefile/20201015/433b5caa02d291cf78ff84e0fd8d149c.doc differ diff --git a/public/articlefile/20201015/eeff1bcfbce881f0e0bac20bb1ffca76.docx b/public/articlefile/20201015/eeff1bcfbce881f0e0bac20bb1ffca76.docx new file mode 100644 index 0000000..0fdb73a Binary files /dev/null and b/public/articlefile/20201015/eeff1bcfbce881f0e0bac20bb1ffca76.docx differ diff --git a/public/articlezip/20200717/7b9c8b3364cb824178315917a3de1d77.zip b/public/articlezip/20200717/7b9c8b3364cb824178315917a3de1d77.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/articlezip/20200717/7b9c8b3364cb824178315917a3de1d77.zip differ diff --git a/public/articlezip/20200720/93422705d0e89a581c3dc7db7bb269ae.zip b/public/articlezip/20200720/93422705d0e89a581c3dc7db7bb269ae.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/articlezip/20200720/93422705d0e89a581c3dc7db7bb269ae.zip differ diff --git a/public/articlezip/20200720/c8cbb9e0a88ffbc1b5945f5a42e073ce.rar b/public/articlezip/20200720/c8cbb9e0a88ffbc1b5945f5a42e073ce.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/articlezip/20200720/c8cbb9e0a88ffbc1b5945f5a42e073ce.rar differ diff --git a/public/articlezip/20200811/f9060e50b59ad92321560acd9f431113.pdf b/public/articlezip/20200811/f9060e50b59ad92321560acd9f431113.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/articlezip/20200811/f9060e50b59ad92321560acd9f431113.pdf differ diff --git a/public/articlezip/20200825/b7a66190890e6ce669af6adfdd02a84a.rar b/public/articlezip/20200825/b7a66190890e6ce669af6adfdd02a84a.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/articlezip/20200825/b7a66190890e6ce669af6adfdd02a84a.rar differ diff --git a/public/articlezip/20200825/d7d8fee90678e28f1f0dcf0ba0200876.rar b/public/articlezip/20200825/d7d8fee90678e28f1f0dcf0ba0200876.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/articlezip/20200825/d7d8fee90678e28f1f0dcf0ba0200876.rar differ diff --git a/public/coverLetter/20200629/0a342f2d1d1ed50a1c52b262c3fb6de8.doc b/public/coverLetter/20200629/0a342f2d1d1ed50a1c52b262c3fb6de8.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/0a342f2d1d1ed50a1c52b262c3fb6de8.doc differ diff --git a/public/coverLetter/20200629/0f321e17140a4cea39c42cda4d54f694.doc b/public/coverLetter/20200629/0f321e17140a4cea39c42cda4d54f694.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/0f321e17140a4cea39c42cda4d54f694.doc differ diff --git a/public/coverLetter/20200629/63d9c5c4dc8506aeff96111636eeca9b.doc b/public/coverLetter/20200629/63d9c5c4dc8506aeff96111636eeca9b.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/63d9c5c4dc8506aeff96111636eeca9b.doc differ diff --git a/public/coverLetter/20200629/686f4d6a7fbc50347353b5a69ffe9365.doc b/public/coverLetter/20200629/686f4d6a7fbc50347353b5a69ffe9365.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/686f4d6a7fbc50347353b5a69ffe9365.doc differ diff --git a/public/coverLetter/20200629/76afeb6bbc89976b78aeaa4c40c02120.doc b/public/coverLetter/20200629/76afeb6bbc89976b78aeaa4c40c02120.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/76afeb6bbc89976b78aeaa4c40c02120.doc differ diff --git a/public/coverLetter/20200629/954300d1db646abc992906ed52da104b.doc b/public/coverLetter/20200629/954300d1db646abc992906ed52da104b.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/954300d1db646abc992906ed52da104b.doc differ diff --git a/public/coverLetter/20200629/fb9c691dc69c82d021c76d9d671e1825.doc b/public/coverLetter/20200629/fb9c691dc69c82d021c76d9d671e1825.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200629/fb9c691dc69c82d021c76d9d671e1825.doc differ diff --git a/public/coverLetter/20200630/c56be537f40e628490049b56ef324688.docx b/public/coverLetter/20200630/c56be537f40e628490049b56ef324688.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200701/0524219cc49fb1b1cfa4d70272ae50e0.vue b/public/coverLetter/20200701/0524219cc49fb1b1cfa4d70272ae50e0.vue new file mode 100644 index 0000000..5190e5e --- /dev/null +++ b/public/coverLetter/20200701/0524219cc49fb1b1cfa4d70272ae50e0.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/public/coverLetter/20200701/0f0c582719021638482c1b0632c779c3.jpg b/public/coverLetter/20200701/0f0c582719021638482c1b0632c779c3.jpg new file mode 100644 index 0000000..1ffd98b Binary files /dev/null and b/public/coverLetter/20200701/0f0c582719021638482c1b0632c779c3.jpg differ diff --git a/public/coverLetter/20200701/1c6047f79f47512c8963b3ded24c9713.doc b/public/coverLetter/20200701/1c6047f79f47512c8963b3ded24c9713.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200701/1c6047f79f47512c8963b3ded24c9713.doc differ diff --git a/public/coverLetter/20200701/25053df7afe24011324908095216ba69.docx b/public/coverLetter/20200701/25053df7afe24011324908095216ba69.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200701/59c16c0bea673dedcede70b8edb7e79c.docx b/public/coverLetter/20200701/59c16c0bea673dedcede70b8edb7e79c.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200701/658dcb02c40e65d3af4e4a4c843b42e3.docx b/public/coverLetter/20200701/658dcb02c40e65d3af4e4a4c843b42e3.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200701/699b98f5cbdabef4d9a2517291ff8f6a.doc b/public/coverLetter/20200701/699b98f5cbdabef4d9a2517291ff8f6a.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200701/699b98f5cbdabef4d9a2517291ff8f6a.doc differ diff --git a/public/coverLetter/20200701/b99b97a5c354b37874e35665879030aa.doc b/public/coverLetter/20200701/b99b97a5c354b37874e35665879030aa.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200701/b99b97a5c354b37874e35665879030aa.doc differ diff --git a/public/coverLetter/20200701/c0edf8a2b0d1bd6a306bcdad59cd7050.docx b/public/coverLetter/20200701/c0edf8a2b0d1bd6a306bcdad59cd7050.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200701/c68af025d0d1f34b1b6b515cb9dd7601.doc b/public/coverLetter/20200701/c68af025d0d1f34b1b6b515cb9dd7601.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200701/c68af025d0d1f34b1b6b515cb9dd7601.doc differ diff --git a/public/coverLetter/20200701/c98c08ea9cc1c56124b0adf418501a86.docx b/public/coverLetter/20200701/c98c08ea9cc1c56124b0adf418501a86.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200702/6311a6476bc0fc8c9d86ca7d64f48966.doc b/public/coverLetter/20200702/6311a6476bc0fc8c9d86ca7d64f48966.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200702/6311a6476bc0fc8c9d86ca7d64f48966.doc differ diff --git a/public/coverLetter/20200702/649d04916e5b0918fe5b79bef3c56665.doc b/public/coverLetter/20200702/649d04916e5b0918fe5b79bef3c56665.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200702/649d04916e5b0918fe5b79bef3c56665.doc differ diff --git a/public/coverLetter/20200702/940953ad1069cdf70186a53c791c14c2.doc b/public/coverLetter/20200702/940953ad1069cdf70186a53c791c14c2.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200702/940953ad1069cdf70186a53c791c14c2.doc differ diff --git a/public/coverLetter/20200702/d828867642137a1bcfbeae72ebe7c07f.docx b/public/coverLetter/20200702/d828867642137a1bcfbeae72ebe7c07f.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200703/41df682d8344167433f786ef42ac023d.docx b/public/coverLetter/20200703/41df682d8344167433f786ef42ac023d.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200703/632873b3d643b808ad696589116c0560.doc b/public/coverLetter/20200703/632873b3d643b808ad696589116c0560.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200703/632873b3d643b808ad696589116c0560.doc differ diff --git a/public/coverLetter/20200703/ae54939294cb4ccef207e63864e82d10.docx b/public/coverLetter/20200703/ae54939294cb4ccef207e63864e82d10.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200703/ded801726929dff55a548cd3fa1e004c.doc b/public/coverLetter/20200703/ded801726929dff55a548cd3fa1e004c.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200703/ded801726929dff55a548cd3fa1e004c.doc differ diff --git a/public/coverLetter/20200707/135423c0dee3fc47b19a7fbdf8a4b04e.doc b/public/coverLetter/20200707/135423c0dee3fc47b19a7fbdf8a4b04e.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200707/135423c0dee3fc47b19a7fbdf8a4b04e.doc differ diff --git a/public/coverLetter/20200713/02c619a5c8c423123d2a70e8771bb60e.docx b/public/coverLetter/20200713/02c619a5c8c423123d2a70e8771bb60e.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200715/74cbf0c8d36d64870fa014ad6a1dc450.docx b/public/coverLetter/20200715/74cbf0c8d36d64870fa014ad6a1dc450.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200715/95306f3d19af07c02b0d098d7684e77e.doc b/public/coverLetter/20200715/95306f3d19af07c02b0d098d7684e77e.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200715/95306f3d19af07c02b0d098d7684e77e.doc differ diff --git a/public/coverLetter/20200722/1aa76e4ba305e80321f7db31e5863431.docx b/public/coverLetter/20200722/1aa76e4ba305e80321f7db31e5863431.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200722/909c8054fb38f6de1217e7e7041c9d04.docx b/public/coverLetter/20200722/909c8054fb38f6de1217e7e7041c9d04.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200722/c1f2da678fc8486d599be320c41b08c0.docx b/public/coverLetter/20200722/c1f2da678fc8486d599be320c41b08c0.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200727/433f3608b3181c6a299b9267f3971726.docx b/public/coverLetter/20200727/433f3608b3181c6a299b9267f3971726.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200727/75b018400d049e25ab3ff0f97e352b34.docx b/public/coverLetter/20200727/75b018400d049e25ab3ff0f97e352b34.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc b/public/coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc differ diff --git a/public/coverLetter/20200727/8b8a1a552dccb49dccfe00eed33d1e4c.docx b/public/coverLetter/20200727/8b8a1a552dccb49dccfe00eed33d1e4c.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200730/2e48f46586889082ad2f245b9dc26fad.docx b/public/coverLetter/20200730/2e48f46586889082ad2f245b9dc26fad.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200805/14aa133c976feddb7bd2f658d7a7850b.pdf b/public/coverLetter/20200805/14aa133c976feddb7bd2f658d7a7850b.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/coverLetter/20200805/14aa133c976feddb7bd2f658d7a7850b.pdf differ diff --git a/public/coverLetter/20200805/3c14f07a74e1e34cd61d236fbdb38e2e.doc b/public/coverLetter/20200805/3c14f07a74e1e34cd61d236fbdb38e2e.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200805/3c14f07a74e1e34cd61d236fbdb38e2e.doc differ diff --git a/public/coverLetter/20200805/4df0afbd4af3823ce96b884424981028.doc b/public/coverLetter/20200805/4df0afbd4af3823ce96b884424981028.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/coverLetter/20200805/4df0afbd4af3823ce96b884424981028.doc differ diff --git a/public/coverLetter/20200805/840b7469770124796bc761792f2c63ca.pdf b/public/coverLetter/20200805/840b7469770124796bc761792f2c63ca.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/coverLetter/20200805/840b7469770124796bc761792f2c63ca.pdf differ diff --git a/public/coverLetter/20200806/4e21a574d6a5b2f3b3caf3368cc8a9c3.pdf b/public/coverLetter/20200806/4e21a574d6a5b2f3b3caf3368cc8a9c3.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/coverLetter/20200806/4e21a574d6a5b2f3b3caf3368cc8a9c3.pdf differ diff --git a/public/coverLetter/20200806/d545fcadc0b8f7f03b7f4bf146482ef9.docx b/public/coverLetter/20200806/d545fcadc0b8f7f03b7f4bf146482ef9.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/coverLetter/20200807/3dfe72aaad634f7d14bbca99b1688425.docx b/public/coverLetter/20200807/3dfe72aaad634f7d14bbca99b1688425.docx new file mode 100644 index 0000000..74fe8a2 Binary files /dev/null and b/public/coverLetter/20200807/3dfe72aaad634f7d14bbca99b1688425.docx differ diff --git a/public/coverLetter/20200811/679e18bdf8e5253f92f74749cd44537d.pdf b/public/coverLetter/20200811/679e18bdf8e5253f92f74749cd44537d.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/coverLetter/20200811/679e18bdf8e5253f92f74749cd44537d.pdf differ diff --git a/public/coverLetter/20200811/b5b43ef02ced074762d143c001663d4c.doc b/public/coverLetter/20200811/b5b43ef02ced074762d143c001663d4c.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/coverLetter/20200811/b5b43ef02ced074762d143c001663d4c.doc differ diff --git a/public/coverLetter/20200811/be8624a03985f02aa4ba61beaefbfb59.docx b/public/coverLetter/20200811/be8624a03985f02aa4ba61beaefbfb59.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/coverLetter/20200811/be8624a03985f02aa4ba61beaefbfb59.docx differ diff --git a/public/coverLetter/20200811/da89b3f51c63964e5c0db28a157667bd.docx b/public/coverLetter/20200811/da89b3f51c63964e5c0db28a157667bd.docx new file mode 100644 index 0000000..8393569 Binary files /dev/null and b/public/coverLetter/20200811/da89b3f51c63964e5c0db28a157667bd.docx differ diff --git a/public/coverLetter/20200812/3855a7431fe02082e3ed1a2ec256f522.docx b/public/coverLetter/20200812/3855a7431fe02082e3ed1a2ec256f522.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/coverLetter/20200812/3855a7431fe02082e3ed1a2ec256f522.docx differ diff --git a/public/coverLetter/20200921/9c954fd954631b1d3ec91c88d8e6eff6.docx b/public/coverLetter/20200921/9c954fd954631b1d3ec91c88d8e6eff6.docx new file mode 100644 index 0000000..41ba529 Binary files /dev/null and b/public/coverLetter/20200921/9c954fd954631b1d3ec91c88d8e6eff6.docx differ diff --git a/public/coverLetter/20200921/d875bcfb13ea51b0ada6f2721036a38f.docx b/public/coverLetter/20200921/d875bcfb13ea51b0ada6f2721036a38f.docx new file mode 100644 index 0000000..41ba529 Binary files /dev/null and b/public/coverLetter/20200921/d875bcfb13ea51b0ada6f2721036a38f.docx differ diff --git a/public/coverLetter/20200922/f6c5395ee0c3bb38aeb5c58d75896a2a.docx b/public/coverLetter/20200922/f6c5395ee0c3bb38aeb5c58d75896a2a.docx new file mode 100644 index 0000000..41ba529 Binary files /dev/null and b/public/coverLetter/20200922/f6c5395ee0c3bb38aeb5c58d75896a2a.docx differ diff --git a/public/coverLetter/20201111/96b07de4f2d4ccab5c94800e6ef21afb.doc b/public/coverLetter/20201111/96b07de4f2d4ccab5c94800e6ef21afb.doc new file mode 100644 index 0000000..56d2f93 Binary files /dev/null and b/public/coverLetter/20201111/96b07de4f2d4ccab5c94800e6ef21afb.doc differ diff --git a/public/coverLetter/20201111/cbc8ed9924c75728043706f14a662d1c.docx b/public/coverLetter/20201111/cbc8ed9924c75728043706f14a662d1c.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e71815a Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..2fef1a7 --- /dev/null +++ b/public/index.php @@ -0,0 +1,23 @@ + +// +---------------------------------------------------------------------- + +// [ 应用入口文件 ] + +// 定义应用目录 +define('APP_PATH', __DIR__ . '/../application/'); +// 加载框架引导文件 +require __DIR__ . '/../thinkphp/start.php'; + +//跨越解决 +header("Access-Control-Allow-Origin:*"); +header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE"); +header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding"); + diff --git a/public/manuscirpt/20200629/0113cdcdd21bae88260f55f40d14026f.docx b/public/manuscirpt/20200629/0113cdcdd21bae88260f55f40d14026f.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200629/0dc7738cb901153cf2dbb93e306ca170.docx b/public/manuscirpt/20200629/0dc7738cb901153cf2dbb93e306ca170.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200629/21270d2747d20842453ea54030f9eb78.docx b/public/manuscirpt/20200629/21270d2747d20842453ea54030f9eb78.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200629/402dbfa20e013c712c4650401142c73d.docx b/public/manuscirpt/20200629/402dbfa20e013c712c4650401142c73d.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200629/6e27a769eb6cd6a67c68650da8494b0e.docx b/public/manuscirpt/20200629/6e27a769eb6cd6a67c68650da8494b0e.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200629/a0ddab6f7959d933e153abae5d2eaeb2.docx b/public/manuscirpt/20200629/a0ddab6f7959d933e153abae5d2eaeb2.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200629/a768ef3cf506bed907572db24958a052.docx b/public/manuscirpt/20200629/a768ef3cf506bed907572db24958a052.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200701/30ddc382c7348f7369d40ca6aaa8ed1d.docx b/public/manuscirpt/20200701/30ddc382c7348f7369d40ca6aaa8ed1d.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200701/9caae9b4c4f8d80a48aa35b8ea2b3ed6.docx b/public/manuscirpt/20200701/9caae9b4c4f8d80a48aa35b8ea2b3ed6.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200702/0a8bc6e8edf85ffab210f762fdc4c7a0.docx b/public/manuscirpt/20200702/0a8bc6e8edf85ffab210f762fdc4c7a0.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200702/6ffa9064a76243eebc7d136a5c010c2d.doc b/public/manuscirpt/20200702/6ffa9064a76243eebc7d136a5c010c2d.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/manuscirpt/20200702/6ffa9064a76243eebc7d136a5c010c2d.doc differ diff --git a/public/manuscirpt/20200702/aa9f8f537bee59aaa5c1c3a87dfd72f9.docx b/public/manuscirpt/20200702/aa9f8f537bee59aaa5c1c3a87dfd72f9.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200703/00c6caa227bc066938e4a901691d734a.pdf b/public/manuscirpt/20200703/00c6caa227bc066938e4a901691d734a.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200703/00c6caa227bc066938e4a901691d734a.pdf differ diff --git a/public/manuscirpt/20200703/75120f26831de8385e6af51d1e415d07.docx b/public/manuscirpt/20200703/75120f26831de8385e6af51d1e415d07.docx new file mode 100644 index 0000000..e69de29 diff --git a/public/manuscirpt/20200703/9aadfb9640588f234c056b81314da3ee.pdf b/public/manuscirpt/20200703/9aadfb9640588f234c056b81314da3ee.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200703/9aadfb9640588f234c056b81314da3ee.pdf differ diff --git a/public/manuscirpt/20200713/8bc556e764a46e94481f607e621914b2.pdf b/public/manuscirpt/20200713/8bc556e764a46e94481f607e621914b2.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200713/8bc556e764a46e94481f607e621914b2.pdf differ diff --git a/public/manuscirpt/20200715/7817a882d2a0e09ed58db7f407798808.pdf b/public/manuscirpt/20200715/7817a882d2a0e09ed58db7f407798808.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200715/7817a882d2a0e09ed58db7f407798808.pdf differ diff --git a/public/manuscirpt/20200722/8eada06a7a4e0a2225ed704e1a7d6caa.doc b/public/manuscirpt/20200722/8eada06a7a4e0a2225ed704e1a7d6caa.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/manuscirpt/20200722/8eada06a7a4e0a2225ed704e1a7d6caa.doc differ diff --git a/public/manuscirpt/20200722/a2425cd9b07e5508d1a31268a5c99058.doc b/public/manuscirpt/20200722/a2425cd9b07e5508d1a31268a5c99058.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/manuscirpt/20200722/a2425cd9b07e5508d1a31268a5c99058.doc differ diff --git a/public/manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf b/public/manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf differ diff --git a/public/manuscirpt/20200727/549a74ff02bc5a782727c89dd35d22c0.pdf b/public/manuscirpt/20200727/549a74ff02bc5a782727c89dd35d22c0.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200727/549a74ff02bc5a782727c89dd35d22c0.pdf differ diff --git a/public/manuscirpt/20200727/cd67d8e8f944b5f1589cceb8e1aa967c.pdf b/public/manuscirpt/20200727/cd67d8e8f944b5f1589cceb8e1aa967c.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200727/cd67d8e8f944b5f1589cceb8e1aa967c.pdf differ diff --git a/public/manuscirpt/20200727/f72f04fb3ee703ec38bf3ab64f715c86.doc b/public/manuscirpt/20200727/f72f04fb3ee703ec38bf3ab64f715c86.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/manuscirpt/20200727/f72f04fb3ee703ec38bf3ab64f715c86.doc differ diff --git a/public/manuscirpt/20200730/e6596328a7211e07265b2e8b0268dee4.pdf b/public/manuscirpt/20200730/e6596328a7211e07265b2e8b0268dee4.pdf new file mode 100644 index 0000000..f513570 Binary files /dev/null and b/public/manuscirpt/20200730/e6596328a7211e07265b2e8b0268dee4.pdf differ diff --git a/public/manuscirpt/20200805/15b160dd80de86d626e67a8a00362032.docx b/public/manuscirpt/20200805/15b160dd80de86d626e67a8a00362032.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200805/15b160dd80de86d626e67a8a00362032.docx differ diff --git a/public/manuscirpt/20200805/1f6af0fd134275c606dcff789f045685.docx b/public/manuscirpt/20200805/1f6af0fd134275c606dcff789f045685.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200805/1f6af0fd134275c606dcff789f045685.docx differ diff --git a/public/manuscirpt/20200805/4f8c5afe727fcc6765c4c0b3a8972d8c.doc b/public/manuscirpt/20200805/4f8c5afe727fcc6765c4c0b3a8972d8c.doc new file mode 100644 index 0000000..6fcb4ca Binary files /dev/null and b/public/manuscirpt/20200805/4f8c5afe727fcc6765c4c0b3a8972d8c.doc differ diff --git a/public/manuscirpt/20200805/f4d2ab730c7470eecb8ca12b90bfc948.docx b/public/manuscirpt/20200805/f4d2ab730c7470eecb8ca12b90bfc948.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200805/f4d2ab730c7470eecb8ca12b90bfc948.docx differ diff --git a/public/manuscirpt/20200806/61a81d2fed9da3f517019b3b0bd6ef0e.rar b/public/manuscirpt/20200806/61a81d2fed9da3f517019b3b0bd6ef0e.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200806/61a81d2fed9da3f517019b3b0bd6ef0e.rar differ diff --git a/public/manuscirpt/20200807/7e5ca75dd60a0e6ee8a8d81ba6307139.zip b/public/manuscirpt/20200807/7e5ca75dd60a0e6ee8a8d81ba6307139.zip new file mode 100644 index 0000000..31c21ce Binary files /dev/null and b/public/manuscirpt/20200807/7e5ca75dd60a0e6ee8a8d81ba6307139.zip differ diff --git a/public/manuscirpt/20200810/638ecab575e78ce01e0282957f17f6de.zip b/public/manuscirpt/20200810/638ecab575e78ce01e0282957f17f6de.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/manuscirpt/20200810/638ecab575e78ce01e0282957f17f6de.zip differ diff --git a/public/manuscirpt/20200810/baf2b0aa746eab6257d2d64f2f652d41.zip b/public/manuscirpt/20200810/baf2b0aa746eab6257d2d64f2f652d41.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/manuscirpt/20200810/baf2b0aa746eab6257d2d64f2f652d41.zip differ diff --git a/public/manuscirpt/20200810/ddf92577865212cecaa338baa6663894.zip b/public/manuscirpt/20200810/ddf92577865212cecaa338baa6663894.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/manuscirpt/20200810/ddf92577865212cecaa338baa6663894.zip differ diff --git a/public/manuscirpt/20200810/ea6418c47a35e9510b48cd22bea3af99.rar b/public/manuscirpt/20200810/ea6418c47a35e9510b48cd22bea3af99.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200810/ea6418c47a35e9510b48cd22bea3af99.rar differ diff --git a/public/manuscirpt/20200811/0d19cfcf1e9ca377221d8a8ae74b3f21.zip b/public/manuscirpt/20200811/0d19cfcf1e9ca377221d8a8ae74b3f21.zip new file mode 100644 index 0000000..3fe80cc Binary files /dev/null and b/public/manuscirpt/20200811/0d19cfcf1e9ca377221d8a8ae74b3f21.zip differ diff --git a/public/manuscirpt/20200811/15ef2831e42d02279160f01be3a97a79.doc b/public/manuscirpt/20200811/15ef2831e42d02279160f01be3a97a79.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200811/15ef2831e42d02279160f01be3a97a79.doc differ diff --git a/public/manuscirpt/20200811/34f447178a28694da572437dd7c4c6f2.doc b/public/manuscirpt/20200811/34f447178a28694da572437dd7c4c6f2.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200811/34f447178a28694da572437dd7c4c6f2.doc differ diff --git a/public/manuscirpt/20200811/494ba1b345fe0bdc237aef46bea02a1e.doc b/public/manuscirpt/20200811/494ba1b345fe0bdc237aef46bea02a1e.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200811/494ba1b345fe0bdc237aef46bea02a1e.doc differ diff --git a/public/manuscirpt/20200811/888936384f65adc5de69769694042ef0.doc b/public/manuscirpt/20200811/888936384f65adc5de69769694042ef0.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200811/888936384f65adc5de69769694042ef0.doc differ diff --git a/public/manuscirpt/20200811/a61241bc9bac5d8e50a2a7d3a365764c.docx b/public/manuscirpt/20200811/a61241bc9bac5d8e50a2a7d3a365764c.docx new file mode 100644 index 0000000..8393569 Binary files /dev/null and b/public/manuscirpt/20200811/a61241bc9bac5d8e50a2a7d3a365764c.docx differ diff --git a/public/manuscirpt/20200811/a69cfe1b34ffc346db73e3f34a7af38c.doc b/public/manuscirpt/20200811/a69cfe1b34ffc346db73e3f34a7af38c.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200811/a69cfe1b34ffc346db73e3f34a7af38c.doc differ diff --git a/public/manuscirpt/20200811/aed389d9cffe81dd29bb086c4d1825a0.docx b/public/manuscirpt/20200811/aed389d9cffe81dd29bb086c4d1825a0.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200811/aed389d9cffe81dd29bb086c4d1825a0.docx differ diff --git a/public/manuscirpt/20200811/c3bb3ce97e2e52df959d4401ca456217.docx b/public/manuscirpt/20200811/c3bb3ce97e2e52df959d4401ca456217.docx new file mode 100644 index 0000000..792ee4c Binary files /dev/null and b/public/manuscirpt/20200811/c3bb3ce97e2e52df959d4401ca456217.docx differ diff --git a/public/manuscirpt/20200811/f300979171618f3d514b201c8375079f.doc b/public/manuscirpt/20200811/f300979171618f3d514b201c8375079f.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200811/f300979171618f3d514b201c8375079f.doc differ diff --git a/public/manuscirpt/20200812/676e08c76ab91b07b31f5539293a90e5.docx b/public/manuscirpt/20200812/676e08c76ab91b07b31f5539293a90e5.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200812/676e08c76ab91b07b31f5539293a90e5.docx differ diff --git a/public/manuscirpt/20200812/7daacb2916904daeb543b9982f00c17a.docx b/public/manuscirpt/20200812/7daacb2916904daeb543b9982f00c17a.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200812/7daacb2916904daeb543b9982f00c17a.docx differ diff --git a/public/manuscirpt/20200812/813630aacdad63d2fc2a1310b30aadbb.docx b/public/manuscirpt/20200812/813630aacdad63d2fc2a1310b30aadbb.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200812/813630aacdad63d2fc2a1310b30aadbb.docx differ diff --git a/public/manuscirpt/20200812/8f1d427cdb56cc8090be2a9a1c5f590f.doc b/public/manuscirpt/20200812/8f1d427cdb56cc8090be2a9a1c5f590f.doc new file mode 100644 index 0000000..89c5713 Binary files /dev/null and b/public/manuscirpt/20200812/8f1d427cdb56cc8090be2a9a1c5f590f.doc differ diff --git a/public/manuscirpt/20200812/9be89f4857e4425bae35dfbc691f0609.docx b/public/manuscirpt/20200812/9be89f4857e4425bae35dfbc691f0609.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200812/9be89f4857e4425bae35dfbc691f0609.docx differ diff --git a/public/manuscirpt/20200812/ac8211443f4782b93945fad52d5dad51.docx b/public/manuscirpt/20200812/ac8211443f4782b93945fad52d5dad51.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200812/ac8211443f4782b93945fad52d5dad51.docx differ diff --git a/public/manuscirpt/20200812/b059b56608edd9730456c4474001e32d.docx b/public/manuscirpt/20200812/b059b56608edd9730456c4474001e32d.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200812/b059b56608edd9730456c4474001e32d.docx differ diff --git a/public/manuscirpt/20200812/cffc5f8a80100c359f2b2be39f001dc7.docx b/public/manuscirpt/20200812/cffc5f8a80100c359f2b2be39f001dc7.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200812/cffc5f8a80100c359f2b2be39f001dc7.docx differ diff --git a/public/manuscirpt/20200812/f3bda3cd93098533c2bb37388e6fd468.docx b/public/manuscirpt/20200812/f3bda3cd93098533c2bb37388e6fd468.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200812/f3bda3cd93098533c2bb37388e6fd468.docx differ diff --git a/public/manuscirpt/20200812/fbc1c8f1b90ed9f36ebd66fe2cf2f08a.docx b/public/manuscirpt/20200812/fbc1c8f1b90ed9f36ebd66fe2cf2f08a.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200812/fbc1c8f1b90ed9f36ebd66fe2cf2f08a.docx differ diff --git a/public/manuscirpt/20200813/87a9b3500d6f6f22d64cb9e5297191fd.docx b/public/manuscirpt/20200813/87a9b3500d6f6f22d64cb9e5297191fd.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200813/87a9b3500d6f6f22d64cb9e5297191fd.docx differ diff --git a/public/manuscirpt/20200813/eebebfdc12bd54baf5d86b2d573140c2.rar b/public/manuscirpt/20200813/eebebfdc12bd54baf5d86b2d573140c2.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200813/eebebfdc12bd54baf5d86b2d573140c2.rar differ diff --git a/public/manuscirpt/20200814/78781646d1fb7a67a5eb63511ebec0a6.rar b/public/manuscirpt/20200814/78781646d1fb7a67a5eb63511ebec0a6.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200814/78781646d1fb7a67a5eb63511ebec0a6.rar differ diff --git a/public/manuscirpt/20200814/b2b8af3771dbc25c631d39437e6bc44b.rar b/public/manuscirpt/20200814/b2b8af3771dbc25c631d39437e6bc44b.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200814/b2b8af3771dbc25c631d39437e6bc44b.rar differ diff --git a/public/manuscirpt/20200819/3c4db4816c110fc50042047ee2134e38.rar b/public/manuscirpt/20200819/3c4db4816c110fc50042047ee2134e38.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200819/3c4db4816c110fc50042047ee2134e38.rar differ diff --git a/public/manuscirpt/20200824/0ba3fb93aeeea66d085958433e2c4d16.rar b/public/manuscirpt/20200824/0ba3fb93aeeea66d085958433e2c4d16.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200824/0ba3fb93aeeea66d085958433e2c4d16.rar differ diff --git a/public/manuscirpt/20200824/82430f33813920124ef9336b41d26e0a.rar b/public/manuscirpt/20200824/82430f33813920124ef9336b41d26e0a.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200824/82430f33813920124ef9336b41d26e0a.rar differ diff --git a/public/manuscirpt/20200824/a039a81d26015f68ebd2747d8f2340e8.rar b/public/manuscirpt/20200824/a039a81d26015f68ebd2747d8f2340e8.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200824/a039a81d26015f68ebd2747d8f2340e8.rar differ diff --git a/public/manuscirpt/20200828/4a1eec6fce61782381670086f210f94a.rar b/public/manuscirpt/20200828/4a1eec6fce61782381670086f210f94a.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200828/4a1eec6fce61782381670086f210f94a.rar differ diff --git a/public/manuscirpt/20200828/695c6cd95cbda1c63e92ae2ca340a096.rar b/public/manuscirpt/20200828/695c6cd95cbda1c63e92ae2ca340a096.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200828/695c6cd95cbda1c63e92ae2ca340a096.rar differ diff --git a/public/manuscirpt/20200831/15ece1d0e26f3a837da1a2433bf634ee.rar b/public/manuscirpt/20200831/15ece1d0e26f3a837da1a2433bf634ee.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200831/15ece1d0e26f3a837da1a2433bf634ee.rar differ diff --git a/public/manuscirpt/20200902/03313420026c6ac5dbbdeaa925022c5e.zip b/public/manuscirpt/20200902/03313420026c6ac5dbbdeaa925022c5e.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/manuscirpt/20200902/03313420026c6ac5dbbdeaa925022c5e.zip differ diff --git a/public/manuscirpt/20200902/2702d33cfc21b08bba7050efbbac78c0.rar b/public/manuscirpt/20200902/2702d33cfc21b08bba7050efbbac78c0.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200902/2702d33cfc21b08bba7050efbbac78c0.rar differ diff --git a/public/manuscirpt/20200904/70cb75cc15b1bdc96c9958209ea03bb5.zip b/public/manuscirpt/20200904/70cb75cc15b1bdc96c9958209ea03bb5.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/manuscirpt/20200904/70cb75cc15b1bdc96c9958209ea03bb5.zip differ diff --git a/public/manuscirpt/20200904/825d4b6ce7d6adac3ec5f5091ddf196f.rar b/public/manuscirpt/20200904/825d4b6ce7d6adac3ec5f5091ddf196f.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200904/825d4b6ce7d6adac3ec5f5091ddf196f.rar differ diff --git a/public/manuscirpt/20200904/9dd7dc8794fae1df17055d5b8516fb56.zip b/public/manuscirpt/20200904/9dd7dc8794fae1df17055d5b8516fb56.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/manuscirpt/20200904/9dd7dc8794fae1df17055d5b8516fb56.zip differ diff --git a/public/manuscirpt/20200909/0549e6872e1fdd5cfeea98049c652c90.docx b/public/manuscirpt/20200909/0549e6872e1fdd5cfeea98049c652c90.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200909/0549e6872e1fdd5cfeea98049c652c90.docx differ diff --git a/public/manuscirpt/20200910/250079fa0d9a3b1181c94050206a02c2.docx b/public/manuscirpt/20200910/250079fa0d9a3b1181c94050206a02c2.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/manuscirpt/20200910/250079fa0d9a3b1181c94050206a02c2.docx differ diff --git a/public/manuscirpt/20200921/90906195a9b89a821c955cb2c69a43f5.docx b/public/manuscirpt/20200921/90906195a9b89a821c955cb2c69a43f5.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/manuscirpt/20200921/90906195a9b89a821c955cb2c69a43f5.docx differ diff --git a/public/manuscirpt/20200921/bd953ffe7db3aa36ded822d11df6ed3f.docx b/public/manuscirpt/20200921/bd953ffe7db3aa36ded822d11df6ed3f.docx new file mode 100644 index 0000000..69b486d Binary files /dev/null and b/public/manuscirpt/20200921/bd953ffe7db3aa36ded822d11df6ed3f.docx differ diff --git a/public/manuscirpt/20200922/5ce0f3c61a6196ccca9e3ed014b4701e.zip b/public/manuscirpt/20200922/5ce0f3c61a6196ccca9e3ed014b4701e.zip new file mode 100644 index 0000000..e36ca5b Binary files /dev/null and b/public/manuscirpt/20200922/5ce0f3c61a6196ccca9e3ed014b4701e.zip differ diff --git a/public/manuscirpt/20200922/860d3db8da2e3a70c9bdb9726f534f5b.doc b/public/manuscirpt/20200922/860d3db8da2e3a70c9bdb9726f534f5b.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/manuscirpt/20200922/860d3db8da2e3a70c9bdb9726f534f5b.doc differ diff --git a/public/manuscirpt/20200922/9702b2c21b8885c68e7b426797f5185d.docx b/public/manuscirpt/20200922/9702b2c21b8885c68e7b426797f5185d.docx new file mode 100644 index 0000000..69b486d Binary files /dev/null and b/public/manuscirpt/20200922/9702b2c21b8885c68e7b426797f5185d.docx differ diff --git a/public/manuscirpt/20200922/a3617291d3ebccd5b7742e13838bd92e.rar b/public/manuscirpt/20200922/a3617291d3ebccd5b7742e13838bd92e.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/manuscirpt/20200922/a3617291d3ebccd5b7742e13838bd92e.rar differ diff --git a/public/manuscirpt/20200922/b5d9781d1cad21aa00e201a631e9d180.doc b/public/manuscirpt/20200922/b5d9781d1cad21aa00e201a631e9d180.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/manuscirpt/20200922/b5d9781d1cad21aa00e201a631e9d180.doc differ diff --git a/public/manuscirpt/20200925/9a235a1e31989f4733984c5c74e32e8a.doc b/public/manuscirpt/20200925/9a235a1e31989f4733984c5c74e32e8a.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/manuscirpt/20200925/9a235a1e31989f4733984c5c74e32e8a.doc differ diff --git a/public/manuscirpt/20200925/9a87bb75773cb5ddcf1b0e5d5e4e2cc3.doc b/public/manuscirpt/20200925/9a87bb75773cb5ddcf1b0e5d5e4e2cc3.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/manuscirpt/20200925/9a87bb75773cb5ddcf1b0e5d5e4e2cc3.doc differ diff --git a/public/manuscirpt/20201023/07e7409da97e9d60af67f3ed67621862.doc b/public/manuscirpt/20201023/07e7409da97e9d60af67f3ed67621862.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/manuscirpt/20201023/07e7409da97e9d60af67f3ed67621862.doc differ diff --git a/public/manuscirpt/20201023/1dbba961ea5b878b3928d3ae1db53642.doc b/public/manuscirpt/20201023/1dbba961ea5b878b3928d3ae1db53642.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/manuscirpt/20201023/1dbba961ea5b878b3928d3ae1db53642.doc differ diff --git a/public/nginx.htaccess b/public/nginx.htaccess new file mode 100644 index 0000000..e69de29 diff --git a/public/picturesAndTables/20200629/1059c95008ee7d43400e86726c3a7030.zip b/public/picturesAndTables/20200629/1059c95008ee7d43400e86726c3a7030.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/1059c95008ee7d43400e86726c3a7030.zip differ diff --git a/public/picturesAndTables/20200629/2e4fced742df669c8d0e0c3f35bcbcc9.zip b/public/picturesAndTables/20200629/2e4fced742df669c8d0e0c3f35bcbcc9.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/2e4fced742df669c8d0e0c3f35bcbcc9.zip differ diff --git a/public/picturesAndTables/20200629/50adfa992c46d3ea2c99aeffef40b9cf.zip b/public/picturesAndTables/20200629/50adfa992c46d3ea2c99aeffef40b9cf.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/50adfa992c46d3ea2c99aeffef40b9cf.zip differ diff --git a/public/picturesAndTables/20200629/61aed048452b241716c8c5853306142e.zip b/public/picturesAndTables/20200629/61aed048452b241716c8c5853306142e.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/61aed048452b241716c8c5853306142e.zip differ diff --git a/public/picturesAndTables/20200629/69ed887c6197a04e74c5ee2603a6c1c6.zip b/public/picturesAndTables/20200629/69ed887c6197a04e74c5ee2603a6c1c6.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/69ed887c6197a04e74c5ee2603a6c1c6.zip differ diff --git a/public/picturesAndTables/20200629/87751b06b6e3f455d43bbfee4d54601b.zip b/public/picturesAndTables/20200629/87751b06b6e3f455d43bbfee4d54601b.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/87751b06b6e3f455d43bbfee4d54601b.zip differ diff --git a/public/picturesAndTables/20200629/e789fe2eb1113e0b390e0c0aa34bd6fe.zip b/public/picturesAndTables/20200629/e789fe2eb1113e0b390e0c0aa34bd6fe.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200629/e789fe2eb1113e0b390e0c0aa34bd6fe.zip differ diff --git a/public/picturesAndTables/20200701/06384ee9ac2185c8eabca30945039b75.zip b/public/picturesAndTables/20200701/06384ee9ac2185c8eabca30945039b75.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200701/06384ee9ac2185c8eabca30945039b75.zip differ diff --git a/public/picturesAndTables/20200701/309d326c8403f46c500b0c23743d26fb.zip b/public/picturesAndTables/20200701/309d326c8403f46c500b0c23743d26fb.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200701/309d326c8403f46c500b0c23743d26fb.zip differ diff --git a/public/picturesAndTables/20200702/43c0ae57fde62a9614ff499809f62707.zip b/public/picturesAndTables/20200702/43c0ae57fde62a9614ff499809f62707.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200702/43c0ae57fde62a9614ff499809f62707.zip differ diff --git a/public/picturesAndTables/20200702/9cdf415d61788e6ba2219502aed24349.zip b/public/picturesAndTables/20200702/9cdf415d61788e6ba2219502aed24349.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200702/9cdf415d61788e6ba2219502aed24349.zip differ diff --git a/public/picturesAndTables/20200713/da316d16867929944548cfa054619151.rar b/public/picturesAndTables/20200713/da316d16867929944548cfa054619151.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200713/da316d16867929944548cfa054619151.rar differ diff --git a/public/picturesAndTables/20200715/4d7723530d7097413f23620c482906b6.rar b/public/picturesAndTables/20200715/4d7723530d7097413f23620c482906b6.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200715/4d7723530d7097413f23620c482906b6.rar differ diff --git a/public/picturesAndTables/20200722/1dd76899fb98714e30e7da5f230f79bd.zip b/public/picturesAndTables/20200722/1dd76899fb98714e30e7da5f230f79bd.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200722/1dd76899fb98714e30e7da5f230f79bd.zip differ diff --git a/public/picturesAndTables/20200722/9bacd1fe883b1a672bc8e74b24e3e882.rar b/public/picturesAndTables/20200722/9bacd1fe883b1a672bc8e74b24e3e882.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200722/9bacd1fe883b1a672bc8e74b24e3e882.rar differ diff --git a/public/picturesAndTables/20200727/0037bfb9df85e9c07972c16601d8c142.rar b/public/picturesAndTables/20200727/0037bfb9df85e9c07972c16601d8c142.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200727/0037bfb9df85e9c07972c16601d8c142.rar differ diff --git a/public/picturesAndTables/20200727/4097a73198023177768254078af52b02.rar b/public/picturesAndTables/20200727/4097a73198023177768254078af52b02.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200727/4097a73198023177768254078af52b02.rar differ diff --git a/public/picturesAndTables/20200727/7218db7067c10d522c1b636037f4af42.zip b/public/picturesAndTables/20200727/7218db7067c10d522c1b636037f4af42.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200727/7218db7067c10d522c1b636037f4af42.zip differ diff --git a/public/picturesAndTables/20200727/72d19514f22f670511fd225353f4afcf.zip b/public/picturesAndTables/20200727/72d19514f22f670511fd225353f4afcf.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200727/72d19514f22f670511fd225353f4afcf.zip differ diff --git a/public/picturesAndTables/20200730/c30a072b7ea3f8a2d115808ed07c1b1a.rar b/public/picturesAndTables/20200730/c30a072b7ea3f8a2d115808ed07c1b1a.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200730/c30a072b7ea3f8a2d115808ed07c1b1a.rar differ diff --git a/public/picturesAndTables/20200805/40939527bd7563cf4788d2f95cb9df39.png b/public/picturesAndTables/20200805/40939527bd7563cf4788d2f95cb9df39.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200805/40939527bd7563cf4788d2f95cb9df39.png differ diff --git a/public/picturesAndTables/20200805/53bf5c2dfc4c5ad530640a6e1a947296.png b/public/picturesAndTables/20200805/53bf5c2dfc4c5ad530640a6e1a947296.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200805/53bf5c2dfc4c5ad530640a6e1a947296.png differ diff --git a/public/picturesAndTables/20200805/54050eff91b2c8613a055d0c217a34ac.jpg b/public/picturesAndTables/20200805/54050eff91b2c8613a055d0c217a34ac.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200805/54050eff91b2c8613a055d0c217a34ac.jpg differ diff --git a/public/picturesAndTables/20200806/a5ac1e56dbddd499b350d52f137cf813.png b/public/picturesAndTables/20200806/a5ac1e56dbddd499b350d52f137cf813.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200806/a5ac1e56dbddd499b350d52f137cf813.png differ diff --git a/public/picturesAndTables/20200807/22727932434782bad1c2b4ad5a142122.zip b/public/picturesAndTables/20200807/22727932434782bad1c2b4ad5a142122.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/picturesAndTables/20200807/22727932434782bad1c2b4ad5a142122.zip differ diff --git a/public/picturesAndTables/20200807/2d90dfc7ab9b013467299bf92fb4a3fb.zip b/public/picturesAndTables/20200807/2d90dfc7ab9b013467299bf92fb4a3fb.zip new file mode 100644 index 0000000..e36ca5b Binary files /dev/null and b/public/picturesAndTables/20200807/2d90dfc7ab9b013467299bf92fb4a3fb.zip differ diff --git a/public/picturesAndTables/20200807/8bf794624b6609221b4f0c7d8cfb41a0.zip b/public/picturesAndTables/20200807/8bf794624b6609221b4f0c7d8cfb41a0.zip new file mode 100644 index 0000000..31c21ce Binary files /dev/null and b/public/picturesAndTables/20200807/8bf794624b6609221b4f0c7d8cfb41a0.zip differ diff --git a/public/picturesAndTables/20200807/d49d93842695e2fc944852ec83ca2a9a.zip b/public/picturesAndTables/20200807/d49d93842695e2fc944852ec83ca2a9a.zip new file mode 100644 index 0000000..31c21ce Binary files /dev/null and b/public/picturesAndTables/20200807/d49d93842695e2fc944852ec83ca2a9a.zip differ diff --git a/public/picturesAndTables/20200807/f7d0327dc3dd3283652f15f72b4e4240.rar b/public/picturesAndTables/20200807/f7d0327dc3dd3283652f15f72b4e4240.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200807/f7d0327dc3dd3283652f15f72b4e4240.rar differ diff --git a/public/picturesAndTables/20200810/039422d2c71d742e030c93c47a713408.png b/public/picturesAndTables/20200810/039422d2c71d742e030c93c47a713408.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/039422d2c71d742e030c93c47a713408.png differ diff --git a/public/picturesAndTables/20200810/1c77f467536403d0266cf3132446db42.zip b/public/picturesAndTables/20200810/1c77f467536403d0266cf3132446db42.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/picturesAndTables/20200810/1c77f467536403d0266cf3132446db42.zip differ diff --git a/public/picturesAndTables/20200810/1dc41ffa3784783735af89c471ec8b6b.png b/public/picturesAndTables/20200810/1dc41ffa3784783735af89c471ec8b6b.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/1dc41ffa3784783735af89c471ec8b6b.png differ diff --git a/public/picturesAndTables/20200810/26e4a23a5365d52085aeaec05826ebda.jpg b/public/picturesAndTables/20200810/26e4a23a5365d52085aeaec05826ebda.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/26e4a23a5365d52085aeaec05826ebda.jpg differ diff --git a/public/picturesAndTables/20200810/2715b9bf9cec1112e0ecd4e32985f120.jpg b/public/picturesAndTables/20200810/2715b9bf9cec1112e0ecd4e32985f120.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/2715b9bf9cec1112e0ecd4e32985f120.jpg differ diff --git a/public/picturesAndTables/20200810/2a02c89f97437aa7c1165ce464982c28.jpg b/public/picturesAndTables/20200810/2a02c89f97437aa7c1165ce464982c28.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/2a02c89f97437aa7c1165ce464982c28.jpg differ diff --git a/public/picturesAndTables/20200810/2e4846a4dfa117b78849c68ab7a01eea.jpg b/public/picturesAndTables/20200810/2e4846a4dfa117b78849c68ab7a01eea.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/2e4846a4dfa117b78849c68ab7a01eea.jpg differ diff --git a/public/picturesAndTables/20200810/3d133b184fb308b021b65620f8002b7a.png b/public/picturesAndTables/20200810/3d133b184fb308b021b65620f8002b7a.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/3d133b184fb308b021b65620f8002b7a.png differ diff --git a/public/picturesAndTables/20200810/3d312d2b9aa8d35ec4117758d5c660b5.jpg b/public/picturesAndTables/20200810/3d312d2b9aa8d35ec4117758d5c660b5.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/3d312d2b9aa8d35ec4117758d5c660b5.jpg differ diff --git a/public/picturesAndTables/20200810/3db0aadd3860ac2c5762dff7c6e9e39b.png b/public/picturesAndTables/20200810/3db0aadd3860ac2c5762dff7c6e9e39b.png new file mode 100644 index 0000000..79f9156 Binary files /dev/null and b/public/picturesAndTables/20200810/3db0aadd3860ac2c5762dff7c6e9e39b.png differ diff --git a/public/picturesAndTables/20200810/41f12f12a3db8e0680cc86b288b2c53c.jpg b/public/picturesAndTables/20200810/41f12f12a3db8e0680cc86b288b2c53c.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/41f12f12a3db8e0680cc86b288b2c53c.jpg differ diff --git a/public/picturesAndTables/20200810/458938823199efad2d80859605102a95.png b/public/picturesAndTables/20200810/458938823199efad2d80859605102a95.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/458938823199efad2d80859605102a95.png differ diff --git a/public/picturesAndTables/20200810/4e0cc582a65b980f623f435d3840389d.jpg b/public/picturesAndTables/20200810/4e0cc582a65b980f623f435d3840389d.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/4e0cc582a65b980f623f435d3840389d.jpg differ diff --git a/public/picturesAndTables/20200810/58a7850faf5b6b9d8fa899094664ca55.jpg b/public/picturesAndTables/20200810/58a7850faf5b6b9d8fa899094664ca55.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/58a7850faf5b6b9d8fa899094664ca55.jpg differ diff --git a/public/picturesAndTables/20200810/7ce2db5f4c3bd4fd94d4262ea6cf7158.jpg b/public/picturesAndTables/20200810/7ce2db5f4c3bd4fd94d4262ea6cf7158.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/7ce2db5f4c3bd4fd94d4262ea6cf7158.jpg differ diff --git a/public/picturesAndTables/20200810/828136f8b7762673f22876ae55e0c773.jpg b/public/picturesAndTables/20200810/828136f8b7762673f22876ae55e0c773.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/828136f8b7762673f22876ae55e0c773.jpg differ diff --git a/public/picturesAndTables/20200810/8707daa04e56a9ff4ac70ba7e71eebd5.jpg b/public/picturesAndTables/20200810/8707daa04e56a9ff4ac70ba7e71eebd5.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/8707daa04e56a9ff4ac70ba7e71eebd5.jpg differ diff --git a/public/picturesAndTables/20200810/88461604a6ded4a2030f9b3b626bdbbc.png b/public/picturesAndTables/20200810/88461604a6ded4a2030f9b3b626bdbbc.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/88461604a6ded4a2030f9b3b626bdbbc.png differ diff --git a/public/picturesAndTables/20200810/8883b4a2ad8aa1f5c6d3b0b364cf9cbc.png b/public/picturesAndTables/20200810/8883b4a2ad8aa1f5c6d3b0b364cf9cbc.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/8883b4a2ad8aa1f5c6d3b0b364cf9cbc.png differ diff --git a/public/picturesAndTables/20200810/971671803e64bc6bc9e8c6a485b54fa8.png b/public/picturesAndTables/20200810/971671803e64bc6bc9e8c6a485b54fa8.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200810/971671803e64bc6bc9e8c6a485b54fa8.png differ diff --git a/public/picturesAndTables/20200810/a66f818c4c8073e522a18f3e6cb02134.jpg b/public/picturesAndTables/20200810/a66f818c4c8073e522a18f3e6cb02134.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/a66f818c4c8073e522a18f3e6cb02134.jpg differ diff --git a/public/picturesAndTables/20200810/a69497186790c50c20d4f6fc6dfcf669.jpg b/public/picturesAndTables/20200810/a69497186790c50c20d4f6fc6dfcf669.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/a69497186790c50c20d4f6fc6dfcf669.jpg differ diff --git a/public/picturesAndTables/20200810/b05081efb06baa4a63259b389dea5580.jpg b/public/picturesAndTables/20200810/b05081efb06baa4a63259b389dea5580.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/b05081efb06baa4a63259b389dea5580.jpg differ diff --git a/public/picturesAndTables/20200810/d73db678c004c8b7c7e11242fb0adbde.jpg b/public/picturesAndTables/20200810/d73db678c004c8b7c7e11242fb0adbde.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/d73db678c004c8b7c7e11242fb0adbde.jpg differ diff --git a/public/picturesAndTables/20200810/d8dee8316a31dfdc359f83fff7bb78a7.jpg b/public/picturesAndTables/20200810/d8dee8316a31dfdc359f83fff7bb78a7.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200810/d8dee8316a31dfdc359f83fff7bb78a7.jpg differ diff --git a/public/picturesAndTables/20200810/e508362f13d533bb8b51bfd4f07a7de8.jpg b/public/picturesAndTables/20200810/e508362f13d533bb8b51bfd4f07a7de8.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200810/e508362f13d533bb8b51bfd4f07a7de8.jpg differ diff --git a/public/picturesAndTables/20200811/55232ca0c18efff56d61575c5940a718.png b/public/picturesAndTables/20200811/55232ca0c18efff56d61575c5940a718.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200811/55232ca0c18efff56d61575c5940a718.png differ diff --git a/public/picturesAndTables/20200811/88fe42008ec21b6a06a3d877f32041c3.zip b/public/picturesAndTables/20200811/88fe42008ec21b6a06a3d877f32041c3.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/picturesAndTables/20200811/88fe42008ec21b6a06a3d877f32041c3.zip differ diff --git a/public/picturesAndTables/20200811/a2dbdc60bf17095ba03211c9f3e43f3b.png b/public/picturesAndTables/20200811/a2dbdc60bf17095ba03211c9f3e43f3b.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200811/a2dbdc60bf17095ba03211c9f3e43f3b.png differ diff --git a/public/picturesAndTables/20200811/b16280781017ec28bf227d197da4a7a3.png b/public/picturesAndTables/20200811/b16280781017ec28bf227d197da4a7a3.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200811/b16280781017ec28bf227d197da4a7a3.png differ diff --git a/public/picturesAndTables/20200813/027346898d4e40e98211c3818bad6298.rar b/public/picturesAndTables/20200813/027346898d4e40e98211c3818bad6298.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200813/027346898d4e40e98211c3818bad6298.rar differ diff --git a/public/picturesAndTables/20200813/68b5e1460fe9eb0cee58a1091dd91260.png b/public/picturesAndTables/20200813/68b5e1460fe9eb0cee58a1091dd91260.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200813/68b5e1460fe9eb0cee58a1091dd91260.png differ diff --git a/public/picturesAndTables/20200813/7439f49f4d2aef3549c758c59fe3987f.png b/public/picturesAndTables/20200813/7439f49f4d2aef3549c758c59fe3987f.png new file mode 100644 index 0000000..79f9156 Binary files /dev/null and b/public/picturesAndTables/20200813/7439f49f4d2aef3549c758c59fe3987f.png differ diff --git a/public/picturesAndTables/20200813/9be89216ecfb9ffec3fe4a745cad1f5f.jpg b/public/picturesAndTables/20200813/9be89216ecfb9ffec3fe4a745cad1f5f.jpg new file mode 100644 index 0000000..bd2ba25 Binary files /dev/null and b/public/picturesAndTables/20200813/9be89216ecfb9ffec3fe4a745cad1f5f.jpg differ diff --git a/public/picturesAndTables/20200813/a75701a11fba7d36baf0106719dbfda6.jpg b/public/picturesAndTables/20200813/a75701a11fba7d36baf0106719dbfda6.jpg new file mode 100644 index 0000000..cbe6c00 Binary files /dev/null and b/public/picturesAndTables/20200813/a75701a11fba7d36baf0106719dbfda6.jpg differ diff --git a/public/picturesAndTables/20200813/ff2b15237a40d6b910214c412d5992b9.zip b/public/picturesAndTables/20200813/ff2b15237a40d6b910214c412d5992b9.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/picturesAndTables/20200813/ff2b15237a40d6b910214c412d5992b9.zip differ diff --git a/public/picturesAndTables/20200813/ff82f17b62c3deca6a52c977f0e1b2bd.rar b/public/picturesAndTables/20200813/ff82f17b62c3deca6a52c977f0e1b2bd.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200813/ff82f17b62c3deca6a52c977f0e1b2bd.rar differ diff --git a/public/picturesAndTables/20200921/a85eab341c43c20e200491adf785187b.png b/public/picturesAndTables/20200921/a85eab341c43c20e200491adf785187b.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200921/a85eab341c43c20e200491adf785187b.png differ diff --git a/public/picturesAndTables/20200921/ebb274f2875e0939b30fbb4ee281aa43.png b/public/picturesAndTables/20200921/ebb274f2875e0939b30fbb4ee281aa43.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200921/ebb274f2875e0939b30fbb4ee281aa43.png differ diff --git a/public/picturesAndTables/20200922/a421f62bf4f477ec8bc39a2450545495.png b/public/picturesAndTables/20200922/a421f62bf4f477ec8bc39a2450545495.png new file mode 100644 index 0000000..28dbbb7 Binary files /dev/null and b/public/picturesAndTables/20200922/a421f62bf4f477ec8bc39a2450545495.png differ diff --git a/public/picturesAndTables/20200922/b64c514209873ddd6ee7ee8f9a3aa868.rar b/public/picturesAndTables/20200922/b64c514209873ddd6ee7ee8f9a3aa868.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/picturesAndTables/20200922/b64c514209873ddd6ee7ee8f9a3aa868.rar differ diff --git a/public/repezip/20200814/cb8ea70255a2fa9753cfb6b83f3d7ea1.rar b/public/repezip/20200814/cb8ea70255a2fa9753cfb6b83f3d7ea1.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/repezip/20200814/cb8ea70255a2fa9753cfb6b83f3d7ea1.rar differ diff --git a/public/repezip/20200831/7dab0ab650c19b9f3d54f5328b6db7f0.rar b/public/repezip/20200831/7dab0ab650c19b9f3d54f5328b6db7f0.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/repezip/20200831/7dab0ab650c19b9f3d54f5328b6db7f0.rar differ diff --git a/public/reviewer/20200709/220c2cafcb1fe2d9debeb49ddb95a216.rar b/public/reviewer/20200709/220c2cafcb1fe2d9debeb49ddb95a216.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200709/220c2cafcb1fe2d9debeb49ddb95a216.rar differ diff --git a/public/reviewer/20200709/3b6c7be82a03884220e5c773b63528c2.zip b/public/reviewer/20200709/3b6c7be82a03884220e5c773b63528c2.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200709/3b6c7be82a03884220e5c773b63528c2.zip differ diff --git a/public/reviewer/20200709/f9d1d30fb549845a6b8aefe4bfb0861d.zip b/public/reviewer/20200709/f9d1d30fb549845a6b8aefe4bfb0861d.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200709/f9d1d30fb549845a6b8aefe4bfb0861d.zip differ diff --git a/public/reviewer/20200710/41c6e6f322c6e44d39680d3bcfc9690a.zip b/public/reviewer/20200710/41c6e6f322c6e44d39680d3bcfc9690a.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200710/41c6e6f322c6e44d39680d3bcfc9690a.zip differ diff --git a/public/reviewer/20200710/46a95d09fc30634bf729f9e4687b09bb.zip b/public/reviewer/20200710/46a95d09fc30634bf729f9e4687b09bb.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200710/46a95d09fc30634bf729f9e4687b09bb.zip differ diff --git a/public/reviewer/20200713/09e29deaa46eacb665f354d912dd3719.zip b/public/reviewer/20200713/09e29deaa46eacb665f354d912dd3719.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200713/09e29deaa46eacb665f354d912dd3719.zip differ diff --git a/public/reviewer/20200714/208f660f938417c5dbbdfb3ea9471aeb.zip b/public/reviewer/20200714/208f660f938417c5dbbdfb3ea9471aeb.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200714/208f660f938417c5dbbdfb3ea9471aeb.zip differ diff --git a/public/reviewer/20200714/337911e73ecc3a962b37a544e7af836a.zip b/public/reviewer/20200714/337911e73ecc3a962b37a544e7af836a.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200714/337911e73ecc3a962b37a544e7af836a.zip differ diff --git a/public/reviewer/20200714/93a993950bd0498d8c915e8211b0f774.zip b/public/reviewer/20200714/93a993950bd0498d8c915e8211b0f774.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200714/93a993950bd0498d8c915e8211b0f774.zip differ diff --git a/public/reviewer/20200714/cc1bc9e3c079328c134eaf13bf5ad056.rar b/public/reviewer/20200714/cc1bc9e3c079328c134eaf13bf5ad056.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200714/cc1bc9e3c079328c134eaf13bf5ad056.rar differ diff --git a/public/reviewer/20200714/d6dbb708c49b30d2da2184223d07f34b.rar b/public/reviewer/20200714/d6dbb708c49b30d2da2184223d07f34b.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200714/d6dbb708c49b30d2da2184223d07f34b.rar differ diff --git a/public/reviewer/20200714/e79b1e3b474b40c7c2c6568e437551a6.zip b/public/reviewer/20200714/e79b1e3b474b40c7c2c6568e437551a6.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200714/e79b1e3b474b40c7c2c6568e437551a6.zip differ diff --git a/public/reviewer/20200714/f8b01461b225128a00b692115b39269d.zip b/public/reviewer/20200714/f8b01461b225128a00b692115b39269d.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200714/f8b01461b225128a00b692115b39269d.zip differ diff --git a/public/reviewer/20200715/2e795e938c34ac69c3f8b800fec711c8.zip b/public/reviewer/20200715/2e795e938c34ac69c3f8b800fec711c8.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200715/2e795e938c34ac69c3f8b800fec711c8.zip differ diff --git a/public/reviewer/20200715/a24a39430b32d9aa7d99e86e993a94f3.zip b/public/reviewer/20200715/a24a39430b32d9aa7d99e86e993a94f3.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200715/a24a39430b32d9aa7d99e86e993a94f3.zip differ diff --git a/public/reviewer/20200716/e7753f71945298e93687c840cc014bbf.rar b/public/reviewer/20200716/e7753f71945298e93687c840cc014bbf.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200716/e7753f71945298e93687c840cc014bbf.rar differ diff --git a/public/reviewer/20200724/d1fb8e88706d90f0f82924ec8ec977f6.zip b/public/reviewer/20200724/d1fb8e88706d90f0f82924ec8ec977f6.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200724/d1fb8e88706d90f0f82924ec8ec977f6.zip differ diff --git a/public/reviewer/20200727/caf3204d72b6ae3b50754915a519d488.zip b/public/reviewer/20200727/caf3204d72b6ae3b50754915a519d488.zip new file mode 100644 index 0000000..95e99af Binary files /dev/null and b/public/reviewer/20200727/caf3204d72b6ae3b50754915a519d488.zip differ diff --git a/public/reviewer/20200729/125461c938627e59c8db44528612b307.rar b/public/reviewer/20200729/125461c938627e59c8db44528612b307.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200729/125461c938627e59c8db44528612b307.rar differ diff --git a/public/reviewer/20200730/b46090ea5ecfd5ddbe4e01ddb96b90f1.rar b/public/reviewer/20200730/b46090ea5ecfd5ddbe4e01ddb96b90f1.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200730/b46090ea5ecfd5ddbe4e01ddb96b90f1.rar differ diff --git a/public/reviewer/20200806/1ea1b5b574af16cf2fc9721f5517be09.zip b/public/reviewer/20200806/1ea1b5b574af16cf2fc9721f5517be09.zip new file mode 100644 index 0000000..31c21ce Binary files /dev/null and b/public/reviewer/20200806/1ea1b5b574af16cf2fc9721f5517be09.zip differ diff --git a/public/reviewer/20200806/700095303c59e7478a6b5142b3d60454.rar b/public/reviewer/20200806/700095303c59e7478a6b5142b3d60454.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200806/700095303c59e7478a6b5142b3d60454.rar differ diff --git a/public/reviewer/20200806/95b4875e5e75e06c300bddff8c04197d.zip b/public/reviewer/20200806/95b4875e5e75e06c300bddff8c04197d.zip new file mode 100644 index 0000000..31c21ce Binary files /dev/null and b/public/reviewer/20200806/95b4875e5e75e06c300bddff8c04197d.zip differ diff --git a/public/reviewer/20200821/7a98ace146cedf4fe9547ef56475ad9e.rar b/public/reviewer/20200821/7a98ace146cedf4fe9547ef56475ad9e.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200821/7a98ace146cedf4fe9547ef56475ad9e.rar differ diff --git a/public/reviewer/20200821/8c9d111e835f4e0319c7e791c0b04c2c.zip b/public/reviewer/20200821/8c9d111e835f4e0319c7e791c0b04c2c.zip new file mode 100644 index 0000000..bab8cce Binary files /dev/null and b/public/reviewer/20200821/8c9d111e835f4e0319c7e791c0b04c2c.zip differ diff --git a/public/reviewer/20200821/8e291c09e53fbbe12541563d59790464.rar b/public/reviewer/20200821/8e291c09e53fbbe12541563d59790464.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200821/8e291c09e53fbbe12541563d59790464.rar differ diff --git a/public/reviewer/20200821/ee733a9f47c5c2d84ddb99f0d475cb29.rar b/public/reviewer/20200821/ee733a9f47c5c2d84ddb99f0d475cb29.rar new file mode 100644 index 0000000..8f06963 Binary files /dev/null and b/public/reviewer/20200821/ee733a9f47c5c2d84ddb99f0d475cb29.rar differ diff --git a/public/reviewer/dr/TMRMHM-001.zip b/public/reviewer/dr/TMRMHM-001.zip new file mode 100644 index 0000000..e63e14c Binary files /dev/null and b/public/reviewer/dr/TMRMHM-001.zip differ diff --git a/public/reviewer/dr/TMRMHM-002.zip b/public/reviewer/dr/TMRMHM-002.zip new file mode 100644 index 0000000..a7bcc83 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-002.zip differ diff --git a/public/reviewer/dr/TMRMHM-003.zip b/public/reviewer/dr/TMRMHM-003.zip new file mode 100644 index 0000000..1b7accb Binary files /dev/null and b/public/reviewer/dr/TMRMHM-003.zip differ diff --git a/public/reviewer/dr/TMRMHM-004.zip b/public/reviewer/dr/TMRMHM-004.zip new file mode 100644 index 0000000..7962da7 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-004.zip differ diff --git a/public/reviewer/dr/TMRMHM-005.zip b/public/reviewer/dr/TMRMHM-005.zip new file mode 100644 index 0000000..20e33cb Binary files /dev/null and b/public/reviewer/dr/TMRMHM-005.zip differ diff --git a/public/reviewer/dr/TMRMHM-006.zip b/public/reviewer/dr/TMRMHM-006.zip new file mode 100644 index 0000000..1624a39 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-006.zip differ diff --git a/public/reviewer/dr/TMRMHM-007.zip b/public/reviewer/dr/TMRMHM-007.zip new file mode 100644 index 0000000..b6932be Binary files /dev/null and b/public/reviewer/dr/TMRMHM-007.zip differ diff --git a/public/reviewer/dr/TMRMHM-008.zip b/public/reviewer/dr/TMRMHM-008.zip new file mode 100644 index 0000000..732c71f Binary files /dev/null and b/public/reviewer/dr/TMRMHM-008.zip differ diff --git a/public/reviewer/dr/TMRMHM-009.zip b/public/reviewer/dr/TMRMHM-009.zip new file mode 100644 index 0000000..5ff2ada Binary files /dev/null and b/public/reviewer/dr/TMRMHM-009.zip differ diff --git a/public/reviewer/dr/TMRMHM-010.zip b/public/reviewer/dr/TMRMHM-010.zip new file mode 100644 index 0000000..cd65be7 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-010.zip differ diff --git a/public/reviewer/dr/TMRMHM-011.zip b/public/reviewer/dr/TMRMHM-011.zip new file mode 100644 index 0000000..8a84587 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-011.zip differ diff --git a/public/reviewer/dr/TMRMHM-012.zip b/public/reviewer/dr/TMRMHM-012.zip new file mode 100644 index 0000000..ebbe076 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-012.zip differ diff --git a/public/reviewer/dr/TMRMHM-013.zip b/public/reviewer/dr/TMRMHM-013.zip new file mode 100644 index 0000000..de24d65 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-013.zip differ diff --git a/public/reviewer/dr/TMRMHM-014.zip b/public/reviewer/dr/TMRMHM-014.zip new file mode 100644 index 0000000..72fa787 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-014.zip differ diff --git a/public/reviewer/dr/TMRMHM-015.zip b/public/reviewer/dr/TMRMHM-015.zip new file mode 100644 index 0000000..dcb987f Binary files /dev/null and b/public/reviewer/dr/TMRMHM-015.zip differ diff --git a/public/reviewer/dr/TMRMHM-016.zip b/public/reviewer/dr/TMRMHM-016.zip new file mode 100644 index 0000000..7c65309 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-016.zip differ diff --git a/public/reviewer/dr/TMRMHM-017.zip b/public/reviewer/dr/TMRMHM-017.zip new file mode 100644 index 0000000..38c116f Binary files /dev/null and b/public/reviewer/dr/TMRMHM-017.zip differ diff --git a/public/reviewer/dr/TMRMHM-018.zip b/public/reviewer/dr/TMRMHM-018.zip new file mode 100644 index 0000000..37efcc2 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-018.zip differ diff --git a/public/reviewer/dr/TMRMHM-019.zip b/public/reviewer/dr/TMRMHM-019.zip new file mode 100644 index 0000000..ef319e2 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-019.zip differ diff --git a/public/reviewer/dr/TMRMHM-020.zip b/public/reviewer/dr/TMRMHM-020.zip new file mode 100644 index 0000000..dcdae6c Binary files /dev/null and b/public/reviewer/dr/TMRMHM-020.zip differ diff --git a/public/reviewer/dr/TMRMHM-021.zip b/public/reviewer/dr/TMRMHM-021.zip new file mode 100644 index 0000000..4035246 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-021.zip differ diff --git a/public/reviewer/dr/TMRMHM-022.zip b/public/reviewer/dr/TMRMHM-022.zip new file mode 100644 index 0000000..8db598a Binary files /dev/null and b/public/reviewer/dr/TMRMHM-022.zip differ diff --git a/public/reviewer/dr/TMRMHM-023.zip b/public/reviewer/dr/TMRMHM-023.zip new file mode 100644 index 0000000..9a85875 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-023.zip differ diff --git a/public/reviewer/dr/TMRMHM-024.zip b/public/reviewer/dr/TMRMHM-024.zip new file mode 100644 index 0000000..60e58e5 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-024.zip differ diff --git a/public/reviewer/dr/TMRMHM-025.zip b/public/reviewer/dr/TMRMHM-025.zip new file mode 100644 index 0000000..e24aad0 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-025.zip differ diff --git a/public/reviewer/dr/TMRMHM-026.zip b/public/reviewer/dr/TMRMHM-026.zip new file mode 100644 index 0000000..053754a Binary files /dev/null and b/public/reviewer/dr/TMRMHM-026.zip differ diff --git a/public/reviewer/dr/TMRMHM-027.zip b/public/reviewer/dr/TMRMHM-027.zip new file mode 100644 index 0000000..5aa7d2c Binary files /dev/null and b/public/reviewer/dr/TMRMHM-027.zip differ diff --git a/public/reviewer/dr/TMRMHM-028.zip b/public/reviewer/dr/TMRMHM-028.zip new file mode 100644 index 0000000..81afa8a Binary files /dev/null and b/public/reviewer/dr/TMRMHM-028.zip differ diff --git a/public/reviewer/dr/TMRMHM-029.zip b/public/reviewer/dr/TMRMHM-029.zip new file mode 100644 index 0000000..19a9af7 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-029.zip differ diff --git a/public/reviewer/dr/TMRMHM-030.zip b/public/reviewer/dr/TMRMHM-030.zip new file mode 100644 index 0000000..85620eb Binary files /dev/null and b/public/reviewer/dr/TMRMHM-030.zip differ diff --git a/public/reviewer/dr/TMRMHM-031.zip b/public/reviewer/dr/TMRMHM-031.zip new file mode 100644 index 0000000..eba1006 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-031.zip differ diff --git a/public/reviewer/dr/TMRMHM-032.zip b/public/reviewer/dr/TMRMHM-032.zip new file mode 100644 index 0000000..7a45c66 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-032.zip differ diff --git a/public/reviewer/dr/TMRMHM-033.zip b/public/reviewer/dr/TMRMHM-033.zip new file mode 100644 index 0000000..2b18e51 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-033.zip differ diff --git a/public/reviewer/dr/TMRMHM-034.zip b/public/reviewer/dr/TMRMHM-034.zip new file mode 100644 index 0000000..38de7bc Binary files /dev/null and b/public/reviewer/dr/TMRMHM-034.zip differ diff --git a/public/reviewer/dr/TMRMHM-035.zip b/public/reviewer/dr/TMRMHM-035.zip new file mode 100644 index 0000000..250fab2 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-035.zip differ diff --git a/public/reviewer/dr/TMRMHM-036.zip b/public/reviewer/dr/TMRMHM-036.zip new file mode 100644 index 0000000..3bf965c Binary files /dev/null and b/public/reviewer/dr/TMRMHM-036.zip differ diff --git a/public/reviewer/dr/TMRMHM-037.zip b/public/reviewer/dr/TMRMHM-037.zip new file mode 100644 index 0000000..33ffcc0 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-037.zip differ diff --git a/public/reviewer/dr/TMRMHM-038.zip b/public/reviewer/dr/TMRMHM-038.zip new file mode 100644 index 0000000..6dbad65 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-038.zip differ diff --git a/public/reviewer/dr/TMRMHM-039.zip b/public/reviewer/dr/TMRMHM-039.zip new file mode 100644 index 0000000..b54e313 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-039.zip differ diff --git a/public/reviewer/dr/TMRMHM-040.zip b/public/reviewer/dr/TMRMHM-040.zip new file mode 100644 index 0000000..6f76b2d Binary files /dev/null and b/public/reviewer/dr/TMRMHM-040.zip differ diff --git a/public/reviewer/dr/TMRMHM-041.zip b/public/reviewer/dr/TMRMHM-041.zip new file mode 100644 index 0000000..468b439 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-041.zip differ diff --git a/public/reviewer/dr/TMRMHM-042.zip b/public/reviewer/dr/TMRMHM-042.zip new file mode 100644 index 0000000..9b3652d Binary files /dev/null and b/public/reviewer/dr/TMRMHM-042.zip differ diff --git a/public/reviewer/dr/TMRMHM-043.zip b/public/reviewer/dr/TMRMHM-043.zip new file mode 100644 index 0000000..6dbd0fe Binary files /dev/null and b/public/reviewer/dr/TMRMHM-043.zip differ diff --git a/public/reviewer/dr/TMRMHM-044.zip b/public/reviewer/dr/TMRMHM-044.zip new file mode 100644 index 0000000..8adf770 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-044.zip differ diff --git a/public/reviewer/dr/TMRMHM-045.zip b/public/reviewer/dr/TMRMHM-045.zip new file mode 100644 index 0000000..573d319 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-045.zip differ diff --git a/public/reviewer/dr/TMRMHM-046.zip b/public/reviewer/dr/TMRMHM-046.zip new file mode 100644 index 0000000..9eef7b6 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-046.zip differ diff --git a/public/reviewer/dr/TMRMHM-047.zip b/public/reviewer/dr/TMRMHM-047.zip new file mode 100644 index 0000000..b0479bd Binary files /dev/null and b/public/reviewer/dr/TMRMHM-047.zip differ diff --git a/public/reviewer/dr/TMRMHM-048.zip b/public/reviewer/dr/TMRMHM-048.zip new file mode 100644 index 0000000..054cc9f Binary files /dev/null and b/public/reviewer/dr/TMRMHM-048.zip differ diff --git a/public/reviewer/dr/TMRMHM-049.zip b/public/reviewer/dr/TMRMHM-049.zip new file mode 100644 index 0000000..3f2973e Binary files /dev/null and b/public/reviewer/dr/TMRMHM-049.zip differ diff --git a/public/reviewer/dr/TMRMHM-050.zip b/public/reviewer/dr/TMRMHM-050.zip new file mode 100644 index 0000000..566c3a6 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-050.zip differ diff --git a/public/reviewer/dr/TMRMHM-051.zip b/public/reviewer/dr/TMRMHM-051.zip new file mode 100644 index 0000000..f39755d Binary files /dev/null and b/public/reviewer/dr/TMRMHM-051.zip differ diff --git a/public/reviewer/dr/TMRMHM-052.zip b/public/reviewer/dr/TMRMHM-052.zip new file mode 100644 index 0000000..52a1c26 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-052.zip differ diff --git a/public/reviewer/dr/TMRMHM-053.zip b/public/reviewer/dr/TMRMHM-053.zip new file mode 100644 index 0000000..6aa7b2a Binary files /dev/null and b/public/reviewer/dr/TMRMHM-053.zip differ diff --git a/public/reviewer/dr/TMRMHM-054.zip b/public/reviewer/dr/TMRMHM-054.zip new file mode 100644 index 0000000..7e49496 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-054.zip differ diff --git a/public/reviewer/dr/TMRMHM-055.zip b/public/reviewer/dr/TMRMHM-055.zip new file mode 100644 index 0000000..23e08d6 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-055.zip differ diff --git a/public/reviewer/dr/TMRMHM-056.zip b/public/reviewer/dr/TMRMHM-056.zip new file mode 100644 index 0000000..bcb3d0b Binary files /dev/null and b/public/reviewer/dr/TMRMHM-056.zip differ diff --git a/public/reviewer/dr/TMRMHM-057.zip b/public/reviewer/dr/TMRMHM-057.zip new file mode 100644 index 0000000..3afe2e0 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-057.zip differ diff --git a/public/reviewer/dr/TMRMHM-058.zip b/public/reviewer/dr/TMRMHM-058.zip new file mode 100644 index 0000000..27adf00 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-058.zip differ diff --git a/public/reviewer/dr/TMRMHM-059.zip b/public/reviewer/dr/TMRMHM-059.zip new file mode 100644 index 0000000..632d1d3 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-059.zip differ diff --git a/public/reviewer/dr/TMRMHM-060.zip b/public/reviewer/dr/TMRMHM-060.zip new file mode 100644 index 0000000..3c1ce6d Binary files /dev/null and b/public/reviewer/dr/TMRMHM-060.zip differ diff --git a/public/reviewer/dr/TMRMHM-061.zip b/public/reviewer/dr/TMRMHM-061.zip new file mode 100644 index 0000000..3d9d5b5 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-061.zip differ diff --git a/public/reviewer/dr/TMRMHM-062.zip b/public/reviewer/dr/TMRMHM-062.zip new file mode 100644 index 0000000..d798386 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-062.zip differ diff --git a/public/reviewer/dr/TMRMHM-063.zip b/public/reviewer/dr/TMRMHM-063.zip new file mode 100644 index 0000000..d9f7403 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-063.zip differ diff --git a/public/reviewer/dr/TMRMHM-064.zip b/public/reviewer/dr/TMRMHM-064.zip new file mode 100644 index 0000000..d1a8101 Binary files /dev/null and b/public/reviewer/dr/TMRMHM-064.zip differ diff --git a/public/reviewer/dr/TMRMHM-065.zip b/public/reviewer/dr/TMRMHM-065.zip new file mode 100644 index 0000000..6090bca Binary files /dev/null and b/public/reviewer/dr/TMRMHM-065.zip differ diff --git a/public/reviewer/dr/TMRMHM-066.zip b/public/reviewer/dr/TMRMHM-066.zip new file mode 100644 index 0000000..108e06d Binary files /dev/null and b/public/reviewer/dr/TMRMHM-066.zip differ diff --git a/public/reviewer/import/20200728/0b21951f513f71a38248cfc4b7905b5b.xlsx b/public/reviewer/import/20200728/0b21951f513f71a38248cfc4b7905b5b.xlsx new file mode 100644 index 0000000..f7d20bd Binary files /dev/null and b/public/reviewer/import/20200728/0b21951f513f71a38248cfc4b7905b5b.xlsx differ diff --git a/public/reviewer/import/20200728/2a4abcef4a4b23f95a3beff6d1e3dae6.xlsx b/public/reviewer/import/20200728/2a4abcef4a4b23f95a3beff6d1e3dae6.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200728/2a4abcef4a4b23f95a3beff6d1e3dae6.xlsx differ diff --git a/public/reviewer/import/20200728/315f43c62b1ce0cbbc178b34517613f0.xlsx b/public/reviewer/import/20200728/315f43c62b1ce0cbbc178b34517613f0.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200728/315f43c62b1ce0cbbc178b34517613f0.xlsx differ diff --git a/public/reviewer/import/20200728/493fb1dbf86816112b8a7aa1a5afc696.xlsx b/public/reviewer/import/20200728/493fb1dbf86816112b8a7aa1a5afc696.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200728/493fb1dbf86816112b8a7aa1a5afc696.xlsx differ diff --git a/public/reviewer/import/20200728/553bd0e6f242728e4242880ede75653b.xlsx b/public/reviewer/import/20200728/553bd0e6f242728e4242880ede75653b.xlsx new file mode 100644 index 0000000..0ba4163 Binary files /dev/null and b/public/reviewer/import/20200728/553bd0e6f242728e4242880ede75653b.xlsx differ diff --git a/public/reviewer/import/20200728/939a01a97c1ba59161aac500150f0bb5.xlsx b/public/reviewer/import/20200728/939a01a97c1ba59161aac500150f0bb5.xlsx new file mode 100644 index 0000000..f7d20bd Binary files /dev/null and b/public/reviewer/import/20200728/939a01a97c1ba59161aac500150f0bb5.xlsx differ diff --git a/public/reviewer/import/20200728/a783a4e04a100e70eaf7df86fde79d2d.xlsx b/public/reviewer/import/20200728/a783a4e04a100e70eaf7df86fde79d2d.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200728/a783a4e04a100e70eaf7df86fde79d2d.xlsx differ diff --git a/public/reviewer/import/20200728/d1521b4395f13a68157986b2e6cefa20.xlsx b/public/reviewer/import/20200728/d1521b4395f13a68157986b2e6cefa20.xlsx new file mode 100644 index 0000000..0ba4163 Binary files /dev/null and b/public/reviewer/import/20200728/d1521b4395f13a68157986b2e6cefa20.xlsx differ diff --git a/public/reviewer/import/20200728/d3816a4916d92a2285f1fb0af7fe9d09.xlsx b/public/reviewer/import/20200728/d3816a4916d92a2285f1fb0af7fe9d09.xlsx new file mode 100644 index 0000000..f7d20bd Binary files /dev/null and b/public/reviewer/import/20200728/d3816a4916d92a2285f1fb0af7fe9d09.xlsx differ diff --git a/public/reviewer/import/20200728/e8549eb091149d070f9ffc66b92b7605.xlsx b/public/reviewer/import/20200728/e8549eb091149d070f9ffc66b92b7605.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200728/e8549eb091149d070f9ffc66b92b7605.xlsx differ diff --git a/public/reviewer/import/20200728/ecbf261c2ab932896c7746d8c2580d45.xlsx b/public/reviewer/import/20200728/ecbf261c2ab932896c7746d8c2580d45.xlsx new file mode 100644 index 0000000..f7d20bd Binary files /dev/null and b/public/reviewer/import/20200728/ecbf261c2ab932896c7746d8c2580d45.xlsx differ diff --git a/public/reviewer/import/20200730/4ffe628bc32e70a061f435dd57790303.xlsx b/public/reviewer/import/20200730/4ffe628bc32e70a061f435dd57790303.xlsx new file mode 100644 index 0000000..f7d20bd Binary files /dev/null and b/public/reviewer/import/20200730/4ffe628bc32e70a061f435dd57790303.xlsx differ diff --git a/public/reviewer/import/20200730/55fb8a70d16d87a63c82fd59bcb75612.xls b/public/reviewer/import/20200730/55fb8a70d16d87a63c82fd59bcb75612.xls new file mode 100644 index 0000000..f385abf Binary files /dev/null and b/public/reviewer/import/20200730/55fb8a70d16d87a63c82fd59bcb75612.xls differ diff --git a/public/reviewer/import/20200730/83643b76f98f07de84cdf3ba8349cafe.xlsx b/public/reviewer/import/20200730/83643b76f98f07de84cdf3ba8349cafe.xlsx new file mode 100644 index 0000000..af56594 Binary files /dev/null and b/public/reviewer/import/20200730/83643b76f98f07de84cdf3ba8349cafe.xlsx differ diff --git a/public/reviewer/import/20200730/8b65eb0947463b6004310ac5651870b1.xlsx b/public/reviewer/import/20200730/8b65eb0947463b6004310ac5651870b1.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200730/8b65eb0947463b6004310ac5651870b1.xlsx differ diff --git a/public/reviewer/import/20200730/d407d4796f09893454c1490bd333a2e4.xlsx b/public/reviewer/import/20200730/d407d4796f09893454c1490bd333a2e4.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200730/d407d4796f09893454c1490bd333a2e4.xlsx differ diff --git a/public/reviewer/import/20200731/c6b97809cab2582628ab35b28f2f0f4f.xlsx b/public/reviewer/import/20200731/c6b97809cab2582628ab35b28f2f0f4f.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200731/c6b97809cab2582628ab35b28f2f0f4f.xlsx differ diff --git a/public/reviewer/import/20200802/b8fafc5488b7c13abd0a1d4f0d079233.xlsx b/public/reviewer/import/20200802/b8fafc5488b7c13abd0a1d4f0d079233.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200802/b8fafc5488b7c13abd0a1d4f0d079233.xlsx differ diff --git a/public/reviewer/import/20200803/1fd56a4aeb861115d205ffa941895b23.xlsx b/public/reviewer/import/20200803/1fd56a4aeb861115d205ffa941895b23.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200803/1fd56a4aeb861115d205ffa941895b23.xlsx differ diff --git a/public/reviewer/import/20200803/eac3010b448bc0b153640d5e83416a69.xlsx b/public/reviewer/import/20200803/eac3010b448bc0b153640d5e83416a69.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200803/eac3010b448bc0b153640d5e83416a69.xlsx differ diff --git a/public/reviewer/import/20200804/7336bc7bafd03f8ecb466d259678847f.xlsx b/public/reviewer/import/20200804/7336bc7bafd03f8ecb466d259678847f.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200804/7336bc7bafd03f8ecb466d259678847f.xlsx differ diff --git a/public/reviewer/import/20200804/c649e3fa64b355f3526f4fa36ca16021.xlsx b/public/reviewer/import/20200804/c649e3fa64b355f3526f4fa36ca16021.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200804/c649e3fa64b355f3526f4fa36ca16021.xlsx differ diff --git a/public/reviewer/import/20200805/00232699889988454e5b5e8af339cb0f.xlsx b/public/reviewer/import/20200805/00232699889988454e5b5e8af339cb0f.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/00232699889988454e5b5e8af339cb0f.xlsx differ diff --git a/public/reviewer/import/20200805/076dfb82ec9ec8f9d408f7f7a7172f71.xlsx b/public/reviewer/import/20200805/076dfb82ec9ec8f9d408f7f7a7172f71.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/076dfb82ec9ec8f9d408f7f7a7172f71.xlsx differ diff --git a/public/reviewer/import/20200805/0a804af1543a7cb9404744ebd1ed6d2b.xlsx b/public/reviewer/import/20200805/0a804af1543a7cb9404744ebd1ed6d2b.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/0a804af1543a7cb9404744ebd1ed6d2b.xlsx differ diff --git a/public/reviewer/import/20200805/0e823a8c5e7076455fc21e23cb7b09dd.xlsx b/public/reviewer/import/20200805/0e823a8c5e7076455fc21e23cb7b09dd.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/0e823a8c5e7076455fc21e23cb7b09dd.xlsx differ diff --git a/public/reviewer/import/20200805/19e8561887ec8f84e937bad6243bc2c8.xlsx b/public/reviewer/import/20200805/19e8561887ec8f84e937bad6243bc2c8.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/19e8561887ec8f84e937bad6243bc2c8.xlsx differ diff --git a/public/reviewer/import/20200805/1c714905d1269fd9b562aab35010458b.xlsx b/public/reviewer/import/20200805/1c714905d1269fd9b562aab35010458b.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/1c714905d1269fd9b562aab35010458b.xlsx differ diff --git a/public/reviewer/import/20200805/1eb88eb6b57357ffaa85ae96c354910a.xlsx b/public/reviewer/import/20200805/1eb88eb6b57357ffaa85ae96c354910a.xlsx new file mode 100644 index 0000000..cbb0e08 Binary files /dev/null and b/public/reviewer/import/20200805/1eb88eb6b57357ffaa85ae96c354910a.xlsx differ diff --git a/public/reviewer/import/20200805/34ffb1e24ab7febc7331b1a893757c7e.xlsx b/public/reviewer/import/20200805/34ffb1e24ab7febc7331b1a893757c7e.xlsx new file mode 100644 index 0000000..cbb0e08 Binary files /dev/null and b/public/reviewer/import/20200805/34ffb1e24ab7febc7331b1a893757c7e.xlsx differ diff --git a/public/reviewer/import/20200805/41dd704ad97a8d93a89a55333d16c6ea.xlsx b/public/reviewer/import/20200805/41dd704ad97a8d93a89a55333d16c6ea.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/41dd704ad97a8d93a89a55333d16c6ea.xlsx differ diff --git a/public/reviewer/import/20200805/422155bc415972d115973ee4843be694.xlsx b/public/reviewer/import/20200805/422155bc415972d115973ee4843be694.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/422155bc415972d115973ee4843be694.xlsx differ diff --git a/public/reviewer/import/20200805/490e54d8a06b8e65869aa8d68e74a82b.xlsx b/public/reviewer/import/20200805/490e54d8a06b8e65869aa8d68e74a82b.xlsx new file mode 100644 index 0000000..fa2ab41 Binary files /dev/null and b/public/reviewer/import/20200805/490e54d8a06b8e65869aa8d68e74a82b.xlsx differ diff --git a/public/reviewer/import/20200805/5fd84ecb61ff6201d34053e709389659.xlsx b/public/reviewer/import/20200805/5fd84ecb61ff6201d34053e709389659.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/5fd84ecb61ff6201d34053e709389659.xlsx differ diff --git a/public/reviewer/import/20200805/645c000f5d2a9a0a0b6fa988b8c5d3ca.xlsx b/public/reviewer/import/20200805/645c000f5d2a9a0a0b6fa988b8c5d3ca.xlsx new file mode 100644 index 0000000..ce8e6da Binary files /dev/null and b/public/reviewer/import/20200805/645c000f5d2a9a0a0b6fa988b8c5d3ca.xlsx differ diff --git a/public/reviewer/import/20200805/668d4ca8023b9924bdbc54b9d5ed392d.xlsx b/public/reviewer/import/20200805/668d4ca8023b9924bdbc54b9d5ed392d.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/668d4ca8023b9924bdbc54b9d5ed392d.xlsx differ diff --git a/public/reviewer/import/20200805/68afffe8cee95c02fd36f4c8cd8df36f.xlsx b/public/reviewer/import/20200805/68afffe8cee95c02fd36f4c8cd8df36f.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/68afffe8cee95c02fd36f4c8cd8df36f.xlsx differ diff --git a/public/reviewer/import/20200805/6ccef6ec91adc3eee25bc6cb3dedd997.xlsx b/public/reviewer/import/20200805/6ccef6ec91adc3eee25bc6cb3dedd997.xlsx new file mode 100644 index 0000000..4b3f4e3 Binary files /dev/null and b/public/reviewer/import/20200805/6ccef6ec91adc3eee25bc6cb3dedd997.xlsx differ diff --git a/public/reviewer/import/20200805/6f58447831a1be8ca2137b707707232b.xlsx b/public/reviewer/import/20200805/6f58447831a1be8ca2137b707707232b.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/6f58447831a1be8ca2137b707707232b.xlsx differ diff --git a/public/reviewer/import/20200805/79531d9124da8970a3e2355fe173c191.xlsx b/public/reviewer/import/20200805/79531d9124da8970a3e2355fe173c191.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/79531d9124da8970a3e2355fe173c191.xlsx differ diff --git a/public/reviewer/import/20200805/79d909f944958c475f858eb1cc21b7eb.xlsx b/public/reviewer/import/20200805/79d909f944958c475f858eb1cc21b7eb.xlsx new file mode 100644 index 0000000..f45df7c Binary files /dev/null and b/public/reviewer/import/20200805/79d909f944958c475f858eb1cc21b7eb.xlsx differ diff --git a/public/reviewer/import/20200805/7b5a1d9bd37dfc327ca2ed2d441b473c.xlsx b/public/reviewer/import/20200805/7b5a1d9bd37dfc327ca2ed2d441b473c.xlsx new file mode 100644 index 0000000..cbb0e08 Binary files /dev/null and b/public/reviewer/import/20200805/7b5a1d9bd37dfc327ca2ed2d441b473c.xlsx differ diff --git a/public/reviewer/import/20200805/7e9559fd7ac90883e52433b9048e043e.xlsx b/public/reviewer/import/20200805/7e9559fd7ac90883e52433b9048e043e.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/7e9559fd7ac90883e52433b9048e043e.xlsx differ diff --git a/public/reviewer/import/20200805/7ff966fdcbffa87a68d6de86b56f8c98.xlsx b/public/reviewer/import/20200805/7ff966fdcbffa87a68d6de86b56f8c98.xlsx new file mode 100644 index 0000000..b6a04e9 Binary files /dev/null and b/public/reviewer/import/20200805/7ff966fdcbffa87a68d6de86b56f8c98.xlsx differ diff --git a/public/reviewer/import/20200805/829ebf92fb2392115bb24342bd960dfd.xlsx b/public/reviewer/import/20200805/829ebf92fb2392115bb24342bd960dfd.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/829ebf92fb2392115bb24342bd960dfd.xlsx differ diff --git a/public/reviewer/import/20200805/910b7408350a70e83d42ba82f5dc5266.xlsx b/public/reviewer/import/20200805/910b7408350a70e83d42ba82f5dc5266.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/910b7408350a70e83d42ba82f5dc5266.xlsx differ diff --git a/public/reviewer/import/20200805/91a404525740a34d3c402de10be78a40.xlsx b/public/reviewer/import/20200805/91a404525740a34d3c402de10be78a40.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/91a404525740a34d3c402de10be78a40.xlsx differ diff --git a/public/reviewer/import/20200805/99118dfc4ebaa0de77f0e861ea25f39d.xlsx b/public/reviewer/import/20200805/99118dfc4ebaa0de77f0e861ea25f39d.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/99118dfc4ebaa0de77f0e861ea25f39d.xlsx differ diff --git a/public/reviewer/import/20200805/a2cb99e8ea3809b47ff77b70723d069e.xlsx b/public/reviewer/import/20200805/a2cb99e8ea3809b47ff77b70723d069e.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/a2cb99e8ea3809b47ff77b70723d069e.xlsx differ diff --git a/public/reviewer/import/20200805/a8b98aa4b161ae1da78776473ede9824.xlsx b/public/reviewer/import/20200805/a8b98aa4b161ae1da78776473ede9824.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/a8b98aa4b161ae1da78776473ede9824.xlsx differ diff --git a/public/reviewer/import/20200805/adf1e2b3214724284ed76b762117aa5c.xlsx b/public/reviewer/import/20200805/adf1e2b3214724284ed76b762117aa5c.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/adf1e2b3214724284ed76b762117aa5c.xlsx differ diff --git a/public/reviewer/import/20200805/bb7531f09fb5941b4c160c02319d7a08.xlsx b/public/reviewer/import/20200805/bb7531f09fb5941b4c160c02319d7a08.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/bb7531f09fb5941b4c160c02319d7a08.xlsx differ diff --git a/public/reviewer/import/20200805/bd1b6d2d438de3fc15ebb96db33af07e.xlsx b/public/reviewer/import/20200805/bd1b6d2d438de3fc15ebb96db33af07e.xlsx new file mode 100644 index 0000000..9b3e430 Binary files /dev/null and b/public/reviewer/import/20200805/bd1b6d2d438de3fc15ebb96db33af07e.xlsx differ diff --git a/public/reviewer/import/20200805/bdb3219a313cc1dfc9ba59b15296556e.xlsx b/public/reviewer/import/20200805/bdb3219a313cc1dfc9ba59b15296556e.xlsx new file mode 100644 index 0000000..4b598f9 Binary files /dev/null and b/public/reviewer/import/20200805/bdb3219a313cc1dfc9ba59b15296556e.xlsx differ diff --git a/public/reviewer/import/20200805/bf4545bf92596e779a7772bfcd0016f8.xlsx b/public/reviewer/import/20200805/bf4545bf92596e779a7772bfcd0016f8.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/bf4545bf92596e779a7772bfcd0016f8.xlsx differ diff --git a/public/reviewer/import/20200805/d848496a7c2cddff4475167d2a06bef5.xlsx b/public/reviewer/import/20200805/d848496a7c2cddff4475167d2a06bef5.xlsx new file mode 100644 index 0000000..cbb0e08 Binary files /dev/null and b/public/reviewer/import/20200805/d848496a7c2cddff4475167d2a06bef5.xlsx differ diff --git a/public/reviewer/import/20200805/da1dd695d89529acbc71b76eeb2a31e7.xlsx b/public/reviewer/import/20200805/da1dd695d89529acbc71b76eeb2a31e7.xlsx new file mode 100644 index 0000000..e91e81d Binary files /dev/null and b/public/reviewer/import/20200805/da1dd695d89529acbc71b76eeb2a31e7.xlsx differ diff --git a/public/reviewer/import/20200805/de42bf9b743d42ef595effa982e39f5d.xlsx b/public/reviewer/import/20200805/de42bf9b743d42ef595effa982e39f5d.xlsx new file mode 100644 index 0000000..520696d Binary files /dev/null and b/public/reviewer/import/20200805/de42bf9b743d42ef595effa982e39f5d.xlsx differ diff --git a/public/reviewer/import/20200805/f2e2416f78d25082f7d6d4b7b938ce5c.xlsx b/public/reviewer/import/20200805/f2e2416f78d25082f7d6d4b7b938ce5c.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200805/f2e2416f78d25082f7d6d4b7b938ce5c.xlsx differ diff --git a/public/reviewer/import/20200806/393a78f3381f845c4f97c5dade294ce6.xlsx b/public/reviewer/import/20200806/393a78f3381f845c4f97c5dade294ce6.xlsx new file mode 100644 index 0000000..31f2f5f Binary files /dev/null and b/public/reviewer/import/20200806/393a78f3381f845c4f97c5dade294ce6.xlsx differ diff --git a/public/reviewer/import/20200806/f3eb3c414f6cc19bd327940276a2f32c.xlsx b/public/reviewer/import/20200806/f3eb3c414f6cc19bd327940276a2f32c.xlsx new file mode 100644 index 0000000..0365be8 Binary files /dev/null and b/public/reviewer/import/20200806/f3eb3c414f6cc19bd327940276a2f32c.xlsx differ diff --git a/public/reviewer/import/20200813/f0f9352d34b6754fdb253df467b3d4ab.xlsx b/public/reviewer/import/20200813/f0f9352d34b6754fdb253df467b3d4ab.xlsx new file mode 100644 index 0000000..d71bfc7 Binary files /dev/null and b/public/reviewer/import/20200813/f0f9352d34b6754fdb253df467b3d4ab.xlsx differ diff --git a/public/reviewer/import/20200826/0196e3c0dc7afeb1d79ac8cfd131b7e4.xlsx b/public/reviewer/import/20200826/0196e3c0dc7afeb1d79ac8cfd131b7e4.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/0196e3c0dc7afeb1d79ac8cfd131b7e4.xlsx differ diff --git a/public/reviewer/import/20200826/40c2582315a3b884aee6539f413cb26b.xlsx b/public/reviewer/import/20200826/40c2582315a3b884aee6539f413cb26b.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/40c2582315a3b884aee6539f413cb26b.xlsx differ diff --git a/public/reviewer/import/20200826/4ad485998441e909a45ebf119327171e.xlsx b/public/reviewer/import/20200826/4ad485998441e909a45ebf119327171e.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/4ad485998441e909a45ebf119327171e.xlsx differ diff --git a/public/reviewer/import/20200826/4db0a004b87956610982a21a83e401bf.xlsx b/public/reviewer/import/20200826/4db0a004b87956610982a21a83e401bf.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/4db0a004b87956610982a21a83e401bf.xlsx differ diff --git a/public/reviewer/import/20200826/5c8a6a393c39eb1b60fa900155081a6c.xlsx b/public/reviewer/import/20200826/5c8a6a393c39eb1b60fa900155081a6c.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/5c8a6a393c39eb1b60fa900155081a6c.xlsx differ diff --git a/public/reviewer/import/20200826/63a2a384013d42d3d7dd5af1b689a9e9.xlsx b/public/reviewer/import/20200826/63a2a384013d42d3d7dd5af1b689a9e9.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/63a2a384013d42d3d7dd5af1b689a9e9.xlsx differ diff --git a/public/reviewer/import/20200826/a8c03d7f9ac899c0a590ff26663402f2.xlsx b/public/reviewer/import/20200826/a8c03d7f9ac899c0a590ff26663402f2.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/a8c03d7f9ac899c0a590ff26663402f2.xlsx differ diff --git a/public/reviewer/import/20200826/cc0cb9c767b19ecf9c1b02840bbaf1a9.xlsx b/public/reviewer/import/20200826/cc0cb9c767b19ecf9c1b02840bbaf1a9.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/cc0cb9c767b19ecf9c1b02840bbaf1a9.xlsx differ diff --git a/public/reviewer/import/20200826/dd9881ddb4dde8cdf070201c838af130.xlsx b/public/reviewer/import/20200826/dd9881ddb4dde8cdf070201c838af130.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/dd9881ddb4dde8cdf070201c838af130.xlsx differ diff --git a/public/reviewer/import/20200826/e324ff288948aa5eec747823bfaf264f.xlsx b/public/reviewer/import/20200826/e324ff288948aa5eec747823bfaf264f.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/e324ff288948aa5eec747823bfaf264f.xlsx differ diff --git a/public/reviewer/import/20200826/e3e7ecf898f3131d05c0a2a30f490873.xlsx b/public/reviewer/import/20200826/e3e7ecf898f3131d05c0a2a30f490873.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/e3e7ecf898f3131d05c0a2a30f490873.xlsx differ diff --git a/public/reviewer/import/20200826/f142dc1c189ee1e41bae15fcd33ee785.xlsx b/public/reviewer/import/20200826/f142dc1c189ee1e41bae15fcd33ee785.xlsx new file mode 100644 index 0000000..a2632e8 Binary files /dev/null and b/public/reviewer/import/20200826/f142dc1c189ee1e41bae15fcd33ee785.xlsx differ diff --git a/public/reviewer/import/20200827/10c7c4f07441626e4e50e912de36db95.xlsx b/public/reviewer/import/20200827/10c7c4f07441626e4e50e912de36db95.xlsx new file mode 100644 index 0000000..65e4780 Binary files /dev/null and b/public/reviewer/import/20200827/10c7c4f07441626e4e50e912de36db95.xlsx differ diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/router.php b/public/router.php new file mode 100644 index 0000000..1b648c4 --- /dev/null +++ b/public/router.php @@ -0,0 +1,20 @@ + +// +---------------------------------------------------------------------- +// $Id$ + +if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { + return false; +} else { + if (!isset($_SERVER['PATH_INFO'])) { + $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; + } + require __DIR__ . "/index.php"; +} diff --git a/public/sql/tougao.sql b/public/sql/tougao.sql new file mode 100644 index 0000000..9531e26 --- /dev/null +++ b/public/sql/tougao.sql @@ -0,0 +1,901 @@ +-- phpMyAdmin SQL Dump +-- version 4.8.5 +-- https://www.phpmyadmin.net/ +-- +-- 主机: localhost +-- 生成日期: 2020-08-03 15:40:53 +-- 服务器版本: 5.7.26 +-- PHP 版本: 7.3.4 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- 数据库: `tougao` +-- + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_admin` +-- + +CREATE TABLE `t_admin` ( + `admin_id` int(10) UNSIGNED NOT NULL COMMENT '主键', + `account` varchar(128) NOT NULL DEFAULT '' COMMENT '账号', + `password` char(32) NOT NULL DEFAULT '' COMMENT '密码(md5)', + `phone` varchar(32) NOT NULL DEFAULT '' COMMENT '电话号', + `author` tinyint(4) NOT NULL DEFAULT '0' COMMENT '权限组', + `realname` varchar(64) NOT NULL DEFAULT '' COMMENT '真实姓名', + `last_login_time` int(10) NOT NULL DEFAULT '0' COMMENT '最后登录时间', + `last_login_ip` varchar(32) NOT NULL DEFAULT '' COMMENT '最后登录ip', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='管理员'; + +-- +-- 转存表中的数据 `t_admin` +-- + +INSERT INTO `t_admin` (`admin_id`, `account`, `password`, `phone`, `author`, `realname`, `last_login_time`, `last_login_ip`, `ctime`, `state`) VALUES +(1, 'superadmin', '799fb0823a84149c7e1cf5f71fe79358', '', 0, 'admin', 1596434111, '127.0.0.1', 0, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article` +-- + +CREATE TABLE `t_article` ( + `article_id` int(11) NOT NULL COMMENT '主键', + `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id', + `editor_id` int(11) NOT NULL DEFAULT '0' COMMENT '编辑id', + `journal_id` int(11) NOT NULL DEFAULT '0' COMMENT '期刊表外键', + `accept_sn` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '受理流水号', + `title` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '标题', + `author` varchar(512) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '作者', + `author_affi` varchar(1024) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '作者机构', + `corr_author` varchar(512) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '联系作者', + `corr_author_affi` varchar(1024) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '联系作者机构', + `corr_author_email` varchar(1024) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '联系作者邮箱', + `keywords` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '关键词', + `fund` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '基金', + `abstrart` varchar(1024) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '简介', + `cover_letter_url` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '给编辑的信', + `media_url` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '媒介地址', + `manuscirpt_url` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '主体信息', + `pdf_url` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT 'pdf地址', + `author_act` tinyint(11) NOT NULL DEFAULT '0' COMMENT '作者是否有新操作0没有1有', + `editor_act` tinyint(11) NOT NULL DEFAULT '0' COMMENT '编辑是否有新操作0没有1有', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `state` tinyint(11) NOT NULL DEFAULT '0' COMMENT '状态0投稿中1已受理2送审中3拒稿4退修中5录用' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='文章主表'; + +-- +-- 转存表中的数据 `t_article` +-- + +INSERT INTO `t_article` (`article_id`, `user_id`, `editor_id`, `journal_id`, `accept_sn`, `title`, `author`, `author_affi`, `corr_author`, `corr_author_affi`, `corr_author_email`, `keywords`, `fund`, `abstrart`, `cover_letter_url`, `media_url`, `manuscirpt_url`, `pdf_url`, `author_act`, `editor_act`, `ctime`, `state`) VALUES +(1, 1, 2, 1, 'TMR2020A0715001', 'mytest', 'gail(1,2)', '1.天津科技大学\n2.北京邮电大学', 'gail wang(1)', '1.北京邮电大学', '13662001490@126.com', '测试,jianjie', '天津众筹基金', '关于测试的简介', 'coverLetter/20200715\\74cbf0c8d36d64870fa014ad6a1dc450.docx', 'picturesAndTables/20200715\\4d7723530d7097413f23620c482906b6.rar', 'manuscirpt/20200715\\7817a882d2a0e09ed58db7f407798808.pdf', '', 0, 0, 1594778724, 4), +(2, 1, 0, 1, 'TMR2020A0727001', 'myarticle', '', '', '', '', '', 'dsadsadsa', 'dsadsa', 'dsadasda1', 'coverLetter/20200722/909c8054fb38f6de1217e7e7041c9d04.docx', 'picturesAndTables/20200722/9bacd1fe883b1a672bc8e74b24e3e882.rar', 'manuscirpt/20200722/a2425cd9b07e5508d1a31268a5c99058.doc', '', 0, 0, 1595404412, 4), +(3, 1, 2, 1, 'TMR2020A0722001', 'myarticle', '', '', '', '', '', 'dsadsadsa', 'dsadsa', 'dsadasda1', 'coverLetter/20200722/909c8054fb38f6de1217e7e7041c9d04.docx', 'picturesAndTables/20200722/9bacd1fe883b1a672bc8e74b24e3e882.rar', 'manuscirpt/20200722/a2425cd9b07e5508d1a31268a5c99058.doc', '', 0, 0, 1595404492, 2), +(7, 1, 2, 1, 'TMR2020A0727002', '大萨达撒多', '', '', '', '', '', 'dsads', 'dsads', '大萨达撒多1', 'coverLetter/20200727/433f3608b3181c6a299b9267f3971726.docx', 'picturesAndTables/20200727/7218db7067c10d522c1b636037f4af42.zip', 'manuscirpt/20200727/cd67d8e8f944b5f1589cceb8e1aa967c.pdf', '', 0, 0, 1595813183, 4), +(8, 1, 2, 1, 'TMR2020A0727004', '额外翁二无群', '', '', '', '', '', '大萨达', 'V型从V型从v', '大叔大婶1', 'coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc', 'picturesAndTables/20200727/4097a73198023177768254078af52b02.rar', 'manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf', '', 0, 0, 1595813263, 1), +(9, 1, 2, 1, 'TMR2020A0727006', '额外翁二无群', '', '', '', '', '', '大萨达', 'V型从V型从v', '大叔大婶', 'coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc', 'picturesAndTables/20200727/4097a73198023177768254078af52b02.rar', 'manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf', '', 0, 0, 1595813263, 1), +(10, 1, 2, 1, 'TMR2020A0727003', '额外翁二无群', '', '', '', '', '', '大萨达', 'V型从V型从v', '大叔大婶', 'coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc', 'picturesAndTables/20200727/4097a73198023177768254078af52b02.rar', 'manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf', '', 0, 0, 1595813263, 1), +(11, 1, 2, 1, 'TMR2020A0727005', '安达市大所', '', '', '', '', '', '的撒的撒', '大萨达撒', '大萨达多', 'coverLetter/20200727/8b8a1a552dccb49dccfe00eed33d1e4c.docx', 'picturesAndTables/20200727/0037bfb9df85e9c07972c16601d8c142.rar', 'manuscirpt/20200727/549a74ff02bc5a782727c89dd35d22c0.pdf', '', 0, 0, 1595813347, 1); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article_author` +-- + +CREATE TABLE `t_article_author` ( + `art_aut_id` int(11) NOT NULL COMMENT '主键', + `article_id` int(11) NOT NULL DEFAULT '0' COMMENT '文章外键', + `author` varchar(128) NOT NULL DEFAULT '' COMMENT '名字', + `company` varchar(256) NOT NULL DEFAULT '' COMMENT '单位', + `email` varchar(128) NOT NULL DEFAULT '' COMMENT '邮箱', + `address` varchar(256) NOT NULL DEFAULT '' COMMENT '地址', + `is_super` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否是第一作者0不是1是', + `is_report` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否通讯作者0否1是', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态0正常1删除' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章作者表'; + +-- +-- 转存表中的数据 `t_article_author` +-- + +INSERT INTO `t_article_author` (`art_aut_id`, `article_id`, `author`, `company`, `email`, `address`, `is_super`, `is_report`, `state`) VALUES +(1, 2, 'wangjinlei', 'tinajinkejidaxue', '13662001490@126.com', 'tianjinshibaodiqu', 1, 0, 0), +(2, 2, 'guanlianhua', 'tianjinligongdaxue', '13752113010@126.com', 'tianjinshibaodiqu', 0, 0, 0), +(3, 2, 'wangruoxi', 'tinajinshijinghaiqu', 'asdasd34a', '', 0, 0, 0), +(4, 2, 'zhangsanloisi', 'wangermazi1133', 'dsadsa1', '', 0, 0, 0), +(5, 3, 'wangjinlei', 'tinajinkejidaxue', '13662001490@126.com', 'tianjinshibaodiqu', 1, 0, 0), +(6, 3, 'guanlianhua', 'tianjinligongdaxue', '13752113010@126.com', 'tianjinshibaodiqu', 0, 0, 0), +(7, 3, 'wangruoxi', 'tinajinshijinghaiqu', '', '', 1, 0, 0), +(8, 3, 'zhangsanloisi', 'wangermazi', '', '', 0, 0, 1), +(9, 3, 'zhaosi', 'xiangyashancun1', '', '', 0, 0, 0), +(10, 2, 'knjnknjnk', '', '', '', 1, 0, 1), +(14, 7, 'dsadsa', 'dasdsa', '6541654@qq.com', 'dsadsada', 1, 0, 0), +(15, 8, '而我却二无', '额外企鹅', 'ewqe@163.com', '萨达', 1, 0, 0), +(16, 9, '而我却二无', '额外企鹅', 'ewqe@163.com', '萨达', 1, 0, 0), +(17, 10, '而我却二无', '额外企鹅', 'ewqe@163.com', '萨达', 1, 0, 0), +(18, 11, '多大事多撒', '的撒的撒', '54646@qq.com', '大萨达撒多', 1, 0, 0), +(19, 10, 'test2', '3213213213', '32132132@126.com', '撒大大', 0, 0, 0), +(20, 1, '大萨达撒', '大萨达撒多', 'dasdasdad@126.com', '你好', 1, 0, 0), +(21, 1, 'test2', '321321321', '321321@qq.com', '12312321', 0, 1, 0), +(22, 9, 'muname', 'dsadsa', '123331@163.com', '321321', 0, 0, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article_file` +-- + +CREATE TABLE `t_article_file` ( + `file_id` int(11) NOT NULL COMMENT '主键', + `article_id` int(11) NOT NULL DEFAULT '0' COMMENT '文章外键', + `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '上传者id', + `username` varchar(128) NOT NULL DEFAULT '' COMMENT '上传者account', + `file_url` varchar(128) NOT NULL DEFAULT '' COMMENT '文件url', + `type_name` varchar(128) NOT NULL DEFAULT '' COMMENT '类型名', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章资料表'; + +-- +-- 转存表中的数据 `t_article_file` +-- + +INSERT INTO `t_article_file` (`file_id`, `article_id`, `user_id`, `username`, `file_url`, `type_name`, `ctime`, `state`) VALUES +(1, 1, 1, 'wangjinlei', 'coverLetter/20200715\\74cbf0c8d36d64870fa014ad6a1dc450.docx', 'coverLetter', 1594778724, 0), +(2, 1, 1, 'wangjinlei', 'picturesAndTables/20200715\\4d7723530d7097413f23620c482906b6.rar', 'picturesAndTables', 1594778724, 0), +(3, 1, 1, 'wangjinlei', 'manuscirpt/20200715\\7817a882d2a0e09ed58db7f407798808.pdf', 'manuscirpt', 1594778724, 0), +(4, 1, 2, 'Liuxiaohui', 'coverLetter/20200715\\95306f3d19af07c02b0d098d7684e77e.doc', 'coverLetter', 1594778797, 0), +(5, 2, 1, 'wangjinlei', 'coverLetter/20200722/909c8054fb38f6de1217e7e7041c9d04.docx', 'coverLetter', 1595404412, 0), +(6, 2, 1, 'wangjinlei', 'picturesAndTables/20200722/9bacd1fe883b1a672bc8e74b24e3e882.rar', 'picturesAndTables', 1595404412, 0), +(7, 2, 1, 'wangjinlei', 'manuscirpt/20200722/a2425cd9b07e5508d1a31268a5c99058.doc', 'manuscirpt', 1595404412, 0), +(17, 7, 1, 'wangjinlei', 'coverLetter/20200727/433f3608b3181c6a299b9267f3971726.docx', 'coverLetter', 1595813183, 0), +(18, 7, 1, 'wangjinlei', 'picturesAndTables/20200727/7218db7067c10d522c1b636037f4af42.zip', 'picturesAndTables', 1595813183, 0), +(19, 7, 1, 'wangjinlei', 'manuscirpt/20200727/cd67d8e8f944b5f1589cceb8e1aa967c.pdf', 'manuscirpt', 1595813183, 0), +(20, 8, 1, 'wangjinlei', 'coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc', 'coverLetter', 1595813263, 0), +(21, 8, 1, 'wangjinlei', 'picturesAndTables/20200727/4097a73198023177768254078af52b02.rar', 'picturesAndTables', 1595813263, 0), +(22, 8, 1, 'wangjinlei', 'manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf', 'manuscirpt', 1595813263, 0), +(23, 9, 1, 'wangjinlei', 'coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc', 'coverLetter', 1595813263, 0), +(24, 9, 1, 'wangjinlei', 'picturesAndTables/20200727/4097a73198023177768254078af52b02.rar', 'picturesAndTables', 1595813263, 0), +(25, 9, 1, 'wangjinlei', 'manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf', 'manuscirpt', 1595813263, 0), +(26, 10, 1, 'wangjinlei', 'coverLetter/20200727/83091cf4f776612395a7c4ce9a007dce.doc', 'coverLetter', 1595813263, 0), +(27, 10, 1, 'wangjinlei', 'picturesAndTables/20200727/4097a73198023177768254078af52b02.rar', 'picturesAndTables', 1595813263, 0), +(28, 10, 1, 'wangjinlei', 'manuscirpt/20200727/1c52b74d5c0b586a7fc546a71c9a8dfd.pdf', 'manuscirpt', 1595813263, 0), +(29, 11, 1, 'wangjinlei', 'coverLetter/20200727/8b8a1a552dccb49dccfe00eed33d1e4c.docx', 'coverLetter', 1595813347, 0), +(30, 11, 1, 'wangjinlei', 'picturesAndTables/20200727/0037bfb9df85e9c07972c16601d8c142.rar', 'picturesAndTables', 1595813347, 0), +(31, 11, 1, 'wangjinlei', 'manuscirpt/20200727/549a74ff02bc5a782727c89dd35d22c0.pdf', 'manuscirpt', 1595813347, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article_msg` +-- + +CREATE TABLE `t_article_msg` ( + `msg_id` int(11) NOT NULL COMMENT '主键', + `article_id` int(11) NOT NULL DEFAULT '0' COMMENT '外键', + `content` varchar(1024) NOT NULL DEFAULT '' COMMENT '内容', + `state_from` tinyint(4) NOT NULL DEFAULT '0' COMMENT '原文章状态', + `state_to` tinyint(4) NOT NULL DEFAULT '0' COMMENT '转到的文章状态', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章信息表'; + +-- +-- 转存表中的数据 `t_article_msg` +-- + +INSERT INTO `t_article_msg` (`msg_id`, `article_id`, `content`, `state_from`, `state_to`, `ctime`, `state`) VALUES +(1, 1, 'thanks for you', 0, 1, 1594778774, 0), +(2, 3, '', 0, 1, 1595410731, 0), +(3, 2, 'thanks', 0, 1, 1595813449, 0), +(4, 7, 'thanks', 0, 1, 1595813782, 0), +(5, 7, 'sadsad', 1, 1, 1595830515, 0), +(6, 3, '', 1, 2, 1595831039, 0), +(7, 10, '', 0, 1, 1595831088, 0), +(8, 8, '', 0, 1, 1595834782, 0), +(9, 11, '', 0, 1, 1595834800, 0), +(10, 9, '', 0, 1, 1595834809, 0), +(11, 7, '', 1, 2, 1596178182, 0), +(12, 1, 'nbjksabdkjsadjksnkd', 1, 4, 1596185216, 0), +(13, 7, '1231321', 2, 4, 1596189724, 0), +(14, 7, '', 4, 5, 1596189792, 0), +(15, 7, '', 5, 3, 1596189895, 0), +(16, 7, '', 5, 3, 1596189895, 0), +(17, 7, '', 3, 3, 1596189896, 0), +(18, 7, '', 3, 4, 1596189931, 0), +(19, 2, 'mytests', 1, 4, 1596347628, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article_reviewer` +-- + +CREATE TABLE `t_article_reviewer` ( + `art_rev_id` int(11) NOT NULL COMMENT '主键', + `reviewer_id` int(11) NOT NULL DEFAULT '0' COMMENT '审核员id', + `article_id` int(11) NOT NULL DEFAULT '0' COMMENT '文章id', + `reviewer_act` tinyint(4) NOT NULL DEFAULT '0' COMMENT '审稿人是否有新操作0无1有', + `editor_act` tinyint(4) NOT NULL DEFAULT '0' COMMENT '编辑是否有新操作0无1有', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态:0审稿中1退修2拒稿3通过' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章审核表'; + +-- +-- 转存表中的数据 `t_article_reviewer` +-- + +INSERT INTO `t_article_reviewer` (`art_rev_id`, `reviewer_id`, `article_id`, `reviewer_act`, `editor_act`, `ctime`, `state`) VALUES +(1, 3, 1, 0, 0, 1594783420, 3), +(2, 4, 1, 0, 0, 1594783766, 0), +(3, 3, 7, 0, 1, 1596178182, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article_reviewer_file` +-- + +CREATE TABLE `t_article_reviewer_file` ( + `art_rev_file_id` int(11) NOT NULL COMMENT '主键', + `art_rev_id` int(11) DEFAULT '0' COMMENT '文章审核表id', + `up_user_id` int(11) NOT NULL DEFAULT '0' COMMENT '上传者id', + `up_username` varchar(64) NOT NULL DEFAULT '' COMMENT '上传者名', + `file_url` varchar(128) NOT NULL DEFAULT '' COMMENT '文件地址', + `type_name` varchar(32) NOT NULL DEFAULT '' COMMENT '文件类型', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '上传时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章审核文件表'; + +-- +-- 转存表中的数据 `t_article_reviewer_file` +-- + +INSERT INTO `t_article_reviewer_file` (`art_rev_file_id`, `art_rev_id`, `up_user_id`, `up_username`, `file_url`, `type_name`, `ctime`, `state`) VALUES +(1, 1, 3, 'guanjie', 'articlefile/20200717/f7363e147b8348906adf17577049c031.docx', 'articlefile', 1594976076, 0), +(2, 1, 3, 'guanjie', 'articlefile/20200720/13a6b559a7c8fe71abd4c773ea9008d5.docx', 'articlefile', 1595233023, 0), +(3, 1, 3, 'guanjie', 'articlezip/20200720/c8cbb9e0a88ffbc1b5945f5a42e073ce.rar', 'articlezip', 1595233023, 0), +(4, 1, 2, 'Liuxiaohui', 'articlefile/20200720/41c7694c6dfdabf834b9fb3c3aea3bf1.docx', 'articlefile', 1595233089, 0), +(5, 1, 2, 'Liuxiaohui', 'articlezip/20200720/93422705d0e89a581c3dc7db7bb269ae.zip', 'articlezip', 1595233089, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_article_reviewer_question` +-- + +CREATE TABLE `t_article_reviewer_question` ( + `rev_qu_id` int(11) NOT NULL COMMENT '主键', + `art_rev_id` int(11) NOT NULL DEFAULT '0' COMMENT '审稿表外键', + `qu1` tinyint(4) NOT NULL DEFAULT '0', + `qu2` tinyint(4) NOT NULL DEFAULT '0', + `qu3` tinyint(4) NOT NULL DEFAULT '0', + `qu4` tinyint(4) NOT NULL DEFAULT '0', + `qu5` tinyint(4) NOT NULL DEFAULT '0', + `qu6` tinyint(4) NOT NULL DEFAULT '0', + `qu7` tinyint(4) NOT NULL DEFAULT '0', + `qu8` tinyint(4) NOT NULL DEFAULT '0', + `qu9` tinyint(4) NOT NULL DEFAULT '0', + `qu9_contents` varchar(1024) NOT NULL DEFAULT '', + `qu10` tinyint(4) NOT NULL DEFAULT '0', + `qu10_contents` varchar(1024) NOT NULL DEFAULT '', + `qu11` tinyint(4) NOT NULL DEFAULT '0', + `qu11_contents` varchar(1024) NOT NULL DEFAULT '', + `qu12` tinyint(4) NOT NULL DEFAULT '0', + `qu12_contents` varchar(1024) NOT NULL DEFAULT '', + `qu13` tinyint(4) NOT NULL DEFAULT '0', + `qu13_contents` varchar(1024) NOT NULL DEFAULT '', + `qu14` tinyint(4) NOT NULL DEFAULT '0', + `qu14_contents` varchar(1024) NOT NULL DEFAULT '', + `qu15` tinyint(4) NOT NULL DEFAULT '0', + `qu15_contents` varchar(1024) NOT NULL DEFAULT '', + `rated` tinyint(4) NOT NULL DEFAULT '0', + `recommend` tinyint(4) NOT NULL DEFAULT '0', + `other` tinyint(4) NOT NULL DEFAULT '0', + `confidential` varchar(1024) NOT NULL DEFAULT '', + `comments` varchar(1024) NOT NULL DEFAULT '', + `ctime` int(10) NOT NULL DEFAULT '0', + `state` tinyint(4) NOT NULL DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审稿问题表'; + +-- +-- 转存表中的数据 `t_article_reviewer_question` +-- + +INSERT INTO `t_article_reviewer_question` (`rev_qu_id`, `art_rev_id`, `qu1`, `qu2`, `qu3`, `qu4`, `qu5`, `qu6`, `qu7`, `qu8`, `qu9`, `qu9_contents`, `qu10`, `qu10_contents`, `qu11`, `qu11_contents`, `qu12`, `qu12_contents`, `qu13`, `qu13_contents`, `qu14`, `qu14_contents`, `qu15`, `qu15_contents`, `rated`, `recommend`, `other`, `confidential`, `comments`, `ctime`, `state`) VALUES +(1, 1, 2, 3, 2, 2, 2, 2, 2, 2, 0, '', 1, 'mytest suggestions', 1, '', 1, '', 1, '', 1, '', 1, '', 7, 1, 1, '13312', 'testtest', 0, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_journal` +-- + +CREATE TABLE `t_journal` ( + `journal_id` int(11) NOT NULL COMMENT '主键', + `title` varchar(256) NOT NULL DEFAULT '' COMMENT '标题', + `issn` varchar(128) NOT NULL DEFAULT '' COMMENT '期刊编号', + `alias` varchar(32) NOT NULL DEFAULT '' COMMENT '别名', + `editor_id` int(11) NOT NULL DEFAULT '0' COMMENT '编辑id', + `email` varchar(128) NOT NULL DEFAULT '' COMMENT '邮箱', + `epassword` varchar(32) NOT NULL DEFAULT '' COMMENT '邮箱密码', + `website` varchar(128) NOT NULL DEFAULT '' COMMENT '跳转的网站地址', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='期刊'; + +-- +-- 转存表中的数据 `t_journal` +-- + +INSERT INTO `t_journal` (`journal_id`, `title`, `issn`, `alias`, `editor_id`, `email`, `epassword`, `website`, `state`) VALUES +(1, 'Traditional Medicine Research', '2413-3973', '18', 2, 'tmr@tmrjournals.com', 'Wu999999tm', 'https://www.tmrjournals.com/tmr', 0), +(2, 'TMR Cancer', '2538-015X', '137', 2, 'tmrcancer@tmrjournals.com', 'Wu999999tmrcance', 'https://www.tmrjournals.com/cancer', 0), +(3, 'TMR Integrative Nursing', '2522-6371', '131', 2, 'tmrin@tmrjournals.com', 'Wu999999tmri', 'https://www.tmrjournals.com/in', 0), +(4, 'Asian Toxicology Research', '2703-1853', '130', 2, 'atr@tmrjournals.com', 'Wu999999at', 'https://www.tmrjournals.com/atr', 0), +(5, 'Drug Combination Therapy', '2624-3075', '126', 2, 'dct@tmrjournals.com', 'Wu999999dc', 'https://www.tmrjournals.com/dct', 0), +(6, 'Food Therapy and Health Care', '2624-2656', '127', 0, 'foodhealth@tmrjournals.com', 'Wu999999food', 'https://www.tmrjournals.com/fthc', 0), +(7, 'Gastroenterology & Hepatology Research', '2703-173X', '136', 0, 'ghr@tmrjournals.com', 'Wu999999gh', 'https://www.tmrjournals.com/ghr', 0), +(8, 'History & Philosophy of Medicine', '2624-4888', '124', 0, 'hpmed@tmrjournals.com', 'Wu999999hpme', 'https://www.tmrjournals.com/hpm', 0), +(9, 'Life Research', '2624-0548', '128', 0, 'liferes@tmrjournals.com', 'Wu999999lifere', 'https://www.tmrjournals.com/lr', 0), +(10, 'Medical Data Mining', '2624-1587', '121', 0, 'mdm@tmrjournals.com', 'Wu999999md', 'https://www.tmrjournals.com/mdm', 0), +(11, 'Precision Medicine Research', '2624-3474', '129', 0, 'pmr@tmrjournals.com', 'Wu999999pm', 'https://www.tmrjournals.com/pmr', 0), +(12, 'Psychosomatic Medicine Research', '2624-3687', '125', 0, 'psmr@tmrjournals.com', 'Wu999999psm', 'https://www.tmrjournals.com/psmr', 0), +(13, 'TMR Aging', '2624-4810', '134', 0, 'tmraging@tmrjournals.com', 'Wu999999tmragin', 'https://www.tmrjournals.com/aging', 0), +(14, 'TMR Clinical Research', '2624-1196', '123', 0, 'tcr@tmrjournals.com', 'Wu999999tc', 'https://www.tmrjournals.com/tcr', 0), +(15, 'TMR Integrative Medicine', '2521-3415', '133', 0, 'tmrim@tmrjournals.com', 'Wu999999tmri', 'https://www.tmrjournals.com/im', 0), +(16, 'TMR Modern Herbal Medicine', '2537-9798', '135', 2, 'tmrmhm@tmrjournals.com', 'Wu999999tmrmh', 'https://www.tmrjournals.com/mhm', 0), +(17, 'TMR Non-Drug Therapy', '2538-0583', '132', 0, 'tmrnd@tmrjournals.com', 'Wu999999tmrn', 'https://www.tmrjournals.com/ndt', 0), +(18, 'TMR Theory and Hypothesis', '2538-130X', '122', 2, 'tmrtheory@tmrjournals.com', 'Wu999999tmrtheor', 'https://www.tmrjournals.com/th', 0), +(19, 'Tumor Microenvironment Research', '2703-1950', '119', 0, 'tmer@tmrjournals.com', 'Wu999999tme', 'https://www.tmrjournals.com/tmer', 0), +(20, 'Infectious Diseases Research', '2703-4631', '36', 0, 'idr@tmrjournals.com', 'Wu999999id', 'https://www.tmrjournals.com/idr', 0), +(21, '经典中医研究', '2624-2532', '120', 2, 'ccmr@tmrjournals.com', 'Wu999999ccm', 'https://www.tmrjournals.com/ccmr', 0), +(22, '你好', '2413-3939', '', 0, '', '', '', 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_reviewer_major` +-- + +CREATE TABLE `t_reviewer_major` ( + `major_id` int(11) NOT NULL COMMENT '主键', + `title` varchar(128) NOT NULL DEFAULT '' COMMENT '标题', + `ctitle` varchar(128) NOT NULL DEFAULT '' COMMENT '中文标题', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核员专业'; + +-- +-- 转存表中的数据 `t_reviewer_major` +-- + +INSERT INTO `t_reviewer_major` (`major_id`, `title`, `ctitle`, `state`) VALUES +(1, 'Allergology', '变态反应', 0), +(2, 'Alternative Medicine', '替代医学', 0), +(3, 'Cardiology', '心脏学', 0), +(4, 'Dentistry', '牙科', 0), +(5, 'Dermatology', '皮肤科', 0), +(6, 'Endocrinology', '内分泌', 0), +(7, 'Epidemiology', '流行病学', 0), +(8, 'Gastroenterology', '消化内科', 0), +(9, 'Health Management', '健康管理', 0), +(10, 'immunology', '免疫学', 0), +(11, 'Medicine', '医学', 0), +(12, 'Nursing', '护理学', 0), +(13, 'Obstetrics and Gynecology', '妇产科', 0), +(14, 'Oncology', '肿瘤科', 0), +(15, 'Ophthalmology', '眼科', 0), +(16, 'Pathology', '病理学', 0), +(17, 'Pediatrics', '儿科', 0), +(18, 'Pharmacology', '药理', 0), +(19, 'Psychiatry', '精神病学', 0), +(20, 'Radiology/Imaging', '放射科/影像', 0), +(21, 'Rehabilitation Sciences', '康复治疗学', 0), +(22, 'Rheumatology', '风湿科', 0), +(23, 'Surgery', '外科', 0), +(24, 'Rheumatology', '风湿科', 0), +(25, 'Surgery', '外科', 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_reviewer_to_journal` +-- + +CREATE TABLE `t_reviewer_to_journal` ( + `rtj_id` int(11) NOT NULL COMMENT '主键', + `reviewer_id` int(11) NOT NULL DEFAULT '0' COMMENT '审核员id', + `journal_id` int(11) NOT NULL DEFAULT '0' COMMENT '期刊id', + `account` varchar(128) NOT NULL DEFAULT '' COMMENT '审核员name', + `journal_title` varchar(128) NOT NULL DEFAULT '' COMMENT '期刊title', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核员-期刊链接表'; + +-- +-- 转存表中的数据 `t_reviewer_to_journal` +-- + +INSERT INTO `t_reviewer_to_journal` (`rtj_id`, `reviewer_id`, `journal_id`, `account`, `journal_title`, `ctime`, `state`) VALUES +(1, 3, 1, 'guanjie', 'Traditional Medicine Research', 1594779233, 0), +(2, 4, 1, 'testtest1', 'Traditional Medicine Research', 1594783649, 0), +(3, 5, 1, 'testtest2', 'Traditional Medicine Research', 1594869746, 0), +(4, 6, 1, 'mytest3', 'Traditional Medicine Research', 1595594361, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_user` +-- + +CREATE TABLE `t_user` ( + `user_id` int(10) UNSIGNED NOT NULL COMMENT '主键', + `account` varchar(128) NOT NULL DEFAULT '' COMMENT '账号', + `password` char(32) NOT NULL DEFAULT '' COMMENT '密码(md5)', + `email` varchar(128) NOT NULL DEFAULT '' COMMENT '邮箱', + `phone` varchar(64) NOT NULL DEFAULT '' COMMENT '电话', + `nickname` varchar(64) NOT NULL DEFAULT '' COMMENT '昵称', + `realname` varchar(128) NOT NULL DEFAULT '' COMMENT '真实姓名', + `icon` varchar(256) NOT NULL DEFAULT '' COMMENT '头像图片地址', + `type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '用户类型1作者(审稿人)2编辑', + `is_reviewer` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否是审稿人', + `orcid` varchar(64) NOT NULL DEFAULT '' COMMENT '科学家编码', + `last_login_ip` varchar(64) NOT NULL DEFAULT '' COMMENT '最后登录ip', + `last_login_time` int(10) NOT NULL DEFAULT '0' COMMENT '最后登陆时间', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `stime` int(10) NOT NULL DEFAULT '0' COMMENT '左后操作时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态0正常1封号' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; + +-- +-- 转存表中的数据 `t_user` +-- + +INSERT INTO `t_user` (`user_id`, `account`, `password`, `email`, `phone`, `nickname`, `realname`, `icon`, `type`, `is_reviewer`, `orcid`, `last_login_ip`, `last_login_time`, `ctime`, `stime`, `state`) VALUES +(1, 'wangjinlei', '7ffb98a17e55c2696c79ad3c63e00f38', '13662001490@126.com', '13662001490', '', '王金磊', '', 1, 0, '', '127.0.0.1', 1596334570, 1594777709, 0, 0), +(2, 'Liuxiaohui', '7ffb98a17e55c2696c79ad3c63e00f38', '1252086715@qq.com', '15620058864', '', 'Liuxiaohui', '', 2, 0, '', '127.0.0.1', 1596436715, 1594778324, 0, 0), +(3, 'guanjie', '7ffb98a17e55c2696c79ad3c63e00f38', '751475802@qq.com', '', '', 'guanjie', '', 1, 1, '', '127.0.0.1', 1596103717, 1594779233, 0, 0), +(4, 'testtest1', 'e9f5c5240c0bb39488e6dbfbdb1517e0', 'eqweqwe@gmail.com', '', '', 'testtest1', '', 1, 1, '', '', 0, 1594783649, 0, 0), +(5, 'testtest2', 'e9f5c5240c0bb39488e6dbfbdb1517e0', 'fdsfdsfa@qq.com', '', '', 'testtest2', '', 1, 1, '', '', 0, 1594869746, 0, 0), +(6, 'mytest3', 'e9f5c5240c0bb39488e6dbfbdb1517e0', '13266544785@163.com', '', '', 'mytest3', '', 1, 1, '', '', 0, 1595594361, 0, 0), +(7, 'pipi', 'e16e56c27bc07f373129e4c333d0102e', 'tmr@tmrjournals.com', '15704601021', '', 'pinuoxi', '', 1, 0, '', '192.168.1.108', 1595843354, 1595829667, 0, 0), +(8, 'gail wang', '7ffb98a17e55c2696c79ad3c63e00f38', 'wangjinleizhang2@163.com', '13662001490', '', 'gail', '', 1, 0, '', '127.0.0.1', 1596074254, 1596074244, 0, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_user_act` +-- + +CREATE TABLE `t_user_act` ( + `act_id` int(11) NOT NULL COMMENT '主键', + `act_key` varchar(32) NOT NULL DEFAULT '' COMMENT '操作key', + `type` varchar(16) NOT NULL DEFAULT '' COMMENT '操作类型', + `param` varchar(256) NOT NULL DEFAULT '' COMMENT '参数', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '时间戳', + `state` tinyint(4) DEFAULT '0' COMMENT '状态0初始1用过' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户隐性操作中间表'; + +-- +-- 转存表中的数据 `t_user_act` +-- + +INSERT INTO `t_user_act` (`act_id`, `act_key`, `type`, `param`, `ctime`, `state`) VALUES +(1, '88bdca15f22d67c249950fdfc6c8b30d', 'retrieve', '{\"email\":\"751475802@qq.com\"}', 1594779338, 1); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_user_log` +-- + +CREATE TABLE `t_user_log` ( + `log_id` int(11) NOT NULL COMMENT '主键', + `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id', + `type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0上传文章1编辑文章2添加文章审稿3更新文章审稿', + `content` varchar(512) NOT NULL DEFAULT '' COMMENT '内容', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='日志表'; + +-- +-- 转存表中的数据 `t_user_log` +-- + +INSERT INTO `t_user_log` (`log_id`, `user_id`, `type`, `content`, `ctime`) VALUES +(1, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:mytest,上传时间是:2020-07-15 10:05:25', 1594778725), +(2, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(mytest)的状态,更改时间是:2020-07-15 10:06:15', 1594778775), +(3, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:mytest,上传时间是:2020-07-15 10:06:37', 1594778797), +(4, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:myarticle,上传时间是:2020-07-22 15:53:33', 1595404413), +(5, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:myarticle,上传时间是:2020-07-22 15:54:52', 1595404492), +(6, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:15:11', 1595409311), +(7, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:17:04', 1595409424), +(8, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:17:18', 1595409438), +(9, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:19:06', 1595409546), +(10, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(myarticle)的状态,更改时间是:2020-07-22 17:38:52', 1595410732), +(11, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:41:51', 1595410911), +(12, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:48:22', 1595411302), +(13, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:54:19', 1595411659), +(14, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:54:35', 1595411675), +(15, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:54:46', 1595411686), +(16, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:57:56', 1595411876), +(17, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 17:58:06', 1595411886), +(18, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 18:00:44', 1595412044), +(19, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 18:00:50', 1595412050), +(20, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-22 18:00:57', 1595412057), +(21, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-23 11:11:15', 1595473875), +(22, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-23 11:12:05', 1595473925), +(23, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-23 11:13:27', 1595474007), +(24, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-23 11:43:07', 1595475787), +(25, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:myarticle,时间是:2020-07-23 11:47:55', 1595476075), +(29, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:大萨达撒多,上传时间是:2020-07-27 09:26:24', 1595813184), +(30, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:额外翁二无群,上传时间是:2020-07-27 09:27:44', 1595813264), +(31, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:额外翁二无群,上传时间是:2020-07-27 09:27:44', 1595813264), +(32, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:额外翁二无群,上传时间是:2020-07-27 09:27:44', 1595813264), +(33, 1, 0, 'wangjinlei(王金磊),上传了一篇文章:安达市大所,上传时间是:2020-07-27 09:29:08', 1595813348), +(34, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(myarticle)的状态,更改时间是:2020-07-27 09:30:50', 1595813450), +(35, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(大萨达撒多)的状态,更改时间是:2020-07-27 09:36:23', 1595813783), +(36, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:大萨达撒多,时间是:2020-07-27 09:38:57', 1595813937), +(37, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(myarticle)的状态,更改时间是:2020-07-27 14:24:00', 1595831040), +(38, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(额外翁二无群)的状态,更改时间是:2020-07-27 14:24:49', 1595831089), +(39, 1, 1, 'wangjinlei(王金磊),修改了一篇文章:额外翁二无群,时间是:2020-07-27 15:08:29', 1595833709), +(40, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(额外翁二无群)的状态,更改时间是:2020-07-27 15:26:23', 1595834783), +(41, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(安达市大所)的状态,更改时间是:2020-07-27 15:26:41', 1595834801), +(42, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(额外翁二无群)的状态,更改时间是:2020-07-27 15:26:50', 1595834810), +(43, 2, 2, 'Liuxiaohui(Liuxiaohui),添加了一个文章审稿实例:(大萨达撒多-----guanjie),添加时间是:2020-07-31 14:49:43', 1596178183), +(44, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(mytest)的状态,更改时间是:2020-07-31 16:46:57', 1596185217), +(45, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(大萨达撒多)的状态,更改时间是:2020-07-31 18:02:05', 1596189725), +(46, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(大萨达撒多)的状态,更改时间是:2020-07-31 18:03:13', 1596189793), +(47, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(大萨达撒多)的状态,更改时间是:2020-07-31 18:04:56', 1596189896), +(48, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(大萨达撒多)的状态,更改时间是:2020-07-31 18:04:56', 1596189896), +(49, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(大萨达撒多)的状态,更改时间是:2020-07-31 18:05:32', 1596189932), +(50, 2, 1, 'Liuxiaohui(Liuxiaohui),更改了一篇文章:(myarticle)的状态,更改时间是:2020-08-02 13:53:49', 1596347629); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_user_msg` +-- + +CREATE TABLE `t_user_msg` ( + `user_msg_id` int(11) NOT NULL COMMENT '主键', + `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id', + `content` varchar(256) NOT NULL DEFAULT '' COMMENT '内容', + `url` varchar(128) NOT NULL DEFAULT '' COMMENT '链接地址', + `looked` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否被看0未被查看1已看', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户消息表'; + +-- +-- 转存表中的数据 `t_user_msg` +-- + +INSERT INTO `t_user_msg` (`user_msg_id`, `user_id`, `content`, `url`, `looked`, `ctime`, `state`) VALUES +(1, 2, '您有新的待审文章', '/articleDetailEditor?id=7', 0, 1595813184, 1), +(2, 2, '您有新的待审文章', '/articleDetailEditor?id=8', 0, 1595813264, 1), +(3, 2, '您有新的待审文章', '/articleDetailEditor?id=9', 0, 1595813264, 1), +(4, 2, '您有新的待审文章', '/articleDetailEditor?id=10', 0, 1595813264, 1), +(5, 2, '您有新的待审文章', '/articleDetailEditor?id=11', 0, 1595813348, 1), +(6, 1, '文章有新动态,文章(myarticle)', '/articleDetail?id=2', 0, 1595813450, 1), +(7, 1, '文章有新动态,文章(大萨达撒多)', '/articleDetail?id=7', 0, 1595813783, 1), +(8, 2, '文章有新动态,文章(大萨达撒多)', '/articleDetailEditor?id=7', 0, 1595813937, 1), +(9, 2, '新增审稿人申请,申请人(dongxunrui)', '/reviewerApplyDetail?id=5', 0, 1595817905, 1), +(10, 1, '文章有新动态,文章(myarticle)', '/articleDetail?id=3', 0, 1595831040, 1), +(11, 1, '文章有新动态,文章(额外翁二无群)', '/articleDetail?id=10', 0, 1595831089, 1), +(12, 2, '文章有新动态,文章(额外翁二无群)', '/articleDetailEditor?id=8', 0, 1595833709, 1), +(13, 1, '文章有新动态,文章(额外翁二无群)', '/articleDetail?id=8', 0, 1595834783, 0), +(14, 1, '文章有新动态,文章(安达市大所)', '/articleDetail?id=11', 0, 1595834801, 0), +(15, 1, '文章有新动态,文章(额外翁二无群)', '/articleDetail?id=9', 0, 1595834810, 1), +(16, 2, '有新文章更新了作者信息', 'articleDetailEditor?id=1', 0, 1595835439, 1), +(17, 2, '有新文章更新了作者信息', 'articleDetailEditor?id=9', 0, 1595836433, 1), +(18, 2, '有新文章更新了作者信息', 'articleDetailEditor?id=1', 0, 1595837735, 1), +(19, 2, '新增审稿人申请,申请人(asdsadads)', '/reviewerApplyDetail?id=6', 0, 1595990101, 1), +(20, 2, '新增审稿人申请,申请人(sdadsadasd)', '/reviewerApplyDetail?id=7', 0, 1596080166, 1), +(21, 2, 'Manuscript authors be changed,please contact the author to confirm.', 'articleDetailEditor?id=1', 0, 1596095921, 1), +(22, 3, '您有新的待审稿文章', '/reviewerArticleDetail?id=3', 0, 1596178183, 0), +(23, 1, 'Your manuscript has new process: mytest', '/articleDetail?id=1', 0, 1596185217, 1), +(24, 1, 'Your manuscript has new process: 大萨达撒多', '/articleDetail?id=7', 0, 1596189725, 0), +(25, 1, 'Your manuscript has new process: 大萨达撒多', '/articleDetail?id=7', 0, 1596189793, 0), +(26, 1, 'Your manuscript has new process: 大萨达撒多', '/articleDetail?id=7', 0, 1596189896, 1), +(27, 1, 'Your manuscript has new process: 大萨达撒多', '/articleDetail?id=7', 0, 1596189896, 1), +(28, 1, 'Your manuscript has new process: 大萨达撒多', '/articleDetail?id=7', 0, 1596189932, 1), +(29, 1, 'Your manuscript has new process: myarticle', '/articleDetail?id=2', 0, 1596347629, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_user_reviewer_apply` +-- + +CREATE TABLE `t_user_reviewer_apply` ( + `reviewer_id` int(11) NOT NULL COMMENT '主键', + `journal_id` int(11) NOT NULL DEFAULT '0' COMMENT '期刊表外键', + `name` varchar(64) NOT NULL DEFAULT '' COMMENT '姓名', + `gender` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1男2女', + `technical` varchar(128) NOT NULL DEFAULT '' COMMENT '职称', + `country` varchar(64) NOT NULL DEFAULT '' COMMENT '国家', + `introduction` varchar(2048) NOT NULL DEFAULT '' COMMENT '个人简介', + `email` varchar(64) NOT NULL DEFAULT '' COMMENT '邮箱', + `company` varchar(128) NOT NULL DEFAULT '' COMMENT '单位', + `major` varchar(64) NOT NULL DEFAULT '' COMMENT '专业', + `field` varchar(64) NOT NULL DEFAULT '' COMMENT '领域', + `qualifications` varchar(128) NOT NULL DEFAULT '' COMMENT '资质', + `ctime` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态0初始1通过2驳回' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核员申请表'; + +-- +-- 转存表中的数据 `t_user_reviewer_apply` +-- + +INSERT INTO `t_user_reviewer_apply` (`reviewer_id`, `journal_id`, `name`, `gender`, `technical`, `country`, `introduction`, `email`, `company`, `major`, `field`, `qualifications`, `ctime`, `state`) VALUES +(1, 1, 'guanjie', 1, 'Assistant Prof.', 'china', 'this is my introduction', '751475802@qq.com', '华西医院', '4', '牙龈护理', 'reviewer/20200715\\2e795e938c34ac69c3f8b800fec711c8.zip', 1594779204, 1), +(2, 1, 'testtest1', 1, 'Ph.D.', 'china', '我是很厉害的医生哦,选择我是没错的', 'eqweqwe@gmail.com', '华西医院', '4', '洗牙', 'reviewer/20200715\\a24a39430b32d9aa7d99e86e993a94f3.zip', 1594783561, 1), +(3, 1, 'testtest2', 1, 'Associate Prof.', 'china', 'adsadasd', 'fdsfdsfa@qq.com', 'tegenolge', '4', 'sdadasdas', 'reviewer/20200716\\e7753f71945298e93687c840cc014bbf.rar', 1594869737, 1), +(4, 1, 'mytest3', 2, 'Assistant Prof.', 'china', 'dhjasvjvdsvjh', '13266544785@163.com', 'dsdsadsa', '1', 'dsadsa', 'reviewer/20200724/d1fb8e88706d90f0f82924ec8ec977f6.zip', 1595559599, 1), +(5, 1, 'dongxunrui', 2, 'Associate Prof.', 'china', 'dsad ', '751475802@qq.com', '的撒的撒', '4', '修复', 'reviewer/20200727/caf3204d72b6ae3b50754915a519d488.zip', 1595817905, 0), +(6, 1, 'asdsadads', 1, 'Assistant Prof.', 'china', '的撒的撒', '1654@qq.com', 'dsadsd', '1', 'dsadsa', 'reviewer/20200729/125461c938627e59c8db44528612b307.rar', 1595990101, 0), +(7, 1, 'sdadsadasd', 1, 'Prof.', 'dsadas', 'dsadsa', 'dsadsa@126.com', 'china', '3', 'dsad', 'reviewer/20200730/b46090ea5ecfd5ddbe4e01ddb96b90f1.rar', 1596080166, 0); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `t_user_reviewer_info` +-- + +CREATE TABLE `t_user_reviewer_info` ( + `reviewer_info_id` int(11) NOT NULL COMMENT '主键', + `reviewer_id` int(11) NOT NULL DEFAULT '0' COMMENT '审核员id', + `gender` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1男2女', + `technical` varchar(64) NOT NULL DEFAULT '' COMMENT '职称', + `country` varchar(64) NOT NULL DEFAULT '' COMMENT '国家', + `introduction` varchar(1024) NOT NULL DEFAULT '' COMMENT '简介', + `company` varchar(128) NOT NULL DEFAULT '' COMMENT '单位', + `major` int(11) NOT NULL DEFAULT '0' COMMENT '专业', + `field` varchar(128) NOT NULL DEFAULT '' COMMENT '领域', + `qualifications` varchar(256) NOT NULL DEFAULT '' COMMENT '资质url', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='审核员附加表'; + +-- +-- 转存表中的数据 `t_user_reviewer_info` +-- + +INSERT INTO `t_user_reviewer_info` (`reviewer_info_id`, `reviewer_id`, `gender`, `technical`, `country`, `introduction`, `company`, `major`, `field`, `qualifications`, `state`) VALUES +(1, 3, 1, 'Assistant Prof.', 'china', 'this is my introduction', '华西医院', 4, '牙龈护理', 'reviewer/20200715/2e795e938c34ac69c3f8b800fec711c8.zip', 0), +(2, 4, 1, 'Ph.D.', 'china', '我是很厉害的医生哦,选择我是没错的', '华西医院', 4, '洗牙', 'reviewer/20200715/a24a39430b32d9aa7d99e86e993a94f3.zip', 0), +(3, 5, 1, 'Associate Prof.', 'china', 'adsadasd', 'tegenolge', 4, 'sdadasdas', 'reviewer/20200716/e7753f71945298e93687c840cc014bbf.rar', 0), +(4, 6, 2, 'Assistant Prof.', 'china', 'dhjasvjvdsvjh', 'dsdsadsa', 1, 'dsadsa', 'reviewer/20200724/d1fb8e88706d90f0f82924ec8ec977f6.zip', 0); + +-- +-- 转储表的索引 +-- + +-- +-- 表的索引 `t_admin` +-- +ALTER TABLE `t_admin` + ADD PRIMARY KEY (`admin_id`); + +-- +-- 表的索引 `t_article` +-- +ALTER TABLE `t_article` + ADD PRIMARY KEY (`article_id`); + +-- +-- 表的索引 `t_article_author` +-- +ALTER TABLE `t_article_author` + ADD PRIMARY KEY (`art_aut_id`); + +-- +-- 表的索引 `t_article_file` +-- +ALTER TABLE `t_article_file` + ADD PRIMARY KEY (`file_id`); + +-- +-- 表的索引 `t_article_msg` +-- +ALTER TABLE `t_article_msg` + ADD PRIMARY KEY (`msg_id`); + +-- +-- 表的索引 `t_article_reviewer` +-- +ALTER TABLE `t_article_reviewer` + ADD PRIMARY KEY (`art_rev_id`); + +-- +-- 表的索引 `t_article_reviewer_file` +-- +ALTER TABLE `t_article_reviewer_file` + ADD PRIMARY KEY (`art_rev_file_id`); + +-- +-- 表的索引 `t_article_reviewer_question` +-- +ALTER TABLE `t_article_reviewer_question` + ADD PRIMARY KEY (`rev_qu_id`); + +-- +-- 表的索引 `t_journal` +-- +ALTER TABLE `t_journal` + ADD PRIMARY KEY (`journal_id`); + +-- +-- 表的索引 `t_reviewer_major` +-- +ALTER TABLE `t_reviewer_major` + ADD PRIMARY KEY (`major_id`); + +-- +-- 表的索引 `t_reviewer_to_journal` +-- +ALTER TABLE `t_reviewer_to_journal` + ADD PRIMARY KEY (`rtj_id`); + +-- +-- 表的索引 `t_user` +-- +ALTER TABLE `t_user` + ADD PRIMARY KEY (`user_id`); + +-- +-- 表的索引 `t_user_act` +-- +ALTER TABLE `t_user_act` + ADD PRIMARY KEY (`act_id`); + +-- +-- 表的索引 `t_user_log` +-- +ALTER TABLE `t_user_log` + ADD PRIMARY KEY (`log_id`); + +-- +-- 表的索引 `t_user_msg` +-- +ALTER TABLE `t_user_msg` + ADD PRIMARY KEY (`user_msg_id`); + +-- +-- 表的索引 `t_user_reviewer_apply` +-- +ALTER TABLE `t_user_reviewer_apply` + ADD PRIMARY KEY (`reviewer_id`); + +-- +-- 表的索引 `t_user_reviewer_info` +-- +ALTER TABLE `t_user_reviewer_info` + ADD PRIMARY KEY (`reviewer_info_id`); + +-- +-- 在导出的表使用AUTO_INCREMENT +-- + +-- +-- 使用表AUTO_INCREMENT `t_admin` +-- +ALTER TABLE `t_admin` + MODIFY `admin_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `t_article` +-- +ALTER TABLE `t_article` + MODIFY `article_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=12; + +-- +-- 使用表AUTO_INCREMENT `t_article_author` +-- +ALTER TABLE `t_article_author` + MODIFY `art_aut_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=23; + +-- +-- 使用表AUTO_INCREMENT `t_article_file` +-- +ALTER TABLE `t_article_file` + MODIFY `file_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=32; + +-- +-- 使用表AUTO_INCREMENT `t_article_msg` +-- +ALTER TABLE `t_article_msg` + MODIFY `msg_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=20; + +-- +-- 使用表AUTO_INCREMENT `t_article_reviewer` +-- +ALTER TABLE `t_article_reviewer` + MODIFY `art_rev_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=4; + +-- +-- 使用表AUTO_INCREMENT `t_article_reviewer_file` +-- +ALTER TABLE `t_article_reviewer_file` + MODIFY `art_rev_file_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=6; + +-- +-- 使用表AUTO_INCREMENT `t_article_reviewer_question` +-- +ALTER TABLE `t_article_reviewer_question` + MODIFY `rev_qu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `t_journal` +-- +ALTER TABLE `t_journal` + MODIFY `journal_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=23; + +-- +-- 使用表AUTO_INCREMENT `t_reviewer_major` +-- +ALTER TABLE `t_reviewer_major` + MODIFY `major_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=26; + +-- +-- 使用表AUTO_INCREMENT `t_reviewer_to_journal` +-- +ALTER TABLE `t_reviewer_to_journal` + MODIFY `rtj_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=5; + +-- +-- 使用表AUTO_INCREMENT `t_user` +-- +ALTER TABLE `t_user` + MODIFY `user_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=9; + +-- +-- 使用表AUTO_INCREMENT `t_user_act` +-- +ALTER TABLE `t_user_act` + MODIFY `act_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `t_user_log` +-- +ALTER TABLE `t_user_log` + MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=51; + +-- +-- 使用表AUTO_INCREMENT `t_user_msg` +-- +ALTER TABLE `t_user_msg` + MODIFY `user_msg_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=30; + +-- +-- 使用表AUTO_INCREMENT `t_user_reviewer_apply` +-- +ALTER TABLE `t_user_reviewer_apply` + MODIFY `reviewer_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=8; + +-- +-- 使用表AUTO_INCREMENT `t_user_reviewer_info` +-- +ALTER TABLE `t_user_reviewer_info` + MODIFY `reviewer_info_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', AUTO_INCREMENT=5; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/public/static/.gitignore b/public/static/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/public/static/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/public/totalpage/20200909/1ef84592d0110a48f912a2d816605951.docx b/public/totalpage/20200909/1ef84592d0110a48f912a2d816605951.docx new file mode 100644 index 0000000..41ba529 Binary files /dev/null and b/public/totalpage/20200909/1ef84592d0110a48f912a2d816605951.docx differ diff --git a/public/totalpage/20200909/7339fde8c03b93da8fe60e746a7cba21.docx b/public/totalpage/20200909/7339fde8c03b93da8fe60e746a7cba21.docx new file mode 100644 index 0000000..41ba529 Binary files /dev/null and b/public/totalpage/20200909/7339fde8c03b93da8fe60e746a7cba21.docx differ diff --git a/public/totalpage/20200909/87f34ee342db85bd1241091844dd26c6.docx b/public/totalpage/20200909/87f34ee342db85bd1241091844dd26c6.docx new file mode 100644 index 0000000..69b486d Binary files /dev/null and b/public/totalpage/20200909/87f34ee342db85bd1241091844dd26c6.docx differ diff --git a/public/totalpage/20200910/ebf9ea7e0794ccd7302ce0e98610ad01.docx b/public/totalpage/20200910/ebf9ea7e0794ccd7302ce0e98610ad01.docx new file mode 100644 index 0000000..69b486d Binary files /dev/null and b/public/totalpage/20200910/ebf9ea7e0794ccd7302ce0e98610ad01.docx differ diff --git a/public/totalpage/20200921/4d19cc9ba89db317aa7c23a872be7773.docx b/public/totalpage/20200921/4d19cc9ba89db317aa7c23a872be7773.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/totalpage/20200921/4d19cc9ba89db317aa7c23a872be7773.docx differ diff --git a/public/totalpage/20200921/ba4fd214cbfacf95419da202e8440898.docx b/public/totalpage/20200921/ba4fd214cbfacf95419da202e8440898.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/totalpage/20200921/ba4fd214cbfacf95419da202e8440898.docx differ diff --git a/public/totalpage/20200921/c2ccc6cec5cfa5026c2aacfa24cf54d9.docx b/public/totalpage/20200921/c2ccc6cec5cfa5026c2aacfa24cf54d9.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/totalpage/20200921/c2ccc6cec5cfa5026c2aacfa24cf54d9.docx differ diff --git a/public/totalpage/20200921/d37d150a655b345836c2a707988fbb54.docx b/public/totalpage/20200921/d37d150a655b345836c2a707988fbb54.docx new file mode 100644 index 0000000..41ba529 Binary files /dev/null and b/public/totalpage/20200921/d37d150a655b345836c2a707988fbb54.docx differ diff --git a/public/totalpage/20200921/d77326916fa397535696849f1b64b7ec.docx b/public/totalpage/20200921/d77326916fa397535696849f1b64b7ec.docx new file mode 100644 index 0000000..382a29e Binary files /dev/null and b/public/totalpage/20200921/d77326916fa397535696849f1b64b7ec.docx differ diff --git a/public/totalpage/20200921/e3616198b8025093c64a98a46d85b8e5.docx b/public/totalpage/20200921/e3616198b8025093c64a98a46d85b8e5.docx new file mode 100644 index 0000000..44eed60 Binary files /dev/null and b/public/totalpage/20200921/e3616198b8025093c64a98a46d85b8e5.docx differ diff --git a/public/totalpage/20200922/e98af42d583ad062cf73d67fe905a654.docx b/public/totalpage/20200922/e98af42d583ad062cf73d67fe905a654.docx new file mode 100644 index 0000000..69b486d Binary files /dev/null and b/public/totalpage/20200922/e98af42d583ad062cf73d67fe905a654.docx differ diff --git a/public/totalpage/20200925/c22a56a4e26b37ec98bc948a6b3e3715.doc b/public/totalpage/20200925/c22a56a4e26b37ec98bc948a6b3e3715.doc new file mode 100644 index 0000000..ec15b44 Binary files /dev/null and b/public/totalpage/20200925/c22a56a4e26b37ec98bc948a6b3e3715.doc differ diff --git a/runtime/.gitignore b/runtime/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/runtime/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/think b/think new file mode 100644 index 0000000..4e2688f --- /dev/null +++ b/think @@ -0,0 +1,17 @@ +#!/usr/bin/env php + +// +---------------------------------------------------------------------- + +// 定义项目路径 +define('APP_PATH', __DIR__ . '/application/'); + +// 加载框架引导文件 +require __DIR__.'/thinkphp/console.php';