- 微信扫一扫 -
QQ:181814630
电话:15116362044
演示角色 | 演示地址 | 账号 | 密码 |
---|---|---|---|
后台PC端 | 点击进入 | dsshop | 123456 |
用户PC端 | 点击进入 | buyer | 123456 |
手机端 | 点击进入 | buyer | 123456 |
安卓APP下载地址 | http://www.csdeshang.com/document/dsshop/dsshop_uniapp_android.apk |
用户端
用户手机端安卓APP
(使用浏览器打开)
演示角色 | 演示地址 | 账号 | 密码 |
---|---|---|---|
后台PC端 | 点击进入 | dso2o | 123456 |
用户PC端 | 点击进入 | buyer | 123456 |
卖家PC端 | 点击进入 | buyer | 123456 |
服务机构PC端 | 点击进入 | 后台添加 | |
用户手机端 | 点击进入 | buyer | 123456 |
商家手机端 | 点击进入 | buyer | 123456 |
配送员 | 点击进入 | 测试配送员 | 123456 |
服务机构手机端 | 点击进入 | test1 | 123456 |
安卓APP下载地址 | http://www.csdeshang.com/document/dso2o/dso2o_uniapp_android.apk |
用户端
商家端
配送员管理端
服务机构端
用户端安卓APP
(使用浏览器打开)
商家端安卓APP
(使用浏览器打开)
配送员管理安卓APP
(使用浏览器打开)
服务机构安卓APP
(使用浏览器打开)
演示角色 | 演示地址 | 账号 | 密码 |
---|---|---|---|
后台PC端 | 点击进入 | dsmall | 123456 |
用户PC端 | 点击进入 | buyer | 123456 |
商家PC端 | 点击进入 | buyer | 123456 |
用户手机端 | 点击进入 | buyer | 123456 |
商家手机端 | 点击进入 | buyer | 123456 |
门店手机端 | 点击进入 | seller | 123456 |
安卓APP下载地址 | http://www.csdeshang.com/document/dsmall/dsmall_uniapp_android.apk |
用户端
商家端
门店端
用户安卓APP(使用浏览器打开)
商家安卓APP(使用浏览器打开)
门店安卓APP(使用浏览器打开)
管理员可以设置平台的基本信息、审核店铺入驻信息、审核商品上架、控制平台的一些营销功能的开启状态、设置线上支付的收款账号、调解售后纠纷、审核店铺结算单、查看各类统计信息、配置微信公众号、更新系统缓存等。
首先管理员从后台登录入口/admin/login/index进行登录操作,根据传入的用户名以及MD5加密后的密码,从数据表admin中对应的管理员数据。登录成功后,更新管理员的登录次数和登录时间信息,并设置管理员session信息。
//更新 admin 最新信息 $update_info = array( 'admin_login_num' => ($admin_info['admin_login_num'] + 1), 'admin_login_time' => TIMESTAMP ); $admin_mod->editAdmin($update_info, $admin_info['admin_id']); //设置 session session('admin_id', $admin_info['admin_id']); session('admin_name', $admin_info['admin_name']); session('admin_gid', $admin_info['admin_gid']); session('admin_is_super', $admin_info['admin_is_super']);
管理员所有的业务模块均继承自基类\application\admin\controller\AdminControl.php,每当管理员控制器在初始化的时候,都会进行三步主要操作:
1. 从缓存中取出配置信息,并赋值到ThinkPHP的全局配置参数中,因为后台对配置表config的读取会比较频繁,这样操作会比较方便。
2. 如果管理员不是超级管理员(admin_id为1),则检查该管理员是否有操作该控制器的权限。
3. 设置菜单。
$this->admin_info = $this->systemLogin(); $config_list = rkcache('config', true); config($config_list); //引用语言包的类型 针对于数据库读写类型 中文\英文 if (in_array(cookie('ds_admin_sql_lang'), array('zh-cn', 'en-us'))) { config('default_sql_lang', cookie('ds_admin_sql_lang')); }else{ config('default_sql_lang', 'zh-cn'); } if ($this->admin_info['admin_id'] != 1) { // 验证权限 $this->checkPermission(); } $this->setMenuList();
\application\admin\controller\AdminControl.php中的limitList方法保存所有权限列表。
$_limit = array( array('name' => lang('ds_setting'), 'child' => array( array('name' => lang('ds_base'), 'action' => null, 'controller' => 'Config'), array('name' => lang('ds_account'), 'action' => null, 'controller' => 'Account'), array('name' => lang('ds_upload_set'), 'action' => null, 'controller' => 'Upload'), array('name' => lang('ds_seo_set'), 'action' => null, 'controller' => 'Seo'), array('name' => lang('ds_payment'), 'action' => null, 'controller' => 'Payment'), array('name' => lang('ds_message'), 'action' => null, 'controller' => 'Message'), array('name' => lang('ds_express'), 'action' => null, 'controller' => 'Express'), array('name' => lang('ds_waybill'), 'action' => null, 'controller' => 'Waybill'), array('name' => lang('ds_region'), 'action' => null, 'controller' => 'Region'), array('name' => lang('ds_offpayarea'), 'action' => null, 'controller' => 'Offpayarea'), array('name' => lang('ds_adminlog'), 'action' => null, 'controller' => 'Adminlog'), )), ……
从管理员的权限组表gadmin中获取当前管理员所属的权限组,其中glimits为使用公共方法ds_encrypt将含有controller和action与md5加密后权限名称进行加密的字符。将glimits用公共方法ds_decrypt解密后,根据比较当前控制器和操作是否在所属权限组中,如果不存在则隐藏相应的菜单。菜单在\application\admin\controller\AdminControl.php中的menuList进行声明。
'dashboard' => array( 'name' => 'dashboard', 'text' => lang('ds_dashboard'), 'children' => array( 'welcome' => array( 'ico'=>"", 'text' => lang('ds_welcome'), 'args' => 'welcome,Dashboard,dashboard', ), ……
对于一些重要的操作,可以使用AdminControl类中的log方法将操作信息记录到adminlog表中,以便日后审查。