From aea1718fd08e27eb4ff03f8d51de02d76dcf5e3a Mon Sep 17 00:00:00 2001 From: luorijun Date: Sat, 18 Oct 2025 20:18:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=9F=AD=E6=95=88=E6=97=A0?= =?UTF-8?q?=E9=99=90=E9=87=8F=E7=99=BD=E5=90=8D=E5=8D=95=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/http/controller/Order.php | 63 ++++++- app/http/controller/User.php | 327 ++++++++++++++++++++++++---------- app/http/model/Package.php | 1 + 3 files changed, 293 insertions(+), 98 deletions(-) diff --git a/app/http/controller/Order.php b/app/http/controller/Order.php index c758853..3e83231 100644 --- a/app/http/controller/Order.php +++ b/app/http/controller/Order.php @@ -308,7 +308,48 @@ class Order extends Controller switch ($data['order_type']) { case 2: - $data['money'] = round($data['data']['periodAmount'] * $price['price'],2); + $peroid = $data['data']['periodAmount']; + + $whitelist = 0; + if (isset($data['renew'])) { + + $url = $this->url_root . '/user/short/unlimited/whitelist/maxAmount'; + $req = formatHttpRequert([ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]); + + $resp = json_decode(linkcurl($url, 'POST', $req, [], 0)); + if ($resp->s < 0) { + return [ + 'code'=>-1, + 'data' => $resp, + 'msg' => '请求后台失败,请联系客服!' + ]; + } + + $whitelist = $resp->d->maxAmount; + } + else { + if (!isset($data['data']['maxWhitelist'])) { + return [ + 'code'=>-2, + 'data' => '', + 'msg' => '请求后台失败,请联系客服!' + ]; + } + + $whitelist = $data['data']['maxWhitelist']; + } + if ($whitelist == 0) { + return [ + 'code'=>-3, + 'data' => '', + 'msg' => '请求后台失败,请联系客服!' + ]; + } + + $discount = max(.6, 1 - .1 * ($whitelist -1)); // 每多一个白名单配额就减 1 折,最低 6 折 + $data['money'] = round($price['price'] * $peroid * $whitelist * $discount, 2); break; case 3: $data['money'] = round(($data['data']['periodAmount'] * $price['price'] * $data['data']['ipAmount']),2); @@ -342,13 +383,21 @@ class Order extends Controller if ($order_model->add($order_data)) { $url = $http_url; - $request_data = formatHttpRequert($request_data); + if ($url == $this->url_root . '/user/pack/renew') { + $request_data = formatHttpRequert([ + 'sgUserId' => $request_data['sgUserId'], + 'packId' => $request_data['packId'], + 'packType' => $request_data['packType'], + 'periodType' => $request_data['periodType'], + 'periodAmount' => $request_data['periodAmount'], + ]); + } $http_data = json_decode(linkcurl($url,'POST',$request_data,[],0)); if ($http_data->s < 0) { $info = [ - 'code'=>-1, + 'code'=>-7, 'data' => '非法参数', 'msg' => '请求后台失败,请联系客服!' ]; @@ -369,7 +418,7 @@ class Order extends Controller if ($http_order_data->s < 0) { $info = [ - 'code'=>-1, + 'code'=>-8, 'data' => '非法参数', 'msg' => '请求后台失败,请联系客服!' ]; @@ -393,7 +442,7 @@ class Order extends Controller } } else { $info = [ - 'code'=>-1, + 'code'=>-6, 'data' => '非法参数', 'msg' => '请求后台失败,请联系客服!' ]; @@ -402,7 +451,7 @@ class Order extends Controller } } else { $info = [ - 'code'=>-1, + 'code'=>-5, 'data' => '非法参数', 'msg' => '聚币不足!' ]; @@ -411,7 +460,7 @@ class Order extends Controller } else { $info = [ - 'code'=>-1, + 'code'=>-4, 'data' => '非法参数', 'msg' => '聚币不足!' ]; diff --git a/app/http/controller/User.php b/app/http/controller/User.php index a9eb1a8..dcf0e98 100644 --- a/app/http/controller/User.php +++ b/app/http/controller/User.php @@ -8,16 +8,14 @@ use app\http\model\Order as OrderModel; use enum\http\Order as HttpOrderEnum; use app\http\model\Recharge as RechargeModel; -class User extends Controller -{ +class User extends Controller { // private $url_root = 'https://sandbox.sgxz.cn'; private $url_root = 'https://merchant.sgxz.cn'; private $http_user_info = []; - public function __construct() - { - parent::__construct('',''); + public function __construct() { + parent::__construct('', ''); if (empty($this->userinfo['UserId'])) { die; } @@ -31,12 +29,12 @@ class User extends Controller $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], ]; - $url = $this->url_root.'/user/detail'; + $url = $this->url_root . '/user/detail'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); - + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + $user_data = [ 'uid' => $this->http_user_info['sgUserId'], 'token' => $data->d->apiToken, @@ -74,7 +72,7 @@ class User extends Controller foreach ($list as &$info) { $info['pay_type'] = $pay_type[$info['pay_type']]; } - + echo json_encode($list); } @@ -83,21 +81,21 @@ class User extends Controller $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], ]; - $url = $this->url_root.'/user/short/pack/list'; + $url = $this->url_root . '/user/short/pack/list'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); - $list = array_merge($data->d->packs->period,$data->d->packs->unlimited,$data->d->packs->usage); - + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + $list = array_merge($data->d->packs->period, $data->d->packs->unlimited, $data->d->packs->usage); + foreach ($list as &$info) { - $info->name = HttpOrderEnum::$package_type[ $info->planType]; + $info->name = HttpOrderEnum::$package_type[$info->planType]; $info->durationType2 = $info->durationType; - $info->durationType = HttpOrderEnum::$durationType[ $info->durationType]; - $info->expireTime = date('Y-m-d H:i:s',$info->expireTime); - $info->isExpired = $info->isExpired?'已过期':'未过期'; - $info->ipAmount = $info->ipAmount?:'无限量'; - $info->remainingAmount = $info->remainingAmount?:'无限量'; + $info->durationType = HttpOrderEnum::$durationType[$info->durationType]; + $info->expireTime = date('Y-m-d H:i:s', $info->expireTime); + $info->isExpired = $info->isExpired ? '已过期' : '未过期'; + $info->ipAmount = $info->ipAmount ?: '无限量'; + $info->remainingAmount = $info->remainingAmount ?: '无限量'; } $return_data = [ @@ -107,23 +105,22 @@ class User extends Controller ]; echo json_encode($return_data); - } //短效全部套餐 public function dx_order() { $order_model = new OrderModel(); $order_where = [ - 'package_type' => ['in',HttpOrderEnum::$package_list], + 'package_type' => ['in', HttpOrderEnum::$package_list], 'order_status' => HttpOrderEnum::$pay_yes, 'user_id' => $this->userinfo['UserId'] ]; $order_list = $order_model->getListPage($order_where); - + foreach ($order_list as &$info) { $info['order_type'] = HttpOrderEnum::$order_type[$info['order_type']]; $info['package_type'] = HttpOrderEnum::$package_type[$info['package_type']]; - $info['durationType'] = HttpOrderEnum::$durationType[ $info['durationType']]; + $info['durationType'] = HttpOrderEnum::$durationType[$info['durationType']]; } $return_data = [ @@ -140,11 +137,11 @@ class User extends Controller $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], ]; - $url = $this->url_root.'/user/short/ip/used/summary'; + $url = $this->url_root . '/user/short/ip/used/summary'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $return_data = [ 'code' => 1, 'data' => $data->d, @@ -152,28 +149,27 @@ class User extends Controller ]; echo json_encode($return_data); - } //用户短效每日使用情况查询 public function dx_used_log() { - $request_data = json_decode(file_get_contents("php://input"),true)['data']; - + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], - 'page' => isset($request_data['page'])?$request_data['page']:1, + 'page' => isset($request_data['page']) ? $request_data['page'] : 1, 'limit' => 50, 'packType' => $request_data['packType'], ]; - $url = $this->url_root.'/user/short/ip/used/list'; + $url = $this->url_root . '/user/short/ip/used/list'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); foreach ($data->d->items as &$info) { $info->packType = HttpOrderEnum::$package_type[$info->packType]; - $info->createTime = date('Y-m-d H:i:s',$info->createTime); + $info->createTime = date('Y-m-d H:i:s', $info->createTime); } $return_data = [ 'code' => 1, @@ -182,14 +178,13 @@ class User extends Controller ]; echo json_encode($return_data); - } //长效ip列表 public function lang_ip_list() { - $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $request_data = json_decode(file_get_contents("php://input"), true)['data']; $request_data['sgUserId'] = $this->http_user_info['sgUserId']; - $url = $this->url_root.'/user/long/ip/list'; + $url = $this->url_root . '/user/long/ip/list'; foreach ($request_data as $key => &$info) { if (strlen($info) == 0) { @@ -198,8 +193,8 @@ class User extends Controller } $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $line_status = [ '1' => '正常', @@ -209,10 +204,10 @@ class User extends Controller foreach ($data->d->items as &$info) { $info->lineType2 = $info->lineType; - $info->lineType = ($info->lineType == 1)?'普通':'优质'; - $info->expireTime = date('Y-m-d H:i:s',$info->expireTime); + $info->lineType = ($info->lineType == 1) ? '普通' : '优质'; + $info->expireTime = date('Y-m-d H:i:s', $info->expireTime); $info->shareType2 = $info->shareType; - $info->shareType = ($info->shareType == 1)?'共享':'独享'; + $info->shareType = ($info->shareType == 1) ? '共享' : '独享'; $info->state = $line_status[$info->state]; } @@ -225,25 +220,25 @@ class User extends Controller echo json_encode($return_data); } - //长效全部套餐 - public function cx_package() { + //长效全部套餐 + public function cx_package() { $list = []; $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], ]; - $url = $this->url_root.'/user/long/pack/list'; + $url = $this->url_root . '/user/long/pack/list'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $list = array_merge($data->d->packs); - + foreach ($list as &$info) { $info->isAbroad2 = $info->isAbroad; - $info->isAbroad = HttpOrderEnum::$game_type[ $info->isAbroad]; - $info->expireTime = date('Y-m-d H:i:s',$info->expireTime); - $info->isExpired = $info->isExpired?'已过期':'未过期'; - $info->shareType = ($info->shareType == 1) ?'共享':'独享'; + $info->isAbroad = HttpOrderEnum::$game_type[$info->isAbroad]; + $info->expireTime = date('Y-m-d H:i:s', $info->expireTime); + $info->isExpired = $info->isExpired ? '已过期' : '未过期'; + $info->shareType = ($info->shareType == 1) ? '共享' : '独享'; } $return_data = [ @@ -253,7 +248,6 @@ class User extends Controller ]; echo json_encode($return_data); - } //长效全部订单 @@ -270,7 +264,7 @@ class User extends Controller foreach ($order_list as &$info) { $info['order_type'] = HttpOrderEnum::$order_type[$info['order_type']]; $info['package_type'] = HttpOrderEnum::$package_type[$info['package_type']]; - $info['game_type'] = HttpOrderEnum::$game_type[ $info['game_type']]; + $info['game_type'] = HttpOrderEnum::$game_type[$info['game_type']]; } $return_data = [ @@ -285,19 +279,19 @@ class User extends Controller //长效ip切换记录 public function cx_switch() { ini_set('display_errors', 'off'); - $request_data = json_decode(file_get_contents("php://input"),true)['data']; - + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], - 'page' => isset($request_data['page'])?$request_data['page']:1, + 'page' => isset($request_data['page']) ? $request_data['page'] : 1, 'limit' => 50, ]; - $url = $this->url_root.'/user/long/switch/ip/log'; + $url = $this->url_root . '/user/long/switch/ip/log'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); - + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + //切换原因,0-系统自动切换,1-失效手动切换,2-免费手动切换,5-管理员免费切换,6-收费手动切换 $reason = [ 0 => '系统自动切换,1', @@ -306,9 +300,9 @@ class User extends Controller 5 => '管理员免费切换', 6 => '收费手动切换', ]; - + foreach ($data->d->items as &$info) { - $info->createTime = date('Y-m-d H:i:s',$info->createTime); + $info->createTime = date('Y-m-d H:i:s', $info->createTime); $info->reason = $reason[$info->reason]; } @@ -327,15 +321,15 @@ class User extends Controller $request_data = [ 'sgUserId' => $this->http_user_info['sgUserId'], ]; - $url = $this->url_root.'/user/short/whitelist'; + $url = $this->url_root . '/user/short/whitelist'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $list = $data->d->items; foreach ($list as &$info) { - $info->isLocked = $info->isLocked?'已锁定':'未锁定'; + $info->isLocked = $info->isLocked ? '已锁定' : '未锁定'; } $return_data = [ @@ -349,15 +343,15 @@ class User extends Controller //用户创建白名单 public function create_white_ip() { - $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $request_data = json_decode(file_get_contents("php://input"), true)['data']; $request_data['sgUserId'] = $this->http_user_info['sgUserId']; - - $url = $this->url_root.'/user/short/whitelist/create'; + + $url = $this->url_root . '/user/short/whitelist/create'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $return_data = [ 'code' => 1, 'msg' => '', @@ -368,15 +362,15 @@ class User extends Controller //用户锁定ip public function lock_ip() { - $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $request_data = json_decode(file_get_contents("php://input"), true)['data']; $request_data['sgUserId'] = $this->http_user_info['sgUserId']; - - $url = $this->url_root.'/user/short/whitelist/lock'; + + $url = $this->url_root . '/user/short/whitelist/lock'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $return_data = [ 'code' => 1, 'msg' => '', @@ -387,15 +381,15 @@ class User extends Controller //用户删除ip public function delete_ip() { - $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $request_data = json_decode(file_get_contents("php://input"), true)['data']; $request_data['sgUserId'] = $this->http_user_info['sgUserId']; - - $url = $this->url_root.'/user/short/whitelist/delete'; + + $url = $this->url_root . '/user/short/whitelist/delete'; $request_data = formatHttpRequert($request_data); - - $data = json_decode(linkcurl($url,'POST',$request_data,[],0)); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); $return_data = [ 'code' => 1, 'msg' => '', @@ -403,19 +397,170 @@ class User extends Controller echo json_encode($return_data); } - + //提取长效ip - public function get_lang_ip(){ - $request_data = json_decode(file_get_contents("php://input"),true)['data']; - $request_data['ids'] = trim($request_data['ids'],','); + public function get_lang_ip() { + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + $request_data['ids'] = trim($request_data['ids'], ','); $request_data['sgUserId'] = $this->http_user_info['sgUserId']; - $url = $this->url_root.'/user/long/ip/batch/get'; + $url = $this->url_root . '/user/long/ip/batch/get'; $request_data = formatHttpRequert($request_data); - echo(linkcurl($url,'GET',$request_data,[],0)); + echo (linkcurl($url, 'GET', $request_data, [], 0)); } + // 短效无限量白名单列表 + public function white_list_su() { + $list = []; + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]; + $url = $this->url_root . '/user/short/unlimited/whitelist'; -} \ No newline at end of file + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + if ($data->s < 0) { + echo json_encode([ + 'code' => 0, + 'msg' => $data->m, + ]); + return; + } + + $list = $data->d->items; + foreach ($list as &$info) { + $info->isLocked = $info->isLocked ? '已锁定' : '未锁定'; + } + + $return_data = [ + 'code' => 1, + 'data' => $list, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + // 短效无限量白名单创建 + public function create_white_ip_su() { + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root . '/user/short/unlimited/whitelist/create'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + $return_data = [ + 'code' => 1, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + // 短效无限量白名单删除 + public function delete_ip_su() { + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root . '/user/short/unlimited/whitelist/delete'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + $return_data = [ + 'code' => 1, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + // 短效无限量白名单切换锁定 + public function lock_ip_su() { + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root . '/user/short/unlimited/whitelist/lock'; + + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + $return_data = [ + 'code' => 1, + 'msg' => '', + ]; + + echo json_encode($return_data); + } + + // 短效无限量白名单查询上限 + public function white_limit_get_su() { + $request_data = [ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]; + + $url = $this->url_root . '/user/short/unlimited/whitelist/maxAmount'; + $request_data = formatHttpRequert($request_data); + + $data = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + echo json_encode([ + 'code' => 1, + 'data' => $data->d->maxAmount, + 'msg' => '', + ]); + } + + // 短效无限量白名单修改上限 + public function white_limit_set_su() { + $request_data = json_decode(file_get_contents("php://input"), true)['data']; + $request_data['sgUserId'] = $this->http_user_info['sgUserId']; + + $url = $this->url_root . '/user/short/unlimited/whitelist/edit/maxAmount'; + $request_data = formatHttpRequert($request_data); + + $resp = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + if ($resp->s < 0) { + echo json_encode([ + 'code' => -1, + 'msg' => $resp->m, + ]); + return; + } + + echo json_encode([ + 'code' => 1, + 'data' => $resp, + 'msg' => '', + ]); + } + + // 用户短效当前可用的无限量套餐详情 + public function get_unlimited_available() { + $url = $this->url_root . '/user/short/pack/unlimited/available'; + $request_data = formatHttpRequert([ + 'sgUserId' => $this->http_user_info['sgUserId'], + ]); + + $resp = json_decode(linkcurl($url, 'POST', $request_data, [], 0)); + if ($resp->s < 0) { + echo json_encode([ + 'code' => -1, + 'msg' => $resp->m, + ]); + return; + } + + echo json_encode([ + 'code' => 1, + 'data' => $resp->d, + ]); + } +} diff --git a/app/http/model/Package.php b/app/http/model/Package.php index d2cffbe..77a2387 100644 --- a/app/http/model/Package.php +++ b/app/http/model/Package.php @@ -39,6 +39,7 @@ class Package extends Model $where = $data['data']; $where['package_type'] = HttpOrderEnum::$dxwxl; $where['periodAmount'] = 1; + unset($where['maxWhitelist']); break; case 3: $where = $data['data'];