diff --git a/app/admin/service/setting/BlockStockService.php b/app/admin/service/setting/BlockStockService.php index 68f7fe34..b2cbf3b6 100644 --- a/app/admin/service/setting/BlockStockService.php +++ b/app/admin/service/setting/BlockStockService.php @@ -170,6 +170,7 @@ class BlockStockService extends AdminBaseService $blockStock->down_limit = $stock->down_limit; $blockStock->create_time = date('Y-m-d H:i:s'); $blockStock->update_time = date('Y-m-d H:i:s'); + $blockStock->buy_pwd = $param['buy_pwd'] ?? ''; $blockStock->save(); // 加入缓存 @@ -322,6 +323,7 @@ class BlockStockService extends AdminBaseService $blockStock->up_limit = $stock->up_limit;; $blockStock->down_limit = $stock->down_limit; $blockStock->update_time = date('Y-m-d H:i:s'); + $blockStock->buy_pwd = $param['buy_pwd'] ?? ''; $blockStock->save(); // 加入缓存 diff --git a/app/home/service/UserService.php b/app/home/service/UserService.php index 63fe1109..fea05409 100644 --- a/app/home/service/UserService.php +++ b/app/home/service/UserService.php @@ -24,8 +24,11 @@ use app\model\UserModel; use app\model\UserMoneyLogModel; use app\model\UserMoneyModel; use app\model\UserStockHkdModel; +use app\model\UserStockJpLogModel; +use app\model\UserStockJpModel; use app\model\UserStockLogModel; use app\model\UserStockModel; +use app\model\UserVerifyLogModel; use app\utility\Jwt; use app\utility\UnqId; use think\exception\ValidateException; @@ -216,17 +219,37 @@ class UserService extends BaseHomeService } } - // 检测用户是否为有效VIP [判断规则 - 用户购买过VIP, 每个VIP有效期30天] + // 检测用户是否为有效VIP $isVip = false; $vipExpire = ""; //vip到期时间 + $vipType = ""; // vip类型:青铜、白金、钻石; (管理端赠送的vip,以及vip兑换码兑换的都是显示免费标签) $purchaseInfo = PurchaseVipModel::where(['user_id'=>$userId])->find(); if (!empty($purchaseInfo)) { if ($purchaseInfo->expire >= date("Y-m-d H:i:s")) { $isVip = true; } $vipExpire = $purchaseInfo->expire; + if ($purchaseInfo->vip_type == 0) { + $vipType = "免费"; + } else if ($purchaseInfo->vip_type == 1) { + $vipType = "青铜"; + } else if ($purchaseInfo->vip_type == 2) { + $vipType = "白金"; + } else if ($purchaseInfo->vip_type == 3) { + $vipType = "钻石"; + } + } + + // 用户是实名信息 + $verifyName = ""; + $verifySurname = ""; + $verifyInfo = UserVerifyLogModel::where(['user_id'=>$userId])->find(); + if (!empty($verifyInfo)){ + $verifyName = $verifyInfo->name; + $verifySurname = $verifyInfo->surname; } + // 返回数据 return $this->toData('0', 'Modification successful.', [ 'logo' => $headPath, @@ -259,9 +282,12 @@ class UserService extends BaseHomeService 'group_leader_chat_name' => $groupLeaderChatName, 'is_vip' => $isVip, 'vip_expire' => $vipExpire, + 'vip_type' => $vipType, 'customer_remark' => $info['customer_remark'], 'label' => $info['label'], 'adjust_channel' => $info['adjust_channel'], + 'verify_name' => $verifyName, + 'verify_surname' => $verifySurname, ]); } catch (\Exception $exception) { return $this->toData('500', lang('system_busy'), [$exception->getMessage(), $exception->getTrace()]); @@ -272,8 +298,8 @@ class UserService extends BaseHomeService public function purchaseVip($userId) { try { - if (empty($userId) || $userId <= 0) { - return $this->toData('500', lang('missing_user_id')); + if (empty($userId) || empty($param['vip_type']) ) { + return $this->toData('500', lang('parameter_error')); } $info = UserModel::getFieldsByUserId('trade_password,lever_status,gender,last_name,first_name,real_status,country_id,user_no,nick_name,email,phone_number,country_code,agent_id,is_real,head_img_id,invite_code,is_test_user', $userId); if (empty($info)) { @@ -289,34 +315,39 @@ class UserService extends BaseHomeService return $this->toData('500', lang('data_configuration_error')); } $stockId = $vipPurchaseCfg['stock_id']; + // vip类型配置检测 + if (!isset($vipPurchaseCfg[$param['vip_type']])) { + return $this->toData('500', lang('data_configuration_error')); + } + $tagVipConfig = $vipPurchaseCfg[$param['vip_type']]; // vip价格检测 if (!isset($vipPurchaseCfg['vip_price']) || $vipPurchaseCfg['vip_price'] <= 0) { return $this->toData('500', lang('data_configuration_error')); } - $vipPrice = $vipPurchaseCfg['vip_price']; // vip有效天数检测 if (!isset($vipPurchaseCfg['vip_day']) || $vipPurchaseCfg['vip_day'] <= 0) { return $this->toData('500', lang('data_configuration_error')); } - $vipDay = $vipPurchaseCfg['vip_day']; // 查询用户美股余额是否足够 【产品确定用美股余额支付】 - $userMoney = UserStockModel::where(['user_id'=>$userId,'stock_id'=> $stockId])->find(); + $userMoney = UserStockJpModel::where(['user_id'=>$userId,'stock_id'=> $stockId])->find(); if (empty($userMoney)) { return $this->toData('500', lang('user_usd_balance_is_insufficient')); } - $userMoneyNum = $userMoney->usable_num; - if ($userMoneyNum < $vipPrice) { - return $this->toData('500', lang('user_usd_balance_is_insufficient')); + $userMoneyNum = (int)$userMoney->usable_num; + if ($userMoneyNum < $tagVipConfig['vip_price']) { + return $this->toData('500', lang('user_balance_is_insufficient'), [$userMoneyNum, $tagVipConfig['vip_price']]); } - + $vipPrice = $tagVipConfig['vip_price']; + $vipDay = $tagVipConfig['vip_day']; + $vipType = $param['vip_type']; // 记录购买vip信息, 扣除用户金额 - Db::transaction(function () use ($userId, $userMoneyNum, $vipPrice, $stockId) { - // 扣除用户USD - UserStockModel::where(['user_id'=>$userId,'stock_id'=>$stockId])->where('usable_num', ">=", $vipPrice)->dec('usable_num', $vipPrice)->update(); + Db::transaction(function () use ($userId, $userMoneyNum, $vipPrice, $vipDay, $stockId, $vipType) { + // 扣除用户金额 + UserStockJpModel::where(['user_id'=>$userId,'stock_id'=>$stockId])->where('usable_num', ">=", $vipPrice)->dec('usable_num', $vipPrice)->update(); // 添加用户USD变更日志 - UserStockLogModel::create([ + UserStockJpLogModel::create([ 'user_id' => $userId, - 'change_type' => 20, + 'change_type' => 100, 'stock_id' => $stockId, 'before_num' => $userMoneyNum, 'change_num' => -$vipPrice, @@ -325,22 +356,26 @@ class UserService extends BaseHomeService ]); // 查询用户是否开通过vip,更新用户vip到期时间 $vipLog = PurchaseVipModel::where(['user_id'=>$userId])->find(); - $expireTimestamp = strtotime('+30 day'); + $expireTimestamp = strtotime('+'.$vipDay.' day'); $expireTime = date("Y-m-d H:i:s", $expireTimestamp); if (!empty($vipLog)) { if (empty($vipLog->expire)) { return $this->toData('500', lang('vip_expiration_time_error')); } if ($vipLog->expire >= date("Y-m-d H:i:s")) { - $expireTimestamp = strtotime('+30 day', strtotime($vipLog->expire)); + $expireTimestamp = strtotime('+'.$vipDay.' day', strtotime($vipLog->expire)); $expireTime = date("Y-m-d H:i:s", $expireTimestamp); } $vipLog->expire = $expireTime; + if ($vipType > $vipLog->vip_type) { // 新买的vip类型等级高于之前的,则更新为最新高等级标识 + $vipLog->vip_type = $vipType; + } $vipLog->save(); } else { PurchaseVipModel::create([ 'user_id' => $userId, - 'expire' => $expireTime + 'expire' => $expireTime, + 'vip_type' => $vipType ]); } // 添加用户购买VIP的日志 @@ -349,7 +384,8 @@ class UserService extends BaseHomeService 'amount' => $vipPrice, 'stock_id' => $stockId, 'expire' => $expireTime, - 'day' => 30, + 'day' => $vipDay, + 'vip_type' => $vipType, ]); }); return $this->toData('0', 'successful'); diff --git a/config/common.php b/config/common.php index 1dc4055a..e4424c80 100644 --- a/config/common.php +++ b/config/common.php @@ -14,8 +14,24 @@ return [ ], // VIP购买配置 'vip_purchase' => [ - 'vip_price' => 30, // vip价格 - 'vip_day' => 30, // vip有效期 30天 - 'stock_id' => 'USD' // 购买VIP所需的货币类型 +// 'vip_price' => 30, // vip价格 +// 'vip_day' => 30, // vip有效期 30天 +// 'stock_id' => 'USD', // 购买VIP所需的货币类型 + 'stock_id' => 'JPY', // 购买VIP所需的货币类型 + '1' => [ + 'label' => '青铜', // vip等级 + 'vip_day' => 30, // vip天数 + 'vip_price' => 37000, // 价格 + ], + '2' => [ + 'label' => '白金', // vip等级 + 'vip_day' => 90, // vip天数 + 'vip_price' => 100000, // 价格 + ], + '3' => [ + 'label' => '钻石', // vip等级 + 'vip_day' => 360, // vip天数 + 'vip_price' => 370000, // 价格 + ], ], ];