/addons/ewei_shopv2/plugin/commission/template/web_v3/level/post.html
js eval解码工具
https://www.jb51.net/tools/eval/

人人商城url
https://wx.swkjfw.com/app/index.php?i=35&c=entry&m=ewei_shopv2&do=mobile&r=commission.down&mid=132091
对应文件 /addons/ewei_shopv2/plugin/commission/core/mobile/down.php

https://wx.swkjfw.com/app/index.php?i=35&c=entry&m=ewei_shopv2&do=mobile&r=member&mid=132091
对应文件 /addons/ewei_shopv2/core/mobile/member/index.php

https://wx.swkjfw.com/app/index.php?i=35&c=entry&m=ewei_shopv2&do=mobile&r=order&status=2&mid=132091
对应文件 /addons/ewei_shopv2/core/mobile/order/index.php

https://wx.swkjfw.com/app/index.php?i=35&c=entry&m=ewei_shopv2&do=mobile&r=cycelbuy.order.list&mid=132091
对应文件 /addons/ewei_shopv2/plugin/cycelbuy/core/mobile/order/list.php
​​
对应路径 /www/wwwroot/weixinmofang/addons/ewei_shopv2/core/inc/functions.php
常用的m函数和p函数就位于此

m()函数

if (!(function_exists('m'))) 
{
    function m($name = '') 
    {
        static $_modules = array();
        if (isset($_modules[$name])) 
        {
            return $_modules[$name];
        }
        $model = EWEI_SHOPV2_CORE . 'model/' . strtolower($name) . '.php';
        if (!(is_file($model))) 
        {
            exit(' Model ' . $name . ' Not Found!');
        }
        require_once $model;
        $class_name = ucfirst($name) . '_EweiShopV2Model';
        $_modules[$name] = new $class_name();
        return $_modules[$name];
    }
}

p()函数

if (!(function_exists('p'))) 
{
    function p($name = '') 
    {
        static $_plugins = array();
        if (isset($_plugins[$name])) 
        {
            return $_plugins[$name];
        }
        $model = EWEI_SHOPV2_PLUGIN . strtolower($name) . '/core/model.php';
        if (!(is_file($model))) 
        {
            return false;
        }
        $return_instance = false;
        if (($name == 'grant') || ($name == 'qpay')) 
        {
            $return_instance = true;
        }
        else if (com_perm_check_plugin($name)) 
        {
            if ($name == 'seckill') 
            {
                if (!(function_exists('redis')) || is_error(redis())) 
                {
                    return false;
                }
            }
            $return_instance = true;
        }
        if ($return_instance) 
        {
            require_once EWEI_SHOPV2_CORE . 'inc/plugin_model.php';
            require_once $model;
            $class_name = ucfirst($name) . 'Model';
            $_plugins[$name] = new $class_name($name);
            return $_plugins[$name];
        }
        $_plugins[$name] = false;
        return false;
    }
}

人人商城的路由机制

以商品已售罄 http://weixinmofang.gouwanmei.wang/web/index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=goods.out web端链接来作为示例,解析过程。

微擎路由 /web/index.php入口文件为index.php

<?php
/**
 * [WECHAT 2017]
 * [WECHAT  a free software]
 */
define('IN_SYS', true);
require '../framework/bootstrap.inc.php';
require IA_ROOT . '/web/common/bootstrap.sys.inc.php';
 
//加载一些需要的文件
load()->web('common');
load()->web('template');
load()->func('file');
load()->model('account');
load()->model('setting');
load()->model('user');
 
$state = urldecode($_GPC['state']);
if (!empty($state)) {
	$login_type = explode('=', $state);
	if (in_array($login_type[1], array('qq', 'wechat'))) {
		$controller = 'user';
		$action = 'login';
		$_GPC['login_type'] = $login_type[1];
	}
}
 
if (empty($_W['isfounder']) && !empty($_W['user']) && ($_W['user']['status'] == USER_STATUS_CHECK || $_W['user']['status'] == USER_STATUS_BAN)) {
	message('您的账号正在审核或是已经被系统禁止,请联系网站管理员解决!');
}
$acl = require IA_ROOT . '/web/common/permission.inc.php';
 
$_W['page'] = array();
$_W['page']['copyright'] = $_W['setting']['copyright'];
 
if (($_W['setting']['copyright']['status'] == 1) && empty($_W['isfounder']) && $controller != 'cloud' && $controller != 'utility' && $controller != 'account') {
	$_W['siteclose'] = true;
	if ($controller == 'account' && $action == 'welcome') {
		template('account/welcome');
		exit();
	}
	if ($controller == 'user' && $action == 'login') {
		if (checksubmit()) {
			require _forward($controller, $action);
		}
		template('user/login');
		exit();
	}
	isetcookie('__session', '', - 10000);
	message('站点已关闭,关闭原因:' . $_W['setting']['copyright']['reason'], url('account/welcome'), 'info');
}
//获取后台管理控制器文件夹
$controllers = array();
$handle = opendir(IA_ROOT . '/web/source/');
if (!empty($handle)) {
	while ($dir = readdir($handle)) {
		if ($dir != '.' && $dir != '..') {
			$controllers[] = $dir;
		}
	}
}
 
if (!in_array($controller, $controllers)) {
	$controller = 'home';
}
//$controller site
//$action; entry
 
 
$init = IA_ROOT . "/web/source/{$controller}/__init.php";
if (is_file($init)) {
	require $init;
}
 
$actions = array();
$actions_path = file_tree(IA_ROOT . '/web/source/' . $controller);
/*var_dump($actions_path);
array(12) {
    [0]=>
  string(39) "/data/lingdu/web/source/site/__init.php"
    [1]=>
  string(45) "/data/lingdu/web/source/site/article.ctrl.php"
    [2]=>
  string(46) "/data/lingdu/web/source/site/category.ctrl.php"
    [3]=>
  string(44) "/data/lingdu/web/source/site/editor.ctrl.php"
    [4]=>
  string(43) "/data/lingdu/web/source/site/entry.ctrl.php"
    [5]=>
  string(42) "/data/lingdu/web/source/site/info.ctrl.php"
    [6]=>
  string(43) "/data/lingdu/web/source/site/multi.ctrl.php"
    [7]=>
  string(41) "/data/lingdu/web/source/site/nav.ctrl.php"
    [8]=>
  string(43) "/data/lingdu/web/source/site/slide.ctrl.php"
    [9]=>
  string(46) "/data/lingdu/web/source/site/solution.ctrl.php"
    [10]=>
  string(43) "/data/lingdu/web/source/site/style.ctrl.php"
    [11]=>
  string(45) "/data/lingdu/web/source/site/zhuanti.ctrl.php"
}*/
foreach ($actions_path as $action_path) {
    //获取方法名
	$action_name = str_replace('.ctrl.php', '', basename($action_path));
	//dirname($action_path)  /data/lingdu/web/source/site
	$section = basename(dirname($action_path));  //site
	if ($section !== $controller) {
		$action_name = $section . '-' .$action_name;
	}
	$actions[] = $action_name;
}
/* $actions
array(12) {
    [0]=>
  string(10) "__init.php"
    [1]=>
  string(7) "article"
    [2]=>
  string(8) "category"
    [3]=>
  string(6) "editor"
    [4]=>
  string(5) "entry"
    [5]=>
  string(4) "info"
    [6]=>
  string(5) "multi"
    [7]=>
  string(3) "nav"
    [8]=>
  string(5) "slide"
    [9]=>
  string(8) "solution"
    [10]=>
  string(5) "style"
    [11]=>
  string(7) "zhuanti"
}*/
if (empty($actions)) {
	header('location: ?refresh');
}
 
