fecmall

  1. 基于yii2框架开发的电商系统,扩展性强,安全性高,框架层面应对高并发部署, 适合用户搭建属于自己的小型,中型电商系统。
  2. 开源电商系统,遵循BSD-3-Clause开源协议。
  3. Controller层只负责调度, Model只负责数据库映射,中间的处理逻辑由block来完成,View层 负责显示,这样各司其职, 以免造成controller文件过于庞大。
  4. 加入独立功能块,有点类似Yii2的Widget,目的是为了让一些侧栏公用块 可以通过配置的方式 添加,同时,还可以具有设置缓存的功能,譬如侧栏的产品浏览记录, newsletter等独立显示块可能在很多 页面用到,通过独立功能块可以配置方便的载入。
  5. 在Model层的上层加入服务层Services,这样,Controller,Block,View 层,在原则上 不能直接调用model,必须通过Services层以及子Services层,然后Services访问各个 model,组织数据,事务处理等操作,将数据结果返回给上层,这种设计可以方便以后业务 发展后,进而根据业务特点进行重构,或者以后如果出现新技术,新方式, 都重构成自己想要的样子,譬如, 将某个底层由mysql换成mongodb,或者为了应付高并发读写并且多事务性的功能部分, 进行分库分表的设计方式。
  6. Fecshop多模板系统,Fecshop设置了多个模板路径,各个模板路径下的文件被加载 的优先级不同,其中,Fecshop的模板路径下的文件最全面,但是优先级最低, ,第三方模板路径优先级其次,用户本地模板路径优先级最高, 用户可以通过 复制相应路径下的view或者js,css文件到本地模板路径,存在于高优先级 模板路径的文件会被优先加载,这样用户可以通过多模板系统的原理进行模板的 制作,同时,不影响Fecshop模板的升级,如果Fecshop view文件升级后被修改, 那么用户可以比对本地模板文件与升级模板文件的代码的不同, 复制更改的代码到本地模板路径 即可。第三方的模板路径的优先级介于本地模板路径和Fecshop 模板路径之间。
  7. 重写机制,Fecshop的功能基本都可以被用户重写,包括servies层,Modules, Controller,Block,Views,View Layout, 以及Js Css Img等,都可以被用户重写,其中 Js,Css,Img,Views,View Layout 是通过多模板 路径优先级来实现的,其他的是通过配置文件的覆盖更改来实现重写,这样,用户 就可以很方便重构Fecshop或者第三方的功能和模板。
  8. 升级最小化干扰,Fecshop的核心文件是放到vendor/fancyecommerce/fecshop 路径下面,和第三方扩展,用户二次开发路径完全隔离开, Fecshop可以通过composer进行核心功能的升级,用户只需要通过composer升级 即可。
  9. 快速高效,Fecshop Servises遵循Yii2的懒加载方式,只初始化使用到的组件服务, 缓存方面有整页缓存,block部分缓存,动态数据ajax加载等方式,让您的网站快速响应。
  10. Fecshop 多入口模式,分为 appadmin(后台), appfront(PC前端),apphtml5(手机web), appserver(手机app服务),appapi(erp,或者其他接口对接), 不同的业务,不同的设备,进入不同的入口,各个入口共用服务层services, 但是modules部分独立,这样相互干扰最小,可以相互独立开发。
  11. 后台封装化,fec_admin扩展可以快速的实现增删改查类型的表单列表, 方便用户快速的做增删改查。
  12. 如果是您公司内部的项目,或者你的朋友等一些项目, 您基于fecmall做相应的商城,是免费授权的, 如果您是建站公司,将fecmall进行二次开发,然后包装成了新的建站产品,然后重新 命名(譬如命名:xxxShop),进行商业宣传完全自研等等一些伪造话语, 对于这种不良商家的这种行为是不允许的,基于fecmall的新产品,必须以fecmall开头命名
  13. 通过composer安装。composer create-project fancyecommerce/fecshop-app-advanced fecmall 2.3.0
  14. 准备域名。
Pc端 > appfront.fecshoptest.com > $root/appfront/web/

后台 > appadmin.fecshoptest.com > $root/appadmin/web/

图片 > img.fecshoptest.com > $root/appimage/common/

H5端 > apphtml5.fecshoptest.com > $root/apphtml5/web/

移动Api端 > appserver.fecshoptest.com > $root/appserver/web/

