You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

428 lines
18 KiB
PHTML

5 years ago
<?php
namespace Sdk\Controller;
use Think\Controller;
use App\Logic\UserLogic;
use App\Model\AdvModel;
class NoticeController extends BaseController{
// 系统公告弹窗
// author yyh 2018.10.18
public function today_notice(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$map['game_id'] = $request['game_id'];
$time = time();
$map['start_time'] = ['elt',$time];
$map['_string'] = ' end_time >= '.$time.' or end_time = 0 ';
$map['status'] = 1;
$notice = M('Notice','tab_');
$list = $notice
->field('title,content')
->where($map)
->order('level desc')
->select();
$this->new_set_message(200, "success", $list);
}
//消息中心通知
// author yyh 2018.10.18
// type 1 公告 2分享平台币奖励 3分享积分奖励
public function notice_list(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$map['game_id'] = $request['game_id'];
$map['start_time'] = ['elt',time()];
$time = time();
$map['_string'] = ' end_time >= '.$time.' or end_time = 0 ';
$map['status'] = 1;
$notice = M('Notice','tab_');//type = 1
$share = M('ShareRecord','tab_');//type = 2
$pointrecord = M('PointRecord','tab_');//type = 3
$page = intval($request['p']);
$page = $page ? $page : 1; //默认显示第一页数据
$row = intval($request['row'])?:10;
//广告数据
$notice_list = $notice
->field('id as notice_id,title,create_time,1 as type')
5 years ago
->where($map)
->order('level desc,create_time desc')
5 years ago
->select();
$notice_read_model = M('notice_read', 'tab_');
$notice_read = M('notice_read', 'tab_')
->where(['user_id' => $request['user_id']])
->getField('notice_id', true);
5 years ago
foreach($notice_list as $key => $value) {
$notice_list[$key]['read'] = in_array($value['notice_id'],$notice_read)? 1 : 0;
5 years ago
}
//分享邀请好友平台币奖励数据
$share_data = $share
->field('id as notice_id,user_account,award_coin,game_id,create_time,read')
->where(['invite_id'=>$request['user_id'],'award_coin'=>['gt',0]])
->select();
$share_list = [];
foreach ($share_data as $key => $value) {
$share_list[$key]['title'] = '恭喜您成功获得'.$value['award_coin'].'个平台币奖励!';
$share_list[$key]['create_time'] = $value['create_time'];
$share_list[$key]['notice_id'] = $value['notice_id'];
$share_list[$key]['type'] = 2;
$share_list[$key]['read'] = $value['read'];
}
//分享邀请好友积分奖励数据
$precord_data = $pointrecord
->field('id as notice_id,point,be_invited_id,invited_game_id,create_time,read')
->where(['type_id'=>6,'user_id'=>$request['user_id'],'point'=>['gt',0]])
->select();
foreach ($precord_data as $key => $value) {
$precord_list[$key]['title'] = '恭喜您成功获得'.$value['point'].'个积分奖励!';
$precord_list[$key]['create_time'] = $value['create_time'];
$precord_list[$key]['notice_id'] = $value['notice_id'];
$precord_list[$key]['type'] = 3;
$precord_list[$key]['read'] = $value['read'];
}
$new_list[0] = $notice_list;
$new_list[1] = $share_list;
$new_list[2] = $precord_list;
foreach ($new_list as $key => $value) {
if(empty($value)){
unset($new_list[$key]);
}
}
$new_list_new = array_values($new_list);
foreach ($new_list_new as $key => $value) {
foreach ($value as $k => $v) {
$new_arr[] = $v;
}
}
$new_data_arr = my_sort($new_arr,'create_time',SORT_DESC);
$count = count($new_data_arr);
if($count<=$row){
if($page==1) {
$new_data = $new_data_arr;
} else {
$new_data = [];
}
}else{
$size=$row;//每页显示的记录数
$pnum = ceil($count / $size); //总页数ceil()函数用于求大于数字的最小整数
//用array_slice(array,offset,length) 函数在数组中根据条件取出一段值;array(数组),offset(元素的开始位置),length(组的长度)
$new_data = array_slice($new_data_arr, ($page-1)*$size, $size);
}
$this->new_set_message(200, "success", $new_data?$new_data:[]);
}
//通知详情
//yyh 2018.10.18
public function notice_detail(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$map['id'] = $request['notice_id'];
switch ($request['type']) {
case '1':
$model = M('Notice','tab_');
$field = 'title,content,start_time as create_time';
break;
case '2':
$model = M('ShareRecord','tab_');
$map['invite_id'] = $request['user_id'];
$field = 'user_account,award_coin,game_id,create_time';
$model->where($map)->setField('read',1);
$share_count= $model->where(['invite_id'=>$request['user_id'],'award_coin'=>['gt',0],'read'=>0])->count();
break;
case '3':
$model = M('PointRecord','tab_');
$map['user_id'] = $request['user_id'];
$field = 'point,be_invited_id,invited_game_id,create_time';
$model->where($map)->setField('read',1);
$point_count= $model->where(['type_id'=>6,'user_id'=>$request['user_id'],'point'=>['gt',0],'read'=>0])->count();
break;
}
$detail = $model
->field($field)
->where($map)
->find();
switch ($request['type']) {
case '1':
$data['title'] = $detail['title'];
$data['content'] = $detail['content'];
$data['create_time'] = $detail['create_time'];
$data['type'] = $request['type'];
5 years ago
$notice_read = M('notice_read', 'tab_')->where(['user_id' => $request['user_id'],['notice_id' => $request['notice_id']]])->find();
if(empty($notice_read))
5 years ago
{
$arr['notice_id'] = $request['notice_id'];
$arr['user_id'] = $request['user_id'];
$arr['is_read'] = 1;
$arr['create_time'] = time();
M('notice_read','tab_')->data($arr)->add();
}
$data['unread_count'] = 0;
//获取公告未读条数
$time = time();
$notice = M('notice', 'tab_')->where('start_time < ' . $time . ' AND game_id = ' . $request['game_id']. ' AND (end_time = 0 OR end_time >' . $time . ')')->getField('id',true);
if(!empty($notice))
{
$data['unread_count'] += count($notice);
$where['notice_id'] = ['in', implode(',', $notice)];
$where['user_id'] = $request['user_id'];
$where['is_read'] = 1;
$notice_read_count = M('notice_read', 'tab_')->where($where)->count();
$data['unread_count'] -= $notice_read_count;
}
5 years ago
break;
case '2':
$game_name = get_game_name($detail['game_id']);
$data['title'] = '恭喜您成功获得'.$detail['award_coin'].'个平台币奖励!';
$data['content'] .= '奖励平台币:'.$detail['award_coin'];
if($detail['game_id']>0){
$data['content'] .= '
分享游戏:'.get_game_name($detail['game_id']);
}
$data['content'] .= '
邀请好友账号:'.$detail['user_account'];
$data['content'] .= '
奖励时间:'.date('Y-m-d H:i:s',$detail['create_time']);
$data['create_time'] = $detail['create_time'];
$data['type'] = $request['type'];
$data['award_coin'] = $detail['award_coin']>0?$detail['award_coin']:0;
$data['game_name'] = !empty($game_name)?$game_name:'';
$data['user_account'] = !empty($detail['user_account'])?$detail['user_account']:'';
$data['name']='平台币奖励';
$data['unread_count'] = $share_count;
break;
case '3':
$game_name = get_game_name($detail['invited_game_id']);
$user_account=get_user_entity($detail['be_invited_id'])['account'];
$data['title'] = '恭喜您成功获得'.$detail['point'].'个积分奖励!';
$data['content'] .= '奖励积分:'.$detail['point'];
if($detail['invited_game_id']>0){
$data['content'] .= '
分享游戏:'.get_game_name($detail['invited_game_id']);
}
$data['content'] .= '
邀请好友账号:'.get_user_entity($detail['be_invited_id'])['account'];
$data['content'] .= '
奖励时间:'.date('Y-m-d H:i:s',$detail['create_time']);
$data['create_time'] = $detail['create_time'];
$data['type'] = $request['type'];
$data['award_coin'] = $detail['point']>0?$detail['point']:0;
$data['game_name'] = !empty($game_name)?$game_name:'';
$data['user_account'] = !empty($user_account)?$user_account:'';
$data['name'] = '积分奖励';
$data['unread_count'] = $point_count;
break;
}
$this->new_set_message(200, "success", $data);
}
public function boon_list(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$map['start_time'] = ['elt',time()];
$map['end_time'] = [['egt',time()],['eq',0],'or'];
$page = intval($request['p']);
$user_id = $request['user_id'] ? $request['user_id'] : 0;
$page = $page ? $page : 1; //默认显示第一页数据
$row = intval($request['row'])?:10;
$list = M('Boon','tab_')
->field('tab_boon.id,title,start_time,end_time,show,reward,way,cover,material_url,tab_boon_watched.id as iswatched')
->join('tab_boon_watched on tab_boon_watched.boon_id = tab_boon.id and user_id='.$user_id,'left')
->where($map)
->order('tab_boon.sort desc,tab_boon.id desc')
->page($page,$row)
->select();
foreach ($list as $key => $value) {
$list[$key]['cover'] = new_icon_url($value['cover']);
if($value['material_url']!=''){
$list[$key]['material_url'] = str_replace('./','http://'.$_SERVER['HTTP_HOST'].'/',$value['material_url']);
}
if($value['iswatched']>0){
$list[$key]['iswatched'] = 1;
}else{
$list[$key]['iswatched'] = 0;
}
}
$pointtype = M('PointType','tab_')->field('id,point,time_of_day')->find(8);
$data = array(
"list"=>$list,
'boon_time'=>$pointtype['time_of_day']?$pointtype['time_of_day']:0,
);
$this->new_set_message(200, 'success', $data);
}
//观看广告福利
//author yyh 2018 10 23
public function watch_boon_reward(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$user_id = $request['user_id'];
$boon_id = $request['boon_id'];
$user_data = M('User','tab_')
->field('id as user_id,account as user_account')
->where(['user_id'=>$user_id])
->find();
if(empty($user_data)){
$this->new_set_message(1004, '账号不存在', []);
}
$boonmap['start_time'] = ['elt',time()];
$boonmap['end_time'] = [['egt',time()],['eq',0],'or'];
$boonmap['id'] = $boon_id;
$boon_data = M('Boon','tab_')->field('id,reward')->where($boonmap)->find();
if(empty($boon_data)){
$this->new_set_message(1128, '没有符合条件的广告', []);
}
$record_data = M('PointRecord as pr','tab_')
->field('pr.id,time_of_day')
->where(['type_id'=>8,'user_id'=>$user_id,'day'=>$boon_id])
->join('tab_point_type pt on pt.id = pr.type_id')
->find();
$point_type_data = M('PointType','tab_')->field('id,time_of_day')->find(8);
if(!empty($record_data)){
$this->new_set_message(1128, '该广告已奖励过', []);
}
if(empty($point_type_data)){
$this->new_set_message(1130, '该广告没有积分', []);
}
$watched_data = M('BoonWatched','tab_')->field('id')->where(['boon_id'=>$boon_id,'user_id'=>$user_id])->find();
if(empty($watched_data)){
$w['boon_id'] = $boon_id;
$w['user_id'] = $user_id;
$w['game_id'] = $request['game_id'];
$w['create_time'] = time();
$wres = M('BoonWatched','tab_')->add($w);
}
$model = M('PointRecord','tab_');
$map["FROM_UNIXTIME(register_time,'%Y-%m-%d')"] = $time;
$record_data_count = $model->where(["FROM_UNIXTIME(create_time,'%Y-%m-%d')"=>date('Y-m-d',time()),'user_id'=>$user_id,'type_id'=>8])->count();
if($record_data_count<$point_type_data['time_of_day']){
$day = $record_data_count - $point_type_data['time_of_day']+1;
$model->startTrans();
$user_logic = new UserLogic();
$user_result = $user_logic->operationPoint($user_id,$boon_data['reward'],1);
$d['type_id'] = 8;
$d['user_id'] = $user_id;
$d['point'] = $boon_data['reward'];
$d['create_time'] = time();
$d['type'] = 1;
$d['day'] = $boon_id;
$record_result = $model->add($d);
if($user_result !== false && $record_result !== false){
$model->commit();
if($day < 1) {$day = abs($day);$return = ''.$boon_data['reward'].''.($day>0?'今日还有'.$day.'次机会哦':'今日奖励机会已用完');}else{$return='谢谢观看';}
$this->new_set_message(200, $return, []);
}else{
$model->rollback();
$this->new_set_message(0, '奖励失败', []);
}
}else{
$this->new_set_message(1129, '今日广告福利奖励次数已使用完', []);
}
}
//退出sdk弹出广告
//yyh
public function sdk_logout_adv(){
$model = new AdvModel();
$data = $model->getAdv("loginout_sdk",1);
$data = $data[0];
if(empty($data)){
$this->new_set_message(1033,"暂无数据",[]);
}else{
$this->new_set_message(200,"成功",$data);
}
}
//猜你喜欢
//yyh
public function guess_like(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$page = intval($request['p']);
$page = $page ? $page : 1; //默认显示第一页数据
$row = intval($request['row'])?:10;
$map['start_time'] = ['elt',time()];
$map['end_time'] = [['egt',time()],['eq',0],'or'];
$map['status'] = 1;
$list = M('Guess','tab_')->field('title,url,icon')->where($map)->order('sort desc')->page($page,$row)->select();
foreach ($list as $key => $value) {
$list[$key]['icon'] = new_icon_url($value['icon']);
}
$data = array(
"status"=>200,
"list"=>$list,
);
$this->new_set_message(200,"成功",$list);
}
//获取客服问题 帮助中心
//yyh 2018 10 26
public function get_customer_question(){
$map1['status'] = 1;
$map1['istitle'] = 1;
$first = M('Kefuquestion')->field('id,title as first_title,titleurl as mark')->where($map1)->order('sort desc')->group('title')->select();
$map2['status'] = 1;
$map2['istitle'] = 2;
$second = M('Kefuquestion')->field('zititle as second_title,titleurl as mark')->where($map2)->order('sort desc')->select();
foreach ($first as $key => $value) {
$first[$key]['second_title'] = [];
foreach ($second as $k => $v) {
if($value['mark']==$v['mark']){
$first[$key]['second_title'][] = $v['second_title'];
}
}
if(empty($first[$key]['second_title'])) {
unset($first[$key]);
}
}
$this->new_set_message(200,"成功",array_merge($first));
}
//帮助中心客服
//yyh 2018 10 26
public function customer_contact(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
5 years ago
$data['APP_QQ'] = C('APP_QQ');
$data['APP_TEL'] = C('APP_TEL');
$data['QQ_GROUP_KEY'] = C('QQ_GROUP_KEY');
$data['APP_QQ_GROUP'] = C('APP_QQ_GROUP');
$data['APP_EMAIL'] = C('APP_EMAIL');
// 魔幻游戏 隐藏客服
if ($request['game_id'] == 197 || $request['game_id'] == 198
|| $request['game_id'] == 201 || $request['game_id'] == 202) { // 马踏乱世
$data['APP_QQ'] = "";
}
5 years ago
$this->new_set_message(200,"成功",$data);
}
//获取客服问题 帮助中心
//yyh 2018 10 26
public function customer_question_list(){
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
$map2['status'] = 1;
$map2['istitle'] = 2;
$map2['titleurl'] = $request['mark'];
$data = M('Kefuquestion')->field('zititle as title,contend')->where($map2)->select();
$this->new_set_message(200,"成功",$data);
}
}