# Demo
* * * * *
這里的Demo是指Demo模塊業務邏輯層演示Demo文件,控制器太簡單了就不貼代碼了。
主要起給開發者演示作用,代碼如下
~~~
<?php
// +---------------------------------------------------------------------+
// | OneBase | [ WE CAN DO IT JUST THINK ] |
// +---------------------------------------------------------------------+
// | Licensed | http://www.apache.org/licenses/LICENSE-2.0 ) |
// +---------------------------------------------------------------------+
// | Author | Bigotry <3162875@qq.com> |
// +---------------------------------------------------------------------+
// | Repository | https://gitee.com/Bigotry/OneBase |
// +---------------------------------------------------------------------+
namespace app\demo\logic;
use app\common\logic\LogicBase;
/**
* 演示邏輯
*/
class Demo extends LogicBase
{
/**
* 各層引用演示
*/
public function demoExecute()
{
/**
* 控制器層引用業務邏輯層
* 執行查詢文章列表邏輯
* 前綴 logic
*/
$this->logicArticle->getArticleList();
/**
* 業務邏輯層引用模型層
* 執行模型查詢文章列表
* 前綴 model
*/
$this->modelArticle->getList();
/**
* 業務邏輯層引用驗證層
* 執行文章分類數據編輯場景驗證
* 前綴 validate
*/
$this->validateArticleCategory->scene('edit')->check([]);
/**
* 業務邏輯層引用服務層
* 執行存儲服務下的七牛驅動進行文件上傳
* 前綴 service | driver
*/
$this->serviceStorage->driverQiniu->uploadFile(130);
}
/**
* 事務控制
*/
public function demoTransaction()
{
$func1 = function() { $this->modelMember->setFieldValue(['username' => 'demo'], 'nickname', 'test_demo'); };
$func2 = function() { $a = 1/0; [$a]; };
closure_list_exe([$func1, $func2]);
}
/**
* 云存儲服務
*/
public function demoStorage()
{
return $this->serviceStorage->driverQiniu->uploadFile(130);
}
/**
* 支付服務
*/
public function demoPay()
{
$test_order['order_sn'] = date('ymdhis', time()) . rand(10000, 99999);
$test_order['body'] = '測試';
$test_order['order_amount'] = 0.01;
// (微信公眾號下使用JSAPI支付時才需要此參數,用于跳轉授權)
$test_order['redirect_uri'] = 'http://ob.xxx.cn';
//-------------- 支付寶相關支付-----------------
// (電腦網站環境下)支付寶PC網站發起支付
echo $this->servicePay->driverAlipay->pay($test_order);
// (移動端非微信環境瀏覽器下)支付寶H5支付
echo $this->servicePay->driverAlipay->pay($test_order, 'h5');
// (支付寶APP支付) 返回給IOS或安卓 客戶端處理
dump($this->servicePay->driverAlipay->pay($test_order, 'app'));
//-------------- 微信相關支付------------------
// (電腦網站環境下)微信PC網站發起支付
echo $this->servicePay->driverWxpay->pay($test_order);
// (移動端非微信環境的瀏覽器下)微信 H5 支付
echo '<a href="'.$this->servicePay->driverWxpay->pay($test_order, 'h5').'">點擊跳轉H5微信支付</a>';
// (微信公眾號環境下) JSAPI 支付
echo $this->servicePay->driverWxpay->pay($test_order, 'JSAPI');
// (微信APP支付) 返回給IOS或安卓 客戶端處理
dump($this->servicePay->driverWxpay->pay($test_order, 'app'));
}
/**
* 前端支付狀態檢測
*/
public function demoCheckPayStatus($param = [])
{
// 業務邏輯代碼塊...
dump($param['order_sn']);
// 未支付
die('error');
// 已支付
die('succeed');
}
/**
* 支付異步通知處理
*/
public function demoPayNotify()
{
// 獲取訂單號
$order_sn = get_order_sn();
// 獲取訂單信息
$info = $this->modelOrder->getInfo(['order_sn' => $order_sn]);
// 驗證訂單是否存在
empty($info) && die('不存在訂單號');
// 獲取支付驅動
$select_driver = SYS_DRIVER_DIR_NAME . $info['pay_type'];
// 驗證通知是否合法
$result = $this->servicePay->$select_driver->notify();
/**
* @todo 支付完成后通過訂單號處理相應業務邏輯
*/
if ($result) {
// 執行支付成功業務邏輯代碼塊...
}
}
/**
* 短信服務
*/
public function demoSendSms()
{
// 短信發送
$parameter['sign_name'] = 'OneBase架構';
$parameter['template_code'] = 'SMS_113455309';
$parameter['phone_number'] = '18555550710';
$parameter['template_param'] = ['code' => '123456'];
return $this->serviceSms->driverAlidy->sendSms($parameter);
/*
// 短信驗證碼驗證
$check_data['phone_number'] = '18555550710';
$check_data['code'] = '123456';
$check_result = $this->serviceSms->driverAlidy->checkSmsCode($check_data);
if ($check_result) {
// 短信驗證碼驗證通過
} else {
// 短信驗證碼不正確
}
*/
}
/**
* 數據導入
*/
public function demoDataImport($test_url = 'F:\\test.xlsx')
{
$data = get_excel_data($test_url);
dump($data);
// 此處已經將表格中的數據保存到$data數組中,后續根據自己的業務邏輯將數據寫入某表
}
/**
* 數據導出
*/
public function demoDataExport()
{
$list = $this->modelMember->getList([], true, 'id', false);
$titles = "昵稱,用戶名,郵箱,注冊時間";
$keys = "nickname,username,email,create_time";
export_excel($titles, $keys, $list, '會員列表');
}
/**
* 二維碼 條形碼
*/
public function demoQrcodeBarcode()
{
// 生成二維碼
$qr_data = create_qrcode('onebase.org');
// 生成條形碼
$bar_data = create_barcode('onebase.org', 'onebase');
dump($qr_data);
dump($bar_data);
}
/**
* 郵件發送
*/
public function demoSendEmail()
{
$data = send_email('3162875@qq.com', '測試', '這是一封測試郵件');
dump($data);
}
/**
* 視頻點播服務
*/
public function demoVod()
{
$obj = $this->serviceVod->driverAlivod->createUploadVideo();
$video_info = $this->serviceVod->driverAlivod->uploadVideo($obj, './test.mp4');
dump($video_info);
}
}
~~~
- 序言
- 基礎
- 安裝環境
- 安裝演示
- 規范
- 目錄
- 介紹
- 后臺介紹
- 后臺首頁
- 會員管理
- 系統管理
- 系統設置與配置管理
- 菜單管理
- 系統回收站
- 服務管理
- 插件管理
- 文章管理
- 接口管理
- 優化維護
- SEO管理
- 數據庫
- 文件清理
- 行為日志
- 執行記錄
- 統計分析
- 接口介紹
- 接口文檔
- 錯誤碼設計
- Token介紹
- 前臺介紹
- 架構
- 架構總覽
- 生命周期
- 入口文件
- 模塊設計
- 依賴注入
- 控制器架構
- 邏輯架構
- 驗證架構
- 服務架構
- 模型架構
- 行為架構
- 插件架構
- 配置
- 配置介紹
- 配置加載
- 配置擴展
- 請求
- 請求信息
- 日志
- 后臺行為日志
- 系統執行日志
- 框架日志
- 數據
- 數據庫設計
- 數據字典
- 數據庫操作
- 事務控制
- 混合操作
- 實戰
- 控制器
- 邏輯與驗證
- 視圖與模型
- 插件研發
- 服務研發
- 接口研發
- 雜項
- 數據導入導出
- 二維碼條形碼
- 郵件發送
- 云存儲服務
- 支付服務
- 短信服務
- 微信分享
- 生成海報
- 聊天室
- PJAX
- Demo
- Widget
- 附錄
- 常量參考
- 配置參考
- 函數參考
- 進階
- Redis
- 自動緩存
- 全自動緩存
- 索引
- 數據簽名
- 全自動事務
- 隊列