| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- <?php
- namespace app\api\controller;
- use app\common\logic\BscApi;
- use app\common\logic\MyBscApi;
- use app\common\controller\Api;
- use app\common\model\AnnouncementModel;
- use app\common\model\UserCollect;
- use app\common\model\LedgerUsdtChangeModel;
- use app\common\model\ProductBuying;
- use app\common\model\ParametersModel;
- use app\common\model\ProductOrder;
- use app\common\model\UserModel;
- use app\common\model\UserPathModel;
- use app\common\model\LedgerWalletModel;
- use fast\Action;
- use fast\Asset;
- use fast\Http;
- use fast\RechargeStatus;
- use think\Db;
- use think\Log;
- use think\Model;
- class Market extends Api
- {
- //用户收藏
- public function collect(UserCollect $userCollect)
- {
- $params = $this->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);
- }
- }
|