第三方数据对接Api端 > appapi.fecshoptest.com > $root/appapi/web/
  1. init命令初始化
    在fecshop根目录执行init命令,进行初始化

window:运行init.bat

linux:运行 ./init

此命令会进行一些文件复制,一些设置文件权限等,增强安全性。

  1. 创建Mysql数据库fecmall
  2. 界面安装
  3. 总览
Fecmall在MVC三层架构上,加入了block层和services层,方便扩展和后期重构底层

入口文件:终端用户能直接访问的 PHP 脚本, 负责启动一个请求处理周期,譬如:@app/web/index.php

系统初始化bootstrap:指的是系统的初始化过程中执行的部分,譬如store语言,货币等, 都是在初始化过程中执行。

模块:yii2框架中的模块部分

controller:控制器,一个controller里面有多个action方法,每个action请求,一般对应 一个block,用来处理该action下面的逻辑

block: 逻辑处理层,负责处request发送的数据,调用相应的services方法,然后 进行处理返回最终数据,一般一个controller中的一个action,对应一个block文件

services:服务层,该层为fecmall的核心部分,很多的逻辑都是在此处实现, 对于某个功能,譬如购物车部分,您可以实现多个services,然后通过配置的方式进行切换, 譬如官方实现的redis cart,可以替代mysql cart,因此该层的加入,让您可以方便的重构底层, 根据业务的需求,开发不同的services,甚至使用远程的api封装成services, 让底层的重构更加容易,同时该结构扩展性强,应用市场可以开发不同的services应用插件, 让用户可以方便的安装应用直接切换其他的services

另外该层为共用层,pc,wap,vue,微信小程序,都公用services层

fecmall大多数的逻辑实现以及业务处理,都是在services层进行的。

models:数据库层

view:视图渲染层view

在这里插入图片描述

  1. FecShop核心包文件结构
    打开vendor/fancyecommerce/fecshop ,这里就是fecshop的核心代码包。
    @fecshop/app里面 是各个入口系统的文件代码,包含 @fecshop/app/appadmin,@fecshop/app/appfront等。

  2. Yii2是多文件配置结构,将多个配置文件分散到各个路径下, 在初始化的时候最终合成一个配置数组,这种方式比较灵活,后面的数组和覆盖前面的数组 配置,这种方式非常适合重写某些组件,服务等.

  3. 重写block
    a. \fecshop\common\config\fecshop_local.php的$fecRewriteMap,添加重写规格。

  4. 重写control
    我们想要重写appfront的catalog模块的CategoryController,下面是详细步骤:

fecshop系统的controller: @fecshop\app\appfront\modules\Catalog\controllers\CategoryController

本地重写的Controller: @appfront\local\local_modules\Catalog\controllers\CategoryController

1.新建本地的controller:

<?php
/**
 * FecShop file.
 *
 * @link http://www.fecshop.com/
 * @copyright Copyright (c) 2016 FecShop Software LLC
 * @license http://www.fecshop.com/license/
 */

namespace appfront\local\local_modules\Catalog\controllers;

use fecshop\app\appfront\modules\AppfrontController;
use Yii;

/**
 * @author Terry Zhao <2358269014@qq.com>
 * @since 1.0
 */
class CategoryController extends \fecshop\app\appfront\modules\Catalog\controllers\CategoryController
{
    // 重写相应的controller action方法
}

2.在配置中添加classMap

打开配置文件 @appfront/config/fecshop_local_modules/Catalog.php

添加如下配置:

return [
    'catalog' => [
        /**
         * Yii2 controllerMap 重写机制。
         */
        'controllerMap' => [
            'category' => 'appfront\local\local_modules\Catalog\controllers\CategoryController',          
        ],
       
    ]
   
]

完成上面的步骤后,如果访问分类页面,执行的是 重写后的controller文件,也就是:@appfront\local\local_modules\Catalog\controllers\CategoryController ,您可以在这个文件里面重写原来的action方法。

  1. 后台目录添加
    添加菜单@fecshop/config/services/Admin.php 可以看到 menu admin services的配置
    在类属性menuConfig处配置, 您可以在本地配置文件:@appadmin/config/fecshop_local_services/Admin.php中添加 后台配置(没有这个文件自行创建)
    添加后,由于没有添加资源,因此在后台刷新页面后,菜单还是不能完整的显示出来,我们需要到后台添加资源, 设置权限
    上面的菜单,是fecshop的菜单,需要添加资源,在您的当前账户对应的权限组中添加资源 (菜单中的很多url以资源的方式加入,然后在权限组中添加资源,然后才有权限访问)
    后台添加资源(resources,将url_key作为资源在后台录入系统)

