intval($_GPC['status'])), array('id' => $wid));
message('奖品状态更改成功!', referer(), 'success');
}
$where = ' WHERE `a`.`rid` = :rid AND `f`.`uniacid` = :uniacid';
$params = array(':rid' => intval($_GPC['id']), ':uniacid' => $_W['uniacid']);
if (empty($starttime) || empty($endtime)) {
$starttime = strtotime('-1 month');
$endtime = time();
}
if (!empty($_GPC['daterange'])) {
$starttime = strtotime($_GPC['daterange']['start']);
$endtime = strtotime($_GPC['daterange']['end']) + 86399;
}
$condition = array(
'isregister' => array(
'',
" AND m.realname <> ''",
" AND m.realname = ''",
),
'isaward' => array(
'',
" AND a.award <> ''",
" AND a.award = ''",
),
'award' => array(
'title' => " AND a.award LIKE '%{$_GPC['awardvalue']}%'",
'description' => " AND a.description LIKE '%{$_GPC['awardvalue']}%'",
),
'qq' => " AND m.qq LIKE '%{$_GPC['profilevalue']}%'",
'mobile' => " AND m.mobile LIKE '%{$_GPC['profilevalue']}%'",
'realname' => " AND m.realname LIKE '%{$_GPC['profilevalue']}%'",
'starttime' => " AND a.createtime >= '$starttime'",
'endtime' => " AND a.createtime <= '$endtime'",
);
$where .= $condition['isregister'][$_GPC['isregister']];
$where .= $condition['isaward'][$_GPC['isaward']];
$where .= $condition['award'][$_GPC['award']];
if (!empty($_GPC['profile'])) {
$where .= $condition[$_GPC['profile']];
}
if (!empty($_GPC['award'])) {
$where .= $condition[$_GPC['award']];
}
if (!empty($starttime)) {
$where .= $condition['starttime'];
}
if (!empty($endtime)) {
$where .= $condition['endtime'];
}
$join = ' FROM ' . tablename('dqq_winner') . ' AS `a` JOIN ' . tablename('mc_mapping_fans') . ' AS `f` ON
`a`.`from_user` = `f`.`openid` JOIN ' . tablename('mc_members') . ' AS `m` ON `f`.`uid` = `m`.`uid`';
$sql = 'SELECT COUNT(*) ' . $join . $where;
$total = pdo_fetchcolumn($sql, $params);
if ($total > 0) {
$pindex = max(1, intval($_GPC['page']));
$psize = 15;
$sql = 'SELECT `a`.*, `m`.`realname`, `m`.`mobile`, `m`.`qq` ' . $join . $where;
$list = pdo_fetchall($sql, $params);
$pager = pagination($total, $pindex, $psize);
}
if (!empty($_GPC['export'])) {
/* 输入到CSV文件 */
$html = "\xEF\xBB\xBF";
/* 输出表头 */
$filter = array(
'realname' => '姓名',
'mobile' => '手机',
'qq' => 'QQ',
'award' => '奖品',
'createtime' => '获取时间',
);
foreach ($filter as $key => $value) {
$html .= $value . "\t,";
}
$html .= "\n";
foreach ($list as $key => $value) {
foreach ($filter as $index => $title) {
if ($index != 'createtime') {
$html .= $value[$index] . "\t, ";
} else {
$html .= date('Y-m-d H:i:s', $value[$index]);
}
}
$html .= "\n";
}
/* 输出CSV文件 */
header("Content-type:text/csv");
header("Content-Disposition:attachment; filename=全部数据.csv");
echo $html;
exit();
}
include $this->template('awardlist');
}
public function getProfileTiles() {
}
public function getHomeTiles($keyword = '') {
global $_W;
$urls = array();
$list = pdo_fetchall("SELECT name, id FROM ".tablename('rule')." WHERE uniacid = '{$_W['weid']}' AND module = 'hl_dqq'".(!empty($keyword) ? " AND name LIKE '%{$keyword}%'" : ''));
if (!empty($list)) {
foreach ($list as $row) {
$urls[] = array('title'=>$row['name'], 'url'=> $this->createMobileUrl('lottery', array('id' => $row['id'])));
}
}
return $urls;
}
public function doMobileLottery() {
global $_GPC, $_W;
$title = '打气球送积分';
$useragent = addslashes($_SERVER['HTTP_USER_AGENT']);
if(strpos($useragent, 'MicroMessenger') === false && strpos($useragent, 'Windows Phone') === false ){
//message('请使用微信客户端进入打气球吧!');
}
checkauth();
load()->model('mc');
mc_require($_W['member']['uid'], array('realname', 'mobile') , '需要完善资料后才能打气球.');
$fromuser = $_W['fans']['from_user'];
//$profile = fans_require($fromuser, array('realname', 'mobile', 'qq'), '需要完善资料后才能打气球.');
$id = intval($_GPC['id']);
$dqq = pdo_fetch("SELECT id, maxlottery, default_tips, rule FROM ".tablename('dqq_reply')." WHERE rid = '$id' LIMIT 1");
if (empty($dqq)) {
message('非法访问,请重新发送消息进入打气球页面!');
}
$total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('dqq_winner')." WHERE createtime > '".strtotime(date('Y-m-d'))."' AND from_user = '$fromuser' ");
$member = fans_search($fromuser);
$myaward = pdo_fetchall("SELECT award, description FROM ".tablename('dqq_winner')." WHERE from_user = '{$fromuser}' AND rid = '$id' ORDER BY createtime DESC");
$sql = "SELECT a.award, b.realname FROM ".tablename('dqq_winner')." AS a
LEFT JOIN " . tablename('mc_mapping_fans')." f on f.openid = a.from_user
LEFT JOIN " . tablename('mc_members') . " b ON b.uid = f.uid WHERE b.mobile <> '' AND b.realname <> '' AND a.rid = '$id' ORDER BY a.createtime DESC LIMIT 20";
$otheraward = pdo_fetchall($sql);
include $this->template('lottery');
}
public function doMobileGetAward() {
global $_GPC, $_W;
checkauth();
$fromuser = $_W['fans']['from_user'];
$id = intval($_GPC['id']);
$dqq = pdo_fetch("SELECT id, periodlottery, maxlottery, default_tips, misscredit, hitcredit FROM ".tablename('dqq_reply')." WHERE rid = '$id' LIMIT 1");
if (empty($dqq)) {
message('非法访问,请重新发送消息进入打气球页面!4');
}
$result = array('status' => -1, 'message' => '');
if (!empty($dqq['periodlottery'])) {
$total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('dqq_winner')." WHERE createtime > '".strtotime(date('Y-m-d'))."' AND from_user = '$fromuser' AND rid = '$id'");
$lastdate = pdo_fetchcolumn("SELECT createtime FROM ".tablename('dqq_winner')." WHERE from_user = '$fromuser' ORDER BY createtime DESC");
if (($total >= intval($dqq['maxlottery'])) && strtotime(date('Y-m-d')) < strtotime(date('Y-m-d', $lastdate)) + $dqq['periodlottery'] * 86400) {
$result['message'] = '没箭啦';
message($result, '', 'ajax');
}
} else {
$total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('dqq_winner')." WHERE createtime > '".strtotime(date('Y-m-d'))."' AND from_user = '$fromuser' ");
if (!empty($dqq['maxlottery']) && $total >= $dqq['maxlottery']) {
$result['message'] = '今天没箭了';
message($result, '', 'ajax');
}
}
$gifts = pdo_fetchall("SELECT id, probalilty FROM ".tablename('dqq_award')." WHERE rid = '$id' ORDER BY probalilty ASC");
//计算每个礼物的概率
$probability = 0;
$rate = 1;
$award = array();
foreach ($gifts as $name => $gift){
if (empty($gift['probalilty'])) {
continue;
}
if ($gift['probalilty'] < 1) {
$temp = explode('.', $gift['probalilty']);
$temp = pow(10, strlen($temp[1]));
$rate = $temp < $rate ? $rate : $temp;
}
$probability = $probability + $gift['probalilty'] * $rate;
$award[] = array('id' => $gift['id'], 'probalilty' => $probability);
}
$all = 100 * $rate;
if($probability < $all){
$award[] = array('title' => '','probalilty' => $all);
}
mt_srand((double) microtime()*1000000);
$rand = mt_rand(1, $all);
foreach ($award as $key => $gift) {
if (isset($award[$key - 1])) {
if ($rand > $award[$key - 1]['probalilty'] && $rand <= $gift['probalilty']) {
$awardid = $gift['id'];
break;
}
} else {
if ($rand > 0 && $rand <= $gift['probalilty']) {
$awardid = $gift['id'];
break;
}
}
}
$result['message'] = '唉,没中';
$data = array(
'rid' => $id,
'from_user' => $fromuser,
'status' => empty($gift['inkind']) ? 1 : 0,
'createtime' => TIMESTAMP,
);
$credit = array(
'rid' => $id,
'award' => (empty($awardid) ? '未中' : '中') . '奖励积分',
'from_user' => $fromuser,
'status' => 3,
'description' => (empty($awardid) ? $dqq['misscredit'] : $dqq['hitcredit']),
'createtime' => TIMESTAMP,
);
if (!empty($awardid)) {
$sql = 'SELECT * FROM ' . tablename('dqq_award') . ' WHERE `rid` = :rid AND `id` = :id';
$params = array(':rid' => $id, ':id' => $awardid);
$gift = pdo_fetch($sql, $params);
if ($gift['total'] > 0) {
$data['award'] = $gift['title'];
$credit1 = intval($gift['get_jf']);
load()->model('mc');
mc_credit_update($_W['member']['uid'], "credit1", $credit1, null);
$data['description'] = $gift['description'];
$result['message'] = '' . $data['award'] . '!';
$result['status'] = 0;
pdo_update('dqq_award', array('total' => --$gift['total']), array('id' => $gift['id']));
} else {
$credit['description'] = $dqq['misscredit'];
$credit['award'] = '未中奖励积分';
}
}
!empty($credit['description']) && $result['message'] .= '
' . $credit['award'] . ':'. $credit['description'];
$data['aid'] = $gift['id'];
if (!empty($credit['description'])) {
pdo_insert('dqq_winner', $credit);
}
pdo_insert('dqq_winner', $data);
message($result, '', 'ajax');
}
public function doMobileRegister() {
global $_GPC, $_W;
$title = '打气球领奖登记个人信息';
checkauth();
if (!empty($_GPC['submit'])) {
$data = array(
'realname' => $_GPC['realname'],
'mobile' => $_GPC['mobile'],
);
if (empty($data['realname'])) {
die('');
}
if (empty($data['mobile'])) {
die('');
}
fans_update($_W['fans']['from_user'], $data);
die('');
}
include $this->template('register');
}
public function doMobileGetMyAward() {
global $_GPC, $_W;
$params = $awards = array();
$sql = 'SELECT `award`, `createtime`, `description` FROM ' . tablename('dqq_winner') . " WHERE `rid` = :rid AND `from_user` = :fromuser AND `award` <> :award
ORDER BY `createtime` DESC";
$params[':rid'] = intval($_GPC['id']);
$params[':fromuser'] = $_W['fans']['from_user'];
$params[':award'] = '';
$awards = pdo_fetchall($sql, $params);
if (!empty($awards)) {
foreach ($awards as &$award) {
$award['createtime'] = date('Y-m-d H:i', $award['createtime']);
}
}
exit(json_encode($awards));
}
public function doMobileGetScore() {
global $_GPC, $_W;
$params = $scores = array();
$sql = 'SELECT COUNT(*) AS `count`,`award`, `from_user` FROM ' . tablename('dqq_winner') . " WHERE `rid` = :rid AND `award` <> :award GROUP BY `from_user`
ORDER BY `count` DESC LIMIT 0, 10";
$params[':rid'] = intval($_GPC['id']);
$params[':award'] = '';
$scores = pdo_fetchall($sql, $params, 'from_user');
if (!empty($scores)) {
load()->model('mc');
$fromusers = array_keys($scores);
$members = mc_fetch($fromusers, array('realname'));
foreach ($scores as &$score) {
$member = mc_fetch($score['from_user'], array('realname'));
$score['member'] = $member['realname'];
}
}
exit(json_encode($scores));
}
}