后端 - 后台开发文档

0、环境要求

操作系统:Windows/Linux
PHP:5.6+
MySql:5.6+

1、创建管理员

A、添加对应的菜单列表

B、创建需要的部门,例如:技术部、司机部等

C、创建需要分配权限菜单的角色

D、创建需要的岗位,例如:技术部经理、实习生等,一个岗位可关联多个角色

E、创建管理员,系统最多只能同时存在3个超级管理员

2、模板中如何进行权限判断

在模板文件中,使用下列方式即可判断权限显示对应的菜单:

{if condition="$adminController->vif('控制器','方法')"} {/if}

3、数据库管理

出于安全考虑,当前系统只支持数据库表详情查看功能

4、添加操作日志记录

在控制器中使用$this->addLog();添加操作日志,参数如下:

/**
* 记录操作日志
 * @param string $type   操作类型
 * @param string $title  详细描述
 * @param int    $status 操作状态 1|2|3 成功|失败|异常
 * @param bool   $model  是否需要重定向回上一页
 * @return 无
*/
public function addLog($type, $title, $status, $model=true){

}

5、验证当前管理员地区权限

在控制器中使用$this->regionVif();验证地区权限,参数如下:

/**
 * 验证是否拥有地区访问权限
 * @param int $id 地区ID
 * @return bool
*/
public function regionVif($id = ''){

}

6、获取当前管理员地区权限列表

在控制器中使用$this->regionGet();拉取地区权限,该方法不需要传参:

/**
 * 拉取地区访问权限
 * @return bool|string
*/
public function regionGet(){

}

7、调用短信发送接口

在控制器中使用\sms\Sms::run(手机号, 短信内容)发送短信,该方法需要传参:

/**
 * 调用发送接口
 * @param string $phone 接收短信手机号集合,多个用逗号分隔
 * @param mixed $param 短信变量内容,就是你短信模板里的{},多个用,逗号隔开
 * @return string|bool
*/
public static function run($phone, $param) {

}
当返回值为true时,表示发送成功
当返回值为string时,为发送失败的原因
当返回值为false时,表示后台关闭了发送短信设置

8、调用邮件发送接口

在控制器中使用\email\Email::run(邮箱, 邮件标题, 邮件内容)发送邮件,该方法需要传参:

/**
 * 发送邮件
 * @param string $email 邮件人邮箱,多个使用,逗号隔开
 * @param string $title 邮件标题
 * @param string $html 邮件内容
 * @return string|bool
*/
public static function run($email, $title, $html) {

}
当返回值为true时,表示发送成功
当返回值为string时,为发送失败的原因

9、七牛云OSS存储接口

七牛云相关接口,是一整套图片相关操作的SDK,可以组合成自己想要的功能:

1、获取文件大小限制

在控制器中直接使用\qiniu\Qiniu::get_size()

/**
 * 获得限制大小
 * @return int
*/
public static function get_size(){

}
返回值为字节数

2、获取文件类型限制

在控制器中直接使用\qiniu\Qiniu::get_type()

/**
 * 获得限制类型
 * @return string
*/
public static function get_type(){
    
}
返回值为后台设置的限制类型

3、是否开启七牛云存储

在控制器中直接使用\qiniu\Qiniu::get_status()

/**
 * 获得开启状态
 * @return int
*/
public static function get_status(){

}
返回值0,关闭
返回值1,开启

4、是否开启图片压缩

在控制器中直接使用\qiniu\Qiniu::get_zip()

/**
 * 获得压缩状态
 * @return int
*/
public static function get_zip(){

}
返回值0,关闭
返回值1,开启

5、压缩图片

在控制器中使用\qiniu\Qiniu::image_png_size_add(图片路径, 压缩后保存路径)进行图片压缩,该方法需要传参:

/**
 * 压缩本地图片
 * @param string $imgsrc 图片路径  
 * @param string $imgdst 压缩后保存路径  
 * @return void
*/
public static function image_png_size_add($imgsrc,$imgdst){  

}
没有返回值

6、七牛云:上传文件

在控制器中使用\qiniu\Qiniu::put(图片路径, 七牛云保存的文件名)进行七牛云文件上传,该方法需要传参:

/**
 * 上传七牛云图片
 * @param string $filePath 要上传文件的本地路径
 * @param string $key 上传到七牛后保存的文件名
 * @return string|bool
*/
public static function put($filePath, $key){

}
当返回值为true时,表示删除成功
当返回值为false时,发送失败或后台已经关闭七牛云启用设置

7、七牛云:删除文件

在控制器中使用\qiniu\Qiniu::delete(图片路径)进行七牛云文件删除,该方法需要传参:

/**
 * 删除七牛云图片
 * @param string $filePath 图片地址
 * @return bool
*/
public static function delete($filePath){

}
当返回值为true时,表示删除成功
当返回值为false时,发送失败或后台已经关闭七牛云启用设置

