Skip to content

Latest commit

 

History

History
579 lines (393 loc) · 19.8 KB

README.md

File metadata and controls

579 lines (393 loc) · 19.8 KB

VJ Admin 1.3.6

系统介绍

其主要特性包括:

  • 功能的自动生成(完全应对包括有文件上传这样的功能)
  • 清晰的架构,志在减少代码的重复
  • 完善的基础功能(让开发变得更加便捷)
  • 文件引用化,大量减少服务器垃圾文件
  • CURL 请求封装,使使用门槛降到最低
  • 集成邮件发送功能(需要在系统选项中配置相关项)
  • 集成短信发送功能(使用阿里云的短信服务SMS,同样需要在系统选项中配置相关项)
  • 集成二维码生成功能,只需要调用相应的API即可,后面有详细介绍
  • 集成Excel表格的导入导出
  • 集成手势验证码功能
  • 集成验证码功能(TP5自带和系统提供二选一)
  • 集成图片处理功能(TP5自带)
  • 集成数据库迁移功能(TP5自带)
  • 集成Socket,Angular,时间操作等等许多功能(TP5自带)
  • 后续会继承大量常用功能(包括微信,PHPWord等)

运行环境要求PHP5.6以上。

对tp5不了解,可以参考开发文档 ThinkPHP5完全开发手册

交流群

开发过程中有什么问题可以进群交流,群号:645422792

演示地址

http://vjadmin.ixiaopeng.cn

用户名:youke

密码:123456

版本升级

  • 1.3.0 改进代码自动生成机制,使能满足90%以上的需求。
  • 1.3.1 新增文件管理功能,针对NEditor这种对上传文件限制很宽松而导致垃圾文件的弊端。
  • 1.3.2 新增手势验证码功能。
  • 1.3.3 ThinkPHP框架升级为5.0.13。
  • 1.3.4 完善权限控制逻辑,完善菜单生成等其他功能的bug。
  • 1.3.5 修复多字段字典多关联模型代码生成bug,优化Base类中钩子方法的执行顺序。
  • 1.3.6 ThinkPHP框架升级为5.0.14。

开发规范

  • 模块名称统一使用小写加下划线(多个单词用下划线分割)
  • 控制器名称在定义php类文件时使用驼峰命名,在使用时,比如地址栏输入小写加下划线的形式
  • 方法名称统一使用驼峰命名,(以小写字母开头)
  • index代表列表页面(对应的方法为index方法),update代表添加和修改页面(对应的方法为add和edit方法),del代表删除方法,detail代表详情方法
  • 返回数据统一使用Base类中提供的handleJson方法,即一般调用方式$this->handleJson(状态码,信息,是否关闭当前对话框或者tab页面,其他信息)
  • 返回状态码:0->失败,1->成功,2->session超时,需要重新登录

目录结构

本系统目录结构如下:

www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─common                 应用公共函数目录
│  |  ├─common.php          应用公共函数文件
│  │
│  ├─admin                  admin模块目录
│  │  ├─common              模块公用函数(可选)
│  │  ├─config              模块配置文件目录(可选)
│  │  |  ├─config.php       模块配置文件
│  │  ├─extra               拓展配置文件目录(可选)
│  │  ├─controller          控制器目录
│  │  ├─model               模型目录
│  │  ├─view                视图目录
│  │  └─validate            验证器目录
│  │
│  ├─base                   base模块目录
│  |  ├─controller          控制器目录
│  |  |  ├─Base.php         base控制器文件
│  |  ├─model               模型目录
│  |  |  ├─Base.php         base模型文件
│  |  ├─validate            验证器目录
│  |  |  ├─Base.php         base验证器文件
│  │
│  ├─business               business业务模块(其中的目录结构省略,根据你的需求来定模块,business只是Demo)
│  |  ├─controller          控制器目录
│  |  ├─model               模型目录
│  |  ├─validate            验证器目录
│  |  ├─view                验证器目录
│  │
│  ├─common                 应用公共函数目录
│  |  ├─common.php          公共常用函数
│  |  ├─curl.php            对extend中的CUrl类库的进一步封装函数
│  |  ├─excel.php           对excel表格导入导出的封装函数
│  |  ├─qrcode.php          对二维码生成的封装函数
│  |  ├─sendmail.php        对发送邮件的封装函数
│  |  ├─sendmsg.php         对发送短信的封装函数
│  |  ├─system.php          系统使用的封装函数
│  |  └─upload.php          对上传文件封装的函数
│  │
│  ├─config                 应用配置目录
│  |  ├─config.php          应用配置文件
│  |  ├─route.php           应用路由配置文件
│  |  ├─tags.php            应用行为扩展定义文件
│  |  └─database.php        应用数据库配置文件
│  │
│  ├─extra                  应用其他配置目录
│  |  ├─qr_code_config.php  二维码生成配置文件
│  |  ├─send_mail_config.php发送邮件的部分(不常变)配置文件(其余配置在系统选项中配置)
│  |  └─send_msg_config.php 发送短信的部分(不常变)配置文件(其余配置在系统选项中配置)
│  │
│  ├─template               菜单自动生成模板目录
│  |  ├─Controller.vj       控制器模板文件
│  |  ├─Model.vj            模型模板文件
│  |  ├─Validate.vj         验证器模板文件
│  |  ├─index.vj            功能首页模板文件
│  |  └─udpate.vj           功能添加修改模板文件
│
├─backup                    数据库备份sql文件存放目录
|
├─extend                    扩展类库目录
|  ├─Aliyun                 阿里云短信服务类库
|  ├─cn                     cn扩展类库目录
|  |  ├─ixiaopeng           ixiaopeng扩展类库目录
|  |  |  ├─backup           备份扩展类库目录
|  |  |  |  └─Backup.php    备份类库文件
|  |  |  ├─curl             客户端url类库目录
|  |  |  |  └─CUrl.php      curl封装类库文件
|  |  |  ├─verify           验证码类库目录
│  |  |  |  ├─font          字体文件目录
|  |  |  |  |  └─1.ttf      字体文件
|  |  |  |  └─VerifyCode.php验证码生成类(TP5给我们提供了验证码类库,这个可选择性使用)
|  ├─phpexcel               PHPExcel类库
|  └─phpqrcode              PHPQRCode类库
│  
├─public                    WEB目录(对外访问目录)
│  ├─generator              网站生成文件目录(例如验证码的生成会放在该目录)
│  ├─static                 网站静态资源目录(里面有很多静态资源,这里省略)
│  ├─uploads                网站上传文件目录
│  │  ├─files               上传的文件存放目录(除图片以外的文件)
│  │  └─images              上传的图片存放目录
│  ├─index.php              入口文件
│  ├─router.php             快速测试文件
│  └─.htaccess              用于apache的重写
│  
├─thinkphp                  框架系统目录
│  ├─lang                   语言文件目录
│  ├─library                框架类库目录
│  │  ├─think               Think类库包目录
│  │  └─traits              系统Trait目录
│  │
│  ├─tpl                    系统模板目录
│  ├─base.php               基础定义文件
│  ├─console.php            控制台入口文件
│  ├─convention.php         框架惯例配置文件
│  ├─helper.php             助手函数文件
│  ├─phpunit.xml            phpunit配置文件
│  └─start.php              框架入口文件
|
├─runtime                   应用的运行时目录(可写,可定制)
├─vendor                    第三方类库目录(Composer依赖库)
├─build.php                 自动生成定义文件(参考)
├─composer.json             composer 定义文件
├─LICENSE.txt               授权说明文件
├─README.md                 README 文件
├─think                     命令行入口文件

注意:模块目录比较全的结构请参照admin模块

系统使用

系统中的admin模块里面有Demo控制器,Demo模型,Demo验证器的示例,里面注释详细,使用简介,一看即会。 注意,配置好环境之后,系统会自动生成数据库中的表和数据,在此之前,一定要在应用config目录中的database.php中提前配置好您的数据库信息。

系统公用函数库API的使用

1.getManagerId

作用:获取session中保存的managerId

参数:无

返回值:integer 管理员ID

使用:调用例子:$id = getManagerId();

2.getUUID

作用:生成唯一的字符串,常用于文件上传后的文件名等

参数:无

返回值:string UUID 唯一字符串

使用:调用例子:$uuid = getUUID();

3.uploadImage

作用:上传图片

参数:string 图片引用名字(也就是前台表单中的name值)

返回值:int|string 成功返回int类型的图片记录的id,失败返回错误信息字符串 这个id也就是系统中SysFile表中的id值

使用:调用例子:

$res = uploadImage($name); // $name 为前台表单的name属性值
if (is_integer($res)) { // 也可以使用is_string()先判断上传失败的情况
    // 上传成功
    ...
} else {
    // 上传失败 此事$res为失败的原因字符串
    ...
}

4.uploadFile

作用:上传文件

参数:string 文件引用名字(也就是前台表单中的name值),string 文件允许的后缀(默认为空,不限制)(多个后缀以英文逗号分隔)

返回值:int|string 成功返回int类型的图片记录的id,失败返回错误信息字符串 这个id也就是系统中SysFile表中的id值

使用:调用例子:

