public function doMobileIndex() { global $_GPC, $_W; $fid = $_GPC['fid']; $fool = CRUD::findById(CRUD::$table_fool, $fid); include $this->template("index"); }
/** * * 签到 * 类型 1:关注积分 2:每日积分 3:连续积分 */ public function doMobileSign() { global $_GPC; $sid = $_GPC['sid']; $res = array(); $sign = CRUD::findById(CRUD::$table_sign, $sid); if (empty($sign)) { $res['code'] = 501; $res['msg'] = "积分签到活动已删除或不存在!"; echo json_encode($res); exit; } $clientUser = $this->getClientUserInfo(); if (empty($clientUser)) { $res['code'] = 501; $res['msg'] = "请关注公众账号再进行签到"; echo json_encode($res); exit; } $signUser = $this->findSignUser($clientUser['openid'], $sid); if (!empty($signUser) && $this->findTodayUserSign($sid, $signUser['id']) > 0) { //今天已经签过到了 $res['code'] = 503; $res['msg'] = "您今天已经签过到了,明天再来吧!"; echo json_encode($res); exit; } if (empty($signUser)) { //从来没有签过到用户处理 $now = TIMESTAMP; $serial = $this->findUserCurrentSerial(null, $sid); $user_data = array("sid" => $sid, "begin_sign_time" => $now, "end_sign_time" => $now, "openid" => $clientUser['openid'], "nickname" => $clientUser['nickname'], "headimgurl" => $clientUser['headimgurl'], "serial_id" => $serial['id'], "credit" => $sign['sign_credit'], "sin_count" => 1); CRUD::create(CRUD::$table_sign_user, $user_data); $userid = pdo_insertid(); $record_data = array('uid' => $userid, 'openid' => $clientUser['openid'], 'sid' => $sid, 'sin_time' => $now); CRUD::create(CRUD::$table_sign_record, $record_data); //插入记录 $sign_award_day = array('sid' => $sid, 'uid' => $userid, 'sign_type' => 2, 'credit' => $sign['sign_credit'], 'createtime' => TIMESTAMP); CRUD::create(CRUD::$table_sign_award, $sign_award_day); // 插入积分记录 $res['code'] = 200; $res['msg'] = "恭喜您获得日签到积分" . $sign['sign_credit'] . "分!"; if ($sign['sync_credit'] == 1) { //同步积分 $this->synFanscredit($clientUser['openid'], $sign['sign_credit']); } echo json_encode($res); exit; } //已经签到过用户 签到 if (!empty($signUser)) { $sin_time = TIMESTAMP; $user_credit = $signUser['credit']; $user_sin_count = $signUser['sin_count']; $user_sin_serial = $signUser['sin_serial']; $day_record_data = array('uid' => $signUser['id'], 'openid' => $clientUser['openid'], 'sid' => $sid, 'sin_time' => $sin_time); CRUD::create(CRUD::$table_sign_record, $day_record_data); CRUD::updateById(CRUD::$table_sign_user, array("end_sign_time" => $sin_time), $signUser['id']); //更新最终的签到时间 $sign_award_day = array('sid' => $sid, 'uid' => $signUser['id'], 'sign_type' => 2, 'credit' => $sign['sign_credit'], 'createtime' => TIMESTAMP); CRUD::create(CRUD::$table_sign_award, $sign_award_day); // 插入日积分得奖表 $user_credit = $user_credit + $sign['sign_credit']; $user_sin_count = $user_sin_count + 1; $user_serial_days = $signUser['sin_serial']; $serial = $this->findUserCurrentSerial($signUser, $sid); $serial_id = $serial['id']; $mserial_credit = 0; $serial_day = $serial['day']; $begintime = date('Y-m-d' . '00:00:00', $signUser['begin_sign_time']); $endtime = date('Y-m-d' . '23:59:59', $sin_time); $beginSinTimeStamp = strtotime($begintime); $endSinTimeStamp = strtotime($endtime); $offsertDays = $this->getOffsetdays($beginSinTimeStamp, $endSinTimeStamp); $recordOffsetDays = $this->findUserSerialRecordCount($beginSinTimeStamp, $endSinTimeStamp, $sid, $signUser['id']); //查询记录签到的连续时间 if ($recordOffsetDays < $offsertDays) { // 签到时间断了,重新计算 $this->updateUserSinTime($sin_time, $sin_time, $signUser['id']); //重置游标 } else { if ($recordOffsetDays == $recordOffsetDays && $recordOffsetDays == $serial_day) { //达到了连续签到 $sign_award_serial = array('sid' => $sid, 'uid' => $signUser['id'], 'sign_type' => 3, 'credit' => $serial['credit'], 'serial_start_time' => $signUser['begin_sign_time'], 'serial_end_time' => $sin_time, 'serial_day' => $serial_day, 'createtime' => TIMESTAMP); CRUD::create(CRUD::$table_sign_award, $sign_award_serial); // 插入连续积分 //更新award 表 $user_credit = $user_credit + $serial['credit']; $serial_id = $this->findNextSerialId($serial['day'], $sid); //查找下一次 连续 ID 计算 $user_serial_days = $user_serial_days + $serial_day; $mserial_credit = $serial['credit']; } } $m_sin_user_data = array("serial_id" => $serial_id, "credit" => $user_credit, 'sin_count' => $user_sin_count, 'sin_serial' => $user_serial_days); CRUD::updateById(CRUD::$table_sign_user, $m_sin_user_data, $signUser['id']); //更新用户的积分 if ($sign['sync_credit'] == 1) { //同步积分 $this->synFanscredit($clientUser['openid'], $user_credit); } $res['code'] = 200; $ser_msg = $mserial_credit > 0 ? ",连续签到积分" . $mserial_credit . "分" : ""; $res['msg'] = "恭喜您获日签到积分" . $sign['sign_credit'] . "分" . $ser_msg; echo json_encode($res); exit; } }