10、微信开发接口

JunAMS基于官方SDK封装了一套微信开发的相关接口,可以直接使用官方提供的功能,也可以自定义组合成自己想要的功能:

在使用微信开发API前,请先到API参数管理中设置相关参数,再进行调用。

1、Token认证

官方提供了的默认认证地址为/admin.php/common/token_vif,如果你想自定义认证,也可以调用\weixin\Weixin::token_vif(),该方法返回bool值。

2、自动文本回复

官方提供了的默认的自动回复功能,但只支持文本回复,程序处理地址为/admin.php/common/token_vif,如果你想自定义认证,也可以调用\weixin\Weixin类里的方法进行组合开发。

注意:默认情况下,官方的自动回复功能是关闭的,需要在API参数管理中进行开启。

3、更新自定义菜单

官方提供了的默认的菜单更新功能,在API参数管理中可以进行点击更新,如果你想自定义菜单更新功能,可以调用\weixin\Weixin::save_menu()方法,该方法成功返回true,失败返回错误原因。

注意:该方法读取的是config表中的weixin_menu字段内容进行菜单更新,所以在自定义调用前,请先更新表中的字段内容。

4、拉取自定义菜单

官方提供了的默认的菜单拉取功能,在API参数管理中可以进行点击拉取,如果你想自定义菜单拉取功能,可以调用\weixin\Weixin::get_menu()方法,该方法成功返回菜单JSON,失败返回{}

5、删除自定义菜单

官方提供了的默认的菜单删除功能,在API参数管理中可以进行点击删除,如果你想自定义菜单删除功能,可以调用\weixin\Weixin::delete_menu()方法,该方法返回bool值。

6、写入日志

调用\weixin\Weixin::add_log( 一个一维数组自定义内容,是否记录系统错误信息)写入微信日志文件,该方法传参比较特殊,例如:。

\weixin\Weixin::add_log([
    '微信认证处理',
    '加密签名'=>$signature,
    '时间戳'=>$timestamp,
    '随机数'=>$nonce,
    '随机字符串'=>$echoStr,
], true);

注意:默认情况下,日志文件是追加记录方式,如果需要切换日志模式,可以在API参数管理中进行设置。

7、自定义开发

JunAMS提供了强大便捷的微信API类库,如果需要自定义功能的开发者们,可以参考/extend/weixin/Weixin.php类文件中的各个方法,再灵活组合使用。

8、创建二维码

调用方法为\weixin\Weixin::get_qrcode(二维码参数, 二维码的类型),该方法返回获取二维码的URL,直接放入src中即可。

/**
* 创建微信二维码
* @todo 注意:不是支付二维码
* @param string $val 二维码参数
* @param mixed $type 二维码的类型  1|2|3  =  临时|永久|永久的字符串参数值
* @return string 二维码的url
*/
public static function get_qrcode($val, $type = 1) {

}

9、长连接转换

调用方法为\weixin\Weixin::get_shorturl(链接地址),该方法返回false为失败,成功返回短连接。

/**
* 长链接转短链接接口
* @todo 无
* @param string $long_url 长链接转短链接
* @return string|bool
*/
public static function get_shorturl($long_url) {

}

10、更改行业信息

调用方法为\weixin\Weixin::save_industry(所属行业编码1, 所属行业编码2),该方法成功返回true,失败返回微信msg。

/**
* 更改行业信息
* @todo 无
* @param string $str_1 所属行业编码
* @param mixed $str_2 所属行业编码
* @return string|bool
*/
public static function save_industry($str_1=1, $str_2=2){

}

11、获得模板ID

调用方法为\weixin\Weixin::get_template(模板库中模板的编号),该方法成功返回模板ID,失败返回false

/**
* 获得模板ID
* @todo 无
* @param string $mid 模板库中模板的编号
* @return string|bool
*/
public static function get_template($mid) {

}

12、发送消息模板

调用方法为\weixin\Weixin::send_msg(用户的微信ID, 模板ID, 点击跳转到的详情地址, 模板消息内容),该方法成功返回微信msgid,失败返回false

/**
* 发送消息模板
* @todo 无
* @param string $open_id 用户的微信ID
* @param string $mid get_template()返回的模板ID
* @param string $url 模板消息中,需要点击跳转到的详情地址
* @param json  $data 模板消息内容,具体格式参考微信开发文档
* @return string|bool
*/
public static function send_msg($open_id, $mid, $url, $data){

}

13、生成网页登录授权链接

调用方法为\weixin\Weixin::wx_login(回调地址,附加自定义参数不能为空),该方法成功返回一个URL地址,用于重定向微信授权。

