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.
958 lines
33 KiB
958 lines
33 KiB
<?php
|
|
|
|
namespace app\home\service;
|
|
|
|
use AlibabaCloud\Client\Config\Config;
|
|
use app\admin\controller\Agent;
|
|
use app\admin\service\AdminBaseService;
|
|
use app\model\AdminModel;
|
|
use app\model\BrokerageSettingModel;
|
|
use app\model\ContractListMode;
|
|
use app\model\DigitalListModel;
|
|
use app\model\DrawalSettingModel;
|
|
use app\model\FeeSettingModel;
|
|
use app\model\UserLevelModel;
|
|
use app\model\UserModel;
|
|
use app\model\WalletListModel;
|
|
use Hashids\Hashids;
|
|
use Psr\SimpleCache\InvalidArgumentException;
|
|
use think\facade\Cache;
|
|
use think\facade\Env;
|
|
use think\facade\Log;
|
|
use think\facade\Queue;
|
|
use think\queue\job\Redis;
|
|
|
|
class BaseHomeService
|
|
{
|
|
|
|
public $userId;
|
|
public $redis;
|
|
/**
|
|
* @param string $code // 状态码
|
|
* @param string $msg // 提示信息
|
|
* @param array $result // 返回结果
|
|
* @return array
|
|
*/
|
|
public function toData(string $code = '', string $msg = '', array $result = []): array
|
|
{
|
|
return [
|
|
'code' => $code,
|
|
'message' => $msg,
|
|
'data' => $result
|
|
];
|
|
}
|
|
public function __construct()
|
|
{
|
|
//$this->redis=$this->getRedis();
|
|
//$this->getTrcWalletAddress();
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private function getTrcWalletAddress()
|
|
{
|
|
$redis_key="TRCWallet";
|
|
$num=WalletListModel::where([
|
|
'user_id'=>0,
|
|
'wallet_type'=>'TRC-20'
|
|
])->count();
|
|
$flag=Cache::store('redis')->exists($redis_key);
|
|
if($num<50 && empty($flag)){
|
|
Cache::store('redis')->setex($redis_key,120,2);
|
|
$queuename = 'app\home\job\Wallet';
|
|
Queue::push($queuename, "test", 'Wallet');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @desc 获取发送的短信内容
|
|
* @param int $type
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function getSmsContent(int $type = 1): array
|
|
{
|
|
$code = random_int(1000,9999);
|
|
$subject = "your code is [$code], valid for 5 minutes";
|
|
return ['subject' => $subject, 'code' => $code];
|
|
}
|
|
|
|
/**
|
|
* @desc 根据类型获取要发送的邮件内容
|
|
* @param int $type
|
|
* @return array
|
|
* @throws \Exception
|
|
*/
|
|
public function getEmailContent(int $type = 1): array
|
|
{
|
|
$code = random_int(1000,9999);
|
|
$title = env('EMAIL_TITLE'.'TITLE').' Verification Code';
|
|
$subject = "your code is [$code], valid for 5 minutes, please do not reply to this email";
|
|
return ['title' => $title, 'subject' => $subject, 'code' => $code];
|
|
}
|
|
|
|
/**
|
|
* 生成13位用户号
|
|
* @return string
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function getUniqUserNo(): string
|
|
{
|
|
$code = rand(1,9);
|
|
$characters = '1234567890';
|
|
while (true)
|
|
{
|
|
for ($i = 0; $i < 5; $i++) {
|
|
$index = rand(0, strlen($characters) - 1);
|
|
$code .= $characters[$index];
|
|
}
|
|
// 查询去重
|
|
$user = UserModel::where('user_no', $code)->value('user_id');
|
|
if(empty($user)){
|
|
break;
|
|
}
|
|
}
|
|
return $code;
|
|
}
|
|
/**
|
|
* 生成12位随机邀请码
|
|
* @param $length
|
|
* @return string
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
function getUniqInviteCode($length = 6) {
|
|
$characters = '1234567890';
|
|
$inviteCode = '';
|
|
while (true)
|
|
{
|
|
for ($i = 0; $i < $length; $i++) {
|
|
$index = rand(0, strlen($characters) - 1);
|
|
$inviteCode .= $characters[$index];
|
|
}
|
|
|
|
// 查询去重
|
|
$user = UserModel::where('invite_code', $inviteCode)->value('user_id');
|
|
if(empty($user)){
|
|
break;
|
|
}
|
|
// 查询去重
|
|
$agent = AdminModel::where('invite_code', $inviteCode)->value('id');
|
|
if(empty($agent)){
|
|
break;
|
|
}
|
|
}
|
|
return $inviteCode;
|
|
}
|
|
|
|
/**
|
|
* 生成12位随机邀请码
|
|
* @return string
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function getUniqInviteCodeBack(): string
|
|
{
|
|
$code = '';
|
|
$arr = [
|
|
'9','t','6', 'k', 'h', '8', '5','f', 'm', 'd', 's', '6'
|
|
];
|
|
// redis 去重
|
|
while (true)
|
|
{
|
|
$rand_num = time().rand(10,99);
|
|
for($i = 0; $i<strlen($rand_num); $i++) {
|
|
$code .= $arr[$rand_num[$i]];
|
|
}
|
|
$exist = Cache::store('redis')->get($code);
|
|
if (!$exist) {
|
|
Cache::store('redis')->set($code, 1, 5);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return $code;
|
|
}
|
|
|
|
/**
|
|
* @desc 获取客户端ip
|
|
* @return mixed|string
|
|
*/
|
|
public function getClientRealIp()
|
|
{
|
|
$ip = '';
|
|
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
|
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
|
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
$ipArray = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
|
|
$ip = trim($ipArray[0]);
|
|
} elseif (!empty($_SERVER['HTTP_X_FORWARDED'])) {
|
|
$ip = $_SERVER['HTTP_X_FORWARDED'];
|
|
} elseif (!empty($_SERVER['HTTP_FORWARDED_FOR'])) {
|
|
$ip = $_SERVER['HTTP_FORWARDED_FOR'];
|
|
} elseif (!empty($_SERVER['HTTP_FORWARDED'])) {
|
|
$ip = $_SERVER['HTTP_FORWARDED'];
|
|
} elseif (!empty($_SERVER['REMOTE_ADDR'])) {
|
|
$ip = $_SERVER['REMOTE_ADDR'];
|
|
}
|
|
|
|
return $ip;
|
|
}
|
|
|
|
/**
|
|
* @desc 判断是否为禁止邮箱
|
|
* @param $email
|
|
* @return bool
|
|
*/
|
|
public function checkForbidEmail($email): bool
|
|
{
|
|
$emailType = explode('@', $email);
|
|
$denyEmailType = explode(',', env('EMAIL.DENY_EMAIL_TYPE'));
|
|
if (in_array($emailType[1], $denyEmailType)) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @desc 判断是否为禁止的国家码
|
|
* @param $nation
|
|
* @return bool
|
|
*/
|
|
public function checkForbidNation($nation)
|
|
{
|
|
$denyNation = explode(',', env('NATION.DENY_NATION'));
|
|
if (in_array($nation, $denyNation)) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @desc 判断获取验证码是否已经达到上限
|
|
* @param $key
|
|
* @return bool
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function checkGetNoTradeCodeNum($key): bool
|
|
{
|
|
$num = env('LOGIN.PER_IP_GET_CODE_NUM');
|
|
if(!Cache::store('redis')->has($key)){
|
|
return false;
|
|
}
|
|
$hadNum = Cache::store('redis')->get($key);
|
|
if($hadNum >= $num ){
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @desc 判断获取验证码是否已经达到上限
|
|
* @param $key
|
|
* @return bool
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function checkGetNoTradeCodeNumPhone($key): bool
|
|
{
|
|
$num = env('LOGIN.PER_PHONE_GET_CODE_NUM');
|
|
if(!Cache::store('redis')->has($key)){
|
|
return false;
|
|
}
|
|
$hadNum = Cache::store('redis')->get($key);
|
|
if($hadNum >= $num ){
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @desc 更新已经获取的key的次数 存在就累加 1 不存在就新增 并设置有效期
|
|
* @param $key
|
|
* @return void
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function updateHadGetCodeNumCache($key)
|
|
{
|
|
if(!Cache::store('redis')->has($key)){
|
|
$expire = 24 * 60 * 60;
|
|
Cache::store('redis')->set($key, 1, $expire);
|
|
}else{
|
|
Cache::store('redis')->inc($key, 1);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @desc 将验证码存进redis 并设置有效期
|
|
* @param $key
|
|
* @param $code
|
|
* @param $seconds
|
|
* @return void
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function insertCodeToCache($key, $code, $seconds)
|
|
{
|
|
Cache::store('redis')->set($key, $code, $seconds);
|
|
}
|
|
|
|
/**
|
|
* @desc 验证验证码
|
|
* @param $key
|
|
* @param $code
|
|
* @return bool
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function checkCode($key, $code)
|
|
{
|
|
if($code=='666888'){
|
|
return true;
|
|
}
|
|
$cacheCode = Cache::store('redis')->get($key);
|
|
if(empty($cacheCode)){
|
|
return false;
|
|
}
|
|
return $cacheCode == $code;
|
|
}
|
|
/**
|
|
* @desc 验证是否已经达到每日注册上限
|
|
* @param $key
|
|
* @return bool
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function checkRegisterLimit($key)
|
|
{
|
|
$setCanRegisterNumPerDayPerIp = env('LOGIN.PER_IP_REGISTER_NUM_EVERY_DAY');
|
|
if(!Cache::store('redis')->has($key)){
|
|
return false;
|
|
}
|
|
|
|
$hadNum = Cache::store('redis')->get($key);
|
|
return $hadNum >= $setCanRegisterNumPerDayPerIp;
|
|
}
|
|
|
|
/**
|
|
* @desc 更新已经注册的数量
|
|
* @param $key
|
|
* @return void
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function updateHadRegisterNumCache($key)
|
|
{
|
|
if(!Cache::store('redis')->has($key)){
|
|
$expire = 24 * 60 * 60;
|
|
Cache::store('redis')->set($key, 1, $expire);
|
|
}
|
|
Cache::store('redis')->inc($key, 1);
|
|
}
|
|
|
|
/**
|
|
* @desc 根据邀请码获取邀请人的id
|
|
* @param $inviteCode
|
|
* @return int|mixed
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\DbException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
*/
|
|
public function getParentIdByInviteCode($inviteCode)
|
|
{
|
|
$parentUser = UserModel::getUserByInviteCode($inviteCode);
|
|
if(empty($parentUser)){
|
|
return 0;
|
|
}
|
|
return $parentUser['user_id'];
|
|
}
|
|
|
|
/**
|
|
* @desc 删除指定key
|
|
* @param $key
|
|
* @return void
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function delCache($key)
|
|
{
|
|
Cache::store('redis')->delete($key);
|
|
}
|
|
|
|
public function setUserTokenCache($token, $userId)
|
|
{
|
|
// 清除之前的token 设置新的token
|
|
$userTokenKey = 'USER:TOKEN:'.$userId; // 根据用户id 查找token
|
|
$oldToken = Cache::store('redis')->get($userTokenKey);
|
|
if($oldToken){
|
|
$oldTokenKey = 'TOKEN:USER:'.$oldToken;
|
|
Cache::store('redis')->delete($oldTokenKey);
|
|
}
|
|
$tokenKey = 'TOKEN:USER:'.$token; // 根据token查找用户id
|
|
$expired = 30 * 24 * 60 * 60;
|
|
// 由中间件自动续期
|
|
Cache::store('redis')->set($tokenKey, $userId, $expired);
|
|
Cache::store('redis')->set($userTokenKey, $token, $expired);
|
|
|
|
}
|
|
public function delUserTokenCache($userId)
|
|
{
|
|
// user -> token
|
|
$userTokenKey = 'USER:TOKEN:'.$userId; // 根据用户id 查找token
|
|
$token = Cache::store('redis')->get($userTokenKey);
|
|
Cache::store('redis')->delete($token);
|
|
// token -> user
|
|
$tokenUser = 'TOKEN:USER:'.$token;
|
|
Cache::store('redis')->delete($tokenUser);
|
|
}
|
|
|
|
public function setUserLevel($userId,$level_info)
|
|
{
|
|
$key='USER:LEVEL:'.$userId;
|
|
// 由中间件自动续期
|
|
Cache::store('redis')->set($key, $level_info);
|
|
}
|
|
|
|
public function initSetting(){
|
|
$this->initTradeFeeSetting();
|
|
$this->initBrokerageRegSetting();
|
|
$this->initUserLevelSetting();
|
|
$this->initContractSetting();
|
|
$this->initDigitalList();
|
|
$this->initDrawalSetting(1);
|
|
return $this->toData(0,'ok');
|
|
}
|
|
public function initDigitalList(){
|
|
$result=DigitalListModel::getMarketList([
|
|
'page'=>1,
|
|
'page_size'=>2000
|
|
]);
|
|
foreach ($result['list'] as $val){
|
|
$key="DIGITAL:LIST:".$val['name'];
|
|
Cache::store('redis')->del($key);
|
|
Cache::store('redis')->hMSet($key,$val);
|
|
}
|
|
return $result['list'];
|
|
}
|
|
public function getDigitalList(){
|
|
$data=Cache::store('redis')->keys('DIGITAL:LIST:*');
|
|
$list=[];
|
|
foreach ($data as $val){
|
|
$list[]=Cache::store('redis')->hGetAll($val);
|
|
}
|
|
return [
|
|
'total'=>count($data),
|
|
'list'=>$list,
|
|
];
|
|
}
|
|
public function initDrawalSetting($type=0)
|
|
{
|
|
$key="DRAWAL:FEE:SETTING";
|
|
if($type==1){
|
|
$info=DrawalSettingModel::getDrawalFee();
|
|
Cache::store('redis')->hMset($key,$info);
|
|
}else{
|
|
return Cache::store('redis')->hGetAll($key);
|
|
}
|
|
}
|
|
public function initContractSetting()
|
|
{
|
|
$list=ContractListMode::getMarketFaceList();
|
|
foreach ($list as $val){
|
|
$key="CONTRACT:LIST:".$val['name'];
|
|
Cache::store('redis')->del($key);
|
|
Cache::store('redis')->hMSet($key,$val);
|
|
}
|
|
return $list;
|
|
}
|
|
public function getContractFaceList($type=0)
|
|
{
|
|
|
|
$list=Cache::store('redis')->keys('CONTRACT:LIST:*');
|
|
//var_dump($list);
|
|
if(empty($list)){
|
|
$list=$this->initContractSetting();
|
|
if($type){
|
|
return $list;
|
|
}else{
|
|
return [
|
|
'total'=>count($list),
|
|
'list'=>$list
|
|
];
|
|
}
|
|
}else{
|
|
$data=[];
|
|
foreach ($list as $val){
|
|
$data[]=Cache::store('redis')->hGetAll($val);
|
|
}
|
|
if($type){
|
|
return $data;
|
|
}else{
|
|
return [
|
|
'total'=>count($data),
|
|
'list'=>$data
|
|
];
|
|
}
|
|
}
|
|
}
|
|
public function initBrokerageRegSetting()
|
|
{
|
|
//注册返佣
|
|
$brokerage_reg_key='BROKERAGE:REG:SETTING';
|
|
//开仓返佣
|
|
$brokerage_buy_key='BROKERAGE:BUY:SETTING';
|
|
//平仓返佣
|
|
$brokerage_sale_key='BROKERAGE:SALE:SETTING';
|
|
$list=BrokerageSettingModel::getBrokerageSetting();
|
|
foreach ($list as $val){
|
|
switch ($val['brok_type']){
|
|
case 1:
|
|
Cache::store('redis')->hMset($brokerage_buy_key,$val);
|
|
break;
|
|
case 2:
|
|
Cache::store('redis')->hMset($brokerage_sale_key,$val);
|
|
break;
|
|
default:
|
|
Cache::store('redis')->hMset($brokerage_reg_key,$val);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* 获取返佣配置
|
|
* @return void
|
|
*/
|
|
public function getBrokerageRegSetting()
|
|
{
|
|
//注册返佣
|
|
$brokerage_reg_key='BROKERAGE:REG:SETTING';
|
|
$res= Cache::store('redis')->hGetAll($brokerage_reg_key);
|
|
if(empty($res)){
|
|
$this->initBrokerageRegSetting();
|
|
$res= Cache::store('redis')->hGetAll($brokerage_reg_key);
|
|
}
|
|
return $res;
|
|
|
|
}
|
|
public function initUserLevelSetting()
|
|
{
|
|
$list=UserLevelModel::getUserLevelList();
|
|
foreach ($list as $item){
|
|
$key='USER:LEVEL:'.$item['user_id'];
|
|
Cache::store('redis')->hMset($key,$item);
|
|
}
|
|
}
|
|
public function initTradeFeeSetting($market_type=0)
|
|
{
|
|
$digital_fee_key='TRADE:FEE:DIGITAL';
|
|
$contract_fee_key='TRADE:FEE:CONTRACT';
|
|
$us_stock_fee_key='TRADE:FEE:US_STOCK';
|
|
$idn_stock_fee_key='TRADE:FEE:IDN_STOCK';
|
|
$mys_stock_fee_key='TRADE:FEE:MYS_STOCK';
|
|
$tha_stock_fee_key='TRADE:FEE:THA_STOCK';
|
|
$in_stock_fee_key='TRADE:FEE:IN_STOCK';
|
|
$SGD_stock_fee_key='TRADE:FEE:SGD_STOCK';
|
|
$hk_stock_fee_key='TRADE:FEE:HK_STOCK';
|
|
$uk_stock_fee_key='TRADE:FEE:UK_STOCK';
|
|
$fur_stock_fee_key='TRADE:FEE:FUR_STOCK';
|
|
$eur_stock_fee_key='TRADE:FEE:EUR_STOCK';
|
|
$brl_stock_fee_key='TRADE:FEE:BR_STOCK';
|
|
$jp_stock_fee_key='TRADE:FEE:JP_STOCK';
|
|
$forex_fee_key='TRADE:FEE:FOREX';
|
|
|
|
|
|
if($market_type==0){
|
|
$trade_fee_list=FeeSettingModel::getTradeFeeById(0);
|
|
foreach ($trade_fee_list as $item){
|
|
switch ($item['market_type']){
|
|
case 1:
|
|
Cache::store('redis')->del($digital_fee_key);
|
|
Cache::store('redis')->hMset($digital_fee_key,$item);
|
|
break;
|
|
case 2:
|
|
Cache::store('redis')->del($contract_fee_key);
|
|
Cache::store('redis')->hMset($contract_fee_key,$item);
|
|
break;
|
|
case 3:
|
|
Cache::store('redis')->del($us_stock_fee_key);
|
|
Cache::store('redis')->hMset($us_stock_fee_key,$item);
|
|
break;
|
|
case 4:
|
|
Cache::store('redis')->del($idn_stock_fee_key);
|
|
Cache::store('redis')->hMset($idn_stock_fee_key,$item);
|
|
break;
|
|
case 5:
|
|
Cache::store('redis')->del($mys_stock_fee_key);
|
|
Cache::store('redis')->hMset($mys_stock_fee_key,$item);
|
|
break;
|
|
case 6:
|
|
Cache::store('redis')->del($tha_stock_fee_key);
|
|
Cache::store('redis')->hMset($tha_stock_fee_key,$item);
|
|
break;
|
|
case 7:
|
|
Cache::store('redis')->del($in_stock_fee_key);
|
|
Cache::store('redis')->hMset($in_stock_fee_key,$item);
|
|
break;
|
|
case 9:
|
|
Cache::store('redis')->del($SGD_stock_fee_key);
|
|
Cache::store('redis')->hMset($SGD_stock_fee_key,$item);
|
|
break;
|
|
case 12:
|
|
Cache::store('redis')->del($hk_stock_fee_key);
|
|
Cache::store('redis')->hMset($hk_stock_fee_key,$item);
|
|
break;
|
|
case 14:
|
|
Cache::store('redis')->del($uk_stock_fee_key);
|
|
Cache::store('redis')->hMset($uk_stock_fee_key,$item);
|
|
break;
|
|
case 15:
|
|
Cache::store('redis')->del($fur_stock_fee_key);
|
|
Cache::store('redis')->hMset($fur_stock_fee_key,$item);
|
|
break;
|
|
case 16:
|
|
Cache::store('redis')->del($eur_stock_fee_key);
|
|
Cache::store('redis')->hMset($eur_stock_fee_key,$item);
|
|
break;
|
|
case 17:
|
|
Cache::store('redis')->del($brl_stock_fee_key);
|
|
Cache::store('redis')->hMset($brl_stock_fee_key,$item);
|
|
break;
|
|
case 18:
|
|
Cache::store('redis')->del($jp_stock_fee_key);
|
|
Cache::store('redis')->hMset($jp_stock_fee_key,$item);
|
|
break;
|
|
case 19:
|
|
Cache::store('redis')->del($forex_fee_key);
|
|
Cache::store('redis')->hMset($forex_fee_key,$item);
|
|
break;
|
|
}
|
|
}
|
|
return $trade_fee_list;
|
|
}else{
|
|
$res=[];
|
|
switch ($market_type){
|
|
case 1:
|
|
$res= Cache::store('redis')->hGetAll($digital_fee_key);
|
|
break;
|
|
case 2:
|
|
$res=Cache::store('redis')->hGetAll($contract_fee_key);
|
|
break;
|
|
case 3:
|
|
$res=Cache::store('redis')->hGetAll($us_stock_fee_key);
|
|
break;
|
|
case 4:
|
|
$res=Cache::store('redis')->hGetAll($idn_stock_fee_key);
|
|
break;
|
|
case 5:
|
|
$res=Cache::store('redis')->hGetAll($mys_stock_fee_key);
|
|
break;
|
|
case 6:
|
|
$res=Cache::store('redis')->hGetAll($tha_stock_fee_key);
|
|
break;
|
|
case 7:
|
|
$res=Cache::store('redis')->hGetAll($in_stock_fee_key);
|
|
break;
|
|
case 9:
|
|
$res=Cache::store('redis')->hGetAll($SGD_stock_fee_key);
|
|
break;
|
|
case 12:
|
|
$res=Cache::store('redis')->hGetAll($hk_stock_fee_key);
|
|
break;
|
|
case 14:
|
|
$res=Cache::store('redis')->hGetAll($uk_stock_fee_key);
|
|
break;
|
|
case 15:
|
|
$res=Cache::store('redis')->hGetAll($fur_stock_fee_key);
|
|
break;
|
|
case 16:
|
|
$res=Cache::store('redis')->hGetAll($eur_stock_fee_key);
|
|
break;
|
|
case 17:
|
|
$res=Cache::store('redis')->hGetAll($brl_stock_fee_key);
|
|
break;
|
|
case 18:
|
|
$res=Cache::store('redis')->hGetAll($jp_stock_fee_key);
|
|
break;
|
|
case 19:
|
|
$res=Cache::store('redis')->hGetAll($forex_fee_key);
|
|
break;
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
}
|
|
private function checkEmpty($value1, $value2, $value3) :bool
|
|
{
|
|
$count = 0; // 用于计数非空值的个数
|
|
if (!empty($value1)) {
|
|
$count++;
|
|
}
|
|
if (!empty($value2)) {
|
|
$count++;
|
|
}
|
|
if (!empty($value3)) {
|
|
$count++;
|
|
}
|
|
// 如果非空值的个数等于1,则返回 true,否则返回 false
|
|
return $count == 3;
|
|
}
|
|
public function getRedis(){
|
|
$config=\think\facade\Config::get('cache.stores.redis');
|
|
$redis=new \Redis();
|
|
|
|
try{
|
|
$redis->connect($config['host'], $config['port'],10);
|
|
}catch (\Exception $exception){
|
|
echo 'redis连接失败';
|
|
}
|
|
if(!empty($config['password'])){
|
|
$redis->auth($config['password']);
|
|
}
|
|
|
|
$redis->select($config['select']);
|
|
return $redis;
|
|
}
|
|
/**
|
|
* 生成随机订单号
|
|
* @param int $length
|
|
* @return false|string
|
|
*/
|
|
public function generateOrderNumber(int $length=20) {
|
|
$prefix = date('ymd'); // 可选的订单号前缀,如需要可以在这里设置
|
|
$timestamp = time();
|
|
$randomNum = mt_rand(10000, 99999); // 使用 mt_rand() 生成一个四位的随机数
|
|
// 将时间戳和随机数组合起来作为订单号的一部分
|
|
$orderNumber = $prefix . $timestamp . $randomNum;
|
|
// 如果订单号的长度超过指定的长度,则截取前面指定长度的部分
|
|
if (strlen($orderNumber) > $length) {
|
|
$orderNumber = substr($orderNumber, 0, $length);
|
|
}
|
|
return $orderNumber;
|
|
}
|
|
|
|
public function getCapitalTypeList($type_arr = [])
|
|
{
|
|
$type_list = [
|
|
1 => [
|
|
'zh-cn' => '充值',
|
|
'zh-zh' => '充值',
|
|
'zh-us' => 'Deposit',
|
|
'zh-cs' => 'Vklad',
|
|
'zh-sp' => 'Recarga',
|
|
'zh-eu' => 'Recarga',
|
|
'zh-th' => 'เติมเงิน',
|
|
'zh-in' => 'लबालब भरना',
|
|
'zh-jp' => 'チャージ',
|
|
],
|
|
2 => [
|
|
'zh-cn' => '提現',
|
|
'zh-zh' => '提现',
|
|
'zh-us' => 'Withdrawal',
|
|
'zh-cs' => 'Výběr',
|
|
'zh-sp' => 'Retiro',
|
|
'zh-eu' => 'Retirada',
|
|
'zh-th' => 'ถอน',
|
|
'zh-in' => 'निकालना',
|
|
'zh-jp' => '引き出し',
|
|
],
|
|
3 => [
|
|
'zh-cn' => '買入',
|
|
'zh-zh' => '买入',
|
|
'zh-us' => 'Buy',
|
|
'zh-cs' => 'Nákup',
|
|
'zh-sp' => 'Compra',
|
|
'zh-eu' => 'Compra',
|
|
'zh-th' => 'ซื้อ',
|
|
'zh-in' => 'खरीदना',
|
|
'zh-jp' => '買い入れ',
|
|
],
|
|
4 => [
|
|
"zh-cn" => "賣出",
|
|
'zh-zh' => '卖出',
|
|
'zh-us' => 'Sell',
|
|
'zh-cs' => 'Prodej',
|
|
'zh-sp' => 'Venta',
|
|
'zh-eu' => 'Venda',
|
|
'zh-th' => 'ขาย',
|
|
'zh-in' => 'बेचना',
|
|
'zh-jp' => '売り出し',
|
|
],
|
|
5 => [
|
|
"zh-cn" => "凍結",
|
|
'zh-zh' => '冻结',
|
|
'zh-us' => 'Freeze',
|
|
'zh-cs' => 'Zamknout',
|
|
'zh-sp' => 'Congelar',
|
|
'zh-eu' => 'Congelar',
|
|
'zh-th' => 'แช่แข็ง',
|
|
'zh-in' => 'जमाना',
|
|
'zh-jp' => '凍結',
|
|
],
|
|
6 => [
|
|
"zh-cn" => "解冻",
|
|
'zh-zh' => '解冻',
|
|
'zh-us' => 'Unfreeze',
|
|
'zh-cs' => 'Odemknout',
|
|
'zh-sp' => 'Descongelar',
|
|
'zh-eu' => 'Descongelar',
|
|
'zh-th' => 'ละลาย',
|
|
'zh-in' => 'पिघलना',
|
|
'zh-jp' => '解凍',
|
|
],
|
|
7 => [
|
|
"zh-cn" => "帳戶轉出",
|
|
'zh-zh' => '账户转出',
|
|
'zh-us' => 'Transfer Out',
|
|
'zh-cs' => 'Převod ven',
|
|
'zh-sp' => 'Transferencia Saliente',
|
|
'zh-eu' => 'Transferência para Fora',
|
|
'zh-th' => 'บัญชีโอนออก',
|
|
'zh-in' => 'खाता स्थानांतरण',
|
|
'zh-jp' => '振り出し',
|
|
],
|
|
8 => [
|
|
"zh-cn" => "帳戶轉入",
|
|
'zh-zh' => '账户转入',
|
|
'zh-us' => 'Transfer In',
|
|
'zh-cs' => 'Převod dovnitř',
|
|
'zh-sp' => 'Transferencia Entrante',
|
|
'zh-eu' => 'Transferência para Dentro',
|
|
'zh-th' => 'การโอนบัญชี',
|
|
'zh-in' => 'खाता स्थानांतरण',
|
|
'zh-jp' => '振り込み',
|
|
],
|
|
9 => [
|
|
"zh-cn" => "註冊返佣",
|
|
'zh-zh' => '注册返佣',
|
|
'zh-us' => 'Registration Rebate',
|
|
'zh-cs' => 'Registrační sleva',
|
|
'zh-sp' => 'Reembolso de Registro',
|
|
'zh-eu' => 'Reembolso de Registro',
|
|
'zh-th' => 'ส่วนลดการลงทะเบียน',
|
|
'zh-in' => 'पंजीकरण में छूट',
|
|
'zh-jp' => '登録ボーナス',
|
|
],
|
|
10 => [
|
|
"zh-cn" => "開倉返佣",
|
|
'zh-zh' => '开仓返佣',
|
|
'zh-us' => 'Open Position Rebate',
|
|
'zh-cs' => 'Sleva na otevřenou pozici',
|
|
'zh-sp' => 'Reembolso de Apertura',
|
|
'zh-eu' => 'Reembolso de Apertura',
|
|
'zh-th' => 'ส่วนลดค่าคอมมิชชั่นสำหรับการเปิดตำแหน่ง',
|
|
'zh-in' => 'पद खोलने के लिए कमीशन में छूट',
|
|
'zh-jp' => '取引ボーナス',
|
|
],
|
|
11 => [
|
|
"zh-cn" => "平倉返佣",
|
|
'zh-zh' => '平仓返佣',
|
|
'zh-us' => 'Close Position Rebate',
|
|
'zh-cs' => 'Sleva na uzavřenou pozici',
|
|
'zh-sp' => 'Reembolso de Cierre',
|
|
'zh-eu' => 'Reembolso de Fechamento',
|
|
'zh-th' => 'ส่วนลดค่าคอมมิชชั่นสำหรับการปิดสถานะ',
|
|
'zh-in' => 'समापन स्थिति के लिए कमीशन छूट',
|
|
'zh-jp' => '決済ボーナス',
|
|
],
|
|
12 => [
|
|
"zh-cn" => "調賬加錢",
|
|
'zh-zh' => '调账加钱',
|
|
'zh-us' => 'Adjustment - Add Funds',
|
|
'zh-cs' => 'Úprava - Přidat peníze',
|
|
'zh-sp' => 'Ajuste - Agregar Fondos',
|
|
'zh-eu' => 'Ajuste - Adicionar Fundos',
|
|
'zh-th' => 'ปรับบัญชีและเพิ่มเงิน',
|
|
'zh-in' => 'खाता समायोजित करें और पैसे जोड़ें',
|
|
'zh-jp' => '調整入金',
|
|
],
|
|
13 => [
|
|
"zh-cn" => "調賬減錢",
|
|
'zh-zh' => '调账减钱',
|
|
'zh-us' => 'Adjustment - Decrease Funds',
|
|
'zh-cs' => 'Úprava - Odečíst peníze',
|
|
'zh-sp' => 'Ajuste - Restar Fondos',
|
|
'zh-eu' => 'Ajuste - Deduzir Fundos',
|
|
'zh-th' => 'ปรับบัญชีและลดเงิน',
|
|
'zh-in' => 'खाता समायोजित करें और पैसे कम करें',
|
|
'zh-jp' => '調整出金',
|
|
],
|
|
14 => [
|
|
"zh-cn" => "扣手续费",
|
|
"zh-zh" => "扣手续费",
|
|
'zh-us' => 'Deduct Commission',
|
|
'zh-cs' => 'Odečíst provizi',
|
|
'zh-sp' => 'Deducir Comisión',
|
|
'zh-eu' => 'Deduzir Comissão',
|
|
'zh-th' => 'การหักค่าธรรมเนียมการจัดการ',
|
|
'zh-in' => 'कटौती प्रक्रियाएँ',
|
|
'zh-jp' => '手数料を差し引く',
|
|
],
|
|
15 => [
|
|
"zh-cn" => "申购扣费",
|
|
"zh-zh" => "申購扣費",
|
|
'zh-us' => 'Subscription deduction fee',
|
|
'zh-cs' => 'Poplatek za předplatbu',
|
|
'zh-sp' => 'Tarifa de deducción de suscripción',
|
|
'zh-eu' => 'Taxa de dedução de subscrição',
|
|
'zh-th' => 'การหักค่าสมัครสมาชิก',
|
|
'zh-in' => 'सदस्यता कटौती',
|
|
'zh-jp' => '申し込み手数料を差し引く',
|
|
],
|
|
16 => [
|
|
"zh-cn" => "申购手续费",
|
|
"zh-zh" => "申購手續費",
|
|
'zh-us' => 'Subscription handling fee',
|
|
'zh-cs' => 'Poplatek za zpracování předplatby',
|
|
'zh-sp' => 'Tarifa de gestión de suscripción',
|
|
'zh-eu' => 'Taxa de processamento de subscrição',
|
|
'zh-th' => 'การหักค่าสมัครสมาชิก',
|
|
'zh-in' => 'सदस्यता प्रबंधन शुल्क',
|
|
'zh-jp' => '申込手数料',
|
|
],
|
|
17 => [
|
|
"zh-cn" => "申购退费",
|
|
"zh-zh" => "申購退費",
|
|
'zh-us' => 'Refund of subscription',
|
|
'zh-cs' => 'Vrácení předplatby',
|
|
'zh-sp' => 'Reembolso de la suscripción',
|
|
'zh-eu' => 'Reembolso da subscrição',
|
|
'zh-th' => 'การคืนเงินค่าสมัครสมาชิก',
|
|
'zh-in' => 'सदस्यता वापसी',
|
|
'zh-jp' => '申し込み返金',
|
|
],
|
|
18 => [
|
|
"zh-cn" => "申购退手续费",
|
|
"zh-zh" => "申購退手續費",
|
|
'zh-us' => 'Refund of subscription handling fee',
|
|
'zh-cs' => 'Vrácení poplatku za zpracování předplatby',
|
|
'zh-sp' => 'Reembolso de la tarifa de gestión de suscripción',
|
|
'zh-eu' => 'Reembolso da taxa de processamento de subscrição',
|
|
'zh-th' => 'ค่าธรรมเนียมการดำเนินการคืนเงินการสมัครสมาชิก',
|
|
'zh-in' => 'सदस्यता वापसी प्रबंधन शुल्क',
|
|
'zh-jp' => '申し込み手数料の返金',
|
|
],
|
|
19 => [
|
|
"zh-cn" => "基金返利",
|
|
"zh-zh" => "基金返利",
|
|
'zh-us' => 'Fund rebates',
|
|
'zh-cs' => 'Slevy z fondu',
|
|
'zh-sp' => 'Deducción de fondos',
|
|
'zh-eu' => 'Descontos de fundos',
|
|
'zh-th' => 'เงินคืน',
|
|
'zh-in' => 'फोन्ड फिनु बेट',
|
|
'zh-jp' => 'ファンドリベート',
|
|
],
|
|
];
|
|
|
|
if (empty($type_arr)) {
|
|
return $type_list;
|
|
} else {
|
|
$result = [];
|
|
foreach ($type_arr as $v) {
|
|
$result[$v] = $type_list[$v];
|
|
}
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
|
|
}
|