本文介紹一下CRMEB多商戶二次開發的操作流程,從創建數據庫,到實現一個完整添加數據的過程,其他更多方法實現只是路由和方法名的差異。
### 一、創建數據庫
例如數據庫名為:eb_is_test
字段為:id,name
```sql
CREATE TABLE `eb_is_test` (
`id` int(11) unsigned NOT NULL AUTO\_INCREMENT,
`name` varchar(111) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
### 二、創建必要文件
為了更好的管理我給這個模塊單獨增加一個test文件目錄。
1. 創建model
路徑:app/common/moel/test/IsTest.php
```php
<?php
namespace app\common\model\test;
use app\common\model\BaseModel;
class IsTest extends BaseModel
{
public static function tablePk(): ?string
{
return 'id';
}
public static function tableName(): string
{
return 'is_test';
}
}
```
2. 創建dao文件
路徑 :app/common/dao/test/IsTestDao.php
```php
<?php
namespace app\common\dao\test;
use app\common\dao\BaseDao;
use app\common\model\test\IsTest;
class IsTestDao extends BaseDao
{
protected function getModel(): string
{
return IsTest::class;
}
}
```
3. 創建repoository文件
路徑:app/common/repoository/test/IsTestRepoository.php
```php
<?php
namespace app\common\repositories\test;
use app\common\dao\test\IsTestDao;
use app\common\repositories\BaseRepository;
class IsTestRepository extends BaseRepository
{
protected $dao;
public function __construct(IsTestDao $dao)
{
$this->dao = $dao;
}
}
```
4. 創建contorller
平臺后臺的操作就創建在admin目錄,商戶創建在merchant目錄,用戶創建在 api 目錄
路徑:app/conotroller/admin/test/IsTest.php
```php
<?php
namespace app\controller\admin\test;
use app\common\repositories\test\IsTestRepository;
use crmeb\basic\BaseController;
use think\App;
class IsTest extends BaseController
{
protected $repository;
public function __construct(App $app,IsTestRepository $repository)
{
parent::__construct($app);
$this->repository = $repository;
}
}
```
這樣我們的必備的幾個基礎文件就好了,以上每個文件中的方法,都是必須創建的,否則會報錯。
- controller主要是針對路由對外訪問的接口方法
- repoository就是寫一些公用的會重復利用的邏輯處理等方法
- dao針對數據庫的操作
- model定義數據表映射對象
### 三.創建新的接口,開發功能
1. 因為是平臺功能,就在route/admin.php文件增加路由,修改路由文件后記得重啟一下swoole服務。
```php
Route::group('is_test',function(){
Route::post('create', '/create')->name('systemIsTestCreate');
})->prefix('admin.test.IsTest);
```
2. 在controller文件中寫相對應的功能,創建方法create
```php
<?php
namespace app\controller\admin\test;
use app\common\repositories\test\IsTestRepository;
use crmeb\basic\BaseController;
use think\App;
class IsTest extends BaseController
{
protected $repository;
public function __construct(App $app,IsTestRepository $repository)
{
parent::__construct($app);
$this->repository = $repository;
}
public function create()
{
$data = $this->request->params(['name']);
$this->repository->create($data);
return app('json')->success('添加成功');
}
}
```
這樣我們的一個添加數據的功能就完成了,當然如果有更多數據和邏輯需要處理,就可以在IsTestRepository 這個文件中創建一個create()方法,然后做想相對應的處理,比如把name存儲為json字符串
```php
<?php
namespace app\common\repositories\test;
use app\common\dao\test\IsTestDao;
use app\common\repositories\BaseRepository;
class IsTestRepository extends BaseRepository
{
protected $dao;
public function __construct(IsTestDao $dao)
{
$this->dao = $dao;
}
public function create($data)
{
$data = [
'name' => json_encode($data)
];
$this->dao->create($data);
}
}
```
如果需要調用別的控制器的方法可以是用make方法,例如想在添加的時候調用user表查看數據
```php
<?php
namespace app\common\repositories\test;
use app\common\dao\test\IsTestDao;
use app\common\repositories\BaseRepository;
use app\common\repositories\user\UserRepository;
class IsTestRepository extends BaseRepository
{
protected $dao;
public function __construct(IsTestDao $dao)
{
$this->dao = $dao;
}
public function create($data)
{
//$user = app()->make(UserRepository::class)->get(1);
//此處方法和上面一行的寫法一致,只是這樣寫可以不用重復make
$make = app()->make(UserRepository::class);
$user = $make->get(1);
$data = [
'name' => json_encode($data)
];
$this->dao->create($data);
}
}
```
- 序言
- 系統簡介
- 系統介紹
- 前端腦圖
- 項目介紹
- 新手入門(源碼安裝)
- 運行環境
- 服務器配置及安裝
- 視頻安裝教程
- 服務器及環境搭建
- 服務器購買
- 域名購買
- 域名解析
- 服務器配置
- 寶塔配置
- 創建站點
- 安裝項目
- 1.源碼上傳(必看內容)
- 2.PHP擴展安裝
- 3.環境配置
- 4.運行服務
- 5.一鍵安裝
- 注意事項(很重要)
- 重啟swoole服務
- linux安裝swoole方法
- 特別注意事項
- mysql 5.7注意事項
- https域名
- ssl證書申請
- 公眾號配置
- 公眾號配置
- 公眾號開發配置
- 公眾號菜單
- 設置公眾號菜單
- 關鍵字
- 跳轉網頁
- 跳轉小程序
- 小程序配置
- 1.微信平臺配置
- 2.CRMEB后臺配置
- 3.前端提交審核
- 4.確認發布
- 支付配置
- 支付配置
- 公眾號支付
- 小程序支付
- 支付寶支付
- 其他配置
- 公眾號模板消息
- 小程序訂閱消息
- 商業授權
- 授權說明
- 申請授權
- 安裝常見問題匯總
- 請修改sql_mode文件為NO_AUTO提示
- 版本更新
- 客服設置
- uni-app 打包H5、公眾號
- 版本更新
- 清空數據
- 測試域名
- 部署多套多商戶
- 使用說明
- 商品分類
- 分類說明
- 分類管理
- 品牌分類
- 商品標簽
- 商品管理
- 發布商品
- 商品規格
- 配置說明
- 文件上傳
- 移動端展示說明
- 首頁
- 分類頁
- 個人中心
- 熱門搜索
- 分銷規則
- 分銷配置
- 分銷員管理
- 分銷規則說明
- 分銷員等級
- 分銷禮包
- 傭金說明
- 用戶管理
- 商戶用戶管理
- 平臺用戶管理
- 用戶協議
- 用戶搜索記錄
- 秒殺
- 秒殺規則
- 開啟秒殺活動
- 直播
- 主播實名認證
- 開啟直播
- 添加直播商品
- 預售
- 開啟全款預售
- 開啟定金預售
- 預售協議
- 專題
- 后臺配置
- 前端展示
- 助力
- 開啟助力
- 查看助力活動
- 拼團
- 虛擬拼團設置
- 開啟拼團
- 查看拼團活動
- 積分
- 積分設置
- 積分來源
- 積分使用
- 提現
- 提現規則
- 提現步驟
- 新聞資訊
- 新聞頁面
- 發布資訊
- 賬戶管理
- 賬號信息
- 賬戶資金
- 優惠券
- 添加優惠券
- 發布優惠券
- 領取及使用
- 發放優惠券
- 訂單管理
- 后臺訂單處理
- 前端訂單處理
- 訂單退款
- 訂單打印
- 客服管理
- 添加客服
- 客服權限
- 門店自提
- 開啟門店自提
- 設置核銷權限
- 訂單核銷說明
- 商戶管理
- 商戶分類
- 商戶入駐
- 商戶列表
- 商戶菜單管理
- 店鋪類型
- 財務
- 財務對賬
- 發票管理
- 自動分賬(v1.5及以后版本)
- 郵費說明
- 運費設置
- 運費組成
- 運費模板
- 物流配置
- 公告管理
- 店鋪相關
- 店鋪定位設置
- 店鋪街入口
- 店鋪活動
- 店鋪基本信息設置
- 小票打印
- 小票打印機配置
- 小票打印機設置
- 技術文檔
- 開發規范
- 數據字典
- 目錄結構
- 移動端路由
- 系統配置
- 后臺表單說明
- 短信設置
- 短信賬戶
- 短信配置
- 短信模板
- 一號通
- 電子面單
- 短信提醒
- 商品采集
- 物流查詢
- 付費采集商品配置
- PC端展示說明
- PC端開啟
- PC端平臺頁面配置
- PC端店鋪頁面配置
- 保障服務
- 移動端商品管理
- 開啟移動端商品管理
- 功能說明
- 會員管理
- 會員管理
- 會員權益
- 會員配置
- 社區功能
- 社區分類
- 社區話題
- 社區文章
- 社區評論
- 社區配置
- 通知管理
- 移動前端
- 目錄結構
- 配置說明
- 頁面路徑
- 后臺前端說明
- 總后臺目錄結構
- 商戶后臺目錄結構
- 開發和構建
- APP 打包
- 基礎配置
- 開發調試
- 打包上線
- App打包
- PC端說明
- 安裝教程
- 目錄結構
- 打包教程
- 常見問題
- 服務器問題
- 服務器環境說明
- MySQL 5.7注意事項
- PHP fileinfo擴展安裝
- 后臺登錄頁幻燈片
- 后臺登錄頁logo
- 論壇常見問題匯總
- 個人中心菜單加鏈接
- 子賬號登錄名
- 前后端分離配置
- 重啟swoole進程
- 開論壇勛章
- 源碼下載地址
- 查看/隱藏版本號
- 搜索商品后服務掛了
- 開發文檔
- 架構
- config配置文件
- 容器和依賴注入
- 異常處理
- 路由
- 控制器模塊
- 日志處理
- 自定義指令
- CRMEB類庫
- Basic基類
- Exceptions異常處理
- Interfaces接口類
- Jobs消息隊列
- services服務類
- traits
- listens定時監聽類
- 接口流程
- Controller
- Repository
- Dao
- Model
- 流程
- 訂單流程
- 下單流程
- 退款流程
- 二開教程
- 定義新的接口
- 創建新的頁面
- 創建新的組合數據
- 更換短信模板