if (!in_array($action, $actions)) {
	$action = $action . '-' . $action;
}
if (!in_array($action, $actions)) {
	$action = $acl[$controller]['default'] ? $acl[$controller]['default'] : $actions[0];
}
 
if (is_array($acl[$controller]['direct']) && in_array($action, $acl[$controller]['direct'])) {
		require _forward($controller, $action);
	exit();
}
//调用 \web\common\common.func.php检查登录方法
checklogin();
if ($_W['role'] != ACCOUNT_MANAGE_NAME_FOUNDER && version_compare($_W['setting']['site']['version'], '1.5.5', '>=')) {
	if (empty($_W['uniacid'])) {
		if (defined('FRAME') && FRAME == 'account') {
			itoast('', url('account/display'), 'info');
		}
		if (defined('FRAME') && FRAME == 'wxapp') {
			itoast('', url('wxapp/display'), 'info');
		}
	}
	$acl = permission_build();
	if (empty($acl[$controller][$_W['role']]) || (!in_array($controller.'*', $acl[$controller][$_W['role']]) && !in_array($action, $acl[$controller][$_W['role']]))) {
		message('不能访问, 需要相应的权限才能访问!');
	}
}
 
require _forward($controller, $action);
 
define('ENDTIME', microtime());
if (empty($_W['config']['setting']['maxtimeurl'])) {
	$_W['config']['setting']['maxtimeurl'] = 10;
}
if ((ENDTIME - STARTTIME) > $_W['config']['setting']['maxtimeurl']) {
	$data = array(
		'type' => '1',
		'runtime' => ENDTIME - STARTTIME,
		'runurl' => $_W['sitescheme'] . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
		'createtime' => TIMESTAMP
	);
	pdo_insert('core_performance', $data);
}
function _forward($c, $a) {
	$file = IA_ROOT . '/web/source/' . $c . '/' . $a . '.ctrl.php';  ///data/lingdu/web/source/site/entry.ctrl.php
 
	if (!file_exists($file)) {
		list($section, $a) = explode('-', $a);
		$file = IA_ROOT . '/web/source/' . $c . '/' . $section . '/' . $a . '.ctrl.php';
	}
	return $file;
}
function _calc_current_frames(&$frames) {
	global $controller, $action;
	if (! empty($frames['section']) && is_array($frames['section'])) {
		foreach ($frames['section'] as &$frame) {
			if (empty($frame['menu'])) {
				continue;
			}
			foreach ($frame['menu'] as &$menu) {
				$query = parse_url($menu['url'], PHP_URL_QUERY);
				parse_str($query, $urls);
				if (empty($urls)) {
					continue;
				}
				if (defined('ACTIVE_FRAME_URL')) {
					$query = parse_url(ACTIVE_FRAME_URL, PHP_URL_QUERY);
					parse_str($query, $get);
				} else {
					$get = $_GET;
					$get['c'] = $controller;
					$get['a'] = $action;
				}
				if (! empty($do)) {
					$get['do'] = $do;
				}
				$diff = array_diff_assoc($urls, $get);
				if (empty($diff)) {
					$menu['active'] = ' active';
				}
			}
		}
	}
}

人人商城路由分发
/addons/ewei_shopv2/site.php实例化/addons/ewei_shopv2/core/model/route.php中的Route_EweiShopV2Model,调用其中的run()方法

	public function doWebWeb()
	{
	    //路由地址方法
		m('route')->run();
	}

Route_EweiShopV2Model类

