Browse Source

index inr

master
chuan 3 months ago
parent
commit
b9fb3bb7c2
  1. 8
      app/admin/controller/Flow.php
  2. 14
      app/admin/controller/setting/StockIndex.php
  3. 64
      app/admin/route/app.php
  4. 63
      app/admin/service/FlowService.php
  5. 31
      app/admin/service/setting/IPOService.php
  6. 47
      app/admin/service/setting/StockIndexService.php
  7. 8
      app/admin/validate/setting/StockValidate.php
  8. 118
      app/model/StockMarketModel.php
  9. 8
      app/model/UserStockIndexInrLogModel.php

8
app/admin/controller/Flow.php

@ -29,6 +29,14 @@ class Flow extends AdminBaseController
return json($result);
}
// 印度股指资产流水
public function inrStockIndex()
{
$service = new FlowService();
$result = $service->inrStockIndex($this->request->param(),$this->getAdminId());
return json($result);
}
public function forexStock()
{
$service = new FlowService();

14
app/admin/controller/setting/StockIndex.php

@ -22,4 +22,18 @@ class StockIndex extends AdminBaseController
$result = (new StockIndexService())->update($this->request->param());
return json($result);
}
// 印度股指列表
public function inrStockIndexList()
{
$result = (new StockIndexService())->inrStockIndexList($this->request->param());
return json($result);
}
// 印度股指名称列表
public function getTradeNameList()
{
$result = (new StockIndexService())->getTradeNameList();
return json($result);
}
}

64
app/admin/route/app.php