/**
* 生成网页登录授权链接
* @todo 无
* @param string $url 授权后重定向的回调链接地址
* @param string $state 自己定义的参数,具体看微信开发手册
* @return string
*/
public static function wx_login($url, $state=1){

}

14、根据code去获取特殊access_token

调用方法为\weixin\Weixin::get_code_token(授权后返回的code参数默认自动获取),该方法成功返回一维数组,失败返回false

/**
* 根据code去获取特殊access_token
* @todo 无
* @param string $code 授权后返回的code参数
* @return array|bool
*/
public static function get_code_token($code=''){

}

15、根据凭据,更新特殊access_token

调用方法为\weixin\Weixin::save_code_token(更新凭据),该方法成功返回一维数组,失败返回false

/**
* 根据凭据,更新特殊access_token
* @todo 注意,在get_code_token()中并没有返回refresh_token参数,所以需要自行修改代码获取
* @param string $refresh_token 在get_code_token()中的更新凭据
* @return array|bool
*/
public static function save_code_token($refresh_token){

}

16、获取用户信息

调用方法为\weixin\Weixin::get_user(特殊access_token, 微信OpenID),该方法成功返回一维数组,失败返回false

/**
* 获取用户信息
* @todo 无
* @param string $token 特殊access_token
* @param string $open_id 用户的OpenId
* @return array|bool 微信用户的基本信息
*/
public static function get_user($token, $open_id){

}

17、完整的登录案例代码(控制器中的代码)

# 以下为控制器中的测试方法
public function test(){
    # 生成跳转链接 - 使用生成的链接放到微信浏览器中跳转
    dump(\weixin\Weixin::wx_login('http://tim.junphp.com/admin.php/common/test2'));
}
public function test2(){
    # 获取token
    $token = \weixin\Weixin::get_code_token();
    # 获取用户信息
    dump(\weixin\Weixin::get_user($token['access_token'], $token['openid']));
}

18、获取用户列表

调用方法为\weixin\Weixin::get_user_list(第一个拉取的微信OpenID),该方法成功返回多维数组,失败返回false

/**
* 获取用户列表
* @todo 无
* @param string $open_id 第一个拉取的OPENID,不填默认从头开始拉取
* @return array|bool
*/
public static function get_user_list($open_id=null) {

}

19、设置用户的备注名

调用方法为\weixin\Weixin::save_remark(微信OpenID, 设置的备注名),该方法成功返回true,失败返回false

/**
* 设置用户的备注名
* @todo 无
* @param string $open_id 用户的OpenId
* @param string $remark 设置的备注名
* @return bool
*/
public static function save_remark($open_id, $remark) {

}

20、JSAPI支付

微信的JSAPI支付需要依赖3个接口,才能成功挑起,分别为:统一下单、生成JS支付参数、生成收货地址JS参数,具体的使用方法如下:

$order = \weixin\Weixin::jsapi(
    '我是商品描述',
    '我是附加信息',
    '100.15'
);
dump($order);
# 将这个给JS发起支付
$jsApiParameters = \weixin\Weixin::GetJsApiParameters($order);
dump($jsApiParameters);

# 获取共享收货地址js函数参数
$editAddress = \weixin\Weixin::GetEditAddressParameters();
dump($editAddress);

# 注意如果提示url参数错误,请检查后台API参数设置,与微信支付平台域名、目录绑定等设置是否有错。

/**
* 生成JSAPI需要的json参数
* @todo 无
* @param string $Body 商品描述
* @param string $attach 附加数据
* @param string $total_fee 商品金额,单位是:分
* @param string $trade_no 商品订单号,要具有唯一性,默认是时间戳
* @param string $goods_tag 商品代金券说明
* @return void JSAPI需要的参数
*/
public static function jsapi($body, $attach, $total_fee, $trade_no=null, $goods_tag='no'){
    # 注意如果$trade_no为空,则使用当前时间戳
}

21、二维码支付:模式一

调用方法为\weixin\Weixin::qrpay_1(商品ID),该方法成功返回一段二维码URL,失败弹出错误报告。注意:获得url后,要使用\weixin\Weixin::qrcode(支付URL)生成二维码。

/**
* 微信二维码支付:模式一
* @todo 注意:二维码要使用Weixin::qrcode()生成
* @param string $productId 商品ID
* @return string 返回二维码链接
*/
public static function qrpay_1($productId) {

}

# 案例如下:
\weixin\Weixin::qrcode(\weixin\Weixin::qrpay_1("123456789"));

22、二维码支付:模式二

调用方法为\weixin\Weixin::qrpay_2(与JSAPI支付参数一致),该方法成功返回一段二维码URL,失败则返回false。注意:获得url后,要使用\weixin\Weixin::qrcode(支付URL)生成二维码。

