$promoteId)));
}
if ($promoteId) {
$exists = M("promote", "tab_")->where(array('id' => $promoteId))->find();
if (!$exists) {
//$this->error("链接失效,请重新向推广员索取链接.");
$this->assign("error","链接失效,请重新向推广员索取链接.");
$this->display('blank');
exit();
}
}
//获取客服qq
$appqq = M("config", "sys_")->field('value')->where("name='APP_QQ'")->find()['value'];
$this->assign("app_qq", $appqq);
$this->assign("promote_id", $promoteId);
$this->assign("game_id", $gameId);
$this->display();
}
public function home(){
if (I('user_token')&&I('user_id')&&I('game_id')) {
$userToker = I('user_token');
$user_id = I('user_id');
$game_id = I('game_id');
$where['tab_user_token.user_token'] = $userToker;
$where['tab_user_token.user_id'] = $user_id;
$where['tab_user_token.game_id'] = $game_id;
$isToken = M('user_token','tab_')->field('user.id as user_id,user.account as account,user.nickname as nickname')
->join("left join tab_user as user on user.id = tab_user_token.user_id")
->where($where)
->find();
if ($isToken) {
session("user_auth",$isToken);
$this->redirect("Ssg/index",array('game_id'=>$game_id));
} else {
$this->redirect("Ssg/login");
}
}
//获取客服qq
$appqq = M("config", "sys_")->field('value')->where("name='APP_QQ'")->find()['value'];
$promoteId = I("promote_id", 0);
$this->assign("app_qq", $appqq);
$this->assign("promote_id", $promoteId);
$this->assign("rand", rand());
$this->display();
}
//用户登录
public function do_login()
{
$account = I("Account");
$password = I("Password");
$promoteId = I("promote_id", 0);
$password = base64_decode($password);
/*if (!$promoteId) {
$this->ajaxReturn(array("ErrorCode" => -97, "ResultMsg" => "参数非法"));
}*/
$promote = array();
if ($promoteId) {
$promote = M("promote", "tab_")->where(array('id' => $promoteId))->find();
if (!$promote) {
$this->ajaxReturn(array("ErrorCode" => -97, "ResultMsg" => "参数非法."));
}
}
$verify = new \Think\Verify();
if (!$verify->check(I("VerifyCode"))) {
$this->ajaxReturn(array("ErrorCode" => -97, "ResultMsg" => "验证码错误"));
}
$userApi = new MemberApi();
$user_id = $userApi->login($account, $password,1);//调用登录
$res_code = 0;
$res_msg = "登录成功";
if ($user_id < 0) {
switch ($user_id) {
case -1000 :
$res_code = self::USER_NOT_EXIST;
$res_msg = "用户不存在";
break;
case -10021 :
$res_code = self::USER_PWD_ERROR;
$res_msg = "登录密码错误";
break;
default :
$res_code = self::UNKNOWN_ERROR;
$res_msg = "未知错误";
}
}
if($user_id>0){
$_SESSION['user_id'] = $user_id;
$user = M('user', 'tab_')->where(array(
'id' => $user_id
))->find();
if (!$user['promote_id'] && $promote) {
M('user', 'tab_')->where(array(
'id' => $user_id
))->save(array(
'promote_id' => $promoteId,
'promote_account' => $promote['account']
));
}
}
$this->ajaxReturn(array("ErrorCode"=>$res_code,"ResultMsg"=>$res_msg),'JSON');
}
//验证码
public function verify($vid = '')
{
$config = array(
'seKey' => 'ThinkPHP.CN', //验证码加密密钥
'fontSize' => 16, // 验证码字体大小(px)
'imageH' => 42, // 验证码图片高度
'imageW' => 107, // 验证码图片宽度
'length' => 4, // 验证码位数
'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
'useCurve' => false, // 是否画混淆曲线
'useNoise' => false, // 是否添加杂点
'useCurve' => false,
);
ob_clean();
$verify = new \Think\Verify($config);
$verify->codeSet = '0123456789';
$verify->entry($vid);
}
//注册
public function phoneRegister()
{
//添加用户
C(api('Config/lists'));
$user = $_POST;
$promoteId =( $user['promote_id'] ? $user['promote_id'] : 0);
$game_id = $user['game_id'] ?? 0;
#判断数据是否为空
if (empty($user)) {
$this -> set_message(1001, "fail", "注册数据不能为空");
}
#验证短信验证码
$this -> sms_verify($user['account'], $user['code']);
$res = $this -> doRegister($user['account'],$user['password'],$user['account'],$promoteId,4,2, $game_id);
if(empty($res)){
$this -> set_message(1017, "fail", "添加失败");
}
//添加自动登录
$userApi = new MemberApi();
$user_id = $userApi->login($user['account'], $user['password'],1);
$this -> set_message(1, "success", "添加成功");
}
//忘记密码
public function forgetPassword()
{
$user = $_POST;
if (empty($user)) {
$this -> set_message(1001, "fail", "基础信息不能为空");
}
$this -> sms_verify($user['account'], $user['code']);
//更新密码
$userApi = new MemberApi();
$userInfo = M("user","tab_")->where("account = '".$user['account']."'")->find();
if(empty($userInfo)){
$this -> set_message(1003, "fail", "用户不存在");
}
//更新用户
$upres = $userApi->updatePassword($userInfo['id'], $user['password']);
if($upres){
//自动登陆
$user_id = $userApi->login($user['account'], $user['password'],1);
$this -> set_message(0, "success", "修改成功");
}else{
$this -> set_message(1005, "fail", "密码更新错误,请刷新后再次尝试");
}
# code...
}
//普通注册
public function userRegister()
{
$account = I("account");
$password = I("password");
$promoteId = I("promote_id", 0);
$res = $this -> doRegister($account,$password,'',$promoteId,4,1);
if(empty($res)){
$this -> set_message(1017, "fail", "添加失败");
}
//添加自动登录
$userApi = new MemberApi();
$user_id = $userApi->login($account, $password,1);
$this -> set_message(1, "success", "添加成功");
# code...
}
//消息返回
public function set_message($status=0,$return_code="fail",$return_msg="操作失败"){
$msg = array(
"status" => $status,
"return_code" => $return_code,
"return_msg" => $return_msg
);
$this->ajaxReturn($msg,'JSON');
exit();
}
//真正注册代码
public function doRegister($account,$password,$phone,$promote_id,$register_way,$register_type, $game_id = 0)
{
//验证账号
$is_user_info = M('user', 'tab_') -> where(['account' => $account]) -> find();
if (!empty($is_user_info)) {
$this -> set_message(1017, "fail", "用户名已存在");
}
//2.验证其他平台是否存在账号
$domain = C('UC_OTHER_WEB_URL');
if (!empty($domain)) {
$url = "http://{$domain}/Api/user/checkUserName?account={$account}";
$check_res = json_decode(file_get_contents($url), true);
if ($check_res['status'] == 0) {
$this -> set_message(1017, "fail", "用户名已存在");
}
}
$data = array(
'account' => $account,
'password' => think_ucenter_md5($password, UC_AUTH_KEY),
'phone' => $phone,
'head_img' =>'',
'promote_id' => $promote_id,
'promote_account' =>get_promote_account($promote_id),
'register_way' => $register_way,
'register_type' => $register_type,
'register_ip' => get_client_ip(),
'parent_id'=>get_fu_id($promote_id),
'parent_name'=>get_parent_name($promote_id),
'register_time'=>time(),
'check_time' => time(),
);
if ($game_id) {//关联游戏
$game = M('game', 'tab_')->where(['id' => $game_id])->find();
if ($game) {
$data['fgame_id'] = $game_id;
$data['fgame_name'] = $game['game_name'];
}
}
/* 添加用户 */
$res = M('user', 'tab_') ->add($data);
return $res;
# code...
}
//首页
public function index(){
$user = session("user_auth");
if (!$user) {
redirect(U("ssg/login"));
//$this->error("请登入", U('ssg/login'));
}
$appqq = M("config", "sys_")->field('value')->where("name='APP_QQ'")->find()['value'];
$this->assign("app_qq", $appqq);
$this->display();
}
public function getGamaList()
{
$user = session("user_auth");
$game_name = I("game_name", false);
$type = I("type",false);
$map = [];
if($game_name){
$map["game_name"] = array("like","%{$game_name}%");
}
$map["sdk_version"]=2;
$map["game_status"]=1;
$game_list = M("game", "tab_")->field("*, id as game_id")->where($map)->select();
for ($i=0; $i < count($game_list); $i++) {
$game_list[$i]["game_icon"] = get_cover($game_list[$i]["icon"], 'path');
}
$res = array("list"=>$game_list);
if($type == 1){
$map['user_id']= $user['user_id'];
$map['pay_status'] = 1;
$userpay = M("game_supersign","tab_")->field("game_id")->where($map)->select();
if(empty($userpay)){
$userpay = [];
}else{
$tmparr = [];
for ($i=0; $i < count($userpay); $i++) {
# code...
$tmparr[] = $userpay[$i]["game_id"];
}
$userpay = $tmparr;
}
$res["pay_game_id"] = $userpay;
}
$this->ajaxReturn($res,'JSON');
# code...
}
public function order(){
//.echo md5(sha1('123456') . 'UmtW6-Z(S^8xvwDn;B:J{X7FG9z2+Np.|C#~QRY"');exit();
$user = session("user_auth");
if (!$user) {
redirect(U("ssg/login"));
//$this->error("请登入", U('ssg/login'));
}
$order_list = M("game_supersign a","tab_")->field("a.order_id, b.game_name, b.icon, b.id as game_id, a.pay_status, a.user_id, a.create_time")->join("left join tab_game b on a.game_id=b.id")->where(array(
'a.user_id' => $user['user_id'],
))->order("a.id")->select();
// pp($order_list);
foreach ($order_list as $key => $value){
$deff = $this->timediffs(time(),$value['create_time']);
//计算分钟数
if(($deff['day']+ $deff['hour'])>=1 || $deff['min']>30){
$order_list[$key]['invalid']=1;
}else{
$order_list[$key]['invalid']=0;
}
}
$this->assign("data_list", $order_list);
$this->assign("nowtime", time());
$this->display();
}
//流程
public function process(){
$this->display();
}
//教程
public function tutorial(){
$this->display();
}
//帮助
public function help(){
$this->display();
}
//规则
public function rule(){
$this->display();
}
//退出
public function logout() {
session("user_auth",null);
redirect(U("ssg/login"));
}
//发送验证码
public function sendPhoneCode()
{
$phone = I("phone");
$result = R('Common/Sms/send_sms_code', array($phone, 10, false));
if ($result['code'] == 200) {
$data['status'] = 1;
$data['data'] = $result['data'];
} else {
$data['status'] = 0;
}
$data['msg'] = $result['msg'];
echo json_encode($data);
exit;
}
public function timediffs($begin_time, $end_time) {
if ($begin_time < $end_time) {
$starttime = $begin_time;
$endtime = $end_time;
} else {
$starttime = $end_time;
$endtime = $begin_time;
}
//计算天数
$timediff = $endtime - $starttime;
$days = intval($timediff / 86400);
//计算小时数
$remain = $timediff % 86400;
$hours = intval($remain / 3600);
//计算分钟数
$remain = $remain % 3600;
$mins = intval($remain / 60);
//计算秒数
$secs = $remain % 60;
$res = array("day" => $days, "hour" => $hours, "min" => $mins, "sec" => $secs);
return $res;
}
public function sms_verify($phone="" ,$code="",$type=2){
$result = R('Common/Sms/verify_sms_code',array($phone,$code,false));
if($result['code']==200) {
if($type==1){
$this->set_message(200,"success","正确");
}else{
return true;
}
} else {
switch ($result['code']) {
case 1021:{
$this->set_message(1010,"fail","验证码已失效,请重新获取");
};break;
case 1022:{
$this->set_message(1022,"fail","验证码不正确,请重新输入");
};break;
default:
$this->set_message($result['code'],"fail",$result['msg']);
}
}
}
/**
*支付中心
*/
public function pay(){
$user = session("user_auth");
$gameId = I("game_id", 0);
$promoteId = I("promote_id");
//$price = self::signprice;
if (!$user) {
redirect("/mobile.php/ssg/login/game_id/{$gameId}/promote_id/$promoteId");
// $this->error("请登入", "/mobile.php/ssg/login");
}
$userId = $user['user_id'];
$gameInfo = M('game', 'tab_')->field('game_name,supersign_token')->where(array(
'id' => $gameId,
))->find();
$payLog = M('game_supersign', 'tab_')->where(array(
'user_id' => $userId,
'game_id' => $gameId
))->find();
if($payLog && $payLog['pay_status']==1){
//$this->assign("error","亲~您已购买过了~
请到【订单查询】查看订单信息哟~");
//$this->display('blank');
redirect("/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/".$payLog['order_id']);
}else{
if (!$gameInfo['supersign_token']) {
//$this->error("超级签token未填写!");
$this->assign("error","超级签token未配置~");
$this->display('blank');
exit();
}
$this->assign("price", self::signprice);
//$this->assign("order_id", $orderId);
$this->assign("game_id",$gameId);
$this->assign("game_name",$gameInfo['game_name']);
$this->display('pay');
}
}
/*
* 发起支付
*/
public function dopay() {
$user = session("user_auth");
if (!$user ) {
//redirect("/mobile.php/ssg/login");
redirect(U("ssg/login"));
}
$gameId = I("game_id", 0);
$paytype = I("pay_type", 'ali');
$price = self::signprice;
$userId = $user['user_id'];
if (!$userId || !$gameId) {
//$this->error("参数有误!");
$this->assign("error","参数有误~");
$this->display('blank');
exit();
}
$payLog = M('game_supersign', 'tab_')->where(array(
'user_id' => $userId,
'game_id' => $gameId
))->find();
$gameInfo = M('game', 'tab_')->field('game_name,supersign_token')->where(array(
'id' => $gameId,
))->find();
if ($payLog && $payLog['pay_status']==0) {
$orderId = $payLog['order_id'];
}elseif ($payLog && $payLog['pay_status']==1){
/*$orderId = $payLog['order_id'];
if(stripos($_SERVER['HTTP_HOST'], '.wmtxkj.cn') || $_SERVER['HTTP_HOST']=='127.0.0.1' || stripos($_SERVER['HTTP_HOST'], '.free.idcfengye.com')){
redirect("http://".$_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/$orderId");
}else{
redirect("https://".$_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/$orderId");
}*/
$this->assign("error","亲~您已购买过了~
请到【订单查询】查看订单信息哟~");
$this->display('blank');
//$this->error("亲~您已购买过了~请到【订单查询】查看订单信息哟~");
exit();
} else {
$orderId = "SS_" . date('Ymd') . date('His') . sp_random_string(4); // 超级签
if (!$gameInfo['supersign_token']) {
//$this->error("超级签token未填写!");
$this->assign("error","超级签token未配置~");
$this->display('blank');
exit();
}
$r = M('game_supersign', 'tab_')->add(array(
'udid' => '',
'user_id' => $userId,
'game_id' => $gameId,
'order_id' => $orderId,
'pay_price' => $price,
'pay_status' => 0,
'ticket' => '', // 调用安装的时候分配
'token' => $gameInfo['supersign_token'],
'create_time' => time()
));
if (!$r) return -1;
}
if($paytype=='ali'){
$param['price'] = $price;
$param['sdk_version'] = '2';
$param['user_id'] = $userId;
$param['game_id'] = $gameId;
$param['order_id'] = $orderId;
$param['apitype'] = "alipay";
$param['config'] = "alipay";
$param['signtype']= "MD5";
$param['server'] = "alipay.wap.create.direct.pay.by.user";
$param['payway'] = 1;
$param['title'] = $price;
$param['body'] = $price;
//$param['callback'] = "https://m.wmtxkj.com/mobile.php/Ssg/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}";
//$param['notifyurl'] = "https://m.wmtxkj.com/callback.php/Notify/notify/apitype/alipay";
if(stripos($_SERVER['HTTP_HOST'], '.wmtxkj.cn') || $_SERVER['HTTP_HOST']=='127.0.0.1' || stripos($_SERVER['HTTP_HOST'], '.free.idcfengye.com')){
$param['callback'] = "http://".$_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}";
//$param['notifyurl'] = "http://".$_SERVER['HTTP_HOST']."/callback.php/Notify/notify/apitype/alipay";
}else{
$param['callback'] = "https://".$_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}";
//$param['notifyurl'] = "https://".$_SERVER['HTTP_HOST']."/callback.php/Notify/notify/apitype/alipay";
}
$ali_pay = $this->alipay($param);
redirect($ali_pay['url']);
}else{
$weixn = new Weixin();
$wx_pay = json_decode($weixn->weixin_pay('超级签消费', $orderId, $price, 'MWEB', 4), true);
if($wx_pay['status']==1){
//$redirect_url = $_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/{$userId}/game_id/{$gameId}/order_id/{$orderId}";
redirect($wx_pay['mweb_url']);
}else{
$this->assign("error",$wx_pay['return_msg']);
$this->display('blank');
}
}
}
// alipay
public function alipay($param) {
$pay = new \Think\Pay($param['apitype'],C($param['config']));
$vo = new \Think\Pay\PayVo();
$vo->setBody("超级签消费")
->setFee($param['price'])//支付金额
->setTitle($param['title'])
->setOrderNo($param['order_id'])
->setService($param['server'])
->setSignType($param['signtype'])
->setPayMethod("wap")
->setTable("supersign")
->setPayWay($param['payway'])
->setCallback($param['callback'])
//->setNotifyUrl($param['notifyurl'])
->setGameName(get_game_name($param['game_id']))
->setServerId(0)
->setUserId($param['user_id'])
->setSdkVersion($param['sdk_version']);
$pay_['url']= $pay->buildRequestForm($vo);
//$pay_['out_trade_no']= $out_trade_no;
return $pay_;
}
/**
* 用户点击安装
*/
public function install() {
$user = session("user_auth");
if (!$user ) {
//$this->error("请登入", "/mobile.php/ssg/login");
redirect(U("ssg/login"));
}
$userId = $user['user_id'];
$gameId = I('game_id', 0);
$orderId = I('order_id', 0);
if (!$userId || !$gameId || !$orderId) {
//$this->error("参数有误!");
$this->assign("error","参数有误~");
$this->display('blank');
exit();
}
M()->startTrans();
// 获取支付记录
$gamesign = M('game_supersign', 'tab_')->where(array(
'order_id' => $orderId,
'user_id' => $userId,
'game_id' => $gameId,
'pay_status' => 1,
))->find();
if (!$gamesign) {
//$this->error("支付记录不存在");
$this->assign("error","支付记录不存在~");
$this->display('blank');
exit();
}
if ($gamesign['url']) {
redirect($gamesign['url']);
}
$token = $gamesign['token'];
$ipa365 = new Ipa365();
$i = 1;
while (1) {
// 获取授权码
$list = $ipa365->ticketList(array(
'token' => $token,
'limit' => $i,
)); // @todo: 并发授权码已分配的情况
$code = $list['data']['list'][$i-1]['code'];
$codeExists = M('game_supersign', 'tab_')->field('id')->where(array(
'ticket' => $code,
))->find();
if (!$codeExists) {
break;
}
$i ++;
}
$game = M('game', 'tab_')->where(array(
'id' => $gameId,
))->find();
$url = $game['supersign_url']."?code={$code}";
$r = M('game_supersign', 'tab_')->where(array(
'user_id' => $userId,
'game_id' => $gameId,
'pay_status' => 1
))->save(array(
'ticket' => $code, // 调用安装的时候分配
'url' => $url,
));
if (!$r) {
pp(M('game_supersign', 'tab_')->_sql());
M()->rollback();
return -1;
}
M()->commit();
redirect($url);
}
/**
* 下载页面 判断订单是否支付成功
*/
public function install_show() {
$orderId = I('order_id', 0);
$gameId = I('game_id', 0);
$user = session("user_auth");
if (!$user ) {
//$this->error("请登入", "/mobile.php/ssg/login");
redirect(U("ssg/login"));
}
$userId = $user['user_id'];
if (!$userId ) {
//$this->error("请登入", "/mobile.php/ssg/login");
redirect(U("ssg/login"));
}
if (!$orderId || !$gameId || !$userId) {
//$this->error("参数校验失败,请重试");
$this->assign("error","参数校验失败,请重试~");
$this->display('blank');
exit();
}
$supersign = M('game_supersign', 'tab_')->where(array('order_id' => $orderId,"game_id"=>$gameId))->find();
if (!$supersign) {
//$this->error("订单不存在");
$this->assign("error","订单不存在");
$this->display('blank');
exit();
}
if ($supersign['pay_status'] != 1) {
//$this->error("订单未支付");
$this->assign("error","订单未支付");
$this->display('blank');
exit();
}
$game = M('game', 'tab_')->where(array('id' => $gameId))->find();
$this->assign('game', $game);
$this->assign('url', U('Ssg/install', array(
'order_id' => $orderId,
'user_id' => $userId,
'game_id' => $gameId
)));
//获取礼包码
$giftbag = M('giftbag', 'tab_')->field("*")->where(array("game_id"=>$gameId,"giftbag_version"=>3))->find();
if(empty($giftbag)){
$giftbag = false;
}else{
$desribe = $giftbag['desribe'];
$mygif = $this->checkAccountGiftExist($userId,$giftbag['id']);
if(!empty($mygif)){
//已经领取
$giftbag =$mygif;
}else{
if($giftbag['novice_num']>0){
//领取
$giftbag = $this->getNovice($userId,$user['account'],$giftbag['id']);
}
}
$giftbag['desribe'] = $desribe;
}
//验证是否领取
$this->assign('giftbag', $giftbag);
$this->display();
}
/*
* 打包列表
*/
public function pay_list() {
$user = session("user_auth");
if (!$user ) {
//$this->error("请登入", "/mobile.php/ssg/login");
redirect(U("ssg/login"));
}
$userId = $user['user_id'];
$list = M('game_supersion', 'tab_')->where(array(
'user_id' => $userId,
))->select();
$this->assign("list", $list);
$this->display();
}
//领取礼包码
public function getNovice($user_id,$account,$gift_id){
$data =M("giftbag",'tab_')->find($gift_id);
$novice_str = $data['novice'];
$novice_arr = str2arr($novice_str,",");
if (empty($novice_arr)){
return "";
}
$novice_arr = array_filter($novice_arr);
$novice = array_pop($novice_arr);
$data['novice_num'] = count($novice_arr);
$data['novice'] = arr2str($novice_arr,",");
M("giftbag",'tab_')->startTrans();
$novice_result = M("giftbag",'tab_')->save($data);
if(!empty($novice)){
//记录领取
$record['game_id'] = $data['game_id'];
$record['game_name'] = $data['game_name'];//get_game_name($data['game_id']);
$record['gift_id'] = $gift_id;
$record['gift_name'] = $data['giftbag_name'];
$record['status'] = 0;
$record['novice'] = $novice;
$record['user_id'] = $user_id;
$record['user_account'] = $account;
$record['create_time'] = time();
$record['start_time'] = $data['start_time'];
$record['end_time'] = $data['end_time'];
$record_result = M("gift_record",'tab_')->add($record);
}else{
$novice_result = false;
}
if($novice_result === false || $record_result === false){
M("giftbag",'tab_')->rollback();
return "";
}else{
M("giftbag",'tab_')->commit();
return $record;
}
}
public function checkAccountGiftExist($user_id,$gift_id){
$map['user_id'] = $user_id;
$map['gift_id'] = $gift_id;
return M("gift_record",'tab_')->field('*')->where($map)->find();
}
}