Просмотр исходного кода

Merge branch 'master' of http://git.meme100.com:10180/yigao/qpapi

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
vali 6 лет назад
Родитель
Сommit
c218773279

+ 142 - 0
app/Http/Controllers/Admin/GameUrlController.php

@@ -0,0 +1,142 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use App\Http\Models\GameUrlData;
+use App\Models\GameUrl;
+use Illuminate\Http\Request;
+use App\Http\Controllers\PublicController;
+
+/**
+ * 游戏url及参数类
+ */
+class GameUrlController extends PublicController
+{
+
+
+    /**
+     * 视图加载
+     *
+     * @access public
+     * @return array
+     */
+    public function index()
+    {
+        return view('admin.gameUrl.index');
+
+    }//end index()
+
+
+    /**
+     * 数据获取
+     *
+     * @access public
+     * @param  mixed $request 参数.
+     * @return array
+     */
+    public function data(Request $request)
+    {
+        $gameUrlDataModel = new GameUrlData;
+        $getGameUrlWhere = [];
+        // 查询参数.
+        if (empty($request->get('gameUrl_name')) !== true) {
+            $getGameUrlWhere['gameUrl_name'] = $request->get('gameUrl_name');
+        }
+
+        // 查询数据.
+        $res = $gameUrlDataModel->getGameUrl($getGameUrlWhere, $request->get('limit', 30));
+        // 返回参数.
+        $data = [
+            'code'  => 0,
+            'msg'   => '正在请求中...',
+            'count' => $res['total'],
+            'data'  => $res['data'],
+        ];
+        return response()->json($data);
+
+    }//end data()
+
+
+    /**
+     * 视图加载
+     *
+     * @access public
+     * @return array
+     */
+    public function create()
+    {
+        return view('admin.gameUrl.create');
+
+    }//end create()
+
+
+    /**
+     * 添加数据
+     *
+     * @access public
+     * @param  mixed $request 参数.
+     * @return array
+     */
+    public function store(Request $request)
+    {
+        $data = $request->only(['gameUrl_name', 'gameUrl_type', 'gameUrl_url', 'gameUrl_data']);
+
+        if ( GameUrl::insert($data)) {
+            return redirect()->to(route('admin.gameUrl'))->with(['status'=>'添加成功']);
+        }
+        return redirect()->to(route('admin.gameUrl'))->withErrors('系统错误');
+
+    }//end store()
+
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function edit($id)
+    {
+        $gameUrlModel = new GameUrl;
+        $gameUrl = $gameUrlModel->where(['gameUrl_id' => $id])->first();
+        return view('admin.gameUrl.edit',compact('gameUrl'));
+    }
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  int  $id
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request)
+    {
+        $gameUrlModel = new GameUrl;
+        $gameUrl = $gameUrlModel->where(['gameUrl_id' => $request->get('gameUrl_id')]);
+        $data = $request->only(['gameUrl_name', 'gameUrl_type', 'gameUrl_url', 'gameUrl_data']);
+
+        if ($gameUrl->update($data)){
+            return redirect()->to(route('admin.gameUrl'))->with(['status'=>'更新成功']);
+        }
+        return redirect()->to(route('admin.gameUrl'))->withErrors('系统错误');
+    }
+
+
+    /**
+     * 删除
+     *
+     * @access public
+     * @param  mixed $request 参数.
+     * @return array
+     */
+    public function destroy(Request $request)
+    {
+        $ids = $request->get('ids');
+        if (empty($ids)){
+            return response()->json(['code'=>1,'msg'=>'请选择删除项']);
+        }
+        if (GameUrl::whereIn('id',$ids)->update(['status'=>0])){
+            return response()->json(['code'=>0,'msg'=>'删除成功']);
+        }
+        return response()->json(['code'=>1,'msg'=>'删除失败']);
+    }
+}

+ 0 - 1
app/Http/Controllers/Admin/LoginController.php

@@ -1,7 +1,6 @@
 <?php
 
 namespace App\Http\Controllers\Admin;
-
 use Illuminate\Foundation\Auth\AuthenticatesUsers;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;

+ 78 - 0
app/Http/Controllers/Api/AgentController.php

@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use \App\Http\Models;
+use \Exception;
+
+/**
+ * 代理管理类
+ */
+class AgentController extends Controller
+{
+
+
+    /**
+     * 代理登陆、注册
+     *
+     * @access public
+     * @param mixed $req 数据传输
+     * @return array JsonString
+     */
+    public function login(Request $req)
+    {
+        $code = -2;
+        $msg = '操作失败';
+        try {
+            $agentModel = new Models\Agent;
+            $sportsAgentModel = new Models\SportsAgent;
+            // 获取Token url及参数.
+            $gmenuId = $req->input('id');
+            $backData = $sportsAgentModel->getSportsToken($gmenuId);
+            if ($backData !== 1) {
+                $msg = '链接失败';
+                return toJson($code, $msg, []);
+            }
+
+            // 获取用户信息.
+            $getMemberInfo = $agentModel->getMember();
+            // 验证用户.
+            $backData = $sportsAgentModel->checkAccountSports($gmenuId, $getMemberInfo);
+            if ($backData !== 1) {
+                $msg = '链接失败';
+                return toJson($code, $msg, []);
+            }//end if
+
+            // 登陆.
+            $loginBackData = $sportsAgentModel->loginSports($gmenuId, $getMemberInfo);
+            if ($loginBackData === 2) {
+                $msg = '远程登陆失败';
+                return toJson($code, $msg, []);
+            }
+
+            // 獲取余额.
+            $getMembersDetailed = $agentModel->getMembersDetailed();
+            // 如果有余额则转入
+            if ($getMembersDetailed->membersDetailed_cash > 0) {
+                // 转账.
+                $backData = $sportsAgentModel->transferSports($gmenuId, $getMembersDetailed->membersDetailed_cash, 0, $getMemberInfo, 'IN');
+                if ($backData !== 1) {
+                    $msg = '链接失败';
+                    return toJson($code, $msg, []);
+                }
+            }
+
+            $msg = '成功';
+            $code = 1;
+
+            return toJson($code, $msg, ['apiToken' => $loginBackData['token']]);
+        } catch (Exception $e) {
+            return toJson($code, $msg, []);
+        }
+
+    }//end login()
+
+
+}

