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']) || strlen($param['trade_name']) > 100){ return $this->toData('1', '交易对名称无效', []); } // 状态 if(!isset($param['status']) || !in_array($param['status'], ['0', '1'])){ return $this->toData('1', '状态无效', []); } // 是否自发 if(!isset($param['is_owner']) || !in_array($param['is_owner'], ['0', '1'])){ return $this->toData('1', '是否自发无效', []); } // 简介 $info = ''; if(isset($param['info']) && is_string($param['info'])){ $info = $param['info']; } // 面值 if(!isset($param['face_value']) || !is_numeric($param['face_value']) || $param['face_value'] != ceil($param['face_value']) || $param['face_value'] <= 0){ return $this->toData('1', '面值无效', []); } // 排序 if(!isset($param['sort']) || !is_numeric($param['sort']) || $param['sort'] != ceil($param['sort']) || $param['sort'] < 0){ return $this->toData('1', '排序值无效', []); } // 最小杠杆 if(empty($param['min_pry']) || !is_numeric($param['min_pry']) || $param['min_pry'] != ceil($param['min_pry']) || $param['min_pry'] <= 0){ return $this->toData('1', '最小杠杆值无效', []); } // 最大杠杆 if(empty($param['max_pry']) || !is_numeric($param['max_pry']) || $param['max_pry'] != ceil($param['max_pry']) || $param['max_pry'] <= 0){ return $this->toData('1', '最大杠杆值无效', []); } // 强制平仓比例值 if(empty($param['compel_num']) || !is_numeric($param['compel_num']) || $param['compel_num'] <= 0){ return $this->toData('1', '强制平仓比例值无效', []); } // 小数位数 if(!isset($param['keep_decimal']) || !is_numeric($param['keep_decimal']) || $param['keep_decimal'] != ceil($param['keep_decimal']) || $param['keep_decimal'] < 0){ return $this->toData('1', '小数位数值无效', []); } // 判断名称是否已被添加 $count = ContractListMode::where('trade_name', $param['trade_name'])->count(); if($count > 0){ return $this->toData('1', '合约交易对名称已存在', []); } $contract = new ContractListMode; $contract->trade_name = $param['trade_name']; $contract->status = $param['status']; $contract->is_owner = $param['is_owner']; $contract->info = $info; $contract->logo_link = ''; $contract->face_value = $param['face_value']; $contract->sort = $param['sort']; $contract->min_pry = $param['min_pry']; $contract->max_pry = $param['max_pry']; $contract->compel_num = $param['compel_num']; $contract->keep_decimal = $param['keep_decimal']; $contract->create_time = date('Y-m-d H:i:s'); $contract->update_time = date('Y-m-d H:i:s'); $contract->save(); $list_key="CONTRACT:LIST:".strtoupper($param['trade_name']); $redis = $this->getRedis(); $redis->del($list_key); $redis->hMset($list_key, [ 'name'=>strtoupper($param['trade_name']), 'code'=>strtoupper($param['trade_name']), 'sort'=>$param['sort'], 'face_value'=>$param['face_value'], 'min_pry'=>$param['min_pry'], 'max_pry'=>$param['max_pry'], 'compel_num'=>$param['compel_num'], 'keep_decimal'=>$param['keep_decimal'], 'is_owner'=>$param['is_owner'], 'status'=>$param['status'] ]); return $this->toData('0', '操作成功', []); }catch (\Exception $exception){ return $this->toData('1', '系统繁忙', [$exception->getMessage()]); } } public function edit($param) { try { if(empty($param['id']) || !is_numeric($param['id'])){ return $this->toData('1', '目标不存在', []); } $contract = ContractListMode::where('id', $param['id'])->find(); $beforeStatus = $contract['status']; if(empty($contract)){ return $this->toData('1', '目标不存在', []); } // 交易对名称 if(empty($param['trade_name']) || !is_string($param['trade_name']) || strlen($param['trade_name']) > 100){ return $this->toData('1', '交易对名称无效', []); } // 状态 if(!isset($param['status']) || !in_array($param['status'], ['0', '1'])){ return $this->toData('1', '状态无效', []); } // 是否自发 if(!isset($param['is_owner']) || !in_array($param['is_owner'], ['0', '1'])){ return $this->toData('1', '是否自发无效', []); } // 简介 $info = ''; if(isset($param['info']) && is_string($param['info'])){ $info = $param['info']; } // 面值 if(!isset($param['face_value']) || !is_numeric($param['face_value']) || $param['face_value'] != ceil($param['face_value']) || $param['face_value'] <= 0){ return $this->toData('1', '面值无效', []); } // 排序 if(!isset($param['sort']) || !is_numeric($param['sort']) || $param['sort'] != ceil($param['sort']) || $param['sort'] < 0){ return $this->toData('1', '排序值无效', []); } // 最小杠杆 if(empty($param['min_pry']) || !is_numeric($param['min_pry']) || $param['min_pry'] != ceil($param['min_pry']) || $param['min_pry'] <= 0){ return $this->toData('1', '最小杠杆值无效', []); } // 最大杠杆 if(empty($param['max_pry']) || !is_numeric($param['max_pry']) || $param['max_pry'] != ceil($param['max_pry']) || $param['max_pry'] <= 0){ return $this->toData('1', '最大杠杆值无效', []); } // 强制平仓比例值 if(empty($param['compel_num']) || !is_numeric($param['compel_num']) || $param['compel_num'] <= 0){ return $this->toData('1', '强制平仓比例值无效', []); } // 小数位数 if(!isset($param['keep_decimal']) || !is_numeric($param['keep_decimal']) || $param['keep_decimal'] != ceil($param['keep_decimal']) || $param['keep_decimal'] < 0){ return $this->toData('1', '小数位数值无效', []); } // 判断名称是否已被添加 $count = ContractListMode::where('trade_name', $param['trade_name'])->where('id', '<>', $param['id'])->count(); if($count > 0){ return $this->toData('1', '合约交易对名称已存在', []); } // 如果状态设置成关闭 则判断是否有正在交易的合约 if($beforeStatus == 1 && $param['status'] == 0){ $num=(new ContractTradeModel())->where([ 'contract_id'=>strtoupper($contract['trade_name']), 'status'=>1 ])->count(); if ($num != 0) { return $this->toData('1', '交易对还存在交易,不能关闭', []); } } // 写入数据 $contract->trade_name = $param['trade_name']; $contract->status = $param['status']; $contract->is_owner = $param['is_owner']; $contract->info = $info; $contract->logo_link = ''; $contract->face_value = $param['face_value']; $contract->sort = $param['sort']; $contract->min_pry = $param['min_pry']; $contract->max_pry = $param['max_pry']; $contract->compel_num = $param['compel_num']; $contract->keep_decimal = $param['keep_decimal']; $contract->create_time = date('Y-m-d H:i:s'); $contract->update_time = date('Y-m-d H:i:s'); $contract->save(); $list_key="CONTRACT:LIST:".strtoupper($param['trade_name']); $redis = $this->getRedis(); $redis->del($list_key); $redis->hMset($list_key, [ 'name'=>strtoupper($param['trade_name']), 'code'=>strtoupper($param['trade_name']), 'sort'=>$param['sort'], 'face_value'=>$param['face_value'], 'min_pry'=>$param['min_pry'], 'max_pry'=>$param['max_pry'], 'compel_num'=>$param['compel_num'], 'keep_decimal'=>$param['keep_decimal'], 'status'=>$param['status'] ]); return $this->toData('0', 'SUCCESS', []); }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 = ContractListMode::where('status', 1)->order('id', 'desc') ->where('is_owner', $param['is_owner']) ->column('trade_name', 'id'); } else { $list = ContractListMode::where('status', 1)->order('id', 'desc') ->column('trade_name', 'id'); } return $this->toData('0', 'SUCCESS', ['list' => $list]); }catch (\Exception $exception){ return $this->toData('1', '系统繁忙', []); } } public function setting($param) { try { $list = ContractSettingModel::order('time_step', 'asc')->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 set_add($param) { // 状态 if(!isset($param['time_step'])){ return $this->toData('1', '时间无效', []); } // 是否自发 if(!isset($param['earnings_num'])){ return $this->toData('1', '收益无效', []); } $contract = ContractSettingModel::where('time_step', $param['time_step'])->find(); if(!empty($contract)){ return $this->toData('1', '时间已存在', []); } $contract = new ContractSettingModel; // 写入数据 $contract->time_step = $param['time_step']; $contract->earnings_num = $param['earnings_num']; $contract->create_time = date('Y-m-d H:i:s'); $contract->update_time = date('Y-m-d H:i:s'); $contract->save(); $this->initContractSetting(); return $this->toData('0', 'SUCCESS', []); } public function set_edit($param) { // 状态 if(!isset($param['time_step'])){ return $this->toData('1', '时间无效', []); } // 是否自发 if(!isset($param['earnings_num'])){ return $this->toData('1', '收益无效', []); } // 是否自发 if(!isset($param['id'])){ return $this->toData('1', 'ID无效', []); } $contract = ContractSettingModel::where('id', $param['id'])->find(); if(empty($contract)){ return $this->toData('1', '目标不存在', []); } // 写入数据 $contract->time_step = $param['time_step']; $contract->earnings_num = $param['earnings_num']; $contract->create_time = date('Y-m-d H:i:s'); $contract->update_time = date('Y-m-d H:i:s'); $contract->save(); $this->initContractSetting(); return $this->toData('0', 'SUCCESS', []); } public function set_del($param) { if(!isset($param['id'])){ return $this->toData('1', 'ID无效', []); } $contract = ContractSettingModel::where('id', $param['id'])->find(); if(empty($contract)){ return $this->toData('1', '目标不存在', []); } $contract->where('id',$param['id'])->delete(); $this->initContractSetting(); return $this->toData('0', 'SUCCESS', []); } }