bourse stock
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.

203 lines
7.6 KiB

<?php
namespace app\admin\service\setting;
use app\admin\service\AdminBaseService;
use app\model\DigitalListModel;
// 现货交易对
class DigitalService extends AdminBaseService
{
public function index()
{
try {
$list = DigitalListModel::order('id', 'desc')->select();
$rows = [];
if(!$list->isEmpty()){
$rows = $list->toArray();
}
return $this->toData('0', 'SUCCESS', ['list' => $rows, 'total' => count($rows)]);
}catch (\Exception $exception){
return $this->toData('1', '系统繁忙', []);
}
}
public function add($param)
{
try {
if(empty($param['trade_name']) || !is_string($param['trade_name'])){
return $this->toData('1', '数字货币名称无效');
}
if(empty($param['exchange_name']) || !is_string($param['exchange_name'])){
return $this->toData('1', '数字币兑换对名称无效');
}
// 简介
if(!empty($param['info']) && !is_string($param['info'])){
return $this->toData('1', '简介无效');
}
$info = $param['info']?? '';
// 状态
if(!isset($param['status']) || !in_array($param['status'], [0,1])){
return $this->toData('1', '启用状态无效');
}
// 排序
if(!isset($param['sort']) || !is_numeric($param['sort']) || ceil($param['sort']) != $param['sort']){
return $this->toData('1', '排序无效');
}
// 图片链接
if(empty($param['logo_link']) || !is_string($param['logo_link'])){
return $this->toData('1', 'logo链接无效');
}
// 小数位数
if(!isset($param['keep_decimal']) || !is_numeric($param['keep_decimal']) || $param['keep_decimal'] < 0 || ceil($param['keep_decimal']) != $param['keep_decimal']){
return $this->toData('1', '保留小数位无效');
}
// 判断股票代码是否已经存在
$count = DigitalListModel::where('trade_name', $param['trade_name'])->where('exchange_name', $param['exchange_name'])->count();
if($count > 0){
return $this->toData('1', '现货数字币交易对已经存在');
}
$digitalList = new DigitalListModel;
$digitalList->trade_name = $param['trade_name'];
$digitalList->exchange_name = $param['exchange_name'];
$digitalList->status = $param['status'];
$digitalList->logo_link = $param['logo_link'];
$digitalList->sort = $param['sort'];
$digitalList->keep_decimal = $param['keep_decimal'];
$digitalList->info = $info;
$digitalList->create_time = date('Y-m-d H:i:s');
$digitalList->update_time = date('Y-m-d H:i:s');
$digitalList->save();
// 设置缓存
$fee_key="DIGITAL:LIST:".strtoupper($param['trade_name']);
$redis = $this->getRedis();
$redis->del($fee_key);
$redis->hMSet($fee_key,[
'name'=>strtoupper($param['trade_name']),
'sort'=>$param['sort'],
'exchange_name'=>$param['exchange_name'],
'logo_link'=>$param['logo_link'],
'keep_decimal'=>$param['keep_decimal'],
'status'=>$param['status'],
]);
return $this->toData('0', '操作成功', []);
}catch (\Exception $exception){
return $this->toData('1', '系统繁忙', []);
}
}
public function edit($param)
{
try {
if(empty($param['id']) || !is_numeric($param['id'])){
return $this->toData('1', '目标不存在', []);
}
$digitalList = DigitalListModel::where('id', $param['id'])->find();
if(empty($digitalList)){
return $this->toData('1', '目标不存在', []);
}
if(empty($param['trade_name']) || !is_string($param['trade_name'])){
return $this->toData('1', '数字货币名称无效');
}
if(empty($param['exchange_name']) || !is_string($param['exchange_name'])){
return $this->toData('1', '数字币兑换对名称无效');
}
// 简介
if(!empty($param['info']) && !is_string($param['info'])){
return $this->toData('1', '简介无效');
}
$info = $param['info']?? '';
// 状态
if(!isset($param['status']) || !in_array($param['status'], [0,1])){
return $this->toData('1', '启用状态无效');
}
// 排序
if(!isset($param['sort']) || !is_numeric($param['sort']) || ceil($param['sort']) != $param['sort']){
return $this->toData('1', '排序无效');
}
// 图片链接
if(empty($param['logo_link']) || !is_string($param['logo_link'])){
return $this->toData('1', 'logo链接无效');
}
// 小数位数
if(!isset($param['keep_decimal']) || !is_numeric($param['keep_decimal']) || $param['keep_decimal'] < 0 || ceil($param['keep_decimal']) != $param['keep_decimal']){
return $this->toData('1', '保留小数位无效');
}
// 判断股票代码是否已经存在
$count = DigitalListModel::where('trade_name', $param['trade_name'])->where('exchange_name', $param['exchange_name'])
->where('id','<>', $param['id'])
->count();
if($count > 0){
return $this->toData('1', '现货数字币交易对已经存在');
}
$digitalList->trade_name = $param['trade_name'];
$digitalList->exchange_name = $param['exchange_name'];
$digitalList->status = $param['status'];
$digitalList->logo_link = $param['logo_link'];
$digitalList->sort = $param['sort'];
$digitalList->keep_decimal = $param['keep_decimal'];
$digitalList->info = $info;
$digitalList->update_time = date('Y-m-d H:i:s');
$digitalList->save();
// 设置缓存
$fee_key="DIGITAL:LIST:".strtoupper($param['trade_name']);
$redis = $this->getRedis();
$redis->del($fee_key);
$redis->hMSet($fee_key,[
'name'=>strtoupper($param['trade_name']),
'sort'=>$param['sort'],
'logo_link'=>$param['logo_link'],
'keep_decimal'=>$param['keep_decimal'],
'status'=>$param['status'],
]);
return $this->toData('0', '操作成功', []);
}catch (\Exception $exception){
return $this->toData('1', '系统繁忙', []);
}
}
public function getTradeNameList($param)
{
try {
if(isset($param['is_owner']) && in_array($param['is_owner'], [0,1])){
$list = DigitalListModel::where('status', 1)->order('id', 'desc')
->where('is_owner', $param['is_owner'])
->column('trade_name', 'id');
} else {
$list = DigitalListModel::where('status', 1)->order('id', 'desc')->column('trade_name', 'id');
}
return $this->toData('0', 'SUCCESS', ['list' => $list]);
}catch (\Exception $exception){
return $this->toData('1', '系统繁忙', []);
}
}
}