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.

202 lines
9.0 KiB

<?php
namespace app\admin\service\setting;
use app\admin\service\AdminBaseService;
use app\model\FeeSettingModel;
use app\model\StockMarketModel;
class FeeService extends AdminBaseService
{
// 交易手续费
public function index()
{
try {
$list = FeeSettingModel::order('id', 'desc')->select();
$rows = [];
if (!$list->isEmpty()) {
$rows = $list->toArray();
}
return $this->toData('0', 'SUCCESS', ['list' => $rows, 'total' => count($rows), 'extent' => [
'market_type_list' => StockMarketModel::STOCK_MARKET_TYPE, 'pay_type' => FeeSettingModel::$payTypeList
]]);
} catch (\Exception $exception) {
return $this->toData('1', '系统繁忙', []);
}
}
public function add($param)
{
try {
$marketTypeIds = array_keys(StockMarketModel::STOCK_MARKET_TYPE);
if (empty($param['market_type']) || !in_array($param['market_type'], $marketTypeIds)) {
return $this->toData('1', '市场类型无效', []);
}
if (!is_numeric($param['buy_fee']) || $param['buy_fee'] < 0) {
return $this->toData('1', '买入手续费无效', []);
}
// if(empty($param['purchase_fee']) || !is_numeric($param['purchase_fee']) || $param['purchase_fee'] < 0){
// return $this->toData('1', '盘前申购手续费无效', []);
// }
if (!is_numeric($param['sale_fee']) || $param['sale_fee'] < 0) {
return $this->toData('1', '卖出手续费无效', []);
}
if (in_array($param['market_type'], [3, 4, 5, 6, 7, 9, 12,14])) {
if (empty($param['purchase_fee']) || !is_numeric($param['purchase_fee']) || $param['purchase_fee'] < 0) {
return $this->toData('1', '申购手续费无效', []);
}
}
// 结算方式:0固定费用,1按比例结算
if (!isset($param['pay_type']) || !in_array($param['pay_type'], array_keys(FeeSettingModel::$payTypeList))) {
return $this->toData('1', '结算方式无效', []);
}
// 买入最小下单金额
if (empty($param['min_buy_num']) || !is_numeric($param['min_buy_num']) || ceil($param['min_buy_num']) != $param['min_buy_num']) {
return $this->toData('1', '买入最小下单金额无效', []);
}
//卖出最小下单金额
if (empty($param['min_sale_num']) || !is_numeric($param['min_sale_num']) || ceil($param['min_sale_num']) != $param['min_sale_num']) {
return $this->toData('1', '卖出最小下单金额无效', []);
}
// max_entrust_num
if (empty($param['max_entrust_num']) || !is_numeric($param['max_entrust_num']) || ceil($param['max_entrust_num']) != $param['max_entrust_num']) {
return $this->toData('1', '最大挂单数量无效', []);
}
// 最大持仓数量
if (empty($param['max_hold_num']) || !is_numeric($param['max_hold_num']) || ceil($param['max_hold_num']) != $param['max_hold_num']) {
return $this->toData('1', '最大持仓数量无效', []);
}
$count = FeeSettingModel::where('market_type', $param['market_type'])->count();
if ($count > 0) {
return $this->toData('1', '市场类型已经存在', []);
}
$feeSetting = new FeeSettingModel;
$feeSetting->market_type = $param['market_type'];
$feeSetting->buy_fee = $param['buy_fee'];
$feeSetting->sale_fee = $param['sale_fee'];
$feeSetting->pay_type = $param['pay_type'];
$feeSetting->purchase_fee = isset($param['purchase_fee']) ? $param['purchase_fee'] : 0;
$feeSetting->min_buy_num = $param['min_buy_num'];
$feeSetting->min_sale_num = $param['min_sale_num'];
$feeSetting->max_entrust_num = $param['max_entrust_num'];
$feeSetting->max_hold_num = $param['max_hold_num'];
$feeSetting->min_withdrawal_num = empty($param['min_withdrawal_num']) ? 0 :$param['min_withdrawal_num'];
$feeSetting->min_recharge_num = empty($param['min_recharge_num']) ? 0 :$param['min_recharge_num'];
$feeSetting->save();
// 设置缓存
$fee_key = $this->getTradeFeeKey($param['market_type']);
$redis = $this->getRedis();
$redis->del($fee_key);
$redis->hMSet($fee_key, $param);
return $this->toData('0', 'SUCCESS', []);
} catch (\Exception $exception) {
return $this->toData('1', '系统繁忙', [$exception->getMessage(), $exception->getTrace()]);
}
}
public function edit($param)
{
try {
if (empty($param['id']) || !is_numeric($param['id'])) {
return $this->toData('1', '目标不存在', []);
}
$feeSetting = FeeSettingModel::where('id', $param['id'])->find();
if (empty($feeSetting)) {
return $this->toData('1', '目标不存在', []);
}
$marketTypeIds = array_keys(StockMarketModel::STOCK_MARKET_TYPE);
if (empty($param['market_type']) || !in_array($param['market_type'], $marketTypeIds)) {
return $this->toData('1', '市场类型无效', []);
}
if (!is_numeric($param['buy_fee']) || $param['buy_fee'] < 0) {
return $this->toData('1', '买入手续费无效', []);
}
if (in_array($param['market_type'], [3, 4, 5, 6, 7, 9, 12, 14])) {
if (empty($param['purchase_fee']) || !is_numeric($param['purchase_fee']) || $param['purchase_fee'] < 0) {
return $this->toData('1', '申购手续费无效', []);
}
}
if (!is_numeric($param['sale_fee']) || $param['sale_fee'] < 0) {
return $this->toData('1', '卖出手续费无效', []);
}
// if(empty($param['purchase_fee']) || !is_numeric($param['purchase_fee']) || $param['purchase_fee'] < 0){
// return $this->toData('1', '申购手续费无效', []);
// }
// 结算方式:0固定费用,1按比例结算
if (!isset($param['pay_type']) || !in_array($param['pay_type'], array_keys(FeeSettingModel::$payTypeList))) {
return $this->toData('1', '结算方式无效', []);
}
// 买入最小下单金额
if (empty($param['min_buy_num']) || !is_numeric($param['min_buy_num']) || ceil($param['min_buy_num']) != $param['min_buy_num']) {
return $this->toData('1', '买入最小下单金额无效', []);
}
//卖出最小下单金额
if (empty($param['min_sale_num']) || !is_numeric($param['min_sale_num']) || ceil($param['min_sale_num']) != $param['min_sale_num']) {
return $this->toData('1', '卖出最小下单金额无效', []);
}
// max_entrust_num
if (empty($param['max_entrust_num']) || !is_numeric($param['max_entrust_num']) || ceil($param['max_entrust_num']) != $param['max_entrust_num']) {
return $this->toData('1', '最大挂单数量无效', []);
}
// 最大持仓数量
if (empty($param['max_hold_num']) || !is_numeric($param['max_hold_num']) || ceil($param['max_hold_num']) != $param['max_hold_num']) {
return $this->toData('1', '最大持仓数量无效', []);
}
$count = FeeSettingModel::where('market_type', $param['market_type'])->where('id', '<>', $feeSetting->id)->count();
if ($count > 0) {
return $this->toData('1', '市场类型已经存在', []);
}
$feeSetting->market_type = $param['market_type'];
$feeSetting->buy_fee = $param['buy_fee'];
$feeSetting->sale_fee = $param['sale_fee'];
$feeSetting->pay_type = $param['pay_type'];
$feeSetting->min_buy_num = $param['min_buy_num'];
$feeSetting->purchase_fee = $param['purchase_fee'];
$feeSetting->min_sale_num = $param['min_sale_num'];
$feeSetting->max_entrust_num = $param['max_entrust_num'];
$feeSetting->max_hold_num = $param['max_hold_num'];
$feeSetting->min_withdrawal_num = empty($param['min_withdrawal_num']) ? 0 :$param['min_withdrawal_num'];
$feeSetting->min_recharge_num = empty($param['min_recharge_num']) ? 0 :$param['min_recharge_num'];
$feeSetting->save();
// 设置缓存
$fee_key = $this->getTradeFeeKey($param['market_type']);
$redis = $this->getRedis();
$redis->del($fee_key);
$redis->hMSet($fee_key, $param);
return $this->toData('0', 'SUCCESS', []);
} catch (\Exception $exception) {
return $this->toData('1', '系统繁忙', []);
}
}
}