where('order_no', '')->select(); $i = 0; foreach ($list as $item) { $check_pro = $productOrder ->where('id', $item['order_id']) ->find(); if (!empty($check_pro)) { if($check_pro['type_id'] == 1 && $check_pro['status'] == 2){ $i++; //取消转让订单 $productOrder->where('id', $item['order_id'])->update(['status'=> 1]); //修改:类型状态 $item->status = 0; $item->save(); }elseif($check_pro['type_id'] == 1 && $check_pro['status'] == 4){ //修改:类型状态 $item->status = 0; $item->save(); } else{ dump('订单:' . $item['order_id'] . '的type_id为:' . $check_pro['type_id'] . ',status为:' . $check_pro['status']); } }else{ dump('订单:' . $item['order_id'] . '无此订单'); } } dump('完成了' . $i . '个订单'); } /* * 更新上级 */ public function change_parent() { //1.从主表复制到备份表,需手动插入上级信息 // dump('从主表复制到备份表'); // $user_list = Db::name('user') // ->fetchSql(false) // ->field('u.*,p.distance') // ->alias('u') // ->join('user_path p', 'u.id = p.user_id') // ->where('p.parent_id', 101985) // //->where('u.id','>', 103931) // ->select(); // // $i = 0; // foreach ($user_list as $user){ // $is = Db::table('user_1') // ->insert($user); // $i++; // } // halt($i); //*2.更新备份表上级地址 // dump('更新上级地址'); // $user_list = Db::name('user_1') // ->whereNull('parent_address') // ->select(); // $i = 0; // foreach ($user_list as $user){ // $parent_info = (new UserModel()) // ->where('id', $user['parent_id']) // ->find(); // if(!empty($parent_info)){ // $is = Db::table('user_1') // ->where('id', $user['id']) // ->update([ // 'parent_address' => $parent_info['address'] // ]); // $i++; // } // } // halt($i); //3.更新主表会员上级 dump('重建网体'); $user_list = Db::table('user_1') ->order('distance') ->select(); $i = 0; foreach ($user_list as $user){ $parent_info = (new UserModel()) ->where('address', $user['parent_address']) ->find(); if(!empty($parent_info)){ $is = Db::table('user') ->where('id', $user['id']) ->update([ 'parent_id' => $parent_info['id'] ]); //删除网体 (new UserPathModel()) ->where('user_id', $user['id']) ->delete(); // 创建网体 (new UserPathModel())->createPath($user['id'], $parent_info['id']); $i++; } else{ dump($user['id'] . '--无上级'); } } halt($i); } /* * 更新上级 * * 更改给定ID的上级,并把它的直推一并更改 */ public function resetParent() { //3.更新主表会员上级 dump('重建网体'); $parent_id = 100100; $user_id = 101134; $user = (new UserModel()) ->fetchSql(false) ->where('id', $user_id) ->update([ 'parent_id' => $parent_id ]); dump($user, true, '更新状态'); //删除网体 (new UserPathModel()) ->where('user_id', $user_id) ->delete(); // 创建网体 (new UserPathModel())->createPath($user_id, $parent_id); $user_list = (new UserModel()) ->where('parent_id', $user_id) ->select(); $i = 0; foreach ($user_list as $user){ //删除网体 (new UserPathModel()) ->where('user_id', $user['id']) ->delete(); // 创建网体 (new UserPathModel())->createPath($user['id'], $user['parent_id']); $i++; } halt($i); } /** 导入数据表生成 sql CREATE TABLE dao_ru AS SELECT u.id, u.parent_id, u.address, u.team_power, u.team_num, w.power, w.rental_power, w.usdt FROM `user` u LEFT JOIN ledger_wallet w ON u.id = w.user_id WHERE id IN ( SELECT user_id FROM `user_path` WHERE parent_id = 1012 ) OR id = 1012 ORDER BY id */ public function daoru() { die; $daoru_list = Db::table('user_base') //->where('is_dao', 1) ->select(); $i = 0; $j = 0; //重建钱包 foreach ($daoru_list as $key => $info) { $user = (new UserModel())->getByAddress($info['address']); if (!empty($user)) { // 已存在 // 更新总算力和账变 (new LedgerWalletModel)->changeWalletAccount($user['id'], Asset::POWER, $info['power'], Action::Reversal, 0); // 更新自己(有效会员时间)和所有上级的信息(有效直推人数和团队总算力) (new UserModel())->updateForRental($user['id'], $info['power']); $j++; continue; } } //重建用户 // foreach ($daoru_list as $key => $info) { // // $parent_user = (new UserModel())->getByAddress($info['parent_address']); // if(empty($parent_user)){ // dump('没有上级'); // dump($info); // continue; // } // // $user = (new UserModel())->getByAddress($info['address']); // if (!empty($user)) { // 已存在 // dump($info['id'] . ' - ' . $info['address'] . ' - 已存在'); // // $is = Db::table('user') // ->where('id', $user['id']) // ->update([ // 'parent_id' => $parent_user['id'] // ]); // $j++; // continue; // } // // unset($info['id']); // unset($info['parent_address']); // unset($info['is_dao']); // $info['parent_id'] = $parent_user['id']; // // 创建用户 // $newUserID = (new UserModel())->insertGetId($info); // // 创建钱包 // (new LedgerWalletModel())->insertGetId([ // 'user_id' => $newUserID, // ]); // // // 创建网体 // (new UserPathModel())->createPath($newUserID, $parent_user['id']); // // $i++; // // } dump($i); dump($j); } public function updaetWallet() { $daoru_list = Db::table('ledger_wallet_1') ->whereNotNull('address') ->select(); $i = 0; foreach ($daoru_list as $key => $info) { dump($info); $user = (new UserModel())->getByAddress($info['address']); if (empty($user)) { dump($info['user_id'] . ' - ' . $info['address'] . ' - 不存在'); continue; } unset($info['user_id']); unset($info['address']); //更新钱包 $is_up = (new LedgerWalletModel()) ->where('user_id', $user['id']) ->update($info); dump($user['id'] . '更新' . $is_up); $i++; } dump($i); } /** * 手段向某会员报单算力 * @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); } }