🙊作者简介:多年编程开发经验,专注java技术领域和毕业设计项目实战,系统定制、远程部署调试、代码讲解、代码修改
🍅擅长语言:springboot、ssm、vue、html、jsp、php、python、爬虫、小程序、安卓app
⬇️源码获取:文末可以获取源码+数据库+文档
⚡感兴趣的可以先收藏+关注,后续会更新更多项目资料,所有项目均配有开发文档和安装配置教程
系统介绍
社团活动助手微信小程序按照微信端和服务端分为管理员和用户。管理员的功能包括用户管理,活动分类管理,社团活动管理,报名信息管理,签到登记管理,投票项目管理,投票信息管理,奖励情况管理,系统管理。用户的功能包括注册,信息查看等功能。
系统主要技术
开发语言:PHP
使用框架:ThinkPHP
系统架构:B/S
前端技术:Vue、JavaScript
数据库 :Mysql 5.7/8.0
编译工具:idea或者eclipse,jdk1.8,maven
系统功能结构设计
通过市场调研及咨询研究,了解了用户的使用需求,于是制定了管理员和用户模块。功能结构图如下所示:
图4-1系统功能结构图
系统功能实现
5.1用户功能模块(微信端)
用户注册,在用户注册页面通过填写账号、姓名、密码、性别、联系电话等信息进行注册操作;如图5-1所示。
图5-1用户注册界面图
用户登录,用户通过登录页面输入账号和密码,并点击登录进行系统登录操作,如图5-2所示。
图5-2用户登录界面图
用户登陆系统后,可以对首页、社团活动、投票项目、我的等功能进行详细操作,如图5-3所示。
图5-3系统首页界面图
用户信息,在用户信息页面可以填写账号、姓名、密码、性别、联系电话、头像等信息,进行保存,如图5-4所示。
图5-4用户信息界面图
投票项目,在投票项目页面可以查看投票标题、封面、选项a、选项b、选项c、选项d、发布时间、投票内容等信息进行投票等操作,如图5-5所示。
图5-5投票项目界面图
我的,在我的页面可以对社团活动、报名信息、签到登记、投票项目、投票信息、奖励情况、我的收藏管理等详细信息,如图5-6所示。
图5-6我的界面图
社团活动,在社团活动页面通过查看社团名称、活动分类、活动名称、活动图片、开始时间、结束时间、活动地点等详细信息,进行收藏、报名,如图5-7所示。
图5-7社团活动界面图
投票信息,在投票信息页面通过查看投票编号、投票标题、封面、用户账号、投票时间、投票结果等详细信息,如图5-8所示。
图5-8投票信息界面图
签到登记,在签到登记页面通过查看社团名称、活动分类、活动名称、活动图片、活动地点、签到类型、账号、姓名、签到时间、地址等详细信息,如图5-9所示。
图5-9签到登记界面图
奖励情况,在奖励情况页面通过查看社团名称、活动分类、活动名称、账号、姓名、奖励积分、登记时间等详细信息,如图5-10所示。
图5-10奖励情况界面图
5.2管理员功能模块(服务端)
管理员登录,管理员通过登录页面输入用户名、密码,选择角色并点击登录进行系统登录操作,如图5-11所示。
图5-11管理员登录界图面
管理员登陆系统后,可以对首页、个人中心、用户管理、活动分类管理、社团活动管理、报名信息管理、签到登记管理、投票项目管理、投票信息管理、奖励情况管理、系统管理等功能进行相应操作,如图5-12所示。
图5-12管理员功能界图面
用户管理,在用户管理页面可以对账号、姓名、性别、联系电话、头像等内容进行详情、修改或删除等操作,如图5-13所示。
图5-13用户管理界面图
活动分类管理,在活动分类管理页面可以对活动分类等内容进行详情,修改或删除等操作,如图5-14所示。
图5-14活动分类管理界面图
社团活动管理,在社团活动管理页面可以对社团名称、活动分类、活动名称、活动图片、开始时间、结束时间、活动地点等内容进行详情、修改或删除等操作,如图5-15所示。
图5-15社团活动管理界面图
报名信息管理,在报名信息管理页面可以对活动编号、社团名称、活动分类、活动名称、活动图片、活动地点、账号、姓名、报名时间等内容进行详情、修改或删除等操作,如图5-16所示。
图5-16报名信息管理界面图
签到登记管理,在签到登记管理页面可以对社团名称、活动分类、活动名称、活动图片、活动地点、签到类型、账号、姓名、签到时间、地址等内容进行详情,修改、删除等操作,如图5-17所示。
图5-17签到登记管理界面图
投票项目管理,在投票项目管理页面可以对投票标题、封面、选项a、选项b、选项c、选项d、发布时间等内容进行详情,修改、删除等操作,如图5-18所示。
图5-18投票项目管理界面图
投票信息管理,在投票信息管理页面可以对投票编号、投票标题、封面、用户账号、投票时间、投票结果等内容进行详情,修改、删除等操作,如图5-19所示。
图5-19投票信息管理界面图
奖励情况管理,在奖励情况管理页面可以对社团名称、活动分类、活动名称、账号、姓名、奖励积分、登记时间等内容进行详情,修改、删除等操作,如图5-20所示。
图5-20奖励情况管理界面图
系统管理;管理员在该页面为轮播图管理界面、公告信息。管理员可以在此页面进行首页轮播图的管理,公告信息发布,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作,如图5-21 5-22所示。
图5-21轮播图管理界面图
图5-22公告信息界面图
论文参考
核心代码
<?php
session_start();
class ShetuanhuodongController extends CommonController {
public function __construct()
{
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
header('Access-Control-Allow-Headers:Origin,Content-Type,Accept,token,X-Requested-With,device');
}
public $columData = [
'id','addtime'
,'shetuanmingcheng'
,'huodongfenlei'
,'huodongmingcheng'
,'huodongtupian'
,'kaishishijian'
,'jieshushijian'
,'huodongdidian'
,'huodongxiangqing'
,'thumbsupnum'
,'crazilynum'
];
/**
* 分页,列表
* get
*/
public function page(){
$token = $this->token();
$tokens = json_decode(base64_decode($token),true);
if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
$userid = $tokens['id'];
$where = " where 1 ";//查询条件
$page = isset($_REQUEST['page'])?$_REQUEST['page']:"1";
$limt = isset($_REQUEST['limit'])?$_REQUEST['limit']:"10";
$sort = isset($_REQUEST['sort'])?$_REQUEST['sort']:"id";
$order = isset($_REQUEST['order'])?$_REQUEST['order']:"asc";
foreach ($_REQUEST as $k => $val){
if(in_array($k, $this->columData)){
if ($val != ''){
$where.= " and ".$k." like '".$val."'";
}
}
}
$sql = "select * from `shetuanhuodong` ".$where;
$count = table_sql($sql);
if ($count->num_rows < 1){
$numberCount = 0;
}else{
$numberCount = $count->num_rows;
}
$page_count = ceil($numberCount/$limt);//页数
$startCount = ($page-1)*$limt;
$lists = "select * from `shetuanhuodong` ".$where." order by ".$sort." ".$order." limit ".$startCount.",".$limt;
$result = table_sql($lists);
$arrayData = array();
if ($result->num_rows > 0) {
while ($datas = $result->fetch_assoc()){
array_push($arrayData,$datas);
}
}
exit(json_encode([
'code'=>0,
'data' => [
"total" => $numberCount,
"pageSize" => $limt,
"totalPage" => $page_count,
"currPage" => $page,
"list" => $arrayData
]
]));
}
/**
* 分页,列表list
* get
*/
public function lists(){
$page = isset($_REQUEST['page'])?$_REQUEST['page']:"1";
$limt = isset($_REQUEST['limit'])?$_REQUEST['limit']:"10";
$sort = isset($_REQUEST['sort'])?$_REQUEST['sort']:"id";
$order = isset($_REQUEST['order'])?$_REQUEST['order']:"asc";
$refid = isset($_REQUEST['refid']) ? $_REQUEST['refid'] : "0";
$where = " where 1 ";//查询条件
foreach ($_REQUEST as $k => $val){
if(in_array($k, $this->columData)){
$where.= " and ".$k." like '".$val."'";
}
}
$token = $this->token();
$tokens = json_decode(base64_decode($token),true);
if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
$userid = $tokens['id'];
$sql = "select * from `shetuanhuodong`".$where;
$count = table_sql($sql);
if ($count->num_rows < 1){
$numberCount = 0;
}else{
$numberCount = $count->num_rows;
}
$page_count = ceil($numberCount/$limt);//页数
$startCount = ($page-1)*$limt;
$lists = "select * from `shetuanhuodong` ".$where." order by ".$sort." ".$order." limit ".$startCount.",".$limt;
$result = table_sql($lists);
$arrayData = array();
if ($result->num_rows > 0) {
while ($datas = $result->fetch_assoc()){
array_push($arrayData,$datas);
}
}
exit(json_encode([
'code'=>0,
'data' => [
"total" => $numberCount,
"pageSize" => $limt,
"totalPage" => $page_count,
"currPage" => $page,
"list" => $arrayData
]
]));
}
/**
* 新增数据接口
* post
*/
public function save(){
$token = $this->token();
$tokens = json_decode(base64_decode($token),true);
if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
$uid = $tokens['id'];
$keyArr = $valArr = array();
$tmpData = strval(file_get_contents("php://input"));//Content-Type: application/json 需要用到php://input 处理输入流
if (!empty($tmpData)&& isset($tmpData)){
$postData = json_decode($tmpData,true);
foreach ($postData as $key => $value){
if (in_array($key, $this->columData)){
if(!empty($value) || $value == 0) {
if ($key == 'id') {
continue;
}
array_push($keyArr,"`".$key."`");
if($key == 'clicktime') {
array_push($valArr,"'".date('Y-m-d h:i:s', time())."'");
} else {
array_push($valArr,"'".$value."'");
}
}
}
}
}
$k = implode(',',$keyArr);
$v = implode(',',$valArr);
$sql = "INSERT INTO `shetuanhuodong` (".$k.") VALUES (".$v.")";
$result = table_sql($sql);
exit(json_encode(['code'=>0]));
}
/**
* 新增数据接口 add
* post
*/
public function add(){
$keyArr = $valArr = array();
$token = $this->token();
$tokens = json_decode(base64_decode($token),true);
if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
$uid = $tokens['id'];
$tmpData = strval(file_get_contents("php://input"));
if (!empty($tmpData)&& isset($tmpData)){
$postData = json_decode($tmpData,true);
foreach ($postData as $key => $value){
if (in_array($key, $this->columData)){
if(!empty($value) || $value == 0) {
if ($key == 'id') {
continue;
}
array_push($keyArr,"`".$key."`");
if($key == 'clicktime') {
array_push($valArr,"'".date('Y-m-d h:i:s', time())."'");
} else {
array_push($valArr,"'".$value."'");
}
}
}
}
}
$k = implode(',',$keyArr);
$v = implode(',',$valArr);
$sql = "INSERT INTO `shetuanhuodong` (".$k.") VALUES (".$v.")";
$result = table_sql($sql);
exit(json_encode(['code'=>0]));
}
/**
* 更新接口
* post
*/
public function update(){
$tmpData = strval(file_get_contents("php://input"));
$postData = json_decode($tmpData,true);
$v = array();
foreach ($postData as $key => $value){
if (in_array($key, $this->columData)){
if ($key == "id"){
$id = $value;
}
if(!empty($value) || $value === 0) {
array_push($v,$key." = '".$value."'");
}
}
}
$value = implode(',',$v);
$sql = "UPDATE shetuanhuodong SET ".$value." where id = ".$id;
$result = table_sql($sql);
exit(json_encode(['code'=>0]));
}
/**
* 删除
* post
*/
public function delete(){
$ids = strval(file_get_contents("php://input"));//发现接收的是字符串
preg_match_all('/\d+/',$ids,$arr);
$str = implode(',',$arr[0]);//拼接字符,
$sql = "delete from shetuanhuodong WHERE id in({$str})";
$result = table_sql($sql);
exit(json_encode(['code'=>0]));
}
/**
* 查询一条数据
* get
*/
public function info($id=false){
$token = $this->token();
$tokens = json_decode(base64_decode($token),true);
if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
$userid = $tokens['id'];
$name = isset($_REQUEST['name'])? $_REQUEST['name']:"";
if (!empty($id)){
$where = "`id` = ".$id;
}else{
$where = "`name` = ".$name;
}
$sql = "select * from `shetuanhuodong` where ".$where;
$result = table_sql($sql);
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
$lists = $row;
}
}
exit(json_encode([
'code'=>0,
'data'=> $lists
]));
}
/**
* 查询一条数据
* get
*/
public function detail($id=false){
$token = $this->token();
$tokens = json_decode(base64_decode($token),true);
if (!isset($tokens['id']) || empty($tokens['id'])) exit(json_encode(['code'=>403,'msg'=>"你还没有登录。"]));
$userid = $tokens['id'];
$name = isset($_REQUEST['name'])? $_REQUEST['name']:"";
if ($id){
$where = "`id` = ".$id;
}else{
$where = "`name` = ".$name;
}
$sql = "select * from `shetuanhuodong` where ".$where;
$result = table_sql($sql);
if (!$result) exit(json_encode(['code'=>500,'msg'=>"查询数据发生错误。"]));
if ($result->num_rows > 0) {
// 输出数据
while($row = $result->fetch_assoc()) {
$lists = $row;
}
}
exit(json_encode([
'code'=>0,
'data'=> $lists
]));
}
/**
* 赞和踩
**/
public function thumbsup($id=false){
$type = isset($_REQUEST['type'])?$_REQUEST['type']:"";
if ($type==1){
$result = $this->andone('shetuanhuodong',$id,$column = 'thumbsupnum',$num = 1);
}else{
$result = $this->andone('shetuanhuodong',$id,$column = 'crazilynum',$num = 1);
}
exit(json_encode(['code'=>0,'msg'=>"投票成功"]));
}
/**
* 获取需要提醒的记录数接口
* get
*/
public function remind($columnName,$type){
$remindStart = isset($_GET['remindstart'])?$_GET['remindstart']:"";
$remindEnd = isset($_GET['remindend'])?$_GET['remindend']:"";
$where = '';
if ($type == 1){//数字
if ($remindStart && $remindEnd){
$where .= " and ".$columnName."<='".$remindEnd."' and ".$columnName.">='".$remindStart."'";
}elseif($remindStart){
$where .= " and ".$columnName.">='".$remindStart."'";
}elseif($remindEnd){
$where .= " and ".$columnName."<='".$remindEnd."'";
}
}else{
if ($remindStart && $remindEnd){
$where .= " and ".$columnName."<='".date("Y-m-d",strtotime("+".$remindEnd." day"))."' and ".$columnName.">='".date("Y-m-d",strtotime("+".$remindStart." day"))."'";
}elseif($remindStart){
$where .= " and ".$columnName.">='".date("Y-m-d",strtotime("+".$remindStart." day"))."'";
}elseif($remindEnd){
$where .= " and ".$columnName."<='".date("Y-m-d",strtotime("+".$remindEnd." day"))."'";
}
}
$sql = "select * from `shetuanhuodong` where 1 ".$where;
$result = table_sql($sql);
exit(json_encode(['code'=> 0 ,'count' => $result->num_rows]));
}
}