You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
422 lines
19 KiB
422 lines
19 KiB
<?php
|
|
|
|
namespace app\admin\service\setting;
|
|
|
|
use app\admin\service\AdminBaseService;
|
|
use app\model\StockBlockListModel;
|
|
use app\model\StockBrlListModel;
|
|
use app\model\StockEurListModel;
|
|
use app\model\StockFurListModel;
|
|
use app\model\StockGBXListModel;
|
|
use app\model\StockHkdListModel;
|
|
use app\model\StockIdnListModel;
|
|
use app\model\StockInListModel;
|
|
use app\model\StockJpListModel;
|
|
use app\model\StockListModel;
|
|
use app\model\StockMysListModel;
|
|
use app\model\StockSgdListModel;
|
|
use app\model\StockThaListModel;
|
|
|
|
|
|
// 大宗交易
|
|
class BlockStockService extends AdminBaseService
|
|
{
|
|
|
|
// 列表
|
|
public function index($param)
|
|
{
|
|
try {
|
|
if (empty($param['page']) || !is_numeric($param['page']) || empty($param['limit']) || !is_numeric($param['limit'])) {
|
|
return $this->toData('1', '分页参数错误');
|
|
}
|
|
|
|
$where = [];
|
|
// 未删除
|
|
$where[] = [
|
|
'is_delete', '=', StockBlockListModel::IS_DELETE_NO
|
|
];
|
|
// 股票号
|
|
if (!empty($param['stock_code']) && is_string($param['stock_code'])) {
|
|
$where[] = [
|
|
'stock_code', '=', $param['stock_code']
|
|
];
|
|
}
|
|
|
|
// 状态
|
|
if (!empty($param['status']) && in_array($param['status'], [StockBlockListModel::STATUS_ON, StockBlockListModel::STATUS_OFF])) {
|
|
$where[] = [
|
|
'status', '=', $param['status']
|
|
];
|
|
}
|
|
|
|
$query = StockBlockListModel::where($where);
|
|
$totalQuery = StockBlockListModel::where($where);
|
|
$list = $query->order('id', 'desc')->page($param['page'], $param['limit'])->select();
|
|
$total = $totalQuery->order('id', 'desc')->count();
|
|
|
|
|
|
return $this->toData('0', 'SUCCESS', ['list' => $list, 'total' => $total, 'extend' => [
|
|
// 'tape_list' => StockBlockListModel::$tapeList,
|
|
'stock_type_list' => StockBlockListModel::$typeList,
|
|
]]);
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('1', '系统繁忙', [$exception->getMessage()]);
|
|
}
|
|
}
|
|
|
|
// 新增
|
|
public function add($param)
|
|
{
|
|
try {
|
|
// 股票代码
|
|
if (empty($param['stock_code']) || !is_string($param['stock_code'])) {
|
|
return $this->toData('1', '股票代码 无效');
|
|
}
|
|
|
|
|
|
// 股票类型
|
|
if (empty($param['type']) || !in_array($param['type'], array_keys(StockBlockListModel::$typeList))) {
|
|
return $this->toData('1', '股票市场 无效');
|
|
}
|
|
|
|
// 交易所类型
|
|
// if(empty($param['tape']) || !in_array($param['tape'], array_keys(StockBlockListModel::$tapeList))){
|
|
// return $this->toData('1', '交易所类型 无效');
|
|
// }
|
|
|
|
switch ($param['type']) {
|
|
case '3':
|
|
$stock = StockListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '4':
|
|
$stock = StockIdnListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '5':
|
|
$stock = StockMysListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '6':
|
|
$stock = StockThaListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '7':
|
|
$stock = StockInListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '9':
|
|
$stock = StockSgdListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '12':
|
|
$stock = StockHkdListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '14':
|
|
$stock = StockGBXListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '15':
|
|
$stock = StockFurListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '16':
|
|
$stock = StockEurListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '17':
|
|
$stock = StockBrlListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '18':
|
|
$stock = StockJpListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
default:
|
|
return $this->toData('1', '股票市场或股票代码 无效');
|
|
}
|
|
|
|
|
|
// 发布状态
|
|
if (empty($param['status']) || !in_array($param['status'], [StockBlockListModel::STATUS_ON, StockBlockListModel::STATUS_OFF])) {
|
|
return $this->toData('1', '发布状态 无效');
|
|
}
|
|
|
|
// 单股价格
|
|
if (empty($param['price']) || !is_numeric($param['price']) || $param['price'] <= 0) {
|
|
return $this->toData('1', '单股价格 无效');
|
|
}
|
|
|
|
// 最小申购数量
|
|
if (empty($param['min']) || !is_numeric($param['min']) || $param['min'] <= 0 || ceil($param['min']) != $param['min']) {
|
|
return $this->toData('1', '最小购买股数无效');
|
|
}
|
|
|
|
// 开始认购时间
|
|
if (empty($param['start_time']) || !is_string($param['start_time'])) {
|
|
return $this->toData('1', '开始认购时间 无效');
|
|
}
|
|
|
|
// 认购结束时间
|
|
if (empty($param['end_time']) || !is_string($param['end_time']) || strtotime($param['end_time']) <= strtotime($param['start_time'])) {
|
|
return $this->toData('1', '认购结束时间 无效');
|
|
}
|
|
|
|
// 可出售时间时间
|
|
if (empty($param['today_add']) || !is_numeric($param['today_add'])) {
|
|
return $this->toData('1', 'T+n 无效');
|
|
}
|
|
|
|
// 新增数据
|
|
$blockStock = new StockBlockListModel();
|
|
$blockStock->stock_code = $param['stock_code'];
|
|
$blockStock->stock_name = $param['stock_name'];
|
|
$blockStock->type = $param['type'];
|
|
$blockStock->tape = $stock->tape;
|
|
$blockStock->status = $param['status'];
|
|
$blockStock->price = $param['price'];
|
|
$blockStock->min = $param['min'];
|
|
$blockStock->start_time = $param['start_time'];
|
|
$blockStock->end_time = $param['end_time'];
|
|
$blockStock->today_add = $param['today_add'];
|
|
$blockStock->keep_decimal = $stock->keep_decimal;
|
|
$blockStock->info = $param['info'] ?? '';
|
|
$blockStock->forced_closure = $stock->forced_closure;
|
|
$blockStock->up_limit = $stock->up_limit;;
|
|
$blockStock->down_limit = $stock->down_limit;
|
|
$blockStock->buy_pwd = isset($param['buy_pwd']) ? trim($param['buy_pwd']) : '' ;
|
|
|
|
$blockStock->create_time = date('Y-m-d H:i:s');
|
|
$blockStock->update_time = date('Y-m-d H:i:s');
|
|
$blockStock->save();
|
|
|
|
// 加入缓存
|
|
$list_key = StockBlockListModel::$typeListEn[$param['type']] . ":BLOCK:LIST:" . $param['stock_code'];
|
|
$redis = $this->getRedis();
|
|
$redis->del($list_key);
|
|
$redis->hMset($list_key, [
|
|
'stock_name' => $blockStock->stock_name,
|
|
'stock_code' => $blockStock->stock_code,
|
|
'status' => $blockStock->status,
|
|
'keep_decimal' => $blockStock->keep_decimal,
|
|
'forced_closure' => $blockStock->forced_closure,
|
|
'up_limit' => $blockStock->up_limit,
|
|
'down_limit' => $blockStock->down_limit,
|
|
'info' => $blockStock->info,
|
|
'tape' => $blockStock->tape,
|
|
'price' => $blockStock->price,
|
|
'min' => $blockStock->min,
|
|
'start_time' => $blockStock->start_time,
|
|
'end_time' => $blockStock->end_time,
|
|
'today_add' => $blockStock->today_add,
|
|
'buy_pwd'=>$blockStock->buy_pwd
|
|
]);
|
|
|
|
return $this->toData('0', 'SUCCESS');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('0', '系统繁忙', [$exception->getMessage()]);
|
|
}
|
|
}
|
|
|
|
// 编辑
|
|
public function edit($param)
|
|
{
|
|
try {
|
|
if (empty($param['id']) || !is_numeric($param['id'])) {
|
|
return $this->toData('1', '主键 无效');
|
|
}
|
|
|
|
$blockStock = StockBlockListModel::where('id', $param['id'])->where('is_delete', StockBlockListModel::IS_DELETE_NO)->find();
|
|
if (empty($blockStock)) {
|
|
return $this->toData('1', '主键 无效');
|
|
}
|
|
|
|
// // 已中签或者已上市不支持修改
|
|
// if($blockStock->open_status == PreMysStockModel::OPEN_STATUS_HAD || strtotime($blockStock->get_time)<=time()){
|
|
// return $this->toData('1', '已中签或已上市 不支持修改');
|
|
// }
|
|
|
|
// 股票代码
|
|
if (empty($param['stock_code']) || !is_string($param['stock_code'])) {
|
|
return $this->toData('1', '股票代码 无效');
|
|
}
|
|
|
|
// 股票名称
|
|
if (empty($param['stock_name']) || !is_string($param['stock_name'])) {
|
|
return $this->toData('1', '股票代码 无效');
|
|
}
|
|
|
|
// 股票类型
|
|
if (empty($param['type']) || !in_array($param['type'], array_keys(StockBlockListModel::$typeList))) {
|
|
return $this->toData('1', '股票市场 无效');
|
|
}
|
|
|
|
switch ($param['type']) {
|
|
case '3':
|
|
$stock = StockListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '4':
|
|
$stock = StockIdnListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '5':
|
|
$stock = StockMysListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '6':
|
|
$stock = StockThaListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '7':
|
|
$stock = StockInListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '9':
|
|
$stock = StockSgdListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '12':
|
|
$stock = StockHkdListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '14':
|
|
$stock = StockGBXListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '15':
|
|
$stock = StockFurListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '16':
|
|
$stock = StockEurListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '17':
|
|
$stock = StockBrlListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
case '18':
|
|
$stock = StockJpListModel::where('stock_code', $param['stock_code'])->find();
|
|
if (empty($stock)) return $this->toData('1', 'stock_code 无效');
|
|
break;
|
|
default:
|
|
return $this->toData('1', '股票市场或股票代码 无效');
|
|
}
|
|
|
|
// 交易所类型
|
|
// if(empty($param['tape']) || !in_array($param['tape'], array_keys(StockBlockListModel::$tapeList))){
|
|
// return $this->toData('1', '交易所类型 无效');
|
|
// }
|
|
|
|
// 发布状态
|
|
if (empty($param['status']) || !in_array($param['status'], [StockBlockListModel::STATUS_ON, StockBlockListModel::STATUS_OFF])) {
|
|
return $this->toData('1', '发布状态 无效');
|
|
}
|
|
|
|
// 单股价格
|
|
if (empty($param['price']) || !is_numeric($param['price']) || $param['price'] <= 0) {
|
|
return $this->toData('1', '单股价格 无效');
|
|
}
|
|
|
|
// 最小申购数量
|
|
if (empty($param['min']) || !is_numeric($param['min']) || $param['min'] <= 0 || ceil($param['min']) != $param['min']) {
|
|
return $this->toData('1', '最小购买股数无效');
|
|
}
|
|
|
|
// 开始认购时间
|
|
if (empty($param['start_time']) || !is_string($param['start_time'])) {
|
|
return $this->toData('1', '开始认购时间 无效');
|
|
}
|
|
|
|
// 认购结束时间
|
|
if (empty($param['end_time']) || !is_string($param['end_time']) || strtotime($param['end_time']) <= strtotime($param['start_time'])) {
|
|
return $this->toData('1', '认购结束时间 无效');
|
|
}
|
|
|
|
// 可出售时间时间
|
|
if (empty($param['today_add']) || !is_numeric($param['today_add'])) {
|
|
return $this->toData('1', 'T+n 无效');
|
|
}
|
|
|
|
// 新增数据
|
|
$blockStock->stock_code = $param['stock_code'];
|
|
$blockStock->stock_name = $param['stock_name'];
|
|
$blockStock->type = $param['type'];
|
|
$blockStock->tape = $stock->tape;
|
|
$blockStock->status = $param['status'];
|
|
$blockStock->price = $param['price'];
|
|
$blockStock->min = $param['min'];
|
|
$blockStock->start_time = $param['start_time'];
|
|
$blockStock->end_time = $param['end_time'];
|
|
$blockStock->today_add = $param['today_add'];
|
|
$blockStock->keep_decimal = $stock->keep_decimal;
|
|
$blockStock->info = $param['info'] ?? '';
|
|
$blockStock->forced_closure = $stock->forced_closure;
|
|
$blockStock->up_limit = $stock->up_limit;;
|
|
$blockStock->down_limit = $stock->down_limit;
|
|
$blockStock->update_time = date('Y-m-d H:i:s');
|
|
$blockStock->buy_pwd = trim($param['buy_pwd']);
|
|
$blockStock->save();
|
|
|
|
// 加入缓存
|
|
$list_key = StockBlockListModel::$typeListEn[$param['type']] . ":BLOCK:LIST:" . $param['stock_code'];
|
|
$redis = $this->getRedis();
|
|
$redis->del($list_key);
|
|
$redis->hMset($list_key, [
|
|
'stock_name' => $blockStock->stock_name,
|
|
'stock_code' => $blockStock->stock_code,
|
|
'status' => $blockStock->status,
|
|
'keep_decimal' => $blockStock->keep_decimal,
|
|
'forced_closure' => $blockStock->forced_closure,
|
|
'up_limit' => $blockStock->up_limit,
|
|
'down_limit' => $blockStock->down_limit,
|
|
'info' => $blockStock->info,
|
|
'tape' => $blockStock->tape,
|
|
'price' => $blockStock->price,
|
|
'min' => $blockStock->min,
|
|
'start_time' => $blockStock->start_time,
|
|
'end_time' => $blockStock->end_time,
|
|
'today_add' => $blockStock->today_add,
|
|
'buy_pwd'=>$blockStock->buy_pwd,
|
|
]);
|
|
|
|
return $this->toData('0', 'SUCCESS');
|
|
} catch (\Exception $exception) {
|
|
return $this->toData('0', '系统繁忙', [$exception->getMessage()]);
|
|
}
|
|
}
|
|
|
|
// //删除
|
|
// public function del($param)
|
|
// {
|
|
// try {
|
|
// if (empty($param['id']) || !is_numeric($param['id'])) {
|
|
// return $this->toData('1', '主键 无效');
|
|
// }
|
|
//
|
|
// $preInStock = StockBlockListModel::where('id', $param['id'])->where('is_delete', StockBlockListModel::IS_DELETE_NO)->find();
|
|
// if (empty($preInStock)) {
|
|
// return $this->toData('1', '主键 无效');
|
|
// }
|
|
//
|
|
// $orderList = UserMysPreStockOrderModel::where('pre_stock_id', $preInStock->id)->select();
|
|
// if (!$orderList->isEmpty()) {
|
|
// return $this->toData('1', '已有申购订单不可删除');
|
|
// }
|
|
//
|
|
// // 删除
|
|
// $list_key = "MYS:STOCK:LIST:" . $preInStock->stock_code;
|
|
// $redis = $this->getRedis();
|
|
// $redis->del($list_key);
|
|
//
|
|
// //删除 修改状态
|
|
// $preInStock->is_delete = PreMysStockModel::IS_DELETE_YES;
|
|
// $preInStock->save();
|
|
// return $this->toData('0', 'SUCCESS');
|
|
// } catch (\Exception $exception) {
|
|
// return $this->toData('1', '系统繁忙', [$exception->getMessage()]);
|
|
// }
|
|
// }
|
|
}
|