/**
* 微信二维码支付:模式二
* @todo 注意:二维码要使用Weixin::qrcode()生成
* @param string $Body 商品描述
* @param string $attach 附加数据
* @param string $total_fee 商品金额,单位是:分
* @param string $product_id 商品ID
* @param string $trade_no 商品订单号,要具有唯一性,默认是时间戳
* @param string $goods_tag 商品代金券说明
* @return string|bool 返回二维码链接
*/
public static function qrpay_2($body, $attach, $total_fee, $product_id, $trade_no=null, $goods_tag='no'){

}

# 案例如下:
\weixin\Weixin::qrcode(\weixin\Weixin::qrpay_2(
    '我是商品描述',
    '我是附加信息',
    '100.15',
    "123456789"
));

23、查询订单

调用方法为\weixin\Weixin::get_wx_order(微信系统订单号,商户自定义单号)

/**
* 查询微信支付订单
* @todo 无
* @param string $transaction_id 微信系统订单号
* @param string $out_trade_no 商户自定义单号
* @return void 查询到的订单信息
*/
public static function get_wx_order($transaction_id='', $out_trade_no=''){

}

# 注意,由于微信支付过期了,该方法还没验证是否无错

24、申请退款

调用方法为\weixin\Weixin::out_wx_order(订单总金额, 退款金额, 微信系统订单号, 商户自定义单号)

/**
* 微信支付订单申请退款
* @todo 退款金额不能大于订单总额,如果调用时出现CURL错误,请参考这个网址进行解决: http://blog.csdn.net/Hiking_Tsang/article/details/52667781
* @param string $total_fee 订单总金额
* @param string $refund_fee 退款金额
* @param string $transaction_id 微信系统订单号 二选一 优先
* @param string $out_trade_no 商户自定义单号 二选一 次级
* @return void 退款返回值
*/
public function out_wx_order($total_fee, $refund_fee, $transaction_id='', $out_trade_no=''){

}

# 注意,由于微信支付过期了,该方法还没验证是否无错

25、查询退款

调用方法为\weixin\Weixin::get_out_wx_order(微信退款单号, 微信系统订单号, 商户自定义单号, 商户退款单号)

/**
* 微信支付订单退款查询
* @todo 四个参数只需要填写一个,其余为空即可
* @param string $refund_id 微信退款单号 一级
* @param string $transaction_id 微信系统订单号 二级
* @param string $out_trade_no 商户自定义单号 三级
* @param string $out_refund_no 商户退款单号 四级
* @return void 查询返回值 $data['result_code'] SUCCESS 申请成功
*              退款状态: $data['refund_status_$n'] $n一般为0 ,SUCCESS|FAIL|PROCESSING|CHANGE    退款成功|退款失败|退款处理中|转入代发
*              CHANGE|转入代发 退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,资金回流到商户的现金帐号,需要商户人工干预,通过线下或者财付通转账的方式进行退款。
*/
public function get_out_wx_order($refund_id='', $transaction_id='', $out_trade_no='', $out_refund_no=''){

}

# 注意,由于微信支付过期了,该方法还没验证是否无错

26、下载微信支付对账单

调用方法为\weixin\Weixin::download_order(对账单日期时间, 对账单类型)

/**
* 下载微信支付对账单
* @todo 无
* @param string $time 对账单日期时间:精确到日 20170227
* @param string $type 对账单类型:ALL|SUCCESS|REFUND|REVOKED 所有订单|成功支付订单|退款订单|撤销订单
* @return array 一个三维数组,top是table的表题值,body是内容值
*/
public function download_order($time, $type='ALL'){

}

# 注意,由于微信支付过期了,该方法还没验证是否无错

11、微信浏览器检测域名屏蔽

调用\org\Iswx::run(域名)进行屏蔽检测,未屏蔽返回true,已被屏蔽返回false

12、免费快递查询

调用/kuaidi/Express::run(快递单号,中文快递公司)进行快递查询。
注意1:不填快递公司时,将自动识别快递公司。
注意2:默认情况下,快递接口使用权限是关闭的,请到API参数管理中进行开启设置。
注意3:该方法返回的是一个多维数组或者false,例如:
返回值为false时,系统关闭了快递接口的使用权限。
code为 00时,查询成功,快递流程在data中
code为 01时,快递单号为空
code为 02时,快递公司自动识别失败,单号可能已过期
code为 03时,暂无该快递公司类型,或者查询失败
code为 04时,快递接口调用出错,msg中是接口官方的提示内容

13、网站收录量查询

调用\org\Indexes::run(服务商编码,网址)进行收录量查询。
注意1:当前API只支持3家服务商,编码为:baidu、360、sougou。
注意2:该方法返回的是个一维数组,例如:
code为 00时,查询成功,收录量在data中
code为 01时,查询类型为空
code为 02时,查询网址为空
code为 03时,暂无该查询类型

14、CMD工具命令扩展