$res = uploadFile($name); // $name 为前台表单的name属性值
if (is_integer($res)) { // 也可以使用is_string()先判断上传失败的情况
    // 上传成功
    ...
} else {
    // 上传失败 此事$res为失败的原因字符串
    ...
}

5.fileRefsInc

作用:文件引用计数加1

参数:integer 文件对应的id

返回值:bool|string 成功返回true,错误返回错误信息

使用:调用例子:fileRefsInc($fileId);

注意:一般来说该API不需用用户来调用,由上传图片和文件的函数内部调用

6.fileRefsDec

作用:文件引用计数减1

参数:integer 文件对应的id

返回值:bool|string 成功返回true,错误返回错误信息

使用:调用例子:fileRefsDec($fileId);

注意:一般来说该API不需用用户来调用,由上传图片和文件的函数内部调用

7.castToArray

作用:将模型对象或模型对象数组转为纯数组

参数:array<\think\Model> | \think\Model 模型对象数组或者模型对象

返回值:无

使用:调用例子:castToArray($data);

8.getMeaningsOfFieldValues

作用:获取字段字典字段值含义的数组

参数:string 表名,string 字段名

返回值:array 数组(数组每一项包含两个键值value和meaning)

使用:调用例子:$arr = getMeaningsOfFieldValues($tableName, $fieldName);

9.getFieldValues

作用:获取某一字段的所有可取的值

参数:string 表名,string 字段名

返回值:array 字段值数组

使用:调用例子:$arr = getFieldValues($tableName, $fieldName);

10.getFieldValuesStr

作用:将某一字段可取的值连接为字符串

参数:string 表名,string 字段名,string 分隔符(默认为英文逗号)

返回值:string 连接后的字符串

使用:调用例子:$str = getFieldValuesStr($tableName, $fieldName, ','); // 以逗号连接

11.getTableNameOfPrefixWithCStyle

作用:根据驼峰式模型名获取C风格加表前缀的表名

参数:string 驼峰式模型名

返回值:string C风格并且加表前缀的表名

使用:调用例子:$str = getTableNameOfPrefixWithCStyle('SysManager'); // 得到 vj_sys_manager

12.toCStyle

作用:将字符串转为C风格形式(xxx_xxx)

参数:string 待转字符串

返回值:string C风格字符串

使用:调用例子:$str = toCStyle('HelloWorld'); // 得到 hello_world

13.toJavaStyle

作用:将字符串转为Java风格形式(驼峰式 XxxXxx)

参数:string 待转字符串

返回值:string Java风格字符串

使用:调用例子:$str = toCStyle('hello_world'); // 得到 HelloWorld

14.getFileUrl

作用:获取文件地址

参数:integer 文件id,bool 是否使用绝对路径(默认为false)

返回值:string 文件的url地址

使用:调用例子:$url = getFileUrl($fileId); // 连接域名的默认为false

15.getSysOption

作用:获取系统选项的值

参数:string 系统选项名

返回值:string 系统选项的值

使用:调用例子:$value = getSysOption($name);

16.qrCode

作用:生成二维码

参数:string 待生成的字符串,bool 是否返回错误字符串(默认为false)

返回值:bool|string 返回false、生成二维码的url绝对地址或者错误字符串(取决于第二个参数)

使用:调用例子:

$qrUrl = qrCode($text);
if ($qrUrl !== false) {
   // 生成二维码成功 $qrUrl为二维码的绝对路径url(默认保存在/public/generator/*.png)
   // 生成二维码的配置项在app目录下面的extra目录中的qr_code_config.php中
   ...
} else {
   // 生成二维码失败,可以通过设置第二个参数为true查看失败原因
}

17.sendMail

作用:发送邮件

参数:string|array 目的邮件地址(为数组时表示有多个收件人),string 邮件主题,string 邮件内容,string 当对方邮件系统不支持html显示时显示的内容,可选,array 这是可选的抄送或密送选项,还有附件

返回值:bool|string 成功返回true,否则返回失败的原因字符串

使用:调用例子:

$res = sendMail([
   'xxxxxxx1@qq.com',
   'xxxxxxx2@qq.com',
   'xxxxxxx3@qq.com'
   ], '你好,世界', "<h1>这是一个强大的HelloWorld邮件!</h1>", '', [
   'attachment' => [
       '附件.zip' => getFileUrl(14, true)
   ]
]));
if ($res === true) {
   // 发送邮件成功
   ...
} else {
   // 发送邮件失败,$res此时是个字符串,记录了失败的原因
}

注意:邮件的配置在extra目录下的send_mail_config.php中。(鉴于其可变性)大部分配置项不是在配置文件中,而是在系统选项中。