<?php
class Route_EweiShopV2Model
{
	public function run($isweb = true)
	{
		global $_GPC;
		global $_W;
		require_once IA_ROOT . '/addons/ewei_shopv2/core/inc/page.php';
 
		//默认为true
		if ($isweb) {
			require_once EWEI_SHOPV2_CORE . 'inc/page_web.php';
			require_once EWEI_SHOPV2_CORE . 'inc/page_web_com.php';
		}
		else {
			require_once EWEI_SHOPV2_CORE . 'inc/page_mobile.php';
			require_once EWEI_SHOPV2_CORE . 'inc/page_mobile_login.php';
		}
 
		//$r=goods.out
		$r = str_replace('//', '/', trim($_GPC['r'], '/'));
 
		//array('goods','out')
		$routes = explode('.', $r);
 
		$segs = count($routes);
		$method = 'main';
		// EWEI_SHOPV2_CORE_MOBILE  对应  /www/wwwroot/weixinmofang/addons/ewei_shopv2/core/web/
        /// EWEI_SHOPV2_CORE_MOBILE 对应  /www/wwwroot/weixinmofang/addons/ewei_shopv2/core/mobile/
		$root = $isweb ? EWEI_SHOPV2_CORE_WEB : EWEI_SHOPV2_CORE_MOBILE;
		$isMerch = false;
		$isNewstore = false;
 
		// strexists() - 判断字符串是否包含字串  strexists($string, $find)  在string中查找find是否存在
		//$_W['siteurl'];  http://weixinmofang.gouwanmei.wang/web/index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=goods.out
        if (strexists($_W['siteurl'], 'web/merchant.php')) {
			if (empty($r)) {
				$r = 'merch.manage';
				$routes = explode('.', $r);
			}
 
			$isMerch = true;
			$isplugin = true;
		}
		else if (strexists($_W['siteurl'], 'web/newstoreant.php')) {
			if (empty($r)) {
				$r = 'newstore.manage';
				$routes = explode('.', $r);
			}
 
			$isNewstore = true;
			$isplugin = true;
		}
		else {
        	// 非空 $r 且存在插件目录
        	// EWEI_SHOPV2_PLUGIN . $routes[0]; /www/wwwroot/weixinmofang/addons/ewei_shopv2/plugin/good
			$isplugin = !empty($r) && is_dir(EWEI_SHOPV2_PLUGIN . $routes[0]);
		}
 
		//如果是插件   plugins目录下并不存在goods目录 只存在如commission之类的插件目录
		if ($isplugin) {
			if ($isweb) {
				require_once EWEI_SHOPV2_CORE . 'inc/page_web_plugin.php';
			}
			else {
				require_once EWEI_SHOPV2_CORE . 'inc/page_mobile_plugin.php';
				require_once EWEI_SHOPV2_CORE . 'inc/page_mobile_plugin_login.php';
				require_once EWEI_SHOPV2_CORE . 'inc/page_mobile_plugin_pf.php';
			}
 
			$_W['plugin'] = $routes[0];
			$root = EWEI_SHOPV2_PLUGIN . $routes[0] . '/core/' . ($isweb ? 'web' : 'mobile') . '/';
 
			if ($isMerch) {
				$_W['plugin'] = 'merch';
				$root = EWEI_SHOPV2_PLUGIN . 'merch/core/web/manage/';
			}
			else if ($isNewstore) {
				$_W['plugin'] = 'newstore';
				$root = EWEI_SHOPV2_PLUGIN . 'newstore/core/web/manage/';
			}
			else {
				$routes = array_slice($routes, 1);
			}
 
			$segs = count($routes);
		}
		else {
			if ($routes[0] == 'system') {
				require_once EWEI_SHOPV2_CORE . 'inc/page_system.php';
			}
		}
 
		//$segs = count($routes);   如 goods.out对应 array('goods','out') 为2
		switch ($segs) {
		case 0:
			$file = $root . 'index.php';
			$class = 'Index';
		case 1:
			$file = $root . $routes[0] . '.php';
 
			if (is_file($file)) {
				$class = ucfirst($routes[0]);
			}
			else if (is_dir($root . $routes[0])) {
				$file = $root . $routes[0] . '/index.php';
				$class = 'Index';
			}
			else {
				$method = $routes[0];
				$file = $root . 'index.php';
				$class = 'Index';
			}
 
			$_W['action'] = $routes[0];
			break;
 
		case 2:
 
			$_W['action'] = $routes[0] . '.' . $routes[1];  //②goods.out
			$file = $root . $routes[0] . '/' . $routes[1] . '.php';   // /addons/ewei_shopv2/core/web/goods/out.php
 
			if (is_file($file)) {        //当/addons/ewei_shopv2/core/web/goods/out.php存在的时候
				$class = ucfirst($routes[1]);   // 类为 out 类
			}
			else if (is_dir($root . $routes[0] . '/' . $routes[1])) {  //$root   对应 /www/wwwroot/weixinmofang/addons/ewei_shopv2/core/web/
				$file = $root . $routes[0] . '/' . $routes[1] . '/index.php';
				$class = 'Index';
			}
			else {
				$file = $root . $routes[0] . '.php';
 
				if (is_file($file)) {
					$method = $routes[1];
					$class = ucfirst($routes[0]);
				}
				else if (is_dir($root . $routes[0])) {   // 对应 /addons/ewei_shopv2/core/web/goods/index.php 如果存在
					$method = $routes[1];
					$file = $root . $routes[0] . '/index.php';
					$class = 'Index';
				}
				else {
					$file = $root . 'index.php';
					$class = 'Index';
				}
			}
 
			$_W['action'] = $routes[0] . '.' . $routes[1];
			break;
 
		case 3:
			$_W['action'] = $routes[0] . '.' . $routes[1] . '.' . $routes[2];
			$file = $root . $routes[0] . '/' . $routes[1] . '/' . $routes[2] . '.php';
 
			if (is_file($file)) {
				$class = ucfirst($routes[2]);
			}
			else if (is_dir($root . $routes[0] . '/' . $routes[1] . '/' . $routes[2])) {
				$file = $root . $routes[0] . '/' . $routes[1] . '/' . $routes[2] . '/index.php';
				$class = 'Index';
			}
			else {
				$method = $routes[2];
				$file = $root . $routes[0] . '/' . $routes[1] . '.php';
 
				if (is_file($file)) {
					$class = ucfirst($routes[1]);
				}
				else {
					if (is_dir($root . $routes[0] . '/' . $routes[1])) {
						$file = $root . $routes[0] . '/' . $routes[1] . '/index.php';
						$class = 'Index';
					}
				}
 
				$_W['action'] = $routes[0] . '.' . $routes[1];
			}
 
			break;
 
		case 4:
			$_W['action'] = $routes[0] . '.' . $routes[1] . '.' . $routes[2];
			$method = $routes[3];
			$class = ucfirst($routes[2]);
			$file = $root . $routes[0] . '/' . $routes[1] . '/' . $routes[2] . '.php';
			break;
		}
 
		if (!is_file($file)) {
			show_message('未找到控制器 ' . $r);
		}
 
		$_W['routes'] = $r;
		$_W['isplugin'] = $isplugin;
		$_W['controller'] = $routes[0];
		$global_set = m('cache')->getArray('globalset');
 
		if (empty($global_set)) {
			$global_set = m('common')->setGlobalSet();
		}
 
		if (!is_array($global_set)) {
			$global_set = array();
		}
 
		empty($global_set['trade']['credittext']) && $global_set['trade']['credittext'] = '积分';
		empty($global_set['trade']['moneytext']) && $global_set['trade']['moneytext'] = '余额';
		$GLOBALS['_S'] = $_W['shopset'] = $global_set;
		include $file;
		$class = ucfirst($class) . '_EweiShopV2Page';
		$instance = new $class();
 
		if (!method_exists($instance, $method)) {
			show_message('控制器 ' . $_W['controller'] . ' 方法 ' . $method . ' 未找到!');
		}
 
		$instance->$method();
		exit();
	}
}
 
if (!defined('IN_IA')) {
	exit('Access Denied');
}
 
?>

ims_ewei_shop_sysset 系统设置表

$enoughDeductInfo=m(‘common’)->getPluginset(‘sale’);   获取插件优惠券内容

plugins字段
a:4:{s:10:”commission”;a:57:{s:5:”level”;s:1:”2″;s:7:”selfbuy”;s:1:”0″;s:6:”cansee”;s:1:”0″;s:8:”seetitle”;s:0:””;s:12:”become_child”;s:1:”0″;s:9:”hideicode”;s:1:”0″;s:6:”become”;s:1:”1″;s:17:”become_ordercount”;s:0:””;s:17:”become_moneycount”;s:0:””;s:12:”become_check”;s:1:”0″;s:12:”become_order”;s:1:”0″;s:13:”open_protocol”;s:1:”0″;s:10:”become_reg”;s:1:”0″;s:17:”no_commission_url”;s:0:””;s:8:”withdraw”;s:2:”10″;s:14:”commissiontype”;s:1:”0″;s:14:”withdrawcharge”;s:0:””;s:13:”withdrawbegin”;d:0;s:11:”withdrawend”;d:0;s:10:”settledays”;s:0:””;s:8:”levelurl”;s:0:””;s:9:”leveltype”;s:1:”0″;s:11:”qrcodeshare”;s:1:”1″;s:9:”codeShare”;s:1:”1″;s:15:”openorderdetail”;s:1:”0″;s:14:”openorderbuyer”;s:1:”0″;s:13:”closed_qrcode”;s:1:”0″;s:6:”qrcode”;s:1:”0″;s:12:”qrcode_title”;s:0:””;s:14:”qrcode_content”;s:0:””;s:13:”qrcode_remark”;s:0:””;s:15:”register_bottom”;s:1:”0″;s:22:”register_bottom_title1″;s:0:””;s:24:”register_bottom_content1″;s:0:””;s:22:”register_bottom_title2″;s:0:””;s:24:”register_bottom_content2″;s:0:””;s:22:”register_bottom_title3″;s:0:””;s:24:”register_bottom_content3″;s:0:””;s:22:”register_bottom_remark”;s:0:””;s:23:”register_bottom_content”;s:0:””;s:11:”closemyshop”;s:1:”1″;s:12:”select_goods”;s:1:”0″;s:5:”style”;s:7:”default”;s:5:”regbg”;s:0:””;s:10:”applytitle”;s:0:””;s:12:”applycontent”;s:0:””;s:10:”cashcredit”;i:0;s:10:”cashweixin”;i:1;s:9:”cashother”;i:1;s:10:”cashalipay”;i:1;s:8:”cashcard”;i:0;s:14:”become_goodsid”;i:0;s:5:”texts”;a:26:{s:5:”agent”;s:9:”分销商”;s:4:”shop”;s:6:”小店”;s:6:”myshop”;s:12:”我的小店”;s:6:”center”;s:12:”分销中心”;s:6:”become”;s:15:”成为分销商”;s:8:”withdraw”;s:6:”提现”;s:10:”commission”;s:6:”佣金”;s:11:”commission1″;s:12:”分销佣金”;s:16:”commission_total”;s:12:”累计佣金”;s:13:”commission_ok”;s:15:”可提现佣金”;s:16:”commission_apply”;s:15:”已申请佣金”;s:16:”commission_check”;s:15:”待打款佣金”;s:15:”commission_lock”;s:15:”未结算佣金”;s:15:”commission_wait”;s:15:”待收货佣金”;s:15:”commission_fail”;s:12:”无效佣金”;s:14:”commission_pay”;s:18:”成功提现佣金”;s:17:”commission_charge”;s:21:”扣除提现手续费”;s:17:”commission_detail”;s:12:”佣金明细”;s:5:”order”;s:12:”分销订单”;s:4:”down”;s:6:”下线”;s:6:”mydown”;s:12:”我的下线”;s:2:”c1″;s:6:”一级”;s:2:”c2″;s:6:”二级”;s:2:”c3″;s:6:”三级”;s:4:”yuan”;s:3:”元”;s:5:”icode”;s:9:”邀请码”;}s:9:”levelname”;s:12:”默认等级”;s:11:”commission1″;s:2:”20″;s:11:”commission2″;s:2:”10″;s:11:”commission3″;s:0:””;}s:8:”dividend”;a:1:{s:4:”init”;i:1;}s:7:”diypage”;a:2:{s:4:”page”;a:6:{s:4:”home”;s:0:””;s:6:”member”;s:0:””;s:6:”detail”;s:0:””;s:10:”commission”;s:0:””;s:10:”creditshop”;s:0:””;s:8:”exchange”;s:0:””;}s:4:”menu”;a:12:{s:4:”shop”;s:1:”7″;s:8:”shop_wap”;s:0:””;s:10:”creditshop”;s:0:””;s:14:”creditshop_wap”;s:0:””;s:10:”commission”;s:0:””;s:14:”commission_wap”;s:0:””;s:6:”groups”;s:0:””;s:10:”groups_wap”;s:0:””;s:3:”sns”;s:0:””;s:7:”sns_wap”;s:0:””;s:4:”sign”;s:0:””;s:8:”sign_wap”;s:0:””;}}s:4:”sale”;a:3:{s:11:”enoughmoney”;d:100;s:12:”enoughdeduct”;d:20;s:7:”enoughs”;a:0:{}}}

sets字段
a:6:{s:4:”shop”;a:16:{s:4:”name”;s:12:”不二旅物”;s:4:”logo”;s:51:”images/4/2018/11/tDvYKdY0yf8cf0XfdAxAfa0l8Yyz7f.jpg”;s:11:”description”;s:59:”最火的“不二”旅途,最in的“不土”特产。”;s:3:”img”;s:0:””;s:7:”signimg”;s:51:”images/4/2018/11/tDvYKdY0yf8cf0XfdAxAfa0l8Yyz7f.jpg”;s:7:”getinfo”;s:1:”1″;s:7:”saleout”;s:0:””;s:7:”loading”;s:0:””;s:7:”diycode”;s:0:””;s:6:”funbar”;s:1:”0″;s:10:”goodstotal”;s:1:”0″;s:13:”close_preview”;s:1:”0″;s:8:”catlevel”;s:1:”1″;s:7:”catshow”;s:1:”0″;s:9:”catadvimg”;s:51:”images/4/2018/10/E3UxXu0zzyMXXHMM70rkkK002xKxk3.jpg”;s:9:”catadvurl”;s:0:””;}s:14:”wxpaycert_view”;a:1:{s:20:”wxpaycert_view_click”;i:1;}s:3:”pay”;a:12:{s:9:”weixin_id”;i:1;s:6:”weixin”;i:1;s:10:”weixin_sub”;i:0;s:10:”weixin_jie”;i:0;s:14:”weixin_jie_sub”;i:0;s:6:”alipay”;i:0;s:9:”alipay_id”;i:0;s:6:”credit”;i:1;s:4:”cash”;i:1;s:10:”app_wechat”;i:0;s:10:”app_alipay”;i:0;s:7:”paytype”;a:3:{s:10:”commission”;s:1:”0″;s:8:”withdraw”;s:1:”0″;s:7:”redpack”;s:1:”0″;}}s:8:”category”;a:5:{s:5:”level”;s:1:”1″;s:4:”show”;s:1:”0″;s:5:”style”;s:1:”0″;s:6:”advimg”;s:51:”images/4/2018/10/E3UxXu0zzyMXXHMM70rkkK002xKxk3.jpg”;s:6:”advurl”;s:0:””;}s:6:”travel”;a:11:{s:4:”name”;s:0:””;s:3:”img”;N;s:4:”logo”;N;s:7:”signimg”;N;s:7:”saleout”;N;s:7:”loading”;N;s:7:”diycode”;N;s:11:”travel_name”;s:0:””;s:11:”travel_logo”;N;s:16:”travel_agreement”;N;s:12:”travel_phone”;N;}s:6:”notice”;a:100:{s:18:”saler_pay_template”;s:0:””;s:24:”saler_pay_close_advanced”;s:1:”0″;s:13:”saler_pay_sms”;s:0:””;s:19:”saler_pay_close_sms”;s:1:”0″;s:6:”mobile”;s:0:””;s:21:”saler_finish_template”;s:0:””;s:27:”saler_finish_close_advanced”;s:1:”0″;s:16:”saler_finish_sms”;s:0:””;s:22:”saler_finish_close_sms”;s:1:”0″;s:7:”mobile2″;s:0:””;s:24:”saler_stockwarn_template”;s:0:””;s:30:”saler_stockwarn_close_advanced”;s:1:”0″;s:19:”saler_stockwarn_sms”;s:0:””;s:25:”saler_stockwarn_close_sms”;s:1:”0″;s:7:”mobile3″;s:0:””;s:21:”saler_refund_template”;s:0:””;s:27:”saler_refund_close_advanced”;s:1:”0″;s:16:”saler_refund_sms”;s:0:””;s:22:”saler_refund_close_sms”;s:1:”0″;s:7:”mobile4″;s:0:””;s:22:”saler_goodpay_template”;s:0:””;s:28:”saler_goodpay_close_advanced”;s:1:”0″;s:17:”saler_goodpay_sms”;s:0:””;s:23:”saler_goodpay_close_sms”;s:1:”0″;s:16:”carrier_template”;s:0:””;s:22:”carrier_close_advanced”;s:1:”0″;s:11:”carrier_sms”;s:0:””;s:17:”carrier_close_sms”;s:1:”0″;s:15:”cancel_template”;s:0:””;s:21:”cancel_close_advanced”;s:1:”0″;s:10:”cancel_sms”;s:0:””;s:16:”cancel_close_sms”;s:1:”0″;s:19:”willcancel_template”;s:0:””;s:25:”willcancel_close_advanced”;s:1:”0″;s:14:”willcancel_sms”;s:0:””;s:20:”willcancel_close_sms”;s:1:”0″;s:12:”pay_template”;s:0:””;s:18:”pay_close_advanced”;s:1:”0″;s:7:”pay_sms”;s:0:””;s:13:”pay_close_sms”;s:1:”0″;s:13:”send_template”;s:0:””;s:19:”send_close_advanced”;s:1:”0″;s:8:”send_sms”;s:0:””;s:14:”send_close_sms”;s:1:”0″;s:20:”virtualsend_template”;s:0:””;s:26:”virtualsend_close_advanced”;s:1:”0″;s:15:”virtualsend_sms”;s:0:””;s:21:”virtualsend_close_sms”;s:1:”0″;s:20:”orderstatus_template”;s:0:””;s:26:”orderstatus_close_advanced”;s:1:”0″;s:15:”orderstatus_sms”;s:0:””;s:21:”orderstatus_close_sms”;s:1:”0″;s:16:”refund1_template”;s:0:””;s:22:”refund1_close_advanced”;s:1:”0″;s:11:”refund1_sms”;s:0:””;s:17:”refund1_close_sms”;s:1:”0″;s:16:”refund3_template”;s:0:””;s:22:”refund3_close_advanced”;s:1:”0″;s:11:”refund3_sms”;s:0:””;s:17:”refund3_close_sms”;s:1:”0″;s:16:”refund4_template”;s:0:””;s:22:”refund4_close_advanced”;s:1:”0″;s:11:”refund4_sms”;s:0:””;s:17:”refund4_close_sms”;s:1:”0″;s:16:”refund2_template”;s:0:””;s:22:”refund2_close_advanced”;s:1:”0″;s:11:”refund2_sms”;s:0:””;s:17:”refund2_close_sms”;s:1:”0″;s:20:”recharge_ok_template”;s:0:””;s:26:”recharge_ok_close_advanced”;s:1:”0″;s:15:”recharge_ok_sms”;s:0:””;s:21:”recharge_ok_close_sms”;s:1:”0″;s:20:”withdraw_ok_template”;s:0:””;s:26:”withdraw_ok_close_advanced”;s:1:”0″;s:15:”withdraw_ok_sms”;s:0:””;s:21:”withdraw_ok_close_sms”;s:1:”0″;s:24:”backrecharge_ok_template”;s:0:””;s:30:”backrecharge_ok_close_advanced”;s:1:”0″;s:19:”backrecharge_ok_sms”;s:0:””;s:25:”backrecharge_ok_close_sms”;s:1:”0″;s:21:”backpoint_ok_template”;s:0:””;s:27:”backpoint_ok_close_advanced”;s:1:”0″;s:16:”backpoint_ok_sms”;s:0:””;s:22:”backpoint_ok_close_sms”;s:1:”0″;s:16:”upgrade_template”;s:0:””;s:22:”upgrade_close_advanced”;s:1:”0″;s:11:”upgrade_sms”;s:0:””;s:17:”upgrade_close_sms”;s:1:”0″;s:20:”o2o_sverify_template”;s:0:””;s:26:”o2o_sverify_close_advanced”;s:1:”0″;s:15:”o2o_sverify_sms”;s:0:””;s:21:”o2o_sverify_close_sms”;s:1:”0″;s:20:”o2o_bverify_template”;s:0:””;s:26:”o2o_bverify_close_advanced”;s:1:”0″;s:15:”o2o_bverify_sms”;s:0:””;s:21:”o2o_bverify_close_sms”;s:1:”0″;s:6:”openid”;s:28:”oX2ok1m5itI9HOtw-tMS3ekczE5Q”;s:7:”openid2″;s:28:”oX2ok1m5itI9HOtw-tMS3ekczE5Q”;s:7:”openid3″;s:0:””;s:7:”openid4″;s:0:””;}}

 
人人商城 我的小店url设置
http://wx.swkjfw.com/app/index.php?i=35&c=entry&m=ewei_shopv2&do=mobile&r=commission.myshop&mid=132091

i代表公众号   i=35 应该是表示第35个公众号
c=entry表示要加载东西了

微信端模板中url调用方法
{php echo mobileUrl(‘goods/detail’,array(‘id’=>$goodsInfo[‘id’],’is_travel’=>1))},输出如下
./index.php?i=4&c=entry&m=ewei_shopv2&do=mobile&r=goods.detail&id=206&is_travel=1

 {template ‘order/pay/wechat_jie’} 引用模板位置如下:
/addons/ewei_shopv2/template/mobile/default/order/pay/wechat_jie.html

{template ‘_header’} 引用模板位置如下:
/addons/ewei_shopv2/template/mobile/default/_header.html

对应Css文件如下: //常量EWEI_SHOPV2_LOCAL对应 ../addons/ewei_shopv2/

调用商品缩略图   
{php echo tomedia($goodsInfo[‘thumb’])}
对应数据库路径 images/4/2018/10/VEvgAU9m0mUuGgazJ8MS0Qm5z0jIQi.jpg
http://gewailvyou.720vrs.cn/attachment/images/4/2018/10/VEvgAU9m0mUuGgazJ8MS0Qm5z0jIQi.jpg

人人商城foxui js框架
FoxUI.loader.show(‘mini’);
FoxUI.loader.hide();

数据库字典
ims_ewei_shop_member 人人商城店铺会员表

id    
uniacid    
uid    在 mc_member 里的UID
groupid    用户组ID
level    用户级别 用户等级表里的 id 值
agentid    上级分销商ID
openid    
realname    真名
mobile    手机号
pwd    密码
isblack    是否加入黑名单
weixin    微信
content    备注内容
createtime    建立时间
agenttime    代理时间
status    状态 0 没有审核 1 已经审核
*regformstatus    注册表单填写状态
*splashstatus    启动画面状态
isagent    是否分销商 包括已经提交分销申请的
clickcount    分享链接点击次数
agentlevel    分销商等级
noticeset    提醒设置
nickname    昵称
credit1    积分
credit2    余额
birthyear    生日年
birthmonth    生日月
birthday    生日天
gender    性别
avatar    头像
province    省
city    市
area    区
childtime    成为下线的时间
inviter    邀请人 (通过分享过来的人)
agentnotupgrade    经销商不能升级
agentselectgoods    分销商选择商品(与总店同步)
agentblack    分销商黑名单
fixagentid    是否固定上级分销商
diymemberid    用户表单模板ID
diymemberfields    用户表单字段
diymemberdata    用户表单数据
diymemberdataid    
diycommissionid    注册分销商表单ID
diycommissionfields    注册分销商表单字段
diycommissiondata    注册分销商表单数据
diycommissiondataid    
username    v2 用户名
commission_total    v2 预计佣金总额,此字段为内置排行榜所用字段
endtime2    v2 分销资格到期时间
ispartner    v2 是否股东
partnertime    v2 股东时间
partnerstatus    v2 股东状态
partnerblack    v2 股东黑名单
partnerlevel    v2 股东级别
partnernotupgrade    v2 股东不能升级
diyglobonusid    v2 股东注册表单ID
diyglobonusdata    v2 股东注册数据
diyglobonusfields    v2 股东注册字段
isaagent    v2 是否区域代理
aagentlevel    v2 区域代理级别
aagenttime    v2 区域代理时间
aagentstatus    v2 区域代理状态
aagentblack    v2 区域代理黑名单
aagentnotupgrade    v2 区域代理不升级
aagenttype    v2 区域代理类型
aagentprovinces    v2 区域代理省
aagentcitys    v2 区域代理市
aagentareas    v2 区域代理区
diyaagentid    v2 申请区域代理表单
diyaagentdata    v2 申请区域代理数据
diyaagentfields    v2 申请区域代理字段
salt    v2 密码加盐
mobileverify    v2 手机验证状态
mobileuser    v2 手机用户
carrier_mobile    v2 快递手机
isauthor    v2 是否作者
authortime    v2 作者时间
authorstatus    v2 作者状态
authorblack    v2 作者黑名单
authorlevel    v2 作者级别
authornotupgrade    v2 作者不可升级
diyauthorid    v2 作者表单模板
diyauthordata    v2 作者表单数据
diyauthorfields    v2 作者表单字段
authorid    v2 作者ID
comefrom    v2 用户来源
openid_qq    v2 用户QQ
openid_wx    v2 用户微信
datavalue    v2 数据值
updateaddress    是否更新过地址
*follow    是否关注
*commissiontotal    可提现分销佣金总额
*mabycommissiontotal    预计分销佣金总额
*ordertotal    分销订单总额
*followtotal    推介粉丝总数
*bossid    分销商老板ID
*staffid    分销商员工ID
*provid    省级经理ID
*ismanager    是否省经理
*dianming    所属门店名字
*countyno    县域中心编号

/addons/ewei_shopv2/static/js/web/tip.js文件eval解码

define(['jquery'],
function($) {
    var tip = {};
    tip.lang = {
        "success": "操作成功",
        "error": "操作失败",
        "exception": "网络异常",
        "processing": "处理中..."
    };
    $('#tip-msgbox').remove();
    $("body", top.window.document).append('<div id="tip-msgbox" class="msgbox"></div>');
    window.msgbox = $("#tip-msgbox", top.window.document);
    tip.confirm = function(msg, callback, cancel_callback) {
        msg = msg.replace(/</g, "<");
        msg = msg.replace(/>/g, ">");
        myrequire(['jquery.confirm'],
        function() {
            $.confirm({
                title: '提示',
                content: msg,
                confirmButtonClass: 'btn-primary',
                cancelButtonClass: 'btn-default',
                confirmButton: '确 定',
                cancelButton: '取 消',
                animation: 'top',
                confirm: function() {
                    if (callback && typeof(callback) == 'function') {
                        callback()
                    }
                },
                cancel: function() {
                    if (cancel_callback && typeof(cancel_callback) == 'function') {
                        cancel_callback()
                    }
                }
            })
        })
    },
    tip.prompt = function(msg, options, password) {
        var callback = null;
        var maxlength = null;
        var required = false;
        var input_type = password ? 'password': 'text';
        if (typeof options == 'function') {
            callback = options
        } else if (typeof options == 'object') {
            maxlength = options.maxlength || null;
            callback = options.callback && typeof options.callback == 'function' ? options.callback: null;
            required = options.required || false
        }
        var inputid = 'prompt_' + ( + new Date());
        var max = maxlength ? " maxlength='" + maxlength + "' ": '';
        myrequire(['jquery.confirm'],
        function() {
            $.alert({
                title: '提示',
                content: "<p>" + msg + "</p><p><input id='" + inputid + "' type='" + input_type + "' class='form-control' name='confirm' placeholder='" + msg + "' " + max + " /></p>",
                confirmButtonClass: 'btn-primary',
                confirmButton: '确 定',
                closeIcon: true,
                animation: 'top',
                keyboardEnabled: true,
                onOpen: function() {
                    setTimeout(function() {
                        $('#' + inputid).focus()
                    },
                    100)
                },
                confirm: function() {
                    var value = $('#' + inputid).val();
                    if ($.trim(value) == '' && required) {
                        $('#' + inputid).focus();
                        return false
                    }
                    if (callback && typeof(callback) == 'function') {
                        callback(value)
                    }
                }
            })
        })
    },
    tip.promptlive = function(msg, options, password) {
        var callback = null;
        var maxlength = null;
        var required = false;
        var input_type = password ? 'password': 'text';
        if (typeof options == 'function') {
            callback = options
        } else if (typeof options == 'object') {
            maxlength = options.maxlength || null;
            callback = options.callback && typeof options.callback == 'function' ? options.callback: null;
            required = options.required || false
        }
        var inputid = 'prompt_' + ( + new Date());
        var max = maxlength ? " maxlength='" + maxlength + "' ": '';
        myrequire(['jquery.confirm'],
        function() {
            $.alert({
                title: '提示',
                content: "<p>" + msg + "</p><p><input id='" + inputid + "' type='" + input_type + "' class='form-control' name='confirm' placeholder='' " + max + " /></p>",
                confirmButtonClass: 'btn-primary',
                confirmButton: '确 定',
                closeIcon: true,
                animation: 'top',
                keyboardEnabled: true,
                onOpen: function() {
                    setTimeout(function() {
                        $('#' + inputid).focus()
                    },
                    100)
                },
                confirm: function() {
                    var value = $('#' + inputid).val();
                    if ($.trim(value) == '' && required) {
                        $('#' + inputid).focus();
                        return false
                    }
                    if (callback && typeof(callback) == 'function') {
                        callback(value);
                        return false
                    }
                }
            })
        })
    },
    tip.alert = function(msg, callback) {
        msg = msg.replace(/</g, "<");
        msg = msg.replace(/>/g, ">");
        myrequire(['jquery.confirm'],
        function() {
            $.alert({
                title: '提示',
                content: msg,
                confirmButtonClass: 'btn-primary',
                confirmButton: '确 定',
                animation: 'top',
                confirm: function() {
                    if (callback && typeof(callback) == 'function') {
                        callback()
                    }
                }
            })
        })
    },
    1;
    var Notify = function(element, options) {
        this.$element = $(element);
        this.options = $.extend({},
        $.fn.notify.defaults, options);
        var cls = this.options.type ? "msg-" + this.options.type: "msg-success";
        var $note = '<span class="msg ' + cls + '">' + this.options.message + '</span>';
        this.$element.html($note);
        return this
    };
    Notify.prototype.show = function() {
        this.$element.addClass('in'),
        this.$element.append(this.$note);
        var autoClose = this.options.autoClose || true;
        if (autoClose) {
            var self = this;
            setTimeout(function() {
                self.close()
            },
            this.options.delay || 2000)
        }
    },
    Notify.prototype.close = function() {
        var self = this;
        self.$element.removeClass('in').transitionEnd(function() {
            self.$element.empty();
            if (self.options.onClosed) {
                self.options.onClosed(self)
            }
        });
        if (self.options.onClose) {
            self.options.onClose(self)
        }
    },
    $.fn.notify = function(options) {
        return new Notify(this, options)
    },
    $.fn.notify.defaults = {
        type: "success",
        delay: 3000,
        message: ''
    },
    tip.msgbox = {
        show: function(options) {
            if (options.url) {
                options.url = options.url.replace(/&/ig, "&");
                options.onClose = function() {
                    redirect(options.url)
                }
            }
            if (options.message && options.message.length > 17) {
                tip.alert(options.message,
                function() {
                    if (options.url) {
                        redirect(options.url)
                    }
                });
                return
            }
            notify = window.msgbox.notify(options),
            notify.show()
        },
        suc: function(msg, url, onClose, onClosed) {
            tip.msgbox.show({
                delay: 2000,
                type: "success",
                message: msg,
                url: url,
                onClose: onClose,
                onClosed: onClosed
            })
        },
        err: function(msg, url, onClose, onClosed) {
            tip.msgbox.show({
                delay: 2000,
                type: "error",
                message: msg,
                url: url,
                onClose: onClose,
                onClosed: onClosed
            })
        }
    },
    tip.impower = function(msg, callback, cancel_callback) {
        msg = msg.replace(/</g, "<");
        msg = msg.replace(/>/g, ">");
        myrequire(['jquery.confirm'],
        function() {
            $.confirm({
                title: '  ',
                content: msg,
                confirmButtonClass: 'btn-default',
                cancelButtonClass: 'btn-primary',
                confirmButton: '重新上传',
                cancelButton: '审核完成',
                animation: 'top',
                closeIcon: true,
                confirm: function() {
                    if (callback && typeof(callback) == 'function') {
                        callback()
                    }
                },
                cancel: function() {
                    if (cancel_callback && typeof(cancel_callback) == 'function') {
                        cancel_callback()
                    }
                }
            })
        })
    };
    window.tip = tip
});

微擎常用目录
├─ addons ………………………………………… 【模块安装目录】 (意为附加组件)

│ ├─ business …………………………………… 模块的名称 (示例)

│ │ ├─ images 建议 css 文件也放此目录.

│ │ ├─ template 模板目录

│ │ │ ├─ mobile APP 端模板目录

│ │ │ │ └─ … *.html APP 端模板文件

│ │ │ └─ … *.html Web 端模板文件

│ │ ├─ inc 引用的 php 文件目录

│ │ │ ├─ mobile Mobile端目录

│ │ │ │ ├─ xxx.inc.php 微站入口

│ │ │ │ └─ … .

│ │ │ └─ web Web端模板目录

│ │ │ ├─ xxx.inc.php 微站管理入口

│ │ │ └─ … .

│ │ ├─ icon.jpg 模块图标

│ │ ├─ preview.jpg 模块预览

│ │ ├─ manifest.xml 安装清单

│ │ ├─ module.php 模块设置

│ │ ├─ processor.php 消息处理

│ │ ├─ receiver.php 消息订阅

│ │ └─ site.php 微站页面

│ └─ … …………………………………………… 其他扩展模块

├─ api ………………………………………………… .

│ └─ uc.php .

├─ attachment ……………………………………… 附件文件夹

│ ├─ audios ……………………………………… 音频附件文件夹

│ └─ images ……………………………………… 图片附件文件夹

│ ├─ global ………………………………… 系统公共文件夹

│ │ └─ 上传年份

│ │ └─上传月份

│ │ └─ 随机文件名

│ └─ $uniacid … ……………………………按公众号年月组织的图片文件

├─ app ……………………………………………【微站(Mobile)入口】

│ ├─ common .

│ │ ├─ bootstrap.app.inc.php .

│ │ ├─ common.func.php .

│ │ └─ template.func.php .

│ ├─ resource .

│ │ ├─ css .

│ │ ├─ fonts .

│ │ └─ js .

│ ├─ source .

│ │ ├─ activity .

│ │ ├─ auth 身份验证

│ │ ├─ channel 频道

│ │ ├─ entry 入口

│ │ ├─ home 个人

│ │ ├─ mc 会员中心

│ │ └─ utility .

│ ├─ themes 微站皮肤

│ │ ├─ default 系统默认

│ │ └─ … 自定义皮肤

│ ├─ index.php 微站入口

│ └─ test.php 微站测试页面

├─ data ……………………………………………… .

│ ├─ config.php.default .

│ ├─ config.php 系统配置

│ └─ db.php .

├─ framework ………………………………………【微擎系统通用的工具类和方法】

│ ├─ builtin ……………………………………【微擎内建模块】

│ │ ├─ basic 文字回复模块

│ │ ├─ core 会话消息统计

│ │ │ └─ receiver.php .

│ │ ├─ cover 通用封面回复

│ │ ├─ default 默认回复模块

│ │ ├─ music 音乐回复模块

│ │ ├─ news 图文回复模块

│ │ ├─ userapi 自定义接口回复模块

│ │ │ ├─ api 功能文件目录

│ │ │ │ ├─ baike.php 百科

│ │ │ │ ├─ calendar.php 万年历

│ │ │ │ ├─ express.php 快递

│ │ │ │ ├─ news.php 新闻

│ │ │ │ ├─ translate.php 翻译

│ │ │ │ ├─ weather.php 天气

│ │ │ │ └─ … 可扩展

│ │ │ ├─ images .

│ │ │ │ └─ … .

│ │ │ ├─ template .

│ │ │ │ └─ … .

│ │ │ ├─ icon.jpg .

│ │ │ ├─ preview.jpg .

│ │ │ ├─ module.php .

│ │ │ ├─ processor.php .

│ │ │ └─ site.php .

│ │ └─ … .

│ ├─ class ………………………………………… 工具类

│ │ ├─ loader.class.php 文件加载器

│ │ ├─ db.class.php 数据库操作类

│ │ ├─ account.class.php 公众号业务操作基类,

│ │ ├─ weixin.account.class.php 微信公众号业务操作

│ │ ├─ yixin.account.class.php 易信

│ │ └─ laiwang.account.class.php 来旺 .

│ ├─ function …………………………………… 工具函数

│ │ ├─ global.func.php 【全局通用函数】

│ │ ├─ cache.file.func.php 文件缓存

│ │ ├─ cache.func.php 缓存功能

│ │ ├─ cache.memcache.func.php 插件缓存

│ │ ├─ cache.mysql.func.php mysql缓存

│ │ ├─ communication.func.php http 通信

│ │ ├─ compat.biz.func.php 兼容函数(业务功能)

│ │ ├─ compat.func.php 兼容函数(逻辑功能)

│ │ ├─ file.func.php 文件操作

│ │ ├─ logging.func.php 日志记录

│ │ ├─ pdo.func.php 数据库访问操作

│ │ ├─ db.func.php 数据库信息相关操作

│ │ └─ tpl.func.php 自定义模板控件

│ ├─ library ……………………………………… 其他函数库

│ │ ├─ json .

│ │ ├─ pdo .

│ │ ├─ phpmailer .

│ │ ├─ qrcode .

│ │ └─ uc .

│ ├─ model ………………………………………… 业务功能模块

│ │ ├─ account.mod.php 公众号相关操作

│ │ ├─ activity.mod.php 营销活动

│ │ ├─ app.mod.php APP 端相关操作

│ │ ├─ cache.mod.php 缓存

│ │ ├─ cloud.mod.php 云服务

│ │ ├─ extension.mod.php 扩展功能

│ │ ├─ mc.mod.php 会员功能

│ │ ├─ module.mod.php 公众号

│ │ ├─ payment.mod.php 支付功能

│ │ ├─ reply.mod.php 规则回复

│ │ ├─ setting.mod.php 读写系统设置缓存

│ │ ├─ user.mod.php 操作用户

│ │ └─ utility.mod.php .

│ ├─ bootstrap.inc.php .

│ ├─ const.inc.php .

│ └─ version.inc.php

├─ payment …………………………………………… 支付功能

│ ├─ alipay 支付宝支付

│ │ └─ …

│ ├─ wechat 微擎支付

│ │ └─ … .

│ └─ config.php 支付配置文件

├─ web ……………………………………………… 【后台管理(Web)入口】

│ ├─ common ……………………………………… 公用文件

│ │ ├─ bootstrap.sys.inc.php .

│ │ ├─ common.func.php .

│ │ ├─ frames.inc.php .

│ │ └─ template.func.php .

│ ├─ resource …………………………………… 资源文件

│ │ ├─ components 引用外部组件

│ │ │ ├─ colorpicker 拾色器

│ │ │ ├─ daterangerpicker 日期范围

│ │ │ ├─ datetimepicker 日历

│ │ │ ├─ emotions 自定义表情

│ │ │ ├─ jplayer 音乐播放器

│ │ │ ├─ kindeditor 富文本编辑器

│ │ │ ├─ switch 开关

│ │ │ ├─ tinymce ??

│ │ │ └─ zclip ??

│ │ ├─ css 样式文件

│ │ ├─ fonts 字体资源

│ │ ├─ images 图片文件

│ │ └─ js ……………………………………… js函数库

│ │ ├─ app ………………………………… 自定义模块

│ │ │ ├─ biz.js 业务工具类

│ │ │ ├─ config.js 模块化编程配置

│ │ │ ├─ district.js 省市县

│ │ │ ├─ domReady.js .

│ │ │ └─ util.js 各种功能对话框

│ │ ├─ lib …………………………………

│ │ │ ├─ angular-sanitize.min.js .

│ │ │ ├─ angular.min.js .

│ │ │ ├─ bootstrap-filestyle.min.js .

│ │ │ ├─ bootstrap.min.js .

│ │ │ ├─ chart.min.js .

│ │ │ ├─ css.min.js .

│ │ │ ├─ jquery-1.11.1.min.js .

│ │ │ ├─ jquery-ui-1.10.3.min.js .

│ │ │ ├─ jquery.caret.js .

│ │ │ ├─ moment.js .

│ │ │ └─ underscore-min.js .

│ │ └─ require.js ……………………… .

│ ├─ source ……………………………………… 后台管理控制器

│ │ ├─ account 【controller|c】 公众号管理

│ │ │ ├─ __init.php 公众号菜单管理

│ │ │ ├─ post.ctrl.php 【action|a】 .

│ │ │ └─ … 公众号业务功能

│ │ ├─ activity 营销活动

│ │ ├─ cloud 云服务(一键更新、云服务等)

│ │ ├─ extension 扩展功能

│ │ ├─ home 基础设置,(模块)快捷导航

│ │ ├─ mc 会员中心

│ │ ├─ platform 基础设置,(模块规则,数据统计,入口设置)

│ │ ├─ profile 功能选项,系统配置

│ │ ├─ site 微站功能

│ │ ├─ system 系统管理

│ │ ├─ user 操作用户管理

│ │ └─ utility 系统业务逻辑

│ ├─ themes ……………………………………… 后台管理视图

│ │ ├─ default ………………………………… 内建后台管理样式

│ │ └─ … ……………………………………… 定制界面样式

│ ├─ index.php 后台入口

│ └─ test.php 后台测试单元

├─ api.php ………………………………………… 【公众平台与微擎系统通信的接口】

├─ index.php ………………………………………… 微擎入口

└─ install.php ……………………………………… 微擎安装程序
人人商城常用目录
/addons/ewei_shopv2/defines.php 人人商城常量定义
/addons/ewei_shopv2/manifest.xml 微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库中相应记录,并执行manifest.xml里指定的脚本
/addons/ewei_shopv2/cert 证书文件夹
/addons/ewei_shopv2/core/inc/page_web.php 定义WebPage类
/addons/ewei_shopv2/core/inc/page.php 定义Page类
/addons/ewei_shopv2/core/inc/functions.php 定义一些常用的函数
/addons/ewei_shopv2/core/inc/page_mobile.php 定义MobilePage类
/addons/ewei_shopv2/core/model 模型相关通用类
/addons/ewei_shopv2/payment 支付相关
/addons/ewei_shopv2/plugin 常用应用插件,如人人分销,积分商城插件,其中插件相关的方法还有模板以及静态资源均在此
/addons/ewei_shopv2/static 静态资源
/addons/ewei_shopv2/template 模板文件
/addons/ewei_shopv2/vendor 第三方sdk

发表评论

邮箱地址不会被公开。 必填项已用*标注