算力功能提交

This commit is contained in:
wong
2025-09-29 17:37:21 +08:00
parent e1fce63876
commit ff7b583f07
5 changed files with 116 additions and 4 deletions

View File

@@ -6,7 +6,7 @@ use think\Model;
class TokensRecord extends Model
{
protected $pk = 'id';
protected $name = 'kf_tokens_record';
protected $name = 'tokens_record';
// 自动写入时间戳
protected $autoWriteTimestamp = true;

View File

@@ -81,15 +81,15 @@ class PaymentService
if ($parsed['status'] == 0 && $parsed['result_code'] == 0) {
Db::commit();
return json(['code' => 200, 'msg' => '订单创建成功', 'data' => $parsed['code_url']]);
return json_encode(['code' => 200, 'msg' => '订单创建成功', 'data' => $parsed['code_img_url']]);
} else {
Db::rollback();
return json(['code' => 500, 'msg' => '订单创建失败:' . $parsed['err_msg']]);
return json_encode(['code' => 500, 'msg' => '订单创建失败:' . $parsed['err_msg']]);
}
} catch (\Exception $e) {
Db::rollback();
return json(['code' => 500, 'msg' => '订单创建失败:' . $e->getMessage()]);
return json_encode(['code' => 500, 'msg' => '订单创建失败:' . $e->getMessage()]);
}
}

View File

@@ -142,6 +142,15 @@ Route::group('v1/', function () {
Route::get('friendRequestTaskStats', 'app\cunkebao\controller\StatsController@getFriendRequestTaskStats');
Route::get('userInfoStats', 'app\cunkebao\controller\StatsController@userInfoStats');
});
// 算力相关
Route::group('tokens', function () {
Route::get('list', 'app\cunkebao\controller\TokensController@getList');
Route::post('pay', 'app\cunkebao\controller\TokensController@pay');
});
})->middleware(['jwt']);

View File

@@ -0,0 +1,86 @@
<?php
namespace app\cunkebao\controller;
use app\common\controller\PaymentService;
use app\cunkebao\model\TokensPackage;
use library\ResponseHelper;
class TokensController extends BaseController
{
public function getList()
{
$page = $this->request->param('page', 1);
$limit = $this->request->param('limit', 10);
$where = [
['isDel', '=', 0],
['status', '=', 1],
];
$query = TokensPackage::where($where);
$total = $query->count();
$list = $query->where($where)->page($page, $limit)->order('id desc')->select();
foreach ($list as &$item) {
$item['description'] = json_decode($item['description'], true);
$item['price'] = number_format($item['price'] / 100, 2);
$item['originalPrice'] = number_format($item['originalPrice'] / 100, 2);
}
unset($item);
return ResponseHelper::success(['list' => $list, 'total' => $total]);
}
public function pay()
{
$id = $this->request->param('id', '');
$price = $this->request->param('price', '');
$userId = $this->getUserInfo('id');
$companyId = $this->getUserInfo('companyId');
if (empty($id) && empty($price)) {
return ResponseHelper::error('套餐和自定义购买金额必须选一个');
}
if (!empty($id)){
$package = TokensPackage::where(['id' => $id, 'status' => 1, 'isDel' => 0])->find();
if (empty($package)) {
return ResponseHelper::error('套餐不存在或者已禁用');
}
if ($package['price'] <= 0){
return ResponseHelper::error('套餐金额异常');
}else{
$price = $package['price'];
}
}else{
$package = [
'id' => 0,
'name' => '自定义购买算力',
'price' => intval($price * 100)
];
}
$orderNo = date('YmdHis') . rand(100000, 999999);
$order = [
'companyId' => $companyId,
'userId' => $userId,
'orderNo' => $orderNo,
'goodsId' => $package['id'],
'goodsName' => $package['name'],
'orderType' => 1,
'money' => $package['price']
];
$paymentService = new PaymentService();
$res = $paymentService->createOrder($order);
$res = json_decode($res, true);
if ($res['code'] == 200){
return ResponseHelper::success(['orderNo' => $orderNo,'code_url' => $res['data']],'订单创建成功');
}else{
return ResponseHelper::error($res['msg']);
}
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace app\cunkebao\model;
use think\Model;
class TokensPackage extends Model
{
protected $pk = 'id';
protected $name = 'tokens_package';
// 自动写入时间戳
protected $autoWriteTimestamp = true;
protected $createTime = 'createTime';
protected $updateTime = 'updateTime';
}