CRMEB 开发文档及目录结构 官网
CRMEB v2.6开源地址:http://link.crmeb.net/u/lingting
完整帮助文档:http://help.crmeb.net
QQ群:116279623
目录结构
初始的目录结构如下:
www WEB部署目录(或者子目录)
├─application 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─admin 后台目录
│ │ ├─controller 控制器目录
│ │ │ ├─agent 代理商
│ │ │ ├─article 文章内容管理
│ │ │ ├─distributor 分销
│ │ │ ├─finance 财务管理
│ │ │ ├─order 订单管理
│ │ │ ├─record 数据统计
│ │ │ ├─routine 小程序后台管理
│ │ │ ├─server 程序升级服务端管理
│ │ │ ├─setting 系统设置
│ │ │ ├─store 商城目录
│ │ │ ├─system 系统维护
│ │ │ ├─ump 营销管理
│ │ │ ├─user 用户目录
│ │ │ ├─wechat 微信管理目录
│ │ │ ├─widget 公共调用
│ │ │ ├─merchant 商户目录
│ │ │ ├─AuthController.php 后台基类
│ │ │ ├─Common.php 后台公共方法类
│ │ │ ├─Login.php 登录
│ │ │ ├─Index.php 后台首页
│ │ │ └─AuthController.php 后台基类
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ │ ├─index 首页目录
│ │ │ ├─login 登录目录
│ │ │ └─public 公共目录
│ │ ├─common.php 后台公共函数
│ │ └─config.php 模块配置文件
│ │
│ ├─wap 手机端目录
│ │ ├─controller 控制器目录
│ │ │ └─AuthController.php wap基类
│ │ ├─model 模型目录
│ │ │ ├─merchant 后台目录
│ │ │ ├─store 商城目录
│ │ │ └─user 用户目录
│ │ ├─view 视图目录
│ │ │ ├─index 首页目录
│ │ │ ├─login 登录目录
│ │ │ ├─public 公共目录
│ │ │ ├─store 商城目录
│ │ │ ├─merchant 商户目录
│ │ │ ├─article 文章目录
│ │ │ ├─my 用户目录
│ │ │ └─service 客服目录
│ │ ├─common.php wap公共函数
│ │ └─config.php 模块配置文件
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 公共函数文件
│ ├─config.php 公共配置文件
│ ├─route.php 路由配置文件
│ ├─tags.php 应用行为扩展定义文件
│ ├─version.php 版本文件
│ └─database.php 数据库配置文件
│
├─public 公共目录
│ ├─static 全局静态文件目录
│ │ ├─plug 第三方插件前后台公用
│ │ ├─css css前后台公用
│ │ └─js js前后台公用
│ ├─system 后台静态文件目录
│ │ ├─plug 第三方插件后台
│ │ ├─js 后台
│ │ ├─css 后台
│ │ ├─images 后台
│ │ ├─frame 后台框架
│ │ ├─module 后台功能模块
│ │ ├─plug 后台第三方插件
│ │ └─util 后台自定义常用工具
│ ├─wap 前台静态文件目录
│ │ ├──first 模版1
│ ├─install 程序安装文件目录
│ ├─uploads 上传文件目录
│ ├─router.php 路由文件
│ ├─index.php 程序入口文件
│ ├─mysql.php 数据字典工具
│ ├─.htaccess apache 环境伪静态文件
│ ├─nginx.conf nginx 环境伪静态文件
│ └─web.config iis 环境伪静态文件
│
├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │
│ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─phpunit.xml phpunit配置文件
│ └─start.php 框架入口文件
│
├─extend 扩展类库目录
│ ├─api 公共api目录
│ ├─basic 基础继承类目录
│ ├─behavior 全局行为目录
│ │ ├─system 后台行为
│ │ ├─wechat 微信行为
│ │ ├─merchant 商户行为
│ │ └─wap wap端行为
│ ├─service 全局服务目录
│ └─traits 公共特性目录
│
├─vendor composer扩展类库目录
│ ├─xaboy 后台快速创建表单类
│ ├─tp5er 数据库备份类
│ ├─phpoffice 表格操作类
│ ├─overtrue 微信接口类
│ └─traits 公共特性目录
│
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录(Composer依赖库)
├─index.php 入口文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
账号密码
- 前台
- 账号: crmeb
- 密码: 123456
- 后台
- 账号: admin
- 密码: crmeb.com
微信配置
- 授权接口 :
/wap/wechat/serve
- 支付api接口 :
/wap/my/
/wap/my/order/uni/
/wap/store/confirm_order/cartId/
- 模板消息
- IT科技 | 互联网|电子商务
- IT科技 | IT软件与服务
模板变量
- {__ADMIN_PATH} => /public/system/
- {__FRAME_PATH} => /public/system/frame/
- {__PLUG_PATH} => /public/static/plug/
- {__MODULE_PATH} => /public/system/module/
- {__STATIC_PATH} => /public/static/
- {__PUBLIC_PATH} => /public/
- {__WAP_PATH} => /public/wap/
公共方法
- \service\CacheService 系统缓存类
// 设置系统缓存set($key, $value) // 获取系统缓存get($key, $default) // 删除指定系统缓存rm($key) // 清空所有系统缓存clear()
- \service\ExportService 导出csv表格类
// 导出CsvexportCsv($list 数据, $fliename 文件名, $header 表格头部, $br 换行分隔符)
- \service\GroupDataService 组合数据类
// 获得组合数据信息+组合数据列表getGroupData($configName,$limit) // 获得组合数据列表getData($configName,$limit)
- \service\HookService 行为扩展类
// 资源监听 自动注册前置行为操作 + 行为操作resultListen($tag, $params, $extra = null, $once = false,$behavior = null 自动注册类) // 监听后置行为操作afterListen($tag, $params, $extra = null, $once = false, $behavior = null 自动注册类) // 监听前置行为操作beforeListen($tag,$params,$extra = null, $once = false, $behavior = null) // 监听行为操作listen($tag, $params, $extra = null, $once = false, $behavior = null) // 添加前置行为addBefore($tag, $behavior, $first = false) // 添加后置行为addAfter($tag, $behavior, $first = false) // 添加行为add($tag, $behavior, $first = false)
- \service\HttpService Request请求类
// 发送get请求getRequest($url, $data = array(), $header = false, $timeout = 10)// 发送post请求postRequest($url, $data = array(), $header = false, $timeout = 10)// 发送请求request($url, $method = 'get', $data = array(), $header = false, $timeout = 15)// 获取请求head头getHeaderStr():String// 获取请求head头getHeader():Array
- \service\JsonService Json输出类
// 成功successful($msg = 'ok',$data=[])// 成功+状态status($status,$msg,$result = [])// 失败fail($msg,$data=[])
- \service\QrcodeService 二维码生成类
// 获取一个临时二维码,不存在自动生成getTemporaryQrcode($type,$id)// 获取一个永久二维码,不存在自动生成getForeverQrcode($type,$id)// 查询已有的二维码getQrcode($id,$type = 'id')
- \service\SystemConfigService 系统配置类
// 获取一个系统配置,带缓存config($key)// 获取一个系统配置,不带缓存get($key)// 获取多个系统配置,不带缓存more($keys = [])// 获取所有系统配置,不带缓存getAll()
- \service\UploadService 文件上传类
// 单图上传image($fileName, $path, $moveName = true, $autoValidate=true, $root=null, $rule='uniqid')// 文件上传file($fileName, $path, $moveName = true, $autoValidate=[], $root=null, $rule='uniqid')// 图片压缩thumb($filePath, $ratio=8, $pre='s_')
- \service\WechatService 微信服务类
参考:https://www.easywechat.com/docs/3.x
// 获取微信配置参数options()// 多客服消息转发transfer($account = '')// 上传永久素材接口materialService()// 上传临时素材接口materialTemporaryService()// 用户接口userService()// 客服消息接口staffService()// 微信公众号菜单接口menuService()// 微信二维码生成接口qrcodeService()// 短链接生成接口urlService()// 用户授权oauthService()// 模板消息接口noticeService()// 发送模板消息sendTemplate($openid,$templateId,array $data,$url = null,$defaultColor = null)// 支付接口paymentService()// 下载商户流水downloadBill($day,$type = 'ALL')// 用户标签服务userTagService()// 用户分组服务userGroupService()// 获得jsSdk支付参数 jsPay($openid, $out_trade_no, $total_fee, $attach, $body, $detail='', $trade_type='JSAPI', $options = [])// 订单退款payOrderRefund($orderNo, array $opt)// 支付成功回调handleNotify()// jssdk Config参数jsSdk($url = '')// 回复文本消息textMessage($content)// 回复图片消息imageMessage($media_id)// 回复视频消息videoMessage($media_id, $title = '', $description = '...', $thumb_media_id = null)// 回复声音消息voiceMessage($media_id)// 回复图文消息newsMessage($title, $description = '...', $url = '', $image = '')// 回复文章消息articleMessage($title, $thumb_media_id, $source_url, $content = '', $author = '', $digest = '', $show_cover_pic = 0, $need_open_comment = 0, $only_fans_can_comment = 1)// 回复素材消息materialMessage($type, $media_id)// 作为客服消息发送staffTo($to, $message)// 获得用户信息getUserInfo($openid)
- \service\WechatTemplateService 微信模板消息类
// 发送模板消息sendTemplate($openid,$templateId,array $data,$url = null,$defaultColor = '')// 给管理员发送模板消息sendAdminNoticeTemplate(array $data,$url = null,$defaultColor = '')
基础继承类
- \basic\ModelBasic Model基础类
/*** 获得Db并缓存* @param $name* @param bool $update* @return mixed|\think\db\Query*/protected static function getDb($name, $update = false)/*** 设置错误信息* @param string $errorMsg* @return bool*/protected static function setErrorInfo($errorMsg = self::DEFAULT_ERROR_MSG,$rollback = false)/*** 获取错误信息* @param string $defaultMsg* @return string*/public static function getErrorInfo($defaultMsg = self::DEFAULT_ERROR_MSG)/*** 开启事务*/public static function beginTrans()/*** 提交事务*/public static function commitTrans()/*** 关闭事务*/public static function rollbackTrans()/*** 根据结果提交或者滚回事务* @param $res*/public static function checkTrans($res)
- \basic\SystemBasic 后台基础类
/*** 操作失败提示框* @param string $msg 提示信息* @param string $backUrl 跳转地址* @param string $title 标题* @param int $duration 持续时间* @return mixed*/protected function failedNotice($msg = '操作失败', $backUrl = 0, $info = '', $duration = 3)/*** 失败提示一直持续* @param $msg* @param int $backUrl* @param string $title* @return mixed*/protected function failedNoticeLast($msg = '操作失败', $backUrl = 0, $info = '')/*** 操作成功提示框* @param string $msg 提示信息* @param string $backUrl 跳转地址* @param string $title 标题* @param int $duration 持续时间* @return mixed*/protected function successfulNotice($msg = '操作成功',$backUrl = 0,$info = '',$duration = 3)/*** 成功提示一直持续* @param $msg* @param int $backUrl* @param string $title* @return mixed*/protected function successfulNoticeLast($msg = '操作成功',$backUrl = 0,$info = '')/*** 错误提醒页面* @param string $msg* @param int $url*/protected function failed($msg = '哎呀…亲…您访问的页面出现错误', $url = 0)/*** 成功提醒页面* @param string $msg* @param int $url*/protected function successful($msg, $url = 0)
- \basic\WapBasic Wap端基础类
/*** 操作失败 弹窗提示 ajax请求时返回json数据* @param string $msg* @param int $url* @param string $title*/protected function failed($msg = '操作失败', $url = 0, $title='错误提示')/*** 操作成功 弹窗提示 ajax请求时返回json数据* @param $msg* @param int $url*/protected function successful($msg = '操作成功', $url = 0, $title='成功提醒')/*** 微信用户自动登陆 并返回openid* @return string $openid*/protected function oauth()
公共特性类
- \traits\ModelTrait Model公共特性
/*** 添加一条数据* @param $data* @return object $model 数据对象*/public static function set($data)/*** 添加多条数据* @param $group* @param bool $replace* @return mixed*/public static function setAll($group, $replace = false)/*** 修改一条数据* @param $data* @param $id* @param $field* @return bool $type 返回成功失败*/public static function edit($data,$id,$field = null)/*** 查询一条数据是否存在* @param $map* @param string $field* @return bool 是否存在*/public static function be($map, $field = '')/*** 删除一条数据* @param $id* @return bool $type 返回成功失败*/public static function del($id)/*** 分页* @param null $model 模型* @param null $eachFn 处理结果函数* @param array $params 分页参数* @param int $limit 分页数* @return array*/public static function page($model = null, $eachFn = null, $params = [], $limit = 20)/*** 高精度 加法* @param int|string $uid id* @param string $decField 相加的字段* @param float|int $dec 加的值* @param string $keyField id的字段* @param int $acc 精度* @return bool*/public static function bcInc($key, $incField, $inc, $keyField = null, $acc=2)/*** 高精度 减法* @param int|string $uid id* @param string $decField 相减的字段* @param float|int $dec 减的值* @param string $keyField id的字段* @param bool $minus 是否可以为负数* @param int $acc 精度* @return bool*/public static function bcDec($key, $decField, $dec, $keyField = null, $minus = false, $acc=2)
Api接口
- \Api\Express 快递查询
/*** 快递查询* @param string $number 单号* @param string $type 快递公司编号* @return bool*/public static function query($number, $type = 'auto')/*** 获得所有快递公司信息* @return bool*/public static function type()
后台全局Api $eb
// 查看图片$eb.openImage(src)/*** 提示框 * @param type 'delete' 删除提示 | 'error' 错误提示 | 'success' 成功提示 |* @param param* @param code*/$eb.$swal(type,param,code)/*** 弹出框* @param type 'textarea' 多行输入框输入框* @param params* @param succFn*/$eb.$alert(type,params,succFn)/*** message* @param type 'success' | 'warning' | 'error' | 'loading' | 'default'* @param config* @returns {*}*/$eb.message(type,config)/*** notice* @param type 'success' | 'warning' | 'error' | 'default'* @param config* @returns {*}*/$eb.notice(type,config)// 关闭notice$eb.noticeClose(name)// 销毁notice$eb.noticeDestroy(name)/*** modal* @param type 'success' | 'warning' | 'error' | 'confirm' | 'default'* @param config* @returns {*}*/$eb.modal(type,config)// 移除modal$eb.modalRemove/*** 加载条* @param type 'start' 开启 | 'finish' 结束 | 'error' 错误 | 'update' 更新到指定percent* @param percent* @returns {*}*/$eb.loading(type,percent)/*** 使用弹窗打开iframe页面* @param title* @param src* @param opt* @returns index*/$eb.createModalFrame(title,src,opt)/*** 关闭iframe页面* @param name | index*/$eb.closeModalFrame(name)/*** 全局layer*/$eb.layer/*** 全局axios*/$eb.axios
前端工具类
public/static/plug/helper.js 助手类
// 信息提示 提前引入 layer插件$h.pushMsg = function(msg,fn)// 同时只提示一次信息 提前引入 layer插件$h.pushMsgOnce = function(msg,fn)// 加载中 提前引入 layer插件$h.load = function()// 加载中 透明背景 提前引入 layer插件$h.loadFFF = function()// 关闭加载中$h.loadClear = function()// ajax文件上传 提前引入 ajaxFileUpload插件$h.ajaxUploadFile = function (name,url,fnGroup)// 高精度除法$h.div = function(arg1,arg2)// 高精度乘法$h.Mul = function(arg1,arg2)// 高精度加法$h.Add = function(arg1,arg2)// 高精度减法$h.Sub = function(arg1,arg2)// cookie操作$h.cookie = function(key,val,time)// get参数获取$h.getParmas = function getUrlParam(name)// tp5路由生成$h.U = function(opt = {c:'控制器',a:'方法',p:'路由参数',q:'get参数'});// 是否登陆中$h.isLogin = function()// 获得未压缩图片url$h.unThumb = function (src)
public/static/plug/wxApi.js 微信api接口
public/static/plug/reg-verify.js 类型验证
// 是否网址isHref:function(test)// 是否为邮箱isEmail:function(test)// 是否为手机号isPhone:function(test)// 是否为邮编isPostCode:function(test)// 是否为空isEmpty:function(test)// 是否为ArrayisArray:function(test)// 是否为ObjectisObject:function(test)// 是否为UndefinedisUndefined:function(test)// 是否为NullisNull:function(test)// 去除左右空格trim:function(test)
public/wap/first/crmeb/module/store.js api请求
/*** 发送GET请求* @param url 地址* @param successCallback 成功回调 JsonService::successfly* @param errorCallback 失败回调 JsonService::failed*/baseGet:function(url,successCallback,errorCallback)/*** 发送POST请求 使用* @param url 地址* @param data post参数* @param successCallback 成功回调 JsonService::successfly* @param errorCallback 失败回调 JsonService::failed*/basePost:function(url,data,successCallback,errorCallback)