+ 43 - 0
app/Http/Controllers/Api/AgentInfoController.php

@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use \App\Http\Models;
+use \Exception;
+
+/**
+ * 代理详情管理类
+ */
+class AgentInfoController extends Controller
+{
+
+
+    /**
+     * 各代理余额查询
+     *
+     * @access public
+     * @param mixed $req 数据传输
+     * @return array JsonString
+     */
+    public function agentCash(Request $req)
+    {
+        $code = -2;
+        $msg = '操作失败';
+        try {
+            $agentCashModel = new Models\AgentCash;
+            $agentCashData = $agentCashModel->seeGameMoney();
+
+            $msg = '成功';
+            $code = 1;
+
+            return toJson($code, $msg, $agentCashData);
+        } catch (Exception $e) {
+            return toJson($code, $msg, []);
+        }
+
+    }//end agentCash()
+
+
+}

+ 21 - 0
app/Http/Controllers/Api/NoticeController.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use App\Models;
+class NoticeController extends Controller
+{
+    /*
+     * 公告
+     */
+    public function notice(Request $req){
+        $Notice = new Models\Notice;
+        $data = $Notice->notice_info();
+        if(!$data){
+            return toJson(-1);
+        }
+        return toJson(1,'',$data);
+    }
+}

+ 22 - 10
app/Http/Controllers/Api/UserController.php

