【php-demo-关键词触发】签到功能demo,依赖于微擎框架

签到功能demo,基于微擎框架插件

/**

 * 微群管家

 * 签到demo模块,这里用微擎框架作为实例
 * 表结构SQL语句如下:(成员表、签到表,直接复制运行以下sql即可)
 
-- phpMyAdmin SQL Dump
-- version 4.0.10.14
-- MYSQL开始
-- 表的结构 `weiq_weixin_group_member`
--

CREATE TABLE IF NOT EXISTS `weiq_weixin_group_member` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int(10) unsigned NOT NULL,
  `user_id` int(10) unsigned NOT NULL,
  `openid` varchar(50) NOT NULL,
  `as_uin` varchar(20) NOT NULL,
  `signday_total` smallint(6) unsigned NOT NULL DEFAULT '0',
  `nickname` varchar(48) NOT NULL,
  `tag` varchar(128) DEFAULT NULL,
  `level` smallint(3) NOT NULL DEFAULT '0',
  `gold` decimal(10,2) NOT NULL DEFAULT '0.00',
  `jifen` int(10) NOT NULL DEFAULT '0',
  `lover` varchar(15) NOT NULL DEFAULT '无',
  `vip` tinyint(3) NOT NULL DEFAULT '0',
  `rmb` int(10) NOT NULL DEFAULT '0',
  `warning` tinyint(3) NOT NULL DEFAULT '0',
  `talktimes` int(10) NOT NULL DEFAULT '0',
  `ismoveout` tinyint(1) NOT NULL DEFAULT '0',
  `ishead` int(10) NOT NULL DEFAULT '0',
  `addtime_group` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=27082 ;

-- --------------------------------------------------------

--
-- 表的结构 `weiq_weixin_group_membersign`
--

CREATE TABLE IF NOT EXISTS `weiq_weixin_group_membersign` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `as_uin` varchar(20) NOT NULL,
  `group_id` int(10) unsigned NOT NULL,
  `rankday` smallint(3) NOT NULL,
  `addtime` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=29215 ;

-- MYSQL结束

 

 * @author 白菜

 */



class demo {

	public function signday() {
		//签到主程序
		$s['u']		= trim($_POST['u']);
		$s['wxuin']	= trim($_POST['wxuin']);
		$s['gid']	= trim($_POST['gid']);
		$s['as']	= trim($_POST['as']);
		$s['skw']	= trim($_POST['skw']);
		$s['nickname'] = $this->unicode_decode(trim($_POST['nickname']));
		$time = time();
		//判断今天是否已经签到
		$todaysinfo = pdo_fetch("SELECT * FROM " . tablename('weixin_group_membersign') . " WHERE as_uin=".$s['as']." AND group_id =".$s['gid']." AND addtime>".strtotime(date('Y-m-d',$time)));
		//签到记录存在,则直接返回已经签到
		if(!empty($todaysinfo)){return "@".$s['nickname']."大大[玫瑰] 么么哒,今天已经签过到了呢,今日签到排名:第".$todaysinfo['rankday']."名";}
		//开始签到处理,查询并返回群成员信息
		$gminfo = $this->getmember($s,0);
		//更新签到总记录
		$t = $gminfo['signday_total']+1;		
		pdo_update("weixin_group_member", array("signday_total"=> $t), array("as_uin" =>$s['as'],"group_id" =>$s['gid']));
		//查询月统计
		$MonthBegin = strtotime(date('Y-m',$time));
		$MonthEnd	= $MonthBegin + 86400*intval(date("t"));
		$m = pdo_fetchcolumn("SELECT COUNT(*) FROM " . tablename('weixin_group_membersign') . " WHERE as_uin=".$s['as']." AND group_id =".$s['gid']." AND addtime>=".$MonthBegin." AND addtime<=".$MonthEnd);
		$m++;
		//今日排名
		$DayBegin = strtotime(date('Y-m-d',$time));
		$DayEnd   = $DayBegin + 86400;
		$rankday = pdo_fetchcolumn("SELECT COUNT(*) FROM " . tablename('weixin_group_membersign') . " WHERE  group_id =".$s['gid']." AND addtime>=".$DayBegin." AND addtime<=".$DayEnd)+1;
		//开始签到
		$data = array(
			'group_id' => $s['gid'],
			'as_uin'   => $s['as'],
			'rankday'   =>$rankday,
			'addtime'  => $time
		);
		pdo_insert('weixin_group_membersign', $data);
		$reply = '[玫瑰][nickname]大大签到啦[玫瑰][enter]么么哒  (づ ̄ 3 ̄)づ[enter]本月:[mtimes]次,总共:[alltimes]次,获得奖励:[gold]元,今日签到排行:[rankday]名';
		$sign_getgold = '0';
		$arr = array("[nickname]", "[mtimes]", "[alltimes]", "[gold]", "[rankday]");
		$arr2 = array($s['nickname'], $m, $t,$sign_getgold,$rankday);
		$tip = str_replace($arr, $arr2, $reply);
		//返回的结果,确保$tip有值,其他都默认即可
		echo '{"rs":1,"wt":0,"tip":"'.$tip.'","end":0}';
	}
	
	function unicode_decode($str) {
		//Unicode解码 linux UCS-2BE,windows UCS-2LE
		$t = preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $str);
		return $t;
	}
	
	public function getmember($s,$addtime_group) {
		//查询成员是否存在
		$gminfo = pdo_fetch("SELECT * FROM " . tablename('weixin_group_member') . " WHERE as_uin=".$s['as']." AND group_id =".$s['gid']);
		if(empty($gminfo)){
			//如果不存在则新建成员数据
			$data = array(
				'group_id'		=>	$s['gid'],
				'user_id'		=>	$s['u'],
				'as_uin'		=>	$s['as'],
				'signday_total' =>	0,
				'addtime_group' =>	$addtime_group,
				'nickname'		=>	$s['nickname']
			);
			pdo_insert('weixin_group_member', $data);
			$gminfo['id'] = pdo_insertid();
			$gminfo['group_id']	=$s['gid'];
			$gminfo['user_id']	=$s['u'];
			$gminfo['as_uin']	=$s['as'];
			$gminfo['signday_total']=0;
			$gminfo['nickname']	=$s['nickname'];
			$gminfo['level']	=0;
			$gminfo['gold']		=0;
			$gminfo['jifen']	=0;
			$gminfo['lover']	='无';
			$gminfo['vip']		=0;
			$gminfo['rmb']		=0;
			$gminfo['warning']	=0;
			$gminfo['talktimes']=0;
			$gminfo['addtime_group']=$addtime_group;
			$gminfo['ishead']=0;
		}
		//返回成员数据
		return $gminfo;
	}
}


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论