Compare commits

...

2 Commits

Author SHA1 Message Date
aea1718fd0 新增短效无限量白名单接口功能 2025-10-18 20:22:24 +08:00
79641f01ee 新增本地开发环境配置 2025-10-18 11:32:27 +08:00
7 changed files with 383 additions and 99 deletions

6
.gitignore vendored
View File

@@ -1 +1,5 @@
*.csv
*.csv
.idea/
.vscode/
.volumes/

3
Dockerfile Normal file
View File

@@ -0,0 +1,3 @@
FROM php:7.3-fpm-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN docker-php-ext-install pdo_mysql mysqli

View File

@@ -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' => '聚币不足!'
];

View File

@@ -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';
}
$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,
]);
}
}

View File

@@ -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'];

49
docker-compose.yaml Normal file
View File

@@ -0,0 +1,49 @@
name: juipphp
services:
mysql:
image: mysql:8.0.21
environment:
MYSQL_ROOT_PASSWORD: 123456789
MYSQL_DATABASE: hualianyun
ports:
- "3306:3306"
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./.volumes/mysql:/var/lib/mysql
php:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./alipay:/var/www/html/alipay
- ./app:/var/www/html/app
- ./config:/var/www/html/config
- ./enum:/var/www/html/enum
- ./extends:/var/www/html/extends
- ./fastphp:/var/www/html/fastphp
- ./script:/var/www/html/script
- ./vendor:/var/www/html/vendor
- ./.htaccess:/var/www/html/.htaccess
- ./index.php:/var/www/html/index.php
depends_on:
- mysql
nginx:
image: nginx:alpine
volumes:
- ./nginx.conf:/etc/nginx/conf.d/app.conf
- ./alipay:/var/www/html/alipay
- ./app:/var/www/html/app
- ./config:/var/www/html/config
- ./enum:/var/www/html/enum
- ./extends:/var/www/html/extends
- ./fastphp:/var/www/html/fastphp
- ./script:/var/www/html/script
- ./vendor:/var/www/html/vendor
- ./.htaccess:/var/www/html/.htaccess
- ./index.php:/var/www/html/index.php
ports:
- 9000:9000

33
nginx.conf Normal file
View File

@@ -0,0 +1,33 @@
server {
listen 9000;
server_name _;
# CORS
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
# pre-flight requests
if ($request_method = 'OPTIONS') {
return 204;
}
index index.php;
root /var/www/html;
location ~ \.php(.*)$ {
fastcgi_pass php:9000;
include fastcgi_params;
fastcgi_param PATH_INFO $1;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
}