18.getJson

作用:get方法请求接口,返回json数据

参数:string 请求地址,array 请求参数,array 其它配置项(默认为空数组)

返回值:array 返回json字符串解析的数组

使用:$arr = getJson(url, [param => value]);

19.postJson

作用:post方法请求接口,返回json数据

参数:string 请求地址,array 请求参数,array 其它配置项(默认为空数组)

返回值:array 返回json字符串解析的数组

使用:$arr = postJson(url, [field => value]);

20.sendSM

作用:发送短信

参数:string 短信签名,string 短信模板Code,string 手机号码,array 模板参数(可选)

返回值:bool|string 成功返回true,失败返回失败原因

使用:$res = sendSM(短信签名, 短信模板Code, 手机号码, [参数名 => 参数值]);

注意:短信发送需要阿里云的AccessKeyId和AccessKeySecret,使用时需要去申请。(鉴于其可变性)大部分配置项不是在配置文件中,而是在系统选项中。

21.sendSMCode

作用:发送短信验证码(快捷版)

参数:string 手机号码

返回值:bool|string 成功返回true,失败返回失败原因

使用:$res = sendSMCode(手机号码);

注意:模板Code和短信签名是要提前在系统选项中进行配置的

22.generateCode

作用:生成n位(n >= 1)数字验证码

参数:integer 数字个数(默认为6)

返回值:integer n位验证码

使用:$code = generateCode(6);

23.querySMDetails

作用:短信发送记录查询

参数:string 手机号码,string 发送日期(例:20171114),integer 每页显示的数量(默认为10),integer 当前页数(默认为1),string 短信发送流水号(可选)

返回值:stdClass|string 成功返回信息对象,失败则返回失败原因

使用:$res = querySMDetails(手机号码,发送日期);

23.humanTime

作用:将日期时间转换为对人类更友善的显示方式

参数:string|integer 字符串类型的日期时间格式或者整型类型的时间戳

返回值:string 返回更人性化和直观的时间显示方式(例:1秒前,2分钟前,3小时前,4天前),超过七天就直接显示日期时间

使用:$str = humanTime('2017-11-14 22:22:11');

23.getDeviceType

作用:获取请求设备的类型

参数:无

返回值:string 返回other表示其他,返回ios表示苹果,返回android表示安卓

使用:$device = getDeviceType();

24.createExcel

作用:生成Excel表格

参数:array 表格数据,string 文件名(可带后缀可不带,默认是为data),string excel文件类型(支持xls、xlsx、csv,默认为xlsx),integer 表格字体大小(默认为12),bool 是否解析换行(例:\n,默认为false)

返回值:file 直接返回生成的文件(直接下载)

使用:

createExcel([
    ['name', 'value', 'age'],
    ['name1', 'value1', 'age1'],
    ['name2', 'value2', 'age2'],
    ['name3', 'value3', 'age3'],
    ['name4', 'value4', 'age4'],
    ['name5', 'value5', 'age5']
], 'info', 'xlsx', '14', false);
// 将生成info.xlsx的excel文件(浏览器中会提示下载)

25.parseExcel

作用:解析excel文件

参数:string 文件全路径(绝对路径)

返回值:array 返回解析后的数据

使用:

// 支持解析xlsx、xls以及csv格式的文件
// 注意,如果文件无效或者不存在会返回空数组
$arr = parseExcel('D:\\info.xlsx');
// 数组中保存着数据

注意:如果excel文件中有多个Sheet,那么数组中第一维会以Sheet名为键值,其中的数据数组为键值。如果只有一个Sheet,那么就直接是这个Sheet里面的数据数组

26.extractImgUrls

作用:匹配给定文本中的所有图片的地址

参数:string 给定的文本

返回值:array 返回给定文本中的图片地址数组

使用:$arr = extractImgUrls($content);

系统extend提供的功能类使用

1.CUrl类

作用:用来模拟网络请求的,抓取网络数据(这是一个静态工具类,使用时不需要实例化)

方法:

  • public static function execute ($method, $url, array $fields = [], array $config = []);

$method 为请求方法

$url 为请求的URL地址

$fields 为传递的请求参数

$config 为其他配置选项,默认如下:

$_config = [
    'userAgent' => '',
    'httpHeaders' => [],
    'username' => '',
    'password' => ''
];
  • public static function post ($url, array $fields, array $config = []);

$url 为请求的URL地址

$fields 为传递的请求参数

$config 为其他配置选项,配置项同execute方法

  • public static function get ($url, array $fields, array $config = []);

$url 为请求的URL地址

$fields 为传递的请求参数(地址参数)

$config 为其他配置选项,配置项同execute方法