request->post(); $validate = \think\Loader::validate('Market'); if(!$validate->scene('collect')->check($params)) $this->error($validate->getError()); $userCollect::setUserCollect($this->auth->id, $params['market_id']); $this->success("ok"); } /* * 相关公告 */ public function announcement(AnnouncementModel $announcementModel) { $params = $this->request->post(); $validate = \think\Loader::validate('Market'); if(!$validate->scene('announcement')->check($params)) $this->error($validate->getError()); $announcement = $announcementModel ->where('find_in_set(:id,product_id)',['id'=>$params['product_id']]) ->where('status', $announcementModel::Normal) ->where('to_lang', $this->request->getLan()) ->order('id desc') ->paginate($this->pageSize); $this->success('ok', $announcement); } //获取产品最大求购价格 public function getBuyingMaxPrice(ProductBuying $productBuying) { $params = $this->request->post(); $validate = \think\Loader::validate('Market'); if(!$validate->scene('announcement')->check($params)) $this->error($validate->getError()); $this->success('ok', $productBuying::getProductBuyingMaxPrice($params['product_id'])); } //求购 public function buying() { $params = $this->request->post(); $validate = \think\Loader::validate('Market'); if(!$validate->scene('announcement')->check($params)) $this->error($validate->getError()); } //求购列表 public function buyingList() { } /** * 手段向某会员报单算力 * @return void * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function updateOrder() { //算力租赁订单处理 // 查询兑换比例 $usdtToPower = (new ParametersModel)->getValue('usdtToPowerRate'); $usdtToPowerFloat = floatval($usdtToPower); if (is_null($usdtToPower) || $usdtToPowerFloat <= 0) { return '获取USDT兑换算力的比例失败'; } $orderInfo = (new OfflineRechargeRecordModel()) ->where('id', 4) ->find(); if(empty($orderInfo)){ halt('订单信息不存在'); } $uid = $orderInfo['user_id']; $fee = $orderInfo['amount']; $power = bcmul($fee, $usdtToPowerFloat, 6); // 该用户兑得的算力 // 启动事务 Db::startTrans(); try { // 更新总算力和账变 (new LedgerWalletModel)->changeWalletAccount($uid, Asset::POWER, $power, Action::PowerRentalPower, $orderInfo['id']); // 更新服务器算力,不账变 (new LedgerWalletModel)->changeWalletOnly($uid, Asset::RENTAL_POWER, $power); // 更新自己(有效会员时间)和所有上级的信息(有效直推人数和团队总算力) (new UserModel())->updateForRental($uid, $power); // 发放直推USDT收益 (new LedgerWalletModel)->sendUsdtProfit($uid, $fee); // 发放直推算力收益 (new LedgerWalletModel)->sendDirectProfit($uid, $power); // 发代数收益 (new LedgerWalletModel)->sendGenerateProfit($uid, $fee); // 发放见点奖 (new LedgerWalletModel)->sendRegBonus($uid, $fee); // 更新购买(充值)记录 (new OfflineRechargeRecordModel())->updateOrderStatus($orderInfo['id'], RechargeStatus::StatusAuthSuccess, 0, $power); // 提交事务 Db::commit(); } catch (Exception $e) { // 回滚事务 Db::rollback(); return $e->getMessage(); } } //重算团队业绩和直推人数 public function reset_team() { set_time_limit(0); //先清空 $update = Db::table('user') ->where('id', '>', 0) ->update([ 'team_power' => 0, 'team_num' => 0, 'direct_num' => 0 ]); $up_power = Db::table('ledger_wallet') ->field('u.id') ->alias('w') ->join('user u', 'w.user_id = u.id') ->where('u.effective_time','>',0) ->where('w.rental_power', 0) ->select(); foreach ($up_power as $item){ $update = Db::table('ledger_wallet') ->where('user_id', $item['id']) ->update([ 'rental_power' => 0.01 ]); } $power_list = Db::table('ledger_wallet') ->where('rental_power', '>', 0) ->select(); $info_list = 0; $bad_list = []; foreach ($power_list as $key => $info) { dump('正在处理ID:' . $info['user_id']); $parent_ids = (new UserPathModel()) ->where('user_id',$info['user_id']) ->order('distance') ->select(); foreach ($parent_ids as $item) { $data = [ 'team_power' => Db::raw('team_power + ' . $info['rental_power']), 'team_num' => Db::raw('team_num + 1'), ]; if ($item['distance'] == 1) { $data['direct_num'] = Db::raw('direct_num+1'); } $update = Db::table('user') ->where('id', $item['parent_id']) ->update($data); if (!$update) { $bad_list[] = $info; } else { $info_list++; } } } dump('成功数量'); dump($info_list); dump('失败数量'); dump($bad_list); } //累加新增团队业绩 public function addTeamPower() { set_time_limit(0); $uid = 100702; $num = 1429; $parentIDs = (new UserPathModel())->getAllParentIDs($uid); $parentIDs[] = $uid; dump($parentIDs, true, 'ID列表'); $update = (new UserModel()) ->where('id', 'in', $parentIDs) ->update([ 'team_power' => Db::raw('team_power + ' . $num) ]); dump($update, true, '影响行数'); } public function resetUserPath() { $ratio = 0.05;//直推奖励 $info_list = (new OfflineRechargeRecordModel()) ->where('status', OfflineRechargeRecordModel::StatusFail) ->order('id', 'ASC') ->select(); dump('本次数据共有:' . count($info_list)); foreach ($info_list as $info) { $user = (new UserModel())->get($info['user_id']); if (empty($user) || $user['parent_id'] == 0) { continue; } $check = (new LedgerUsdtChangeModel()) ->where('user_id', $user['parent_id']) ->where('action', Action::UsdtShareBonus) ->where('from_id', $info['user_id']) ->count(); if($check == 0){ (new LedgerWalletModel())->changeWalletAccount($user['parent_id'], Asset::USDT, $info['amount'] * $ratio, Action::UsdtShareBonus, $info['user_id']); dump('订单ID:' . $info['id'] . '处理成功,奖金:' . $info['amount'] * $ratio); }else{ dump('订单ID:' . $info['id'] . '处理失败,奖金已存在'); } } } /** * 补发直推奖 * @return void */ public function resetShareBonus() { $users = (new UserModel())->order('id', 'ASC')->select(); foreach ($users as $v) { (new UserPathModel())->createPath($v['id'], $v['parent_id']); } } /** * @return string * * 返回结果 * { "status": "1", "message": "OK", "result": { "status": "1" } } */ public function getStatusByHaxh() { $url = "https://api.bscscan.com/api?module=transaction&action=gettxreceiptstatus&txhash=0x30f4190a8237c7744a0981a2895728bab93acf4cb78b03c192ed5ac387405c54&apikey=VTCKIP346DCRWB6JNS4KDANUJJEQN9VAKW"; $body = Http::get($url); if (empty($body)) { return "api返回内容为空"; } dump($body); // 转成数组 $rsArr = json_decode($body, true); dump($rsArr); if (empty($rsArr) || !is_array($rsArr)) { return "状态api返回数据异常"; } if ($rsArr['status'] != '1') { return '状态api返回status不为1,错误信息:' . $rsArr['message']; } if ($rsArr['result']['status'] != 1) { return '状态api返回result中的status不为1,错误信息:' . $rsArr['message']; } } public function AllocateEtc() { $url = "https://www.binance.com/api/v1/klines?symbol=ETCUSDT&limit=1&interval=3m"; $body = Http::get($url); if (empty($body)) { return "api返回内容为空"; } dump($body); // 转成数组 $rsArr = json_decode($body, true); dump($rsArr[0][2]); $body = Http::get($url); if (empty($body)) { return "api返回内容为空"; } dump($body); // 转成数组 $rsArr = json_decode($body, true); dump($rsArr); if (empty($rsArr) || !is_array($rsArr)) { return "状态api返回数据异常"; } if ($rsArr['status'] != '1') { return '状态api返回status不为1,错误信息:' . $rsArr['message']; } if ($rsArr['result']['status'] != 1) { return '状态api返回result中的status不为1,错误信息:' . $rsArr['message']; } } public function debug() { $num =rand(9000,10000); dump($num/10000/1000); $body = (new MyBscApi())->getInfoByTransactionHash('0xc3fc59faa9a1a9ff4fa1516b7df10570876a87993c397f6cd33ce3446641b5b0'); dump($body); } public function resetAirdrop() { $order_list = (new ProductOrder()) ->where('type_id', 3) ->group('user_id') ->column('user_id'); dump($order_list); $order_list_send = (new ProductOrder()) ->where('type_id', 4) ->group('user_id') ->column('user_id'); dump($order_list_send); $order_list = array_diff($order_list, $order_list_send); dump($order_list); $rs = (new ProductOrder()) ->where('type_id', 3) ->where('user_id', 'in', $order_list) ->update([ 'create_time' => 1745942400 ]); dump($rs); } public function updateNews() { $en_news = DB::name('announcement_cope')->select(); foreach ($en_news as $info) { if(strlen($info['en_title']) > 3){ $rs = (new AnnouncementModel()) ->save([ 'type_id' => $info['type_id'], 'title' => $info['en_body'], 'introduction' => $info['en_introduction'], 'body' => $info['en_body'], 'img_url' => $info['img_url'], 'to_lang' => 1, 'status' => $info['status'], 'created_by' => $info['created_by'], 'createtime' => $info['createtime'], ]); } } dump($rs); } }