全部
常见问题
产品动态
精选推荐

CRMEB多商户二开接口流程文档

管理 管理 编辑 删除

流程

主要讲解controller目录,每个controller有自己独立的路由,配置,事件,容器,控制器中可用框架核心及扩展。每个控制器其实就是一个独立的控制类。

请求流程大致分为以下流程,依次从左到右

021ee202305261552279738.png

Middleware

中间件分为前置和后置中间件.

前置中间件在访问控制器之前会被执行调用,通常用来拦截参数,跨域配置,多语言加载,Session初始化,权限验证,登陆验证等处理;

而后置中间件属于返回数据后在执行的中间件,用来做一些返回数据后需要执行的任务等业务逻辑

下面以前置中间件为例:文件存放目录 app/应用名/middleware/AuthMiddleware.php

<?php
namespase app\应用名\middleware;
use crmeb\interfaces\MiddlewareInterface;
class AuthMiddleware implements MiddlewareInterface
{
public function handle(Request $request, \Closure $next)
{
//这里可以设置请求header
//可以写权限验证
//验证失败直接可以抛出异常中止请求
if(false)
{
throw new AuthException('无权验证');
}
return $next($request);
}
}

Controller

每个控制器负责相关业务的请求接收,只做最基本的数据接收,并调用相关的sevices业务处理层,返回数据。
例如:

<?php
namespace app\controller;
use app\Request;
use app\common\repositories\user\UserRepository;
class User
{
protected $repository;
public function __construct(App $app, repository $repository)
{
parent::__construct($app);
$this->repository = $repository;
}
public function lst($cid)
{
[$page, $limit] = $this->getPage();
$where = $this->request->params(['id']);
$data = $this->repository->search($where, $page, $limit);
return app('json')->success($data);
}
}

Repository

所有的业务都在Repository层中处理,Repository层调用dao层,【注意:每个独立的services层只能调用对应的dao层,不能调用其他模型dao层。

比如:repository/user/UserRepository.php中只能调用dao/user/UserDao.php,无法调用 dao/order/StoreOrderDao.php。要想调用其他模型数据,

只能在UserServices.php中调用services/order/StoreOrderServices.php的方法来实现其他模型数据调用】。

例如:

<?php
namespace app\common\repositories\user;
use app\common\dao\user\UserDao;
class UserRepository extends BaseRepository
{
protected $dao;
public function __construct(UserDao $dao)
{
$this->dao = $dao;
}
public function search(array $where, int $page, int $limit)
{
$list = $this->dao->getList($where,'*',$page,$limit);
$count = $this->dao->count($where);
return compact('count','list');
}
}

Dao

dao层中主要用于当前模型基本的数据处理方法。dao层中调用对应的model,同样无法跨层调用。
例如:

<?php
namespace app\dao\user;
use app\dao\BaseDao;
use app\model\user\User;
/**
* 用户
* Class UserDao
* @package app\dao\user
*/
class UserDao extends BaseDao
{
protected function setModel(): string
{
return User::class;
}
public function getOne($uid)
{
return $this->where(['uid' => $uid])->field('username,phone')->find();
}
}

Model

model主要用于实例化数据表,只做相关数据表的基础设置,搜索器,设置器及表关联等操作。

<?php
namespace app\model\user;
use crmeb\basic\BaseModel;
use think\Model;
/**
* Class User
* @package app\model\user
*/
class User extends BaseModel
{
/**
* @var string
*/
protected $pk = 'uid';
protected $name = 'user';
protected $insert = ['add_time', 'add_ip', 'last_time', 'last_ip'];
protected $hidden = [
'add_ip', 'account', 'clean_time', 'last_ip', 'pwd'
];
/**
* 自动转类型
* @var string[]
*/
protected $type = [
'birthday' => 'int'
];
protected $updateTime = false;
/**
* 修改器
*/
protected function setAddTimeAttr($value)
{
return time();
}
/**
* 关联订单
* @return User|\think\model\relation\HasMany
*/
public function order()
{
return $this->hasMany(StoreOrder::class, 'uid', 'uid');
}
/**
/**
* 搜索器 用户uid
* @param Model $query
* @param $value
*/
public function searchUidAttr($query, $value)
{
if (is_array($value))
$query->whereIn('uid', $value);
else
$query->where('uid', $value);
}
}


原文链接: https://blog.csdn.net/jiazi1024/article/details/124284742

CRMEB-慕白寒窗雪 最后编辑于2023-05-26 15:57:26

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
回复从新到旧

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
{{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
2131
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

CRMEB-慕白寒窗雪 作者
社区运营专员---高冷のBoy | 呆萌のGirl

回答

2175

发布

1774

经验

44951

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 开源下载 CRMEB官方论坛 帮助文档
返回顶部 返回顶部
CRMEB客服