@ -14,7 +14,7 @@ $header = [
//Route::get('/test', 'Test/index');
Route::post('/test', 'Test/index');
Route::post('/test_upload', 'Upload/uploadVideo');
Route::post('test_api', 'User/userMarketList');
Route::post('test_api', 'setting.StockIndex/inrStockIndexList');
Route::group('/', function () {
// 上传图片
Route::post('/upload', 'Upload/upload');
@ -111,12 +111,17 @@ Route::group('/', function () {
Route::post('/order/tha_stock_back', 'Order/StockBack')->append(['market_type' =>6]);
Route::post('/order/tha_stock_clear', 'Order/StockClear')->append(['market_type' =>6]);
// 印度股票
Route::post('/order/in_stock_hold', 'Order/StockHold')->append(['market_type' =>7]);
Route::post('/order/in_stock_place', 'Order/stockPlace')->append(['market_type' =>7]);
Route::post('/order/in_stock_back', 'Order/stockBack')->append(['market_type' =>7]);
Route::post('/order/in_stock_clear', 'Order/stockClear')->append(['market_type' =>7]);
// 印度股票订单
Route::post('/order/in_stock_hold', 'Order/StockHold')->append(['market_type' =>7]); // 印度股票持仓
Route::post('/order/in_stock_place', 'Order/stockPlace')->append(['market_type' =>7]); // 印度股票挂单
Route::post('/order/in_stock_back', 'Order/stockBack')->append(['market_type' =>7]); // 印度股票撤单
Route::post('/order/in_stock_clear', 'Order/stockClear')->append(['market_type' =>7]); // 印度股票平仓
// 印度股指订单
Route::post('order/inr_stock_index_hold', 'Order/StockHold')->append(['market_type' =>20]); // 印度股指持仓
Route::post('order/inr_stock_index_place', 'Order/stockPlace')->append(['market_type' =>20]); // 印度股指挂单
Route::post('order/inr_stock_index_back', 'Order/stockBack')->append(['market_type' =>20]); // 印度股指撤单
Route::post('order/inr_stock_index_clear', 'Order/stockClear')->append(['market_type' =>20]); // 印度股指平仓
// 新加坡股票
Route::post('/order/sgd_stock_hold', 'Order/StockHold')->append(['market_type' =>9]);
@ -274,75 +279,68 @@ Route::group('/', function () {
Route::post('/setting/digital_edit', 'setting.Digital/edit')->middleware('admin_log');
Route::post('/setting/digital_select', 'setting.Digital/getTradeNameList');
// 美股股票交易对
// 美股股票配置
Route::post('/setting/us_stock_index', 'setting.Stock/index')->append(['market_type' =>3]);
Route::post('/setting/us_stock_add', 'setting.Stock/add')->append(['market_type' =>3])->middleware('admin_log');
Route::post('/setting/us_stock_edit', 'setting.Stock/edit')->append(['market_type' =>3])->middleware('admin_log');
Route::post('/setting/us_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>3]);
// 印尼股股票交易对
// 印尼股票配置
Route::post('/setting/idn_stock_index', 'setting.Stock/index')->append(['market_type' =>4]);
Route::post('/setting/idn_stock_add', 'setting.Stock/add')->append(['market_type' =>4])->middleware('admin_log');
Route::post('/setting/idn_stock_edit', 'setting.Stock/edit')->append(['market_type' =>4])->middleware('admin_log');
Route::post('/setting/idn_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>4]);
// 马股股票交易对
// 马股股票配置
Route::post('/setting/mys_stock_index', 'setting.Stock/index')->append(['market_type' =>5]);
Route::post('/setting/mys_stock_add', 'setting.Stock/add')->append(['market_type' =>5])->middleware('admin_log');
Route::post('/setting/mys_stock_edit', 'setting.Stock/edit')->append(['market_type' =>5])->middleware('admin_log');
Route::post('/setting/mys_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>5]);
// 泰股股票交易对
// 泰股股票配置
Route::post('/setting/tha_stock_index', 'setting.Stock/index')->append(['market_type' =>6]);
Route::post('/setting/tha_stock_add', 'setting.Stock/add')->append(['market_type' =>6])->middleware('admin_log');
Route::post('/setting/tha_stock_edit', 'setting.Stock/edit')->append(['market_type' =>6])->middleware('admin_log');
Route::post('/setting/tha_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>6]);
// 印度股票交易对
// 印度股票配置
Route::post('/setting/in_stock_index', 'setting.Stock/index')->append(['market_type' =>7]);
Route::post('/setting/in_stock_add', 'setting.Stock/add')->append(['market_type' =>7])->middleware('admin_log');
Route::post('/setting/in_stock_edit', 'setting.Stock/edit')->append(['market_type' =>7])->middleware('admin_log');
Route::post('/setting/in_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>7]);
// 新加坡股票交易对
// 新加坡股票配置
Route::post('/setting/sgd_stock_index', 'setting.Stock/index')->append(['market_type' =>9]);
Route::post('/setting/sgd_stock_add', 'setting.Stock/add')->append(['market_type' =>9])->middleware('admin_log');
Route::post('/setting/sgd_stock_edit', 'setting.Stock/edit')->append(['market_type' =>9])->middleware('admin_log');
Route::post('/setting/sgd_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>9]);
// 香港股票交易对
// 香港股票配置
Route::post('/setting/hk_stock_index', 'setting.Stock/index')->append(['market_type' =>12]);
Route::post('/setting/hk_stock_add', 'setting.Stock/add')->append(['market_type' =>12])->middleware('admin_log');
Route::post('/setting/hk_stock_edit', 'setting.Stock/edit')->append(['market_type' =>12])->middleware('admin_log');
Route::post('/setting/hk_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>12]);
// 英国股票交易对
// 英国股票配置
Route::post('/setting/uk_stock_index', 'setting.Stock/index')->append(['market_type' =>14]);
Route::post('/setting/uk_stock_add', 'setting.Stock/add')->append(['market_type' =>14])->middleware('admin_log');
Route::post('/setting/uk_stock_edit', 'setting.Stock/edit')->append(['market_type' =>14])->middleware('admin_log');
Route::post('/setting/uk_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>14]);
// 法国股票配置
Route::post('/setting/fur_stock_index', 'setting.Stock/index')->append(['market_type' =>15]);
Route::post('/setting/fur_stock_add', 'setting.Stock/add')->append(['market_type' =>15])->middleware('admin_log');
Route::post('/setting/fur_stock_edit', 'setting.Stock/edit')->append(['market_type' =>15])->middleware('admin_log');
Route::post('/setting/fur_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>15]);
// 德国股票配置
Route::post('/setting/eur_stock_index', 'setting.Stock/index')->append(['market_type' =>16]);
Route::post('/setting/eur_stock_add', 'setting.Stock/add')->append(['market_type' =>16])->middleware('admin_log');
Route::post('/setting/eur_stock_edit', 'setting.Stock/edit')->append(['market_type' =>16])->middleware('admin_log');
Route::post('/setting/eur_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>16]);
// 巴西股票配置
Route::post('/setting/brl_stock_index', 'setting.Stock/index')->append(['market_type' =>17]);
Route::post('/setting/brl_stock_add', 'setting.Stock/add')->append(['market_type' =>17])->middleware('admin_log');
Route::post('/setting/brl_stock_edit', 'setting.Stock/edit')->append(['market_type' =>17])->middleware('admin_log');
Route::post('/setting/brl_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>17]);
// 日本股票配置
Route::post('/setting/jp_stock_index', 'setting.Stock/index')->append(['market_type' =>18]);
Route::post('/setting/jp_stock_add', 'setting.Stock/add')->append(['market_type' =>18])->middleware('admin_log');
Route::post('/setting/jp_stock_edit', 'setting.Stock/edit')->append(['market_type' =>18])->middleware('admin_log');
Route::post('/setting/jp_stock_select', 'setting.Stock/getTradeNameList')->append(['market_type' =>18]);
//外汇
Route::post('/setting/forex_index', 'setting.Forex/index');
Route::post('/setting/forex_add', 'setting.Forex/add')->middleware('admin_log');
Route::post('/setting/forex_edit', 'setting.Forex/edit')->middleware('admin_log');
Route::post('/setting/forex_select', 'setting.Forex/getTradeNameList');
// 印度期权交易对
// 印度期权配置
Route::post('/setting/in_option_index', 'setting.Option/indexIn');
Route::post('/setting/in_option_add', 'setting.Option/addIn')->middleware('admin_log');
Route::post('/setting/in_option_edit', 'setting.Option/editIn')->middleware('admin_log');
@ -350,8 +348,17 @@ Route::group('/', function () {
Route::post('/setting/in_option_on_off', 'setting.Option/onOffIn');
Route::post('/setting/in_batch_edit', 'setting.Option/batchEditIn')->middleware('admin_log');
// 印度股指配置 (PS: 印度股指不需要新增、编辑功能)
Route::post('setting/inr_stock_index', 'setting.StockIndex/inrStockIndexList'); // 印度股指列表
Route::post('setting/inr_stock_select', 'setting.StockIndex/getTradeNameList'); // 印度股指名称列表
// 外汇配置
Route::post('/setting/forex_index', 'setting.Forex/index');
Route::post('/setting/forex_add', 'setting.Forex/add')->middleware('admin_log');
Route::post('/setting/forex_edit', 'setting.Forex/edit')->middleware('admin_log');
Route::post('/setting/forex_select', 'setting.Forex/getTradeNameList');
// 股票市场
// 股票市场配置
Route::post('/setting/stock_market_index', 'setting.StockMarket/index');
Route::post('/setting/stock_market_add', 'setting.StockMarket/add')->middleware('admin_log');
Route::post('/setting/stock_market_edit', 'setting.StockMarket/edit')->middleware('admin_log');
@ -363,7 +370,6 @@ Route::group('/', function () {
Route::post('/setting/contract_edit', 'setting.Contract/edit')->middleware('admin_log');
Route::post('/setting/contract_select', 'setting.Contract/getTradeNameList');
// 合约交易对
Route::post('/setting/contract_setting', 'setting.Contract/setting');
Route::post('/setting/contract_set_add', 'setting.Contract/set_add')->middleware('admin_log');
@ -540,7 +546,7 @@ Route::group('/', function () {
Route::post('/flow/forex_stock', 'Flow/forexStock'); //大宗资产流水
Route::post('/flow/forex_list', 'Flow/forexList'); //外汇流水
Route::post('/flow/block_stock', 'Flow/blockStock'); //股票大宗流水
Route::post('/flow/lists', 'Flow/allList'); //所有账号流水
Route::post('flow/inr_stock_index', 'Flow/inrStockIndex'); //印度股指资产流水

63
app/admin/service/FlowService.php

@ -15,6 +15,7 @@ use app\model\UserStockBlockLogModel;
use app\model\UserStockFundLogModel;
use app\model\UserStockHkdLogModel;
use app\model\UserStockIdnLogModel;
use app\model\UserStockIndexInrLogModel;
use app\model\UserStockInLogModel;
use app\model\UserStockJpLogModel;
use app\model\UserStockLogModel;
@ -234,6 +235,66 @@ class FlowService extends AdminBaseService
}
}
// 印度股指资产流水
public function inrStockIndex($param, $adminId)
{
try {
// 参数校验
validate(FlowValidate::class)->scene('stock')->check($param);
$where = [];
$userId = 0;
// 用户号精确搜索
if (!empty($param['user_no'])) {
$user = UserModel::where('user_no', $param['user_no'])->find();
if (empty($user)) {
return $this->toData('0', 'SUCCESS', ['total' => 0, 'list' => [], ]);
}
$userId = $user['user_id'];
}
// 判断是否是代理 如果是代理 只能看他自己管理的用户
$whereU = $this->getWhereByIsAgentAndUserId($adminId, $where, $userId);
if (!is_array($whereU)) {
return $this->toData('0', 'SUCCESS', ['total' => 0, 'list' => []]);
}
// 根据change_type 过滤数据
$changeTypeArr = UserStockIndexInrLogModel::group('change_type')->column('change_type');
if (!empty($param['change_type']) && in_array($param['change_type'], $changeTypeArr)) {
$where['change_type'] = $param['change_type'];
}
$list = UserStockJpLogModel::where($where)->where($whereU)->order('id', 'desc')->paginate([
'page' => $param['page'],
'list_rows' => $param['limit']
]);
$rows = [];
if (!empty($list->items())) {
$rows = $list->items();
// 获取用户号
$userIdArr = [];
foreach ($list->items() as $idItem) {
$userIdArr[] = $idItem['user_id'];
}
$userNoArr = UserModel::where('user_id', 'in', $userIdArr)->column('user_no', 'user_id');
foreach ($rows as $key => $item) {
$rows[$key]['user_no'] = $userNoArr[$item['user_id']] ?? '-'; // 用户号
}
}
return $this->toData('0', 'SUCCESS', [
'total' => $list->total(),
'list' => $rows,
'page' => $list->currentPage(),
'last_page' => $list->lastPage(),
'extend' => (new BaseHomeService())->getCapitalTypeList()
]);
} catch (\Exception $exception) {
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
}
}
// 大宗资产流水
public function forexStock($param, $adminId)
{
@ -1288,7 +1349,7 @@ class FlowService extends AdminBaseService
}
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, 'extend' => [
'change_type_list' => (new BaseHomeService())->getCapitalTypeList($changeTypeArr)
'change_type_list' => (new BaseHomeService())->getCapitalTypeList()
]]);
} catch (ValidateException $validateException) {
// 参数校验失败

31
app/admin/service/setting/IPOService.php

@ -5,6 +5,7 @@ namespace app\admin\service\setting;
use app\admin\service\AdminBaseService;
use app\admin\validate\setting\StockValidate;
use app\model\ForexListMode;
use app\model\PreBrlStockModel;
use app\model\PreEurStockModel;
use app\model\PreFurStockModel;
@ -1642,6 +1643,18 @@ class IPOService extends AdminBaseService
'check' => 'forex_stock_',
];
break;
case 20:
$result = [
'user_table' => $prefix . 'user_stock_index_inr',
'log_table' => $prefix . 'user_stock_index_inr_log',
'list_table' => $prefix . 'stock_index_inr_list',
'trade_table' => $prefix . 'stock_index_inr_trade',
'redis_key' => 'IndexInr:STOCK:LIST:',
'stock_id' => 'IndexInr',
'country' => 'IndexInr',
'check' => 'indexInr_stock_',
];
break;
default:
$result = [];
break;
@ -1727,6 +1740,24 @@ class IPOService extends AdminBaseService
'type' => PreJpStockModel::$stockTypeList,
];
break;
case 19:
$result = [
'tape' => [],
'type' => [],
];
break;
case 20:
$result = [
'tape' =>[
1 => "TSE",
2 => "BSE"
],
'type' => [
1 => 'Common Stock',
2 => 'Preferred Stock',
],
];
break;
}
return $result;
}

47
app/admin/service/setting/StockIndexService.php

@ -3,7 +3,9 @@
namespace app\admin\service\setting;
use app\admin\service\AdminBaseService;
use app\model\StockIndexInrListModel;
use app\model\StockIndexModel;
use think\facade\Db;
class StockIndexService extends AdminBaseService
{
@ -62,4 +64,49 @@ class StockIndexService extends AdminBaseService
return $this->toData('1', '系统繁忙', [$exception->getMessage()]);
}
}
// 印度股指列表
public function inrStockIndexList($param): array
{
try {
if (empty($param['page']) || empty($param['limit'])) {
return $this->toData('400', '缺少必要参数');
}
$where = [];
if (!empty($param['trade_name'])) {
$where[] = ['stock_code', 'like', '%' . $param['trade_name']];
}
$list = StockIndexInrListModel::where($where)->order('id', 'desc')->paginate([
'page' => $param['page'],
'list_rows' => $param['limit'],
]);
$tapeList = (new IPOService())->getStockTape(20);
return $this->toData('0', 'SUCCESS', [
'list' => $list->items(),
'total' => $list->total(),
'page' => $list->currentPage(),
'last_page' => $list->lastPage(),
'extend' => [
'tape_list' => $tapeList['tape'],
'source_list' => $tapeList['source'] ?? [],
]
]);
} catch (\Exception $e) {
return $this->toData('500', '系统繁忙', [$e->getMessage(), $e->getTrace()]);
}
}
// 获取股指名称列表
public function getTradeNameList()
{
try {
$list = StockIndexInrListModel::where('status', 1)->order('id', 'desc')->column('name', 'id');
return $this->toData('0', 'SUCCESS', ['list' => $list]);
} catch (\Exception $e) {
return $this->toData('1', '系统繁忙', [$e->getMessage(), $e->getTrace()]);
}
}
}

8
app/admin/validate/setting/StockValidate.php

@ -100,6 +100,14 @@ class StockValidate extends AdminBaseValidate
'jp_stock_index' => ['page', 'limit'],
'jp_stock_add' => ['stock_name', 'stock_code', 'status', 'keep_decimal', 'forced_closure', 'up_limit', 'down_limit'],
'jp_stock_edit' => ['id', 'stock_name', 'stock_code', 'status', 'keep_decimal', 'forced_closure', 'up_limit', 'down_limit'],
// 外汇
'forex_stock_index' => ['page', 'limit'],
'forex_stock_add' => [],
'forex_stock_edit' => ['id'],
// 印度股指
'indexInr_stock_index' => ['page', 'limit'],
'indexInr_stock_add' => [],
'indexInr_stock_edit' => ['id'],
// 印度期权
'in_option_index' => ['page', 'limit'],

118
app/model/StockMarketModel.php

@ -47,6 +47,7 @@ class StockMarketModel extends BaseModel
const STOCK_MARKET_BRL = '17';
const STOCK_MARKET_JP = '18';
const FOREX_MARKET = '19';
const STOCK_INR_INDEX = '20';
const STOCK_MARKET_TYPE = [
self::DIGITAL_MARKET => '现货',
@ -67,6 +68,7 @@ class StockMarketModel extends BaseModel
self::STOCK_MARKET_BRL => '巴西股',
self::STOCK_MARKET_JP => '日股',
self::FOREX_MARKET => '外汇',
self::STOCK_INR_INDEX => '印度股指',
];
// 状态
@ -88,118 +90,12 @@ class StockMarketModel extends BaseModel
// 获取费率
public function getRate($accountType)
{
switch ($accountType)
{
case '3':
// 美股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_USA)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '4':
// 印尼股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_YNG)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '5':
// 马来股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_MG)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '6':
// 泰股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_TG)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '7':
// 印度股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_IN)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '9':
// 新加坡
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_SGD)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '10':
// 基金
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_FUND)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '11':
// 印度期权
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_OPTION_IN)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '12':
// 港股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_HK)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '14':
// 港股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_UK)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '15':
// 港股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_FUR)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '16':
// 港股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_EUR)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '17':
// 巴西股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_BRL)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '18':
// 巴西股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::STOCK_MARKET_JP)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
case '19':
// 巴西股
$rate = StockMarketModel::where('stock_market_type', StockMarketModel::FOREX_MARKET)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
}
break;
default:
$rate = 1;
break;
$rate = StockMarketModel::where('stock_market_type', $accountType)->value('rate');
if(empty($rate) || $rate <= 0){
$rate = 0;
} else { // 没查到对应数据或者费率配置错误,默认设置rate=1
$rate = 1;
}
return $rate;
}

8
app/model/UserStockIndexInrLogModel.php

@ -0,0 +1,8 @@
<?php
namespace app\model;
class UserStockIndexInrLogModel extends BaseModel
{
protected $name = 'user_stock_index_inr_log';
}
Loading…
Cancel
Save