我们需要在后台Cmd.php控制器的run()方法中先加入对应的指令分流处理,
然后再将对应的指令封装到/extend/cmd/文件夹中,规范为一组指令为一个文件,该文件需要继承Common.php基类。

self::json('02', '内容');表示返回单条记录。

$data[] = '第一条';
$data[] = '第二条';
self::json('00', $data);表示返回多条记录。

15、聚合登录接口

在使用聚合登录API前,请先到API参数管理中设置相关参数,再进行调用。

当前聚合登录暂只支持以下4种登录方式:
1、神牛教
2、百度
3、微博
4、github

登录跳转授权,使用
\oauth2\Oauth2::run('神牛教');
这样的调用方式,授权回调地址为统一监听,可以在API参数中设置。

在回调的统一地址中,我们需要以下代码监听获取到的第三方用户信息:
$data = \oauth2\Oauth2::monitor();
该方法若获取失败统一返回 false,否则返回用户信息,结构如下:

[
        'user_id'  => '用户ID',
        'name'     => '用户名',
        'nick'     => '用户昵称',
        'sex'      => '性别 0 未知 1男 2女',
        'portrait' => '头像地址',
        'type'     => '第三方类型',
]

第三方类型码有如下:
git 对应 github
snj 对应 神牛教
bd 对应 百度
wb 对应 微博

16、百度翻译接口

该接口主要以CURL爬虫实现,无需百度官方key支持,依赖\org\Fanyi::run(翻译内容, 目标语言)方法支持。翻译失败返回false,成功返回一个数组。具体使用案例如下:

// 翻译内容为一维数组
$array = [
    '这是一条测试语句,',
    '这是第二条测试语。',
];
// 目标语言为中文字符串,类内部自动识别转换,你也可以自己输入百度的编码,例如zh、en
$list = \org\Fanyi::run($array, '英语');
// 翻译结果是个多维数组,转换内容在dst字段中
foreach ($list as $v) {
    echo $v['dst']."
"; }

目标语言支持以下种类,为百度官方编码:

$Lang = [
    'zh'    => '中文',
    'jp'    => '日语',
    'jpka'  => '日语假名',
    'th'    => '泰语',
    'fra'   => '法语',
    'en'    => '英语',
    'spa'   => '西班牙语',
    'kor'   => '韩语',
    'tr'    => '土耳其语',
    'vie'   => '越南语',
    'ms'    => '马来语',
    'de'    => '德语',
    'ru'    => '俄语',
    'ir'    => '伊朗语',
    'ara'   => '阿拉伯语',
    'est'   => '爱沙尼亚语',
    'be'    => '白俄罗斯语',
    'bul'   => '保加利亚语',
    'hi'    => '印地语',
    'is'    => '冰岛语',
    'pl'    => '波兰语',
    'fa'    => '波斯语',
    'dan'   => '丹麦语',
    'tl'    => '菲律宾语',
    'fin'   => '芬兰语',
    'nl'    => '荷兰语',
    'ca'    => '加泰罗尼亚语',
    'cs'    => '捷克语',
    'hr'    => '克罗地亚语',
    'lv'    => '拉脱维亚语',
    'lt'    => '立陶宛语',
    'rom'   => '罗马尼亚语',
    'af'    => '南非语',
    'no'    => '挪威语',
    'pt_BR' => '巴西语',
    'pt'    => '葡萄牙语',
    'swe'   => '瑞典语',
    'sr'    => '塞尔维亚语',
    'eo'    => '世界语',
    'sk'    => '斯洛伐克语',
    'slo'   => '斯洛文尼亚语',
    'sw'    => '斯瓦希里语',
    'uk'    => '乌克兰语',
    'iw'    => '希伯来语',
    'el'    => '希腊语',
    'hu'    => '匈牙利语',
    'hy'    => '亚美尼亚语',
    'it'    => '意大利语',
    'id'    => '印尼语',
    'sq'    => '阿尔巴尼亚语',
    'am'    => '阿姆哈拉语',
    'as'    => '阿萨姆语',
    'az'    => '阿塞拜疆语',
    'eu'    => '巴斯克语',
    'bn'    => '孟加拉语',
    'bs'    => '波斯尼亚语',
    'gl'    => '加利西亚语',
    'ka'    => '格鲁吉亚语',
    'gu'    => '古吉拉特语',
    'ha'    => '豪萨语',
    'ig'    => '伊博语',
    'iu'    => '因纽特语',
    'ga'    => '爱尔兰语',
    'zu'    => '祖鲁语',
    'kn'    => '卡纳达语',
    'kk'    => '哈萨克语',
    'ky'    => '吉尔吉斯语',
    'lb'    => '卢森堡语',
    'mk'    => '马其顿语',
    'mt'    => '马耳他语',
    'mi'    => '毛利语',
    'mr'    => '马拉提语',
    'ne'    => '尼泊尔语',
    'or'    => '奥利亚语',
    'pa'    => '旁遮普语',
    'qu'    => '凯楚亚语',
    'tn'    => '塞茨瓦纳语',
    'si'    => '僧加罗语',
    'ta'    => '泰米尔语',
    'tt'    => '塔塔尔语',
    'te'    => '泰卢固语',
    'ur'    => '乌尔都语',
    'uz'    => '乌兹别克语',
    'cy'    => '威尔士语',
    'yo'    => '约鲁巴语',
    'yue'   => '粤语',
    'wyw'   => '文言文',
    'cht'   => '中文繁体'
];

17、手机归属地查询接口

该接口主要以CURL爬虫实现,依赖\org\Phone::run(手机号)方法支持。查询失败返回false,成功返回一维数组。具体使用案例如下:


# 使用DEMO
$array = \org\Phone::run(15992431788);
dump($array);

返回值说明如下:
mts       :手机号前7位数
province  :归属地(省)
catName   : 运营商
carrier   :归属地运营商
telString :手机号

18、居民身份证真实性查询接口

该接口主要以CURL爬虫实现,依赖\org\Idcard::run(身份证号)方法支持。查询失败返回false,成功返回一维数组。具体使用案例如下:


# 使用DEMO
$array = \org\Idcard::run(身份证号码);
dump($array);

返回值说明如下:
card      :身份证号码
province  :归属地(省)
city      :归属地(市)
area      :归属地(区)
date      :出生日期(年月日)
time      :出生日期(时间戳)
month     : 生日(月)
day       : 生日(日)
sex       :性别

19、jun-密码表简单加解密

该接口主要以字符串替换 + 简单私钥,base加密的方式实现加解密。具体使用案例如下:

# 加密
$sign = \org\Encryption::run('xiaoniuniu', 123456);
# 解密
$str  =   \org\Encryption::decrypt($sign, 123456);

参数说明如下:
参数1:加密前 或 加密后的字符串,必填
参数2:加解密私钥,选填

20、IP省市区地址查询

该接口主要以抓取第三方IP实现。具体使用案例如下:

# 根据IP查询对应的省市区归属地
$data = \org\Ipcity::run('IP地址');

返回值为一维数组,查询失败返回false,说明如下:
province :省名称,某位不带省
city :市名称,某位不带市
area :区名称,会存在获取不到
flow :服务供应商,例如电信、移动

21、文件压缩解压

该接口主要用于对指定文件或目录进行压缩打包,或者解压操作。 其核心参数主要有3个调用方法:

# 先实例化类,再调用以下三个方法之一
$obj = new \org\Zip();

/**
* 创建压缩文件
* @todo 无
* @author 小黄牛
* @version v1.1.7 + 2019.03.29
* @deprecated 暂不弃用
* @global 无
* @param string $SavePath 压缩包保存到的路径
* @param string $Pack 需要打包的目录或文件 
* @param string $SaveName 压缩包保存的文件名   默认为空,为空时则使用时间戳充当为文件名,禁止使用中文
* @param string $ZipType 压缩包保存的类型      默认为zip
* @return bool
*/
public function save_zip($SavePath, $Pakc, $SaveName='', $ZipType='zip') {}

/**
* 解压文件到指定目录
* @todo 无
* @author 小黄牛
* @version v1.1.7 + 2019.03.29
* @deprecated 暂不弃用
* @global 无
* @param string $src_file zip压缩文件的路径	
* @param string $dest_dir 解压文件的目的路径	
* @param bool $overwrite 是否重写已经存在的文件
* @param bool $type 是否需要删除压缩包	
* @return bool
*/
public function un_zip($src_file, $dest_dir='', $overwrite=true, $type=false) {}

/**
* 输出压缩包下载
* @todo 无
* @author 小黄牛
* @version v1.1.7 + 2019.03.29
* @deprecated 暂不弃用
* @global 无
* @param string $url 下载文件地址
* @return void
*/
public function dow_zip($url) {}

注意,该类在使用时,所填入的目录相关参数,都建议使用绝对路径,否则容易发生错误。

1、过滤敏感词

有效域:全局共用
介绍:主要关联后端的敏感词库,用于对字符串进行敏感词识别过滤。
详细介绍如下:

/**
 * 过滤敏感词
 * @todo 无
 * @author 小黄牛
 * @version v1.2.1 + 2019.04.02
 * @deprecated 暂不弃用
 * @global 无
 * @param string $str 需要被过滤的字符串
 * @return array['code'=>'bool', 'msg'=>'包含的敏感词']
*/
function vif_sensitive($str=null) {

}

1、弹窗提示

$.thinkmimi({Content : '提示内容', Type:2, Align:'right', OutTime:2000});

其中:
Content :提示内容
Type    :弹窗类型 1|2 正确|错误
Align   :弹窗位置 right|center 右侧|居中
OutTime :弹窗自动关闭秒数

2、新窗口弹出页面

JunAMS是使用的layui前端框架,
弹出新窗口主要依赖于layui.open组件。
在弹窗出的页面中,需要新建一个doSubimt()函数,用作返回值。

例如:我们在Index.html中利用如下代码,弹出Add.html页面:
layer.open({
    type: 2,
    title: '添加新管理员',
    shadeClose: true,
    shade: false,
    maxmin: true,
    area: ['100%', '100%'],
    btn: ['确认', '取消'],
    content: href,
    yes: function(index, layero) {
        var _this = layero.find('iframe')[0];
        var bool  = _this.contentWindow.doSubimt();
        if (bool !== false) {
            $.thinkmimi({Content : bool['msg'],Type : 1,Align:'right',OutTime:2000,});
            menu_run();
            layer.closeAll();
            window.setTimeout(function(){
                window.location.reload();
            }, 700);
        }
    },
});

那么,我们在Add.html页面中就需要新建一个doSubimt()函数,用作返回值。
function doSubimt() {
	var res;
	var data = {};
	
	$.ajax({
		type: 'post',
		data: data,
		async: false,
		url: "/login/add.html",
		success: function(data) {
			var array = eval('('+data+')');
			res = array;
			if (array['code'] == '01') {
				$.thinkmimi({Content : array['msg'], Type:2, Align:'right', OutTime:2000});
				res = false;
			}
		}
	});

	return res;
}

更新日程

1、2018-09-30 开发者:小黄牛

2、2018-10-09 开发者:小黄牛

3、2018-10-10 开发者:小黄牛

4、2018-10-12 开发者:小黄牛

5、2018-10-12 开发者:小黄牛

6、2018-10-16 开发者:小黄牛

7、2018-10-18 开发者:小黄牛

8、2018-11-23 开发者:小黄牛

9、2018-12-03 开发者:小黄牛

10、2018-12-21 开发者:小黄牛

11、2018-12-24 开发者:小黄牛

12、2019-03-15 开发者:小黄牛

13、2019-03-18 开发者:小黄牛

14、2019-03-22 开发者:小黄牛

15、2019-03-26 开发者:小黄牛

16、2019-03-28 开发者:小黄牛

17、2019-03-29 开发者:小黄牛

18、2019-04-01 开发者:小黄牛

19、2019-04-03 开发者:小黄牛、宣言、默许、水云霜

注意事项

为了兼容linux系统的日常写入修改删除操作,以下目录与文件均需要手动设置0777权限,否则将报错。

/index.php                                    用于CMS模块切换项目绑定
/application/                                 用于安装写入数据库配置文件,与创建项目模块
/runtime/                                     用于日常thinkphp框架的缓存日志
/extend/weixin/access_token.json              用于记录微信的token
/extend/weixin/ssl_path/apiclient_cert.pem    用于修改微信支付接口的证书
/extend/weixin/ssl_path/apiclient_key.pem     用于修改微信支付接口的证书
/public/cms/                                  用于CMS模块的静态文件管理
/public/edit/                                 用于保存后台上传文件
/public/txt/                                  用于保存CMD模块与模型特殊模块的配置文件
/public/weixin_log/                           用于保存微信接口的日志文件
/public/install.sql                           JunAMS安装的数据库文件

文件以及目录说明

WEB部署目录
├─index.php       前端PHP入口文件
├─admin.php       后台PHP入口文件
├─html            前端静态文件存放目录
├─extend          第三方接口封装目录  
│   ├─org         零散的第三方接口类文件存放目录
│   │  ├─Idcard.php      身份证真实性验证类
│   │  ├─Phone.php       手机归属地获取类
│   │  ├─Fanyi.php       百度翻译获取类
│   │  ├─Cpu.php         服务器信息获取类
│   │  ├─Indexes.php     网站收录量查询类
│   │  ├─Iswx.php        检测微信浏览器是否屏蔽域名类
│   │  ├─Bom.php         BOM头检测清除类
│   │  ├─Fileroot.php    Class注释生成文档类
│   │  ├─Encryption.php  简单加解密类
│   │  ├─Ipcity.php      IP地址查询省市区类
│   │  ├─Zip.php         压缩解压类
│   │  └─Baksql.php      数据库操作类,用于后台拉取数据库表详情
│   ├─cmd              CMD工具指令分流存放目录
│   ├─oauth2           第三方登录接口存放目录
│   │  ├─Oauth         基类分支处理目录
│   │  │    ├─Basics.php        基类接口
│   │  │    ├─Weibo.php         微博登录
│   │  │    ├─Github.php        Github登录
│   │  │    ├─Shenniu.php       神牛教登录
│   │  │    └─Baidu.php         百度登录
│   │  └─Oauth2.php             聚合登录调用类
│   ├─kuaidi           快递查询类文件存放目录
│   │  ├─Kuaidi        快递查询类文件存放目录
│   │  │    ├─Kdcx.php          kdcx.cn接口
│   │  │    └─Kd100.php         快递100接口
│   │  └─Express.php            快递查询调用类
│   ├─weixin           微信开发类文件存放目录
│   │  ├─ssl_path      微信支付证书存放目录
│   │  ├─lib           微信官方SDK存放目录(代码已经过二次修改,不支持直接覆盖升级)
│   │  ├─Weixin        微信SDK局部静态配置文件存放目录
│   │  │    └─Wxconfig.php      所有微信相关API请求地址配置文件存放文件
│   │  ├─access_token.json      普通AccessToken缓存文件
│   │  └─Weixin.php             微信开发调用类
│   ├─sms         短信发送类文件存放目录
│   │  ├─Alidayu.php   阿里大鱼短信SDK封装
│   │  ├─Miaodi.php    秒嘀短信SDK封装
│   │  └─Sms.php       短信发送调用类
│   ├─qiniu            七牛云OSS类文件存放目录
│   │  ├─Qiniu         七牛云官方SDK(改动了命名空间)
│   │  └─Qiniu.php     七牛云调用类
│   └─mail       邮件发送类文件存放目录
│      ├─mail          Phpmailer第三方类目录
│      └─Email.php     邮件发送调用类
│
├─public          静态文件存放地址
│   ├─admin       后台静态样式文件存放目录
│   ├─home        前端静态样式文件存放目录
│   ├─edit        layui编辑器文件上传存放目录
│   ├─cms         CMS模块静态文件存放目录
│   │  ├─decompose  项目导入时存放临时文件
│   │  ├─logo     存放项目logo
│   │  ├─zip      存放项目导出压缩包
│   │  └─ready    项目导出时存放临时文件
│   │     ├─code        存放项目对应的PHP文件
│   │     ├─logo        存放项目logo文件
│   │     ├─static      存放项目对应的静态文件
│   │     ├─add.sql     存放项目相关的SQL数据
│   │     └─prefix.txt  存放项目导出时的数据库前缀
│   │  
│   ├─weixin_log  微信API日志文件存放目录
│   ├─txt         文件配置文件存放目录
│   ├─install.php JunAMS安装文件
│   └─install.sql JunAMS安装数据库文件
│          
└─application            后端程序应用目录
    ├─database.php       数据库配置文件
    ├─config.php         项目公共配置文件
    ├─common.php         项目公共函数库
    │  
    ├─common             中间件存放目录
    │    ├─tag           CMS自定义标签存放目录
    │    │  └─Ams.php    list标签
    │    ├─controller    全站中间件存放位置
    │    │     ├─Main.php    前端中间件    
    │    │     └─Backend.php 后台中间件
    │    └─view          跳转模板文件
    │       └─Tpl
    │          └─ip_end.html  检测到被封禁IP时候显示的404模板
    │  
    ├─index              前端
    │  ├─config.php      独立配置文件
    │  ├─common.php      独立函数库
    │  │
    │  └─controller      接口控制器存放目录
    │
    └─admin              后台程序文件存放目录
         ├─config.php    独立配置文件
         ├─common.php    独立函数库
         │  
         ├─controller    后台控制器存放目录
         │     ├─Actionlog.php        管理员操作日志管理
         │     ├─Article.php          CMS模块 - 内容管理
         │     ├─Cmd.php              CMD工具
         │     ├─Common.php           后台通用公共方法
         │     ├─Codefile.php         CMS模块 - 代码管理
         │     ├─Column.php           CMS模块 - 栏目管理
         │     ├─Content.php          CMS模块 - ILDM管理
         │     ├─Database.php         数据库 - 服务器管理
         │     ├─Deploy.php           全站API参数管理
         │     ├─Docroot.php          文档管理
         │     ├─Edition.php          版本管理
         │     ├─Field.php            CMS模块 - 字段管理
         │     ├─Index.php            主页
         │     ├─Item.php             CMS模块 - 项目相关
         │     ├─Job.php              岗位管理
         │     ├─Login.php            登录
         │     ├─Loginlog.php         管理登录日志管理
         │     ├─Logtype.php          日志编码管理
         │     ├─Manager.php          管理员管理
         │     ├─Menu.php             权限菜单管理
         │     ├─Model.php            CMS模块 - 模型管理
         │     ├─Notice.php           维护公告管理
         │     ├─Region.php           地区管理
         │     ├─Role.php             角色管理
         │     ├─Security.php         安全管理
         │     ├─Structure.php        部门管理
         │     └─Weixin.php           微信开发内容管理
         │ 
         └─view          后台视图文件存放目录(参考控制器命名)