首页 > 运营 > 建站经验 > 正文

ecshop后台添加一个完整的统计用户信息的功能

2019-11-02 15:31:28
字体:
来源:转载
供稿:网友

开发ecshop大概有半年多时间了,每次改的功能也没有做总结和记录,今天添加完一个功能,记录一下吧,省得以后忘记又要麻烦去查找。

需求:在后台菜单-报表统计-下面添加-用户情况-的功能,包括:每周新增注册用户,每周累积注册用户,活跃用户-周内至少登陆1次,每月访问量等等。

第一步:建立数据库的表

ecshop后台添加一个完整的统计用户信息的功能

说明:个人本地数据库是:eshop,新建表名:ecs_user_situation。

第二步:建立存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS `eshop`.`pro_users`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_users`()

BEGIN

DECLARE week_count INT;

DECLARE user_count INT;

DECLARE over_count INT;

DECLARE month_count INT;

-- 每周注册用户

SELECT COUNT(*) INTO week_count FROM ecs_users WHERE reg_time>(UNIX_TIMESTAMP(NOW())-7*24*60*60);

-- 总注册用户

SELECT COUNT(*) INTO user_count FROM ecs_users;

-- 每周的活跃用户

SELECT COUNT(*) INTO over_count FROM ecs_users WHERE last_login>(UNIX_TIMESTAMP(NOW())-7*24*60*60);

-- 每月的访问量

SELECT COUNT(*) INTO month_count FROM ecs_stats WHERE access_time>UNIX_TIMESTAMP(DATE_SUB(DATE_SUB(DATE_FORMAT(NOW(),'%y-%m-%d 00:00:00'),INTERVAL EXTRACT(DAY FROM NOW())-1 DAY),INTERVAL 0 MONTH));

INSERT INTO ecs_user_situation(week_count,user_count,over_count,month_count,week_time) VALUES (week_count,user_count,over_count,month_count,NOW());

END$$

DELIMITER ;

说明:个人本地存储过程名字:pro_users。

第三步:建立触发器

[sql] view plaincopyprint?

DELIMITER $$

ALTER EVENT `eve_users` ON SCHEDULE EVERY 1 HOUR STARTS '2013-09-02 12:11:14' ON COMPLETION PRESERVE ENABLE DO BEGIN

CALL pro_users();

END$$

DELIMITER ;

说明:个人本地触发器名字:eve_users。

第四步:添加后台菜单

1.添加菜单URL

在目录admin/includes/inc_menu.php的-报表统计-的那部分代码下面添加:

$modules['06_stats']['user_situation'] = 'user_situation.php?act=list';

2.添加菜单名称

在目录languages/zh_cn/admin/common.php的/* 报表统计 */的那部分代码下面添加:

$_LANG['user_situation'] = '用户情况';

3.添加菜单权限

在目录admin/includes/inc_priv.php的-报表统计权限-的那部分代码下面添加:

$purview['user_situation'] = 'user_situation';

4.添加管理权限

在目录languages/zh_cn/admin/priv_action.php添加下面的代码:

$_LANG['user_situation'] = '用户情况';

5.添加数据库权限记录

INSERT INTO ecs_admin_action(parent_id,action_code) VALUES(6,'user_situation');

第五步:业务逻辑代码

在目录admin下面添加user_situation.php,代码如下:

<?php

/**

* add by zbl 2013-08-29

* 新增注册用户,累积注册用户,活跃用户-周内至少登陆1次,每月访问量

* @var unknown_type

*/

define('IN_ECS', true);

//页面引用

require(dirname(__FILE__) . '/includes/init.php');

require_once(ROOT_PATH . '/' . ADMIN_PATH . '/includes/lib_goods.php');

if($_REQUEST['act']=='list'){

$user_situation=get_user_situation();

$smarty->assign('user_situation_list', $user_situation['user_situation_list']);

$smarty->assign('filter', $user_situation['filter']);

$smarty->assign('record_count', $user_situation['record_count']);

$smarty->assign('page_count', $user_situation['page_count']);

$smarty->assign('full_page', 1);//解决分页查询出现页面重复情况

$smarty->assign('ur_here', $_LANG['user_situation']);

/* 在页脚显示内存信息 */

assign_query_info();

$smarty->display('user_situation.htm');

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表