@@ -4,19 +4,31 @@ namespace App\Http\Controllers\Api;
 
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
-
+use App\Models;
 class UserController extends Controller
 {
-    //
+
+    /*
+     * 获取登录用户信息
+     */
     function getUserDetails(Request $req){
-        $uid=S('token_user_id');
-        $user=\App\Models\Member::where('id',$uid)->first();
-        if(!$user){
-            return toJson(-20002);
+        try {
+            $uid = S('token_user_id');
+            $member = new Models\Member;
+            $user = $member
+                ->join('membersDetailed as md', 'md.members_id', 'members.id')
+                ->select('members.*','md.membersDetailed_cash')
+                ->where('members.id',$uid)
+                ->get();
+            if(empty($user)){
+                return toJson(-20002);
+            }
+            $user=$user->toArray();
+            unset($user['password']);
+            unset($user['solt']);
+            return toJson(1,1,$user);
+        } catch (Exception $e) {
+            echo $e->getMessage();
         }
-        $user=$user->toArray();
-        unset($user['password']);
-        unset($user['solt']);
-        return toJson($user);
     }
 }

+ 11 - 11
app/Http/Controllers/Sys/UserController.php

@@ -4,8 +4,8 @@ namespace App\Http\Controllers\Sys;
 
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
-use PHPMailer\PHPMailer\Exception;
 use Illuminate\Support\Facades\DB;
+use \Exception;
 
 
 class UserController extends Controller
@@ -57,20 +57,20 @@ class UserController extends Controller
     }
     public function register(Request $req)
     {
-        $user=[];
-        $user['name']=$req->input('user');
-        $user['password']=$req->input('password');
-        $cpwd=$req->input('confirm_password');
-        $user['phone']=$req->input('phone');
-        $user['uuid']=getUUID();
-        $user['password']=createPasswd(trim($user['password']),$user['uuid']); 
         try{
+            $user=[];
+            $user['name']=$req->input('user');
+            $user['password']=$req->input('password');
+            $cpwd=$req->input('confirm_password');
+            $user['phone']=$req->input('phone');
+            $user['uuid']=getUUID();
+            $user['password']=createPasswd(trim($user['password']),$user['uuid']);
             $re=\App\Models\Member::insert($user);
+
+            return toJson(1);
         }catch(Exception $ex){
             return toJson(-20001);
-        }      
-       
-        return toJson(1);
+        }
     }
     public function login(Request $req){
         $user['name']=$req->input('user');

+ 4 - 3
app/Http/Middleware/CORS.php

@@ -15,13 +15,14 @@ class CORS
      */
     public function handle($request, Closure $next)
     {
-//        header('Access-Control-Allow-Origin: *');
+    //    header('Content-Type: application/x-www-form-urlencoded; charset=UTF-8');
 
         $headers = [
             'Access-Control-Allow-Origin'=> '*',
             'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
-            'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin',
-            'Access-Control-Allow-Credentials'=> 'false',
+            'Access-Control-Allow-Headers'=> 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, Access-Control-Allow-Methods, Access-Control-Allow-Origin',
+            
+            'Access-Control-Allow-Credentials'=> 'flase',
         ];
     
 

+ 214 - 0
app/Http/Models/Agent.php

@@ -0,0 +1,214 @@
+<?php
+
+namespace App\Http\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use \App\Models;
+
+/**
+ * 代理管理模型类
+ */
+class Agent extends Model
+{
+
+
+    /**
+     * 获取游戏url及参数
+     *
+     * @access public
+     * @param mixed $getGameUrlWhere 查询条件
+     * @return String
+     */
+    public function getGameUrl($getGameUrlWhere)
+    {
+        // 获取游戏地址数据.
+        $gameUrlModel = new Models\GameUrl;
+        $getGameUrlSelect = [
+            'gameUrl_url',
+            'gameUrl_data',
+        ];
+        $getGameUrl = $gameUrlModel
+            ->select($getGameUrlSelect)
+            ->where($getGameUrlWhere)
+            ->first();
+
+        return $getGameUrl;
+
+    }//end getGameUrl()
+
+
+    /**
+     * 获取用户信息
+     *
+     * @access public
+     * @return array
+     */
+    public function getMember()
+    {
+        // 获取游戏地址数据.
+        $memberModel = new Models\Member;
+        $getMemberSelect = [
+            'name',
+            'members_agentPassword',
+            'uuid',
+        ];
+        $getMemberWhere['id'] = S('token_user_id');
+        $getMember = $memberModel
+            ->select($getMemberSelect)
+            ->where($getMemberWhere)
+            ->first();
+        $result['name'] = $getMember->name;
+        // 接口密码.
+        if (empty($getMember->members_agentPassword) === true) {
+            $newUuid = getUUID();
+            $newUuid = substr($getMember->uuid, 3,12) . md5(uniqid(mt_rand(), true));
+            $newAgentPassword = createPasswd(trim($newUuid), $newUuid);
+            $result['password'] = $newAgentPassword;
+            $getMember = $memberModel
+                ->where($getMemberWhere)
+                ->update(['members_agentPassword' => $newAgentPassword]);
+        } else {
+            $result['password'] = $getMember->members_agentPassword;
+        }
+
+        return $result;
+
+    }//end getMember()
+
+
+    /**
+     * 获取用户余额
+     *
+     * @access public
+     * @return array
+     */
+    public function getMembersDetailed()
+    {
+        // 获取用户资金.
+        $membersDetailedModel = new Models\MembersDetailed;
+        $getMembersDetailedSelect = [
+            'membersDetailed_cash',
+        ];
+        $getMembersDetailedWhere['members_id'] = S('token_user_id');
+        $getMembersDetailed = $membersDetailedModel
+            ->select($getMembersDetailedSelect)
+            ->where($getMembersDetailedWhere)
+            ->first();
+
+        return $getMembersDetailed;
+
+    }//end getMembersDetailed()
+
+
+    /**
+     * 修改用户余额
+     *
+     * @access public
+     * @param mixed $update 修改字段
+     * @return array
+     */
+    public function updateMembersDetailed($update)
+    {
+        // 获取用户资金.
+        $membersDetailedModel = new Models\MembersDetailed;
+        $updateMbrDtlWhr['members_id'] = S('token_user_id');
+        $updateMbrDtl = $membersDetailedModel
+            ->where($updateMbrDtlWhr)
+            ->update($update);
+
+        return $updateMbrDtl;
+
+    }//end updateMembersDetailed()
+
+
+    /**
+     * 添加转账记录
+     *
+     * @access public
+     * @param mixed $uuid 唯一标识
+     * @param mixed $money 金额
+     * @param mixed $type 类型    1增加2减少
+     * @param mixed $cash 剩余金额
+     * @param mixed $describe 描述
+     * @param mixed $status 状态  1成功2失败
+     * @return string
+     */
+    public function addMoneyDetails($uuid, $money, $type, $cash, $describe, $status=1)
+    {
+        $moneyDetailsModel = new Models\MoneyDetails;
+        $data = [
+            'moneyDetails_identity' => $uuid,
+            'members_id' => S('token_user_id'),
+            'moneyDetails_money' => $money,
+            'moneyDetails_time' => date('Y-m-d H:i:s'),
+            'moneyDetails_type' => $type,
+            'moneyDetails_cash' => $cash,
+            'moneyDetails_describe' => $describe,
+            'moneyDetails_status' => $status,
+        ];
+        $add = $moneyDetailsModel->insert($data);
+
+        return $add;
+
+    }//end addMoneyDetails()
+
+
+    /**
+     * 修改游戏余额
+     *
+     * @access public
+     * @param mixed $money 金额
+     * @param mixed $where 查询条件
+     * @return string
+     */
+    public function updateGameMoney($money, $where)
+    {
+        $gameMoneyModel = new Models\GameMoney;
+        $result = $gameMoneyModel
+            ->where($where)
+            ->update(['gameMoney_money' => $money]);
+
+        return $result;
+
+    }//end updateGameMoney()
+
+
+    /**
+     * 查询游戏余额
+     *
+     * @access public
+     * @param mixed $select 查询字段
+     * @param mixed $where 查询条件
+     * @return string
+     */
+    public function seeGameMoney($select, $where)
+    {
+        $gameMoneyModel = new Models\GameMoney;
+        $result = $gameMoneyModel
+            ->select($select)
+            ->where($where)
+            ->first();
+
+        return $result;
+
+    }//end seeGameMoney()
+
+
+    /**
+     * 新增游戏余额信息
+     *
+     * @access public
+     * @param mixed $data 数据
+     * @return string
+     */
+    public function addGameMoney($data)
+    {
+        $gameMoneyModel = new Models\GameMoney;
+        $result = $gameMoneyModel->insert($data);
+
+        return $result;
+
+    }//end addGameMoney()
+
+
+}

+ 42 - 0
app/Http/Models/AgentCash.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Http\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use \App\Models;
+
+/**
+ * 代理管理模型类
+ */
+class AgentCash extends Model
+{
+
+
+    /**
+     * 查询游戏余额
+     *
+     * @access public
+     * @return array
+     */
+    public function seeGameMoney()
+    {
+        $gameMoneyModel = new Models\GameMoney;
+        $gameMoneySelect = [
+            'gname',
+            'gameMoney_money',
+        ];
+        $gameMoneyWhere = [
+            'members_id' => S('token_user_id'),
+        ];
+        $result = $gameMoneyModel
+            ->join('gmenu', 'gameMoney.gmenu_id', 'gmenu.id')
+            ->select($gameMoneySelect)
+            ->where($gameMoneyWhere)
+            ->get();
+
+        return $result;
+
+    }//end seeGameMoney()
+
+
+}

+ 97 - 0
app/Http/Models/Common.php

@@ -0,0 +1,97 @@
+<?php
+
+namespace App\Http\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 代理管理模型类
+ */
+class Common extends Model
+{
+
+
+    /**
+     * 接口调用
+     *
+     * @access public
+     * @param mixed $url 接口地址
+     * @param mixed $where $params参数
+     * @param mixed $timeout 请求时效
+     * @return String
+     */
+    public function make_request($url, $params, $timeout=30)
+    {
+        set_time_limit(0);
+        if (function_exists('curl_init') === true) {
+            $ch = curl_init();
+            $header = array(
+                'Accept-Language: zh-cn',
+                'Connection: Keep-Alive',
+                'Cache-Control: no-cache'
+            );
+            curl_setopt($ch, CURLOPT_POST, 1);
+            curl_setopt($ch, CURLOPT_URL, $url);
+            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
+            if ($timeout > 0) curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
+            $result = curl_exec($ch);
+            $errno = curl_errno($ch);
+            curl_close($ch);
+            return $result;
+        } else {
+            $context = array(
+                'http' => array(
+                    'method' => 'POST',
+                    'header' => 'Content-type: application/x-www-form-urlencoded' . "\r\n" .
+                        'Content-length: ' . strlen($params),
+                    'content' => $params));
+            if ($timeout > 0) $context['http']['timeout'] = $timeout;
+            $contextid = stream_context_create($context);
+            $sock = @fopen($url, 'r', false, $contextid);
+            if ($sock) {
+                $result = '';
+                while (!feof($sock)) {
+                    $result .= fgets($sock, 8192);
+                }
+                fclose($sock);
+            } else {
+                return 'TimeOut';
+            }
+        }
+        return $result;
+
+    }//end make_request()
+
+
+    /**
+     * 接口调用
+     *
+     * @access public
+     * @param mixed $paramsData 接口必要參數
+     * @param mixed $url 接口地址
+     * @return String
+     */
+    public function sportsAgentParams($paramsData, $url)
+    {
+        $paramsSting = '';
+        $a = 0;
+        foreach ($paramsData as $key => $value) {
+            if ($a === 0) {
+                $paramsSting .= $key . '=' . $value;
+            } else {
+                $paramsSting .= '&' . $key . '=' . $value;
+            }
+            $a++;
+        }
+        $params = base64_encode($paramsSting);
+        $key = md5($params . S('sportsToken'));
+        $loginUrl = $url . '?params=' . $params . '&Key=' . $key;
+
+        return $loginUrl;
+
+    }//end sportsAgentParams()
+
+
+}

+ 68 - 0
app/Http/Models/Database.php

@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Http\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 数据库操作模型类
+ */
+class Database extends Model
+{
+
+
+    /**
+     * 循环获取or查询
+     *
+     * @access public
+     * @param mixed $database 数据库
+     * @param mixed $orWhere 或查询      [[['batch_id', '191'], ['batch_id', '186']],[['id', '55'], ['id', '59']]];
+     * @return String
+     */
+    public function whereOr($database, $orWhere=[])
+    {
+        $result = $database;
+
+        // 循环获取or查询.
+        foreach ($orWhere as $value) {
+            $result = $result->where(
+                function ($query) use ($value) {
+                    foreach ($value as $k => $v) {
+                        if ($k === 0) {
+                            $query = $query->where([$v[0] => $v[1]]);
+                        } else {
+                            $query = $query->orWhere([$v[0] => $v[1]]);
+                        }
+                    }
+                }
+            );
+        }
+
+        return $result;
+
+    }//end whereOr()
+
+
+    /**
+     * 循环排序规则
+     *
+     * @access public
+     * @param mixed $database 数据库
+     * @param mixed $orderBy 排序字段   ['sort' => 'asc']
+     * @return String
+     */
+    public function orderBy($database, $orderBy=[])
+    {
+        $result = $database;
+
+        // 循环排序规则.
+        foreach ($orderBy as $key => $value) {
+            $result = $result->orderBy($key, $value);
+        }
+
+        return $result;
+
+    }//end orderBy()
+
+
+}

+ 42 - 0
app/Http/Models/GameUrlData.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Http\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use \App\Models;
+
+/**
+ * 游戏url及参数模型类
+ */
+class GameUrlData extends Model
+{
+
+
+    /**
+     * 查询游戏url及参数
+     *
+     * @access public
+     * @param mixed $getGameUrlWhere 查询条件
+     * @param mixed $paginate 分页
+     * @return array
+     */
+    public function getGameUrl($getGameUrlWhere='', $paginate)
+    {
+        // 获取游戏地址数据.
+        $gameUrlModel = new Models\GameUrl;
+        $getGameUrl = $gameUrlModel;
+        if (empty($getGameUrlWhere) === false) {
+            $getGameUrl = $getGameUrl->where($getGameUrlWhere);
+        }
+
+        $getGameUrl = $getGameUrl
+            ->orderBy('gameUrl_id','desc')
+            ->paginate($paginate)
+            ->toArray();
+
+        return $getGameUrl;
+
+    }//end getGameUrl()
+
+
+}

+ 250 - 0
app/Http/Models/SportsAgent.php

@@ -0,0 +1,250 @@
+<?php
+
+namespace App\Http\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use \App\Http\Models as HttpModel;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * 赛事代理管理模型类
+ */
+class SportsAgent extends Model
+{
+
+
+    /**
+     * 获取体育token
+     *
+     * @access public
+     * @param mixed $gmenuId 游戏ID
+     * @return string
+     */
+    public function getSportsToken($gmenuId)
+    {
+        $agentModel = new HttpModel\Agent;
+        // 获取url及参数.
+        $getGameUrlWhere = [
+            'gmenu_id' => $gmenuId,
+            'gameUrl_type' => 'getToken',
+        ];
+        $getGameUrl = $agentModel->getGameUrl($getGameUrlWhere);
+
+        // 获取Token传参.
+        $data = json_decode($getGameUrl->gameUrl_data);
+        // 获取Token url.
+        $url = $getGameUrl->gameUrl_url;
+        $dataString = '';
+        foreach ($data as $key => $value) {
+            $dataString .= '&' . $key . '=' . urlencode($value);
+        }
+        $commonModel = new HttpModel\Common;
+        // 获取token.
+        $getToken = $commonModel->make_request($url, $dataString);
+        if ($getToken && json_decode($getToken)->status === 1) {
+            // 存儲token
+            S('sportsToken', json_decode($getToken)->data->token);
+            return 1;
+        } else {
+            return 2;
+        }
+
+    }//end getSportsToken()
+
+
+    /**
+     * 验证用户
+     *
+     * @access public
+     * @param mixed $gmenuId 游戏ID
+     * @param mixed $getMemberInfo 用户信息
+     * @return string
+     */
+    public function checkAccountSports($gmenuId, $getMemberInfo)
+    {
+        $agentModel = new HttpModel\Agent;
+        // 获取验证用户 url及参数.
+        $getGameUrlWhere = [
+            'gmenu_id' => $gmenuId,
+            'gameUrl_type' => 'checkAccount',
+        ];
+        $getGameUrl = $agentModel->getGameUrl($getGameUrlWhere);
+        // 获取验证用户传参.
+        $data = json_decode($getGameUrl->gameUrl_data);
+        // 获取验证用户url.
+        $url = $getGameUrl->gameUrl_url;
+        // 验证用户.
+        $paramsData = [
+            'agent' => $data->agent,
+            'username' => $getMemberInfo['name'],
+            'method' => $data->method,
+            'password' => $getMemberInfo['password'],
+        ];
+        $commonModel = new HttpModel\Common;
+        $checkAccountUrl = $commonModel->sportsAgentParams($paramsData, $url);
+        $checkAccountData = $commonModel->make_request($checkAccountUrl, '');
+        if ($checkAccountData && json_decode($checkAccountData)->status === 1) {
+            return 1;
+        } else {
+            return 2;
+        }
+
+    }//end loginSports()
+
+
+    /**
+     * 登陆体育
+     *
+     * @access public
+     * @param mixed $gmenuId 游戏ID
+     * @param mixed $getMemberInfo 用户信息
+     * @return string
+     */
+    public function loginSports($gmenuId, $getMemberInfo)
+    {
+        $agentModel = new HttpModel\Agent;
+        // 获取登陆 url及参数.
+        $getGameUrlWhere = [
+            'gmenu_id' => $gmenuId,
+            'gameUrl_type' => 'login',
+        ];
+        $getGameUrl = $agentModel->getGameUrl($getGameUrlWhere);
+        // 获取登陆传参.
+        $data = json_decode($getGameUrl->gameUrl_data);
+        // 获取登陆url.
+        $url = $getGameUrl->gameUrl_url;
+        // 登陆.
+        $paramsData = [
+            'agent' => $data->agent,
+            'username' => $getMemberInfo['name'],
+            'method' => $data->method,
+            'password' => $getMemberInfo['password'],
+            'gametype' => $data->gameType,
+        ];
+        $commonModel = new HttpModel\Common;
+        $loginUrl = $commonModel->sportsAgentParams($paramsData, $url);
+        $loginData = $commonModel->make_request($loginUrl, '');
+        if ($loginData && json_decode($loginData)->status === 1) {
+            return [
+                'status' => 1,
+                'token' => json_decode($loginData)->data->token,
+            ];
+        } else {
+            return 2;
+        }
+
+    }//end loginSports()
+
+
+    /**
+     * 体育转账
+     *
+     * @access public
+     * @param mixed $gmenuId 游戏ID
+     * @param mixed $money 金额
+     * @param mixed $cash 余额
+     * @param mixed $getMemberInfo 用户信息
+     * @param mixed $type IN转入OUT转出
+     * @return string
+     */
+    public function transferSports($gmenuId, $money, $cash, $getMemberInfo, $type)
+    {
+        $agentModel = new HttpModel\Agent;
+        // 扣去用户余额.
+        DB::beginTransaction();
+        $newUuid = getUUID();
+        $agentModel->updateMembersDetailed(['membersDetailed_cash' => $cash]);
+        // 添加转账记录.
+        $agentModel->addMoneyDetails($newUuid, $money, 2, $cash, '转账至体育赛事');
+        // 获取转账 url及参数.
+        $getGameUrlWhere = [
+            'gmenu_id' => $gmenuId,
+            'gameUrl_type' => 'transfer',
+        ];
+        $getGameUrl = $agentModel->getGameUrl($getGameUrlWhere);
+        // 获取转账传参.
+        $data = json_decode($getGameUrl->gameUrl_data);
+        // 获取转账url.
+        $url = $getGameUrl->gameUrl_url;
+        // 转账.
+        $transferParams = [
+            'agent' => $data->agent,
+            'username' => $getMemberInfo['name'],
+            'method' => $data->method,
+            'password' => $getMemberInfo['password'],
+            'billno' => $newUuid,
+            'credit' => $money,
+            'type' => $type,
+        ];
+        $commonModel = new HttpModel\Common;
+        $transferUrl = $commonModel->sportsAgentParams($transferParams, $url);
+        $transferData = $commonModel->make_request($transferUrl, '');
+        $self = $this;
+        if ($transferData && json_decode($transferData)->status === 1) {
+            DB::commit();
+            $self->seeSportsCash($gmenuId, $getMemberInfo);
+            return 1;
+        } else {
+            DB::rollBack();
+            return 2;
+        }
+    }//end transferSports()
+
+
+    /**
+     * 查看体育余额
+     *
+     * @access public
+     * @param mixed $gmenuId 游戏ID
+     * @param mixed $getMemberInfo 用户信息
+     * @return string
+     */
+    public function seeSportsCash($gmenuId, $getMemberInfo)
+    {
+        $agentModel = new HttpModel\Agent;
+        // 获取余额 url及参数.
+        $getGameUrlWhere = [
+            'gmenu_id' => $gmenuId,
+            'gameUrl_type' => 'seeCash',
+        ];
+        $getGameUrl = $agentModel->getGameUrl($getGameUrlWhere);
+        // 获取余额传参.
+        $data = json_decode($getGameUrl->gameUrl_data);
+        // 获取余额url.
+        $url = $getGameUrl->gameUrl_url;
+        // 查询余额.
+        $seeCashParams = [
+            'agent' => $data->agent,
+            'username' => $getMemberInfo['name'],
+            'method' => $data->method,
+            'password' => $getMemberInfo['password'],
+        ];
+        $commonModel = new HttpModel\Common;
+        $seeCashUrl = $commonModel->sportsAgentParams($seeCashParams, $url);
+        $seeCash = $commonModel->make_request($seeCashUrl, '');
+        if ($seeCash && json_decode($seeCash)->status === 1) {
+            // 将查询到的余额写入.
+            $gameMoneySelect = [
+                'gameMoney_id',
+            ];
+            $gameMoneyWhere = [
+                'members_id' => S('token_user_id'),
+                'gmenu_id' => $gmenuId,
+            ];
+            // 查询是否存在该记录.
+            $backData = $agentModel->seeGameMoney($gameMoneySelect, $gameMoneyWhere);
+            if (empty($backData) === true) {
+                $gameMoneyData = [
+                    'gameMoney_money' => json_decode($seeCash)->data,
+                    'members_id' => S('token_user_id'),
+                    'gmenu_id' => $gmenuId,
+                ];
+                $agentModel->addGameMoney($gameMoneyData);
+            } else {
+                $agentModel->updateGameMoney(json_decode($seeCash)->data, $gameMoneyWhere);
+            }
+        }
+    }//end transferSports()
+
+
+}

+ 16 - 0
app/Models/GameMoney.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 数据库gameUrl模型类
+ */
+class GameMoney extends Model
+{
+
+    protected $table = 'gameMoney';
+
+
+}

+ 16 - 0
app/Models/GameUrl.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 数据库gameUrl模型类
+ */
+class GameUrl extends Model
+{
+
+    protected $table = 'gameUrl';
+
+
+}

+ 16 - 0
app/Models/MembersDetailed.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 数据库gameUrl模型类
+ */
+class MembersDetailed extends Model
+{
+
+    protected $table = 'membersDetailed';
+
+
+}

+ 14 - 0
app/Models/MoneyDetails.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 数据库gameUrl模型类
+ */
+class MoneyDetails extends Model
+{
+    protected $table = 'moneyDetails';
+
+}

+ 14 - 0
app/Models/Notice.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Notice extends Model
+{
+    protected $table = 'notice';
+    function notice_info() {
+        $info = $this->select('title','type','content')->get();
+        return $info;
+    }
+}

+ 2 - 2
app/Vendor/Jwt.php

@@ -86,8 +86,8 @@ class Jwt {
             return false;
 
         //该nbf时间之前不接收处理该Token
-        if (isset($payload['nbf']) && $payload['nbf'] > time())
-            return false;
+        /*if (isset($payload['nbf']) && $payload['nbf'] > time())
+            return false;*/
 
         return $payload;
     }

+ 1 - 1
composer.json

@@ -67,7 +67,7 @@
     "repositories": {
         "packagist": {
             "type": "composer",
-            "url": "https://packagist.laravel-china.org"
+            "url": "https://packagist.phpcomposer.com"
         }
     }
 }

+ 1 - 1
config/app.php

@@ -39,7 +39,7 @@ return [
     |
     */
 
-    'debug' => env('APP_DEBUG', false),
+    'debug' => env('APP_DEBUG', true),
 
     /*
     |--------------------------------------------------------------------------

+ 40 - 0
resources/views/admin/gameUrl/_form.blade.php

@@ -0,0 +1,40 @@
+{{csrf_field()}}
+<div class="layui-form-item">
+    <label for="" class="layui-form-label">游戏地址指向名</label>
+    <div class="layui-input-inline">
+        <input type="text" name="gameUrl_name" value="{{ $gameUrl->gameUrl_name ?? old('gameUrl_name') }}" lay-verify="required" placeholder="请输入游戏地址指向名" class="layui-input" >
+    </div>
+</div>
+
+<div class="layui-form-item">
+    <label for="" class="layui-form-label">游戏地址指向类型</label>
+    <div class="layui-input-inline">
+        <input type="text" name="gameUrl_type" value="{{$gameUrl->gameUrl_type??old('gameUrl_type')}}" required="required" placeholder="请输入游戏地址指向类型" class="layui-input">
+    </div>
+</div>
+
+<div class="layui-form-item">
+    <label for="" class="layui-form-label">游戏地址</label>
+    <div class="layui-input-inline">
+        <input type="text" name="gameUrl_url" value="{{ $gameUrl->gameUrl_url ?? old('gameUrl_url') }}" lay-verify="required"  placeholder="请输入游戏地址" class="layui-input" style="width: 600px">
+    </div>
+    <br/>
+    <div class="layui-form-mid layui-word-aux" style="padding: 20px 0 !important; margin-left: -200px;">实例:http://www.kaiyou.com/InApi-index/dobusiness</div>
+</div>
+
+<div class="layui-form-item">
+    <label for="" class="layui-form-label">所需参数</label>
+    <div class="layui-input-inline">
+        <input type="text" name="gameUrl_data" value="{{ $gameUrl->gameUrl_data ?? old('gameUrl_data') }}" lay-verify="required"  placeholder="请输入所需参数" class="layui-input" style="width: 750px">
+    </div>
+    <br/>
+    <div class="layui-form-mid layui-word-aux" style="padding: 20px 0 !important; margin-left: -200px;">实例:{"agent":"test1agent","method":"gb"}</div>
+</div>
+
+
+<div class="layui-form-item">
+    <div class="layui-input-block">
+        <button type="submit" class="layui-btn" lay-submit="" lay-filter="formDemo">确 认</button>
+        <a  class="layui-btn" href="{{route('admin.gameUrl')}}" >返 回</a>
+    </div>
+</div>

+ 69 - 0
resources/views/admin/gameUrl/_js.blade.php

@@ -0,0 +1,69 @@
+<style>
+    #layui-upload-box li{
+        width: 120px;
+        height: 100px;
+        float: left;
+        position: relative;
+        overflow: hidden;
+        margin-right: 10px;
+        border:1px solid #ddd;
+    }
+    #layui-upload-box li img{
+        width: 100%;
+    }
+    #layui-upload-box li p{
+        width: 100%;
+        height: 22px;
+        font-size: 12px;
+        position: absolute;
+        left: 0;
+        bottom: 0;
+        line-height: 22px;
+        text-align: center;
+        color: #fff;
+        background-color: #333;
+        opacity: 0.6;
+    }
+    #layui-upload-box li i{
+        display: block;
+        width: 20px;
+        height:20px;
+        position: absolute;
+        text-align: center;
+        top: 2px;
+        right:2px;
+        z-index:999;
+        cursor: pointer;
+    }
+</style>
+<script>
+    layui.use(['upload'],function () {
+        var upload = layui.upload
+        //普通图片上传
+        var uploadInst = upload.render({
+            elem: '#uploadPic'
+            ,url: '{{ route("admin.uploadImg") }}'
+            ,multiple: false
+            ,data:{"_token":"{{ csrf_token() }}"}
+            ,before: function(obj){
+                //预读本地文件示例,不支持ie8
+                /*obj.preview(function(index, file, result){
+                 $('#layui-upload-box').append('<li><img src="'+result+'" /><p>待上传</p></li>')
+                 });*/
+                obj.preview(function(index, file, result){
+                    $('#layui-upload-box').html('<li><img src="'+result+'" /><p>上传中</p></li>')
+                });
+
+            }
+            ,done: function(res){
+                //如果上传失败
+                if(res.code == 0){
+                    $("#iconUrl").val(res.url);
+                    $('#layui-upload-box li p').text('上传成功');
+                    return layer.msg(res.msg,{icon:6});
+                }
+                return layer.msg(res.msg,{icon:5});
+            }
+        });
+    });
+</script>

