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
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', '系统繁忙', []);
|
|
}
|
|
}
|
|
}
|