# bmxx8 **Repository Path**: tpcwre/bmxx8 ## Basic Information - **Project Name**: bmxx8 - **Description**: 便民服务新版 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-05-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README index.js //=== 项目进度 后台页面: after_user ok 用户发布记录 ok 用户登陆记录表 ok after_info ok after_set 成员管理 ok 分组管理 ok 功能管理 ok 关键字管理 ok 前台页面 详情页做sess缓存 //=== 缓存相关 ### index页信息列表缓存 info_id,info_title,info_issue_time,info_service [0]info_id, [1]info_title, [2]info_issue_time, [3]info_service ### 用户信息列表静态缓存顺序 info_id,info_service,info_title,info_issue_time,info_auto_issue,info_stat 示例: //修改用户信息列表静态缓存 $change_arr = array( array(1,$_POST['info_service']), array(2,$_POST['info_title']), array(4,$_POST['info_auto_issue']) ); Cache_Modify('Cache/User/'.$_COOKIE['uid'],$change_arr,0,$_POST['info_id']); ### 单条信息详情静态缓存顺序 ["1023","1","8","38da5","dcd169d618d4991b5abb","0b60328c9f71b41","2222222222",null,"xian","1","0","2","1527517881"] [0]info_id, [1]info_uid [2]info_service, [3]info_title, [4]info_content, [5]info_contacts, [6]info_phone, [7]info_imgs, [8]info_city_xian, [9]info_stat, [10]info_stat_explain, [11]info_auto_issue, [12]info_issue_time 示例: //修改详情静态缓存 $change_detail = array( array('3',$_POST['info_title']), array('4',$_POST['info_content']), array('5',$_POST['info_contacts']), array('6',$_POST['info_phone']), array('7',$_POST['info_imgs']), array('11',$_POST['info_auto_issue']) ); Cache_Modify('Cache/Detail/'.$_POST['info_id'],$change_detail); //=== 错误码 10001 referer地址与本站地址不匹配 10002 token值不正确 10003 缺少cookie //=== 信息列表 create table bmxx8_info( info_id int primary key auto_increment, info_uid int comment '关联的用户id', info_service varchar(8) comment '关联的服务', info_title varchar(50) not null comment '标题', info_content varchar(1000) not null comment '内容', info_contacts varchar(20) not null comment '联系人', info_phone varchar(11) not null comment '联系电话', info_imgs varchar(1500) comment '图片', info_city_xian varchar(15) not null comment '所属城市县名', info_stat tinyint(1) default 1 comment '信息状态,0为待审核,1为常显,2:用户删除,3管理封禁,4,关键字审核未通过', info_auto_issue tinyint(1) default 1 comment '是否自动重发,默认1为重发,0为不重发', info_issue_time char(11) not null comment '发布时间', index uid(info_uid) )engine=myisam default charset=utf8 comment '信息列表'; insert into bmxx8_info select null,ceil(rand()*100),ceil(rand()*9),substring(md5(rand()),5,5),substring(md5(rand()),5,20),substring(md5(rand()),5,15),info_phone,info_imgs,'xian',floor(rand()*4),floor(rand()*2),info_issue_time from bmxx8_info; insert into bmxx8_info select null,ceil(rand()*300000),ceil(rand()*8),info_title,info_content,substring(md5(rand()),5,15),info_phone,info_imgs,'xian',floor(rand()*4),floor(rand()*2),info_issue_time from bmxx8_info; update bmxx8 set info_stat = floor(rand()*5); insert into bmxx8_info select null,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from bmxx8_info; select info_id,info_stat from bmxx8_info where info_id > (select info_id from bmxx8_info order by info_id desc limit 10000,1) and info_stat=0 limit 10; //=== 服务分类表 create table bmxx8_service_type( type_id int primary key auto_increment, type_name varchar(10) not null comment '服务名' )engine=myisam default charset=utf8 comment '服务分类表'; //=== 服务分类id记录表 create table bmxx8_service?( id int primary key auto_increment, info_id int comment '信息id' )engine=myisam default charset=utf8 comment '服务分类id记录表'; create table if not exists {$table_name}(id int primary key auto_increment,info_id int comment '信息id')engine=myisam default charset=utf8 comment '服务分类id记录表'; //=== 用户表 create table bmxx8_user( user_id int primary key auto_increment, user_name varchar(50) not null comment '用户的openid', user_ctime int comment '用户首登陆时间', user_ltime int comment '用户最后登陆时间', user_stat tinyint(1) default 1 comment '用户可用状态,单数为可用双数为不可用', user_stat_time int comment '封禁时间', index user_name(user_name) )engine=myisam default charset=utf8 comment '用户表'; insert into bmxx8_user select null,substring(md5(rand()),5,5),user_ctime,user_ltime,ceil(rand()*2),0 from bmxx8_user; //=== 正常用户记录表 create table bmxx8_user_normal( id int primary key auto_increment, uid int comment '正常用户的id', index uid(uid) )engine=myisam default charset=utf8 comment '正常用户表'; //=== 封禁用户记录表 create table bmxx8_user_close( id int primary key auto_increment, uid int comment '正常用户的id', index uid(uid) )engine=myisam default charset=utf8 comment '正常用户表'; //=== 用户发布记录表 create table bmxx8_issue_record( id int primary key auto_increment, uid int comment '关联的用户id', info_id int not null comment '信息id', index uid(uid) )engine=myisam default charset=utf8 comment '用户登陆记录表'; //=== 用户登陆记录表 create table bmxx8_login_record( id int primary key auto_increment, uid int comment '关联的用户id', ip varchar(15) not null comment '用户登陆ip地址', time char(11) not null comment '登陆时间戳', index uid(uid) )engine=myisam default charset=utf8 comment '用户登陆记录表'; insert into bmxx8_login_record select null,uid,ip,time from bmxx8_login_record; //=== 关键词匹配表 create table bmxx8_keyword( id int primary key auto_increment, content varchar(50) comment '关键词' )engine=myisam default charset=utf8 comment '关键词匹配表'; insert into bmxx8_keyword select null,substring(md5(rand()),5,10) from bmxx8_keyword; //=== 城市分类表 create table bmxx8_city( id int(11) primary key auto_increment, code varchar(50) NOT NULL DEFAULT '' COMMENT '行政代码', name varchar(255) NOT NULL DEFAULT '' COMMENT '名称', parent_id int(11) NOT NULL COMMENT '父id', first_letter varchar(10) NOT NULL DEFAULT '' COMMENT '首字母', level int(11) NOT NULL COMMENT '城市等级' ) ENGINE=myisam DEFAULT CHARSET=utf8 comment '城市分类表'; //=== 后台管理用户表 create table bmxx8_admin_user( id int primary key auto_increment, name varchar(32) comment '用户名', explains varchar(50) not null comment '备注', pwd varchar(50) comment '密码', group_id int comment '所属组id', group_name varchar(32) comment '所属组名', ctime timestamp comment '创建时间' )engine=myisam default charset=utf8 comment '后台管理用户表'; alter table bmxx8_admin_user change group_name group_name varchar(32) comment '所属组名'; alter table bmxx8_admin_user change group_id group_id char(2) comment '所属组id'; //=== 后台管理用户分组表 create table bmxx8_admin_group( id int primary key auto_increment, name varchar(32) comment '组名', explains varchar(50) comment '组说明', privilege text(50000) comment '拥有权限标识字串' )engine=myisam default charset=utf8 comment '后台管理用户分组表'; alter table bmxx8_admin_group change privilege privilege text(50000) comment '拥有权限标识字串'; //=== 后台管理权限表 create table bmxx8_admin_privilege( id int primary key auto_increment, name varchar(32) comment '权限标识', explains varchar(50) comment '页面或功能的权限说明', parent tinyint(3) default 0 comment '类型为功能时此项的值为父页面的id' )engine=myisam default charset=utf8 comment '后台管理权限表'; ### 后台权限原理 页面和功能分别使用f 和 g 打头来标识 如 f1,g2 记录在权限表。 用户分组表中记录所拥有的权限标识 ,在需要验证的页面或功能时,进行判断 //===== 项目需求 项目名:便民信息吧 服务分类:招聘求职,,,,等八个分类 信息内容:标题,详情内容,类型,联系人,电话 功能 : 一:选择服务类型并发布信息 二:可修改,删除,查看自己发布的信息 三:分页浏览全国或省或市或县范围内的分类服务信息列表 四:通过信息列表查看指定单条信息 //===== 解决方案 一:每个省单建一个库来存储信息 二:以年月日时间戳为复合索引首位,对字段时间,服务类型,信息状态,市县做复合索引, 三:省和全国范围的信息浏览页面分离。之间的选择做跳转连接。 四:省市县信息浏览 //=== 页面 ### 前台相关 注:所有页面的sess二级缓存设置统一的时效 ### 用户登陆页 功能: 1.qq登陆 2.微信公众号登陆 3.微博登陆 4.登陆成功时记录或修改用户信息 5.cookie缓存用户id ### 首页 功能: 1:内容或标题关键字搜索 2:信息列表的展示 需求: 按内容或标题搜关键字搜索条件分页显示全部信息列表或指定服务分类信息列表 缓存: 1,对分页数据做二级缓存 2,判断并对服务分类数据做二级缓存 备注: 后台加载的数据为索引数组转换的json数据,前台以遍历json对象方式显示数据(达到省略字段名,来达到减少字节长度) ### 详情页 功能: 指定信息的显示 需求: 显示指定id的信息,并根据是否自动重发,显示发布日期(自动重发的都显示为当天) 缓存: 对详情数据做二级缓存 (与信息编辑页共享) ### 发布页 功能: 1:服务分类的选择 2:信息的填写及提交 3:图片的选择与同步显示 4:判断用户是否被封禁,如果被封禁则不能发布信息 需求: 1:发布信息时带图片上传功能,图片存储在upyun 2:用户在选择图片时要同步显示出来。 缓存: 判断并对服务分类数据做二级缓存 ### “我的”页 功能: 分页显示我发布信息的列表(只查指定条数范围内的) 用户如被封禁,显示封禁状态及原因。 信息如被封禁,则信息显示封禁状态及原因。 需求: 对指定信息可以进行编辑和删除 缓存: 二级缓存,当对信息的增删改时重置sess缓存及对静态缓存做修改 信息删除时对静态缓存做修改处理 ### 信息编辑页 功能: 编辑指定id的信息 需求: 显示信息原数据及图片。对图片的增删要同步显示到页面, 对信息编辑同时对静态缓存做增删改。 缓存: 判断并对服务分类数据做二级缓存 对信息详情数据做二级缓存 (与详情页数据共享) ### 后台相关 注:所有页面需要状态维持及判断,未登陆状态不可访问登陆以外的页 ### 登陆页 功能:带验证码的用户登陆 ### 用户管理页 功能: 1,分页显示分类(全部,正常,已封禁)用户列表(id,name,注册时间,最后登陆时间,状态) 2,查看用户发布的信息列表页面连接 3,查看用户的登陆记录 4,对用户的封禁,同时添加封禁原因 5,解封 ### 信息管理页 功能: 1,分类(全部,待审,正常,封禁)并分页显示所有信息列表(id,标题,内容,发布时间,状态,等) 2,查看信息的用户 3,状态操作 审核-》正常-》封禁-》解封 //前期为人工手工,后期为匹配关键字自动审核 对信息的封禁时需要同时选择封禁原因 ### 用户发布信息记录管理页 (类似信息管理页) 功能: 1,分类(全部,待审,正常,封禁)并分页显示所有信息列表(id,标题,内容,发布时间,状态,等) 2,显示当前用户id与name 3,状态操作 审核-》正常-》封禁-》解封 对信息的封禁时需要同时选择封禁原因 ### 用户登陆记录页 功能: 分页显示该用户的登陆ip和时间 //===== 页面及功能权限 after_user 用户管理页 AfterUser_Prohibit 封禁操作 after_record_info 用户发布记录页 AfterRecordInfo_Stat 信息状态修改 after_record_login 用户登陆记录页 after_info 信息管理页 AfterInfo_Stat 信息状态修改 after_set_user 后台成员管理页 AfterSetUser_ChangeUserPwd 修改管理员密码 AfterSetUser_DelUser 删除管理员 AfterSetUser_AddUser 新建管理员 after_set_user_change_group 用户组设置页 AfterSetUserChangeGroup_Submit 属组修改的提交 after_set_group 后台分组管理页 AfterSetGroup_GroupAdd 新建组 AfterSetGroup_GroupDel 删除组 after_set_group_set_user 组成员管理页 AfterSetGroupSetUser_UserDel 删除组成员 after_set_group_set_fun 组权限管理页 AfterSetGroupSetFun_Submit 组权限修改的提交 after_set_fun 后台功能管理页 AfterSetFun_Add 新增页面或功能 AfterSetFun_Del 删除页面或功能 after_set_keyword 关键字管理页 AfterSetKeyword_Add 新增关键字 AfterSetKeyword_Del 删除关键字 //=== 分解数据 $link = mysql_connect('localhost','root','xiaodong123') or die('111'); mysql_select_db('bmxx8') or die(222); mysql_set_charset('utf8'); ### 将信息数据分别装载到信息分类记录表中 (招聘,外兑,,,) $sql = "select type_id from bmxx8_service_type"; $res = mysql_query($sql); while($row = mysql_fetch_assoc($res)){ $sid = $row['type_id']; $sql2 = "select info_id from bmxx8_info where info_service = {$sid}"; $res2 = mysql_query($sql2); while($row2 = mysql_fetch_assoc($res2)){ $iid = $row2['info_id']; $sql3 = "insert into bmxx8_service{$sid}(info_id) values({$iid})"; $res3 = mysql_query($sql3); var_dump($res3); } echo '