在这里插入图片描述
在这里插入图片描述
name: 自行填写

resource:填写您的url_key, 譬如 /catalog/productinfo/index, 对应您的访问路径 moduleId/controllerId/actionId,

tag:这个一般和菜单对应,这个在 urlKey admin services中配置,也就是 @fecshop/config/services/Admin.php中配置,您可以在本地配置添加,配置代码如下:

'urlKey' => [
	'class' => 'fecshop\services\admin\UrlKey',
	'urlKeyTags' => [
		'dashboard_main' 								=> '控制面板-主界面',
		'catalog_product_info_manager' 			=> '产品分类-产品管理-产品信息管理',
		'catalog_product_review_manager' 		=> '产品分类-产品管理-产品评论管理',
		'catalog_product_search_manager' 		=> '产品分类-产品管理-产品搜索管理',
		'catalog_product_favorite_manager' 	=> '产品分类-产品管理-产品收藏管理',
		'catalog_category_manager' 				=> '产品分类-分类管理',
		'catalog_url_rewrite_manager' 			=> '产品分类-URL重写管理',
		'sales_order_manager' 						=> '销售-订单-订单管理',
		'sales_coupon_manager' 					=> '销售-优惠券',
		'customer_account' 							=> '用户管理-帐号管理',
		'customer_newsletter' 						=> '用户管理-NewsLetter',
		'cms_page' 										=> 'CMS-Page管理',
		'cms_static_block' 								=> 'CMS-静态块',
		'dashboard_user_myaccount' 				=> '控制面板-用户管理-我的账户',
		'dashboard_user_account_manager' 	=> '控制面板-用户管理-账户管理',
		'dashboard_user_role' 						=> '控制面板-用户管理-权限管理',
		'dashboard_user_resource' 				=> '控制面板-用户管理-资源管理',
		'dashboard_log_info' 							=> '控制面板-操作日志',
		'dashboard_log_manager' 					=> '控制面板-日志管理',
		'dashboard_cache' 							=> '控制面板-缓存管理',
		'dashboard_config' 							=> '控制面板-后台配置',
		'dashboard_error_handler'					=> '控制面板-ErrorHandler',
	],
],

一般一个菜单对应一个urlKeyTags,也就是一个功能,里面有增删改查等一系列的操作,每一个操作是一个url_key,对应一个资源resource,因此, tag一般对应一个菜单,里面的增删改查的各个resources(url_key),填写这个菜单对应的tag,在为role添加resources的时候,resource就会根据tag进行归类,方便编辑,如图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码中已集成前端vue打包后文件,可免去打包操作: 以本地(phpstudy集成环境)搭建举例: 下载代码,在服务器根目录(www目录)下创建文件夹,并放置代码; 浏览器访问 http://localhost/文件夹目录/index.php/admin/install/index.html 根据安装提示步骤,完成部署安装 开发依赖(需个性化安装或调整前端代码请按照以下教程,一键安装用户可忽略) 数据交互 数据交互通过axios以及RESTful架构来实现 用户校验通过登录返回的auth_key放在header 值得注意的一点是:跨域的情况下,会有预请求OPTION的情况 Server搭建 服务端使用的框架为thinkphp5.0.2,搭建前请确保拥有lamp/lnmp/wamp环境。 这里所说的搭建其实就是把server框架放入WEB运行环境,并使用80端口。 导入服务端根文件夹数据库文件public/sql/5kcrm.sql,并修改config/database.php配置文件。 配置要求 PHP >= 5.6.0 (暂不支持PHP7及以上版本) 当访问 http://localhost/ 前端部署 安装node.js 前端部分是基于node.js上运行的,所以必须先安装node.js,版本要求为6.0以上 使用npm安装依赖 下载前端代码; 可将代码放置在后端同级目录frontend,执行命令安装依赖: npm install 修改内部配置 修改请求地址或域名:config/dev.env.js里修改BASE_API(开发环境服务端地址,默认localhost) 修改自定义端口:config/index.js里面的dev对象的port参数(默认8080,不建议修改) 运行前端 npm run dev 注意:前端服务启动,默认会占用8080端口,所以在启动前端服务之前,请确认8080端口没有被占用。 程序运行之前需搭建好Server端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值