+ 18 - 0
resources/views/admin/gameUrl/create.blade.php

@@ -0,0 +1,18 @@
+@extends('admin.base')
+
+@section('content')
+    <div class="layui-card">
+        <div class="layui-card-header layuiadmin-card-header-auto">
+            <h2>添加数据</h2>
+        </div>
+        <div class="layui-card-body">
+            <form class="layui-form" action="{{route('admin.gameUrl.store')}}" method="post">
+                @include('admin.gameUrl._form')
+            </form>
+        </div>
+    </div>
+@endsection
+
+@section('script')
+    @include('admin.gameUrl._js')
+@endsection

+ 20 - 0
resources/views/admin/gameUrl/edit.blade.php

@@ -0,0 +1,20 @@
+@extends('admin.base')
+
+@section('content')
+    <div class="layui-card">
+        <div class="layui-card-header layuiadmin-card-header-auto">
+            <h2>更新</h2>
+        </div>
+        <div class="layui-card-body">
+            <form class="layui-form" action="{{route('admin.gameUrl.update',['gameUrl'=>$gameUrl])}}" method="post">
+                <input type="hidden" name="gameUrl_id" value="{{$gameUrl->gameUrl_id}}">
+                {{method_field('put')}}
+                @include('admin.gameUrl._form')
+            </form>
+        </div>
+    </div>
+@endsection
+
+@section('script')
+    @include('admin.gameUrl._js')
+@endsection

+ 128 - 0
resources/views/admin/gameUrl/index.blade.php

@@ -0,0 +1,128 @@
+@extends('admin.base')
+
+@section('content')
+    <div class="layui-card">
+        <div class="layui-card-header layuiadmin-card-header-auto">
+            <div class="layui-btn-group ">
+                {{--@can('config.gameUrl.destroy')
+                    <button class="layui-btn layui-btn-sm layui-btn-danger" id="listDelete">删除</button>
+                @endcan--}}
+                @can('config.gameUrl.create')
+                    <a class="layui-btn layui-btn-sm" href="{{ route('admin.gameUrl.create') }}">添加</a>
+                @endcan
+                <button class="layui-btn layui-btn-sm" id="memberSearch">搜索</button>
+            </div>
+            <div class="layui-form">
+
+                <div class="layui-input-inline">
+                    <input type="text" name="gameUrl_name" id="gameUrl_name" placeholder="名称" class="layui-input">
+                </div>
+
+            </div>
+        </div>
+
+        <div class="layui-card-body">
+            <table id="dataTable" lay-filter="dataTable"></table>
+            <script type="text/html" id="options">
+                <div class="layui-btn-group">
+                    @can('config.gameUrl.edit')
+                        <a class="layui-btn layui-btn-sm" lay-event="edit">编辑</a>
+                    @endcan
+                    {{--@can('config.gameUrl.destroy')
+                        <a class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del">删除</a>
+                    @endcan--}}
+                </div>
+            </script>
+            {{--<script type="text/html" id="avatar">
+                <a href="@{{d.avatar}}" target="_blank" title="点击查看"><img src="@{{d.avatar}}" alt="" width="28" height="28"></a>
+            </script>--}}
+        </div>
+    </div>
+@endsection
+
+@section('script')
+    @can('config.gameUrl')
+        <script>
+            layui.use(['layer','table','form'],function () {
+                var layer = layui.layer;
+                var form = layui.form;
+                var table = layui.table;
+                //用户表格初始化
+                var dataTable = table.render({
+                    elem: '#dataTable'
+                    ,height: 500
+                    ,url: "{{ route('admin.gameUrl.data') }}" //数据接口
+                    ,where:{model:"gameUrl"}
+                    ,page: true //开启分页
+                    ,cols: [[ //表头
+                        {checkbox: true,fixed: true}
+                        ,{field: 'gameUrl_id', title: 'ID', sort: true,width:80}
+                        ,{field: 'gameUrl_name', title: '游戏地址指向名'}
+                        ,{field: 'gameUrl_type', title: '游戏地址指向类型'}
+                        ,{field: 'gameUrl_url', title: '游戏地址'}
+                        ,{field: 'gameUrl_data', title: '所需参数'}
+                        ,{field: 'created_at', title: '创建时间'}
+                        ,{field: 'updated_at', title: '更新时间'}
+
+                        ,{fixed: 'right', width: 120, align:'center', toolbar: '#options'}
+                    ]]
+                });
+
+                //监听工具条
+                table.on('tool(dataTable)', function(obj){ //注:tool是工具条事件名,dataTable是table原始容器的属性 lay-filter="对应的值"
+                    var data = obj.data //获得当前行数据
+                        ,layEvent = obj.event; //获得 lay-event 对应的值
+                    if(layEvent === 'del'){
+                        layer.confirm('确认删除吗?', function(index){
+                            $.post("{{ route('admin.gameUrl.destroy') }}",{_method:'delete',ids:[data.gameUrl_id]},function (result) {
+                                if (result.code==0){
+                                    obj.del(); //删除对应行(tr)的DOM结构
+                                }
+                                layer.close(index);
+                                layer.msg(result.msg)
+                            });
+                        });
+                    } else if(layEvent === 'edit'){
+                        location.href = '/admin/gameUrl/'+data.gameUrl_id+'/edit';
+                    }
+                });
+
+                //按钮批量删除
+                $("#listDelete").click(function () {
+                    var ids = []
+                    var hasCheck = table.checkStatus('dataTable')
+                    var hasCheckData = hasCheck.data
+                    if (hasCheckData.length>0){
+                        $.each(hasCheckData,function (index,element) {
+                            ids.push(element.gameUrl_id)
+                        })
+                    }
+                    if (ids.length>0){
+                        layer.confirm('确认删除吗?', function(index){
+                            $.post("{{ route('admin.gameUrl.destroy') }}",{_method:'delete',ids:ids},function (result) {
+                                if (result.code==0){
+                                    dataTable.reload()
+                                }
+                                layer.close(index);
+                                layer.msg(result.msg)
+                            });
+                        })
+                    }else {
+                        layer.msg('请选择删除项')
+                    }
+                })
+                //搜索
+                $("#memberSearch").click(function () {
+                    var gameUrl_name = $("#gameUrl_name").val();
+                    dataTable.reload({
+                        where:{gameUrl_name:gameUrl_name},
+                        page:{curr:1}
+                    })
+                })
+            })
+        </script>
+    @endcan
+@endsection
+
+
+

+ 17 - 0
routes/admin.php

@@ -170,6 +170,23 @@ Route::group(['namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => ['aut
         Route::delete('gmenu/destroy', 'GmenuController@destroy')->name('admin.gmenu.destroy')->middleware('permission:config.gmenu.destroy');
 
 
+    });
+
+    //游戏导航菜单
+    Route::group(['middleware' => 'permission:config.gameUrl'], function () {
+
+        Route::get('gameUrl/data', 'GameUrlController@data')->name('admin.gameUrl.data');
+        Route::get('gameUrl', 'GameUrlController@index')->name('admin.gameUrl');
+        //添加
+        Route::get('gameUrl/create', 'GameUrlController@create')->name('admin.gameUrl.create')->middleware('permission:config.gameUrl.create');
+        Route::post('gameUrl/store', 'GameUrlController@store')->name('admin.gameUrl.store')->middleware('permission:config.gameUrl.create');
+        //编辑
+        Route::get('gameUrl/{id}/edit', 'GameUrlController@edit')->name('admin.gameUrl.edit')->middleware('permission:config.gameUrl.edit');
+        Route::put('gameUrl/update', 'GameUrlController@update')->name('admin.gameUrl.update')->middleware('permission:config.gameUrl.edit');
+        //删除
+        Route::delete('gameUrl/destroy', 'GameUrlController@destroy')->name('admin.gameUrl.destroy')->middleware('permission:config.gameUrl.destroy');
+
+
     });
 
     //广告位