## Niushop采用 数据业务层 (Service层)单独分层的设计架构模式
一般的小型业务系统,大多数的设计是这样的 :
Controller (Model +DAO)---> View
在控制器内同时实现数据业务逻辑(Model +DAO)的处理方式,把处理结构反馈给视图层来渲染显示。对于业务逻辑不是非常复杂的系统完全可以采用这样的简单设计来实现。这样做的好处是编写简单,容易理解,需要进行代码编写处理的地方相对集中。
例如:实现一个订单的创建业务
namespace app\Order\controller;
class Order
{
public function CreateOrder()
{
Db::startTrans();
try{
//步骤一创建订单
$order = new Order;
$order->orderId = '20170601000001';
$order->order_date = 'now';
$order->save();
//步骤二创建订单项
foreach($orderItem in $items){
$item = new OrderItem;
$item->orderId = $order->orderId;
$item->order_itemid = $orderItem->id;
$item->save();
}
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
}
return 'Order_Create';
}
}
这样的实现方式已办理说是没有问题。可是如果有这样的情况,比如希望在创建购物车的时候也需要添加订单项,这个时候上面的创建订单项又要重写一次。还有情况是用户在修改订单的时候也希望创建一个订单项,这个时候同样的方法又需要调用。如果像上面写法,这样会出现创建订单项的代码冗余调用。假如订单项属性字段很复杂,由于代码冗余造成的维护和出错率会越来越大,所以上面的设计方式就不太适合了。同时这样设计有一个问题就是本来控制器的作用是数据和视图的中间传递着,现在控制器充当2个职责,既负责视图的显示控制,又充当数据及业务逻辑的处理。导致代码耦合性太大。
Model ---> DAO ---> Service ---> Controller ---> View
- 用户使用手册
- 首页
- 欢迎页
- 商品
- 商品列表
- 商品发布
- 商品分类
- 商品品牌
- 商品标签
- 商品规格
- 供货商
- 商品类型
- 咨询管理
- 商品评价
- 相册管理
- 商品回收站
- 订单
- 订单列表
- 营销
- 优惠券
- 积分管理
- 满减送
- 限时折扣
- 满额包邮
- 会员
- 会员列表
- 粉丝列表
- 会员等级
- 会员提现
- 积分管理
- 余额管理
- 资产
- 销售概况
- 商品分析
- 同行热卖
- 运营报告
- 销售排行
- 微信
- 公众号管理
- 微信菜单管理
- 推广二维码管理
- 回复设置
- 消息素材管理
- 模板消息设置
- 分享内容设置
- 网站
- 电脑端
- 手机端
- 广告位
- 商品楼层
- 站点帮助
- 文章管理
- 专题列表
- 用户
- 用户列表
- 用户组列表
- 个人资料
- 供应商
- 供应商列表
- 供应提现
- 设置
- 基础设置
- 附件上传
- 注册与访问
- 图片设置
- 第三方登录
- 通知系统
- 支付配置
- 原路退款配置
- 会员提现设置
- 物流配送
- 客服设置
- 扩展
- 插件管理
- 钩子管理
- 系统
- 模块列表
- NiuShop问题整理
- 微信配置问题
- 微信菜单配置无效
- 微信用户提示关注了仍提示未关注
- 模板消息
- 微信公众号配置的注意事项检测
- 如何关闭首页的“关注公众号”
- 第三方登录问题
- qq登录问题
- 微信第三方登录
- 微信公众号与开放平台不是一个账号
- 支付配置问题
- 微信支付配置
- 支付宝支付配置
- 分销相关问题
- 计算思路
- 使用相关问题
- 物流公司以及配送相关的设置问题
- 七牛云存储问题
- 绑定授权
- 升级流程
- 微信https请求
- 物流跟踪(快递鸟设置)
- 二次开发相关问题
- 缓存技术
- 数据库调用
- 分页列表
- 七牛云上传配置问题
- 七牛云空间设置
- 配置自定义域名
- 七牛参数配置
- NiuShop开发手册
- 基础教程
- Niushop开源商城介绍
- Niushop安装
- 目录结构介绍
- 环境要求
- 模块介绍
- 数据表结构说明
- 伪静态(隐藏index.php)
- 添加后台菜单
- 公众号支付配置流程
- 开发教程
- 规格表设计原理机制
- 商品属性表关系
- ajax分页
- Data数据业务层设计
- 积分
- 常见问题