request->post("type"); if($type == "pc"){ $table = "app_banner_pc"; }else{ $table = "app_banner"; } $lang = $this->request->request("lang"); $banner = Db::name($table) ->where('status','1') ->order('weigh','desc') ->select(); foreach ($banner as $key=>$value) { switch ($lang) { case "zh-cn": $value['image'] = Config::get('site.image_url').$value['image']; break; default: $value['image'] = Config::get('site.image_url').$value['image_en']; break; } $banner[$key] = $value; } $message = Db::name('app_messages')->field("id,title,title_en") ->order('id','desc') ->find(); switch ($lang) { case "zh-cn": break; default: $message['title'] = $message['title_en']; break; } $this->success('success',['banner'=>$banner,'message'=>$message,'kefu_url'=>Config::get("site.kefu_url")]); } /** * 公告列表 */ public function message_list() { $lang = $this->request->request("lang"); $message = Db::name('app_messages') ->order('id desc') ->paginate(20,false,['query' => request()->param()]); foreach ($message as $key => $value) { // 公告时间跟随实时变动,显示当前时间 $value['createtime'] = date("Y-m-d H:i:s", time()); switch ($lang) { case "zh-cn": $value['content'] = strip_tags($value['content']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); break; case "fre": $value['content'] = strip_tags($value['content_fre']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_fre']; break; case "ger": $value['content'] = strip_tags($value['content_ger']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_ger']; break; case "ily": $value['content'] = strip_tags($value['content_ily']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_ily']; break; case "jp": $value['content'] = strip_tags($value['content_jp']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_jp']; break; case "kr": $value['content'] = strip_tags($value['content_kr']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_kr']; break; case "mn": $value['content'] = strip_tags($value['content_mn']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_mn']; break; case "ms": $value['content'] = strip_tags($value['content_ms']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_ms']; break; default: $value['content'] = strip_tags($value['content_en']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); $value['title'] = $value['title_en']; break; } $message[$key] = $value; } $this->success("ok",$message); } /** * 公告详情 */ public function message_con() { $id = $this->request->post("id"); $lang = $this->request->request("lang"); $message = Db::name('app_messages') ->where("id",$id) ->find(); if(empty($message)){ $this->error(__("内容不存在")); } // 公告时间跟随实时变动 $message['createtime'] = date("Y-m-d H:i:s", time()); switch ($lang) { case "zh-cn": $message['content'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $message['content']); break; default: $message['title'] = $message['title_en']; $message['content'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $message['content_en']); break; } $this->success("ok",$message); } /** * 首页菜单栏 */ public function index_cate() { $lang = $this->request->request("lang"); //系统推荐 $hot_cate = Db::name("app_dapp_list")->field("id,logo_image,logo2_image,name,name_en,open_status,type,types,url")->where("is_hot",1)->where("status",1)->order("weigh desc")->select(); //我的收藏 $my_cate = Db::name("app_dapp_list")->field("id,logo_image,logo2_image,name,name_en,open_status,type,types,url")->where("id","in", $this->auth->dapp_ids)->where("status",1)->order("weigh desc")->select(); $cate = array_merge($hot_cate,$my_cate); foreach ($cate as $key => $value) { $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; $value['logo2_image'] = Config::get("site.image_url").$value['logo2_image']; switch ($lang) { case "zh-cn": $value['name'] = $value['name']; break; case "fre": $value['name'] = $value['name_en']; break; case "ger": $value['name'] = $value['name_en']; break; case "ily": $value['name'] = $value['name_en']; break; case "jp": $value['name'] = $value['name_en']; break; case "kr": $value['name'] = $value['name_en']; break; case "mn": $value['name'] = $value['name_en']; break; case "ms": $value['name'] = $value['name_en']; break; default: $value['name'] = $value['name_en']; break; } unset($value['name_en']); $cate[$key] = $value; } $this->success("ok",$cate); } /** * 菜单栏更多 */ public function cate_list() { $lang = $this->request->request("lang"); //所有列表 $list = Db::name("app_dapp_list")->field("id,cate_id,logo_image,logo2_image,name,name_en,open_status,type,types,url,is_hot")->where("status",1)->order("weigh desc")->select(); $cata = Db::name("app_dapp_cate")->field("id,name,name_en")->where("status",1)->order("weigh desc")->select(); foreach ($cata as $key => $value) { switch ($lang) { case "zh-cn": $value['name'] = $value['name']; break; case "fre": $value['name'] = $value['name_en']; break; case "ger": $value['name'] = $value['name_en']; break; case "ily": $value['name'] = $value['name_en']; break; case "jp": $value['name'] = $value['name_en']; break; case "kr": $value['name'] = $value['name_en']; break; case "mn": $value['name'] = $value['name_en']; break; case "ms": $value['name'] = $value['name_en']; break; default: $value['name'] = $value['name_en']; break; } $value['son'] = []; unset($value['name_en']); $cata[$key] = $value; } //系统推荐 $hot_cate = []; //我的收藏 $my_ids = explode(",", $this->auth->dapp_ids); $my_cate = []; foreach ($list as $key => $value) { $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; $value['logo2_image'] = Config::get("site.image_url").$value['logo2_image']; switch ($lang) { case "zh-cn": $value['name'] = $value['name']; break; case "fre": $value['name'] = $value['name_en']; break; case "ger": $value['name'] = $value['name_en']; break; case "ily": $value['name'] = $value['name_en']; break; case "jp": $value['name'] = $value['name_en']; break; case "kr": $value['name'] = $value['name_en']; break; case "mn": $value['name'] = $value['name_en']; break; case "ms": $value['name'] = $value['name_en']; break; default: $value['name'] = $value['name_en']; break; } unset($value['name_en']); if($value['is_hot'] == 1){ $hot_cate[] = $value; } if(in_array($value['id'], $my_ids)){ $my_cate[] = $value; $value['is_hot'] = 1; } foreach ($cata as $ke => $val) { if($value['cate_id'] == $val['id']){ $val['son'][] = $value; } $cata[$ke] = $val; } } $data = array( "hot_cate" => $hot_cate, "my_cate" => $my_cate, "all_cata" => $cata, ); $this->success("ok",$data); } /** * 修改收藏 */ public function set_mydapp() { $user_id = $this->auth->id; $ids = $this->request->post("ids"); Db::name("user")->where("id",$user_id)->update(['dapp_ids'=>$ids]); $this->success("Success"); } //获取热门币种涨跌价格 public function get_hot_coin() { $data = Db::name('app_rate') ->field('name,close as usdt,increase,symbol,coinname,bb_type') ->whereIn('name',['BTC','ETH','LTC']) ->order('id','asc')->select(); foreach ($data as $key=>$value) { $value['usdt'] = sprintf('%.4f',$value['usdt']); $value['cny'] = sprintf('%.4f',$value['usdt']*Config::get('site.exchange_rate')); $data[$key] = $value; } $this->success('success',$data); } //获取涨跌成交榜 public function get_coin_increase() { $params = $this->request->post(); if(!isset($params['type']) || !in_array($params['type'],[1,2,3,4])) { $this->error(__('请选择要查询的榜单')); } if($params['type'] == 1) //涨幅榜 { $data = Db::name('app_rate') ->field('name,close as usdt,increase,amount,symbol,coinname,market_jd,price_jd,bb_type,logo_image') ->where('increase','>',0) ->where("status",'1') // ->where('name','neq',"IFT") ->order('increase','desc')->select(); foreach ($data as $key=>$value) { $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; // $value['usdt'] = sprintf('%.4f',$value['usdt']); $value['cny'] = sprintf('%.2f',$value['usdt']*Config::get('site.exchange_rate')); $value['amount'] = sprintf('%.0f',$value['cny']*$value['amount']); $data[$key] = $value; } }else if($params['type'] == 2) //跌幅榜 { $data = Db::name('app_rate') ->field('name,close as usdt,increase,amount,symbol,coinname,market_jd,price_jd,bb_type,logo_image') ->where('increase','<',0) ->where("status",'1') // ->where('name','neq',"IFT") ->order('increase','asc')->select(); foreach ($data as $key=>$value) { $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; // $value['usdt'] = sprintf('%.4f',$value['usdt']); $value['cny'] = sprintf('%.2f',$value['usdt']*Config::get('site.exchange_rate')); $value['amount'] = sprintf('%.0f',$value['cny']*$value['amount']); $data[$key] = $value; } }else if($params['type'] == 3) //成交榜 { $data = Db::name('app_rate') ->field('name,close as usdt,amount,symbol,coinname,market_jd,price_jd,bb_type,logo_image,increase') // ->where('name','neq',"IFT") ->where("status",'1') ->order('id','asc')->select(); if(isset($params['lang']) && strtolower($params['lang']) == 'zh-cn') { $dw = '亿'; }else{ $dw = 'B'; } foreach ($data as $key=>$value) { $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; // $value['usdt'] = sprintf('%.4f',$value['usdt']); $value['cny'] = sprintf('%.6f',$value['usdt']*Config::get('site.exchange_rate')); $value['amount'] = sprintf('%.0f',$value['cny']*$value['amount']); $value['dealamount'] = sprintf('%.2f',$value['amount'] / pow(10,8)).$dw; $data[$key] = $value; } $last_names = array_column($data,'amount'); array_multisort($last_names,SORT_DESC,$data); }elseif($params['type'] == 4){ $data = Db::name('app_rate') ->field('name,close as usdt,increase,amount,symbol,coinname,market_jd,price_jd,bb_type,logo_image') // ->where('name','neq',"IFT") ->where("status",'1') ->order('weigh','desc') ->select(); foreach ($data as $key=>$value) { $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; // $value['usdt'] = sprintf('%.4f',$value['usdt']); $value['cny'] = sprintf('%.2f',$value['usdt']*Config::get('site.exchange_rate')); $value['amount'] = sprintf('%.0f',$value['cny']*$value['amount']); $data[$key] = $value; } } $this->success('success',$data); } /** * 私募列表 */ public function ico_list() { $ico = Db::name("app_ico_set a")->field("a.id,a.cover_image,a.name as curr_name,a.price,a.count_num,a.start_time,a.real_num,a.end_time,c.id as rate_id") ->join("app_currency b","a.curr_id=b.id","left") ->join("app_rate c","b.name=c.name","left") ->order("id desc") ->select(); foreach ($ico as $key => $value) { $release = Db::name("app_curr_release")->where("rate_id",$value['rate_id'])->find(); if($release){ $value['white_paper'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $release['white_paper']); }else{ $value['white_paper'] = ""; } if($value['real_num'] > 0){ $value['jindu'] = sprintf("%.2f",(1 - $value['real_num']/$value['count_num']))*100; }else{ $value['jindu'] = 100; } if($value['start_time'] > time()){ $value['status'] = 1; }elseif($value['start_time'] < time() && $value['end_time'] > time()){ $value['status'] = 3; }else{ $value['status'] = 4; } $value['cover_image'] = Config::get("site.image_url").$value['cover_image']; $value['start_time'] = date("Y-m-d H:i",$value['start_time']); $value['end_time'] = date("Y-m-d H:i",$value['end_time']); $ico[$key] = $value; } $this->success('success',$ico); } /** * 私募内容返回 */ public function ico_content() { $user_id = $this->auth->id; $id = $this->request->post("id"); $ico = Db::name("app_ico_set")->where("id",$id)->order("id desc")->find(); if(empty($ico)){ $this->error("ICO不存在"); } if($ico['start_time'] > time()){ $ico['status'] = 1; }elseif($ico['start_time'] < time() && $ico['end_time'] > time()){ $ico['status'] = 3; }else{ $ico['status'] = 4; } $ico['start_time'] = date("Y-m-d H:i",$ico['start_time']); $ico['end_time'] = date("Y-m-d H:i",$ico['end_time']); $curr = Db::name("app_currency")->where("id",$ico['curr_id'])->find(); $ico['curr_name'] = $curr['name']; $ico['cover_image'] = Config::get("site.image_url").$ico['cover_image']; // $ico['content'] = strip_tags($ico['content']); // $ico['content'] = str_replace( ' ' , '' , $ico['content'] ); $ico['content'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $ico['content']); $ico['content_txt'] = strip_tags($ico['content']); $ico['content_txt'] = str_replace( ' ' , '' , $ico['content_txt'] ); //白皮书 $rate = Db::name("app_rate")->where("name",$curr['name'])->find(); $release = Db::name("app_curr_release")->where("rate_id",$rate['id'])->find(); if($release){ $ico['white_paper'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $release['white_paper']); }else{ $ico['white_paper'] = ""; } if($ico['status'] == 2){ $res = Db::name("app_ico_yuyue")->where("user_id",$user_id)->where("ico_id",$ico['id'])->find(); if($res){ $ico['is_yuyue'] = true; }else{ $ico['is_yuyue'] = false; } } $this->success('success',$ico); } /** * 预约私募 */ public function ico_yuyue() { $user_id = $this->auth->id; $id = $this->request->post("id"); $ico = Db::name("app_ico_set")->where("id",$id)->find(); if(empty($ico)){ $this->error(__("私募不存在")); } if($ico['status'] != 2){ $this->error(__("非预约时间")); } $res = Db::name("app_ico_yuyue")->where("user_id",$user_id)->where("ico_id",$id)->find(); if($res){ $this->error(__("请勿重复预约")); } $insert = array( "user_id" => $user_id, "ico_id" => $id, "createtime" => time(), ); Db::name("app_ico_yuyue")->insert($insert); $this->success(__("预约成功")); } /** * 私募提交 */ public function ico_sub() { $user_id = $this->auth->id; $id = $this->request->post("id"); $num = (int)$this->request->post("num"); $pay_pwd = $this->request->post("pay_pwd"); $ico = Db::name("app_ico_set")->where("id",$id)->find(); //判断交易密码 if(strtoupper(md5(strtoupper(md5($pay_pwd.'skund')))) != $this->auth->pay_pwd) { $this->error(__('交易密码错误')); } //实名认证判断 if(!controller("Common")->get_auth()){ $this->error(__("请先完成实名认证"),['jump'=>1]); } if(empty($ico)){ $this->error(__("私募不存在")); } if($ico['start_time'] > time()){ $ico['status'] = 1; }elseif($ico['start_time'] < time() && $ico['end_time'] > time()){ $ico['status'] = 3; }else{ $ico['status'] = 4; } if($ico['status'] != 3){ $this->error(__("非私募时间")); } if(!is_numeric($num) || $num < 1){ $this->error(__("请输入有效数量")); } if($num < $ico['min_num']){ $this->error(__("最低数量").$ico['min_num']); } // if((int)$ico['real_num'] < $num){ // $this->error(__("可私募数量不足").":".$ico['real_num']); // } $user_usdt = Db::name("app_currency_user")->where("curr_id",1)->where("user_id",$user_id)->find(); $user_ico = Db::name("app_currency_user")->where("curr_id",$ico['curr_id'])->where("user_id",$user_id)->find(); $ico_usdt = sprintf("%.6f",$num*$ico['price']); if($user_usdt['num'] < $ico_usdt){ $this->error(__("余额不足")); } //redis防重复点击 $symbol = "withdraw" . $this->auth->id; $submited = pushRedis($symbol); if (!$submited) { $this->error(__("操作频繁")); } $ico_data = array( "user_id" => $user_id, "ico_id" => $id, "num" => $num, "createtime" => time(), ); //资金明细 // $detail_data[] = array( // "user_id" => $user_id, // "curr_id" => $ico['curr_id'], // "price" => $num, // "cart" => 1, // "type" => 5, // "description" => "ICO", // "createtime" => time(), // "before_num" => $user_ico['num'], // "after_num" => $user_ico['num'] + $num, // ); $detail_data[] = array( "user_id" => $user_id, "curr_id" => 1, "price" => $ico_usdt, "cart" => 2, "type" => 5, "description" => "ICO", "createtime" => time(), "before_num" => $user_usdt['num'], "after_num" => $user_usdt['num'] - $ico_usdt, ); Db::startTrans(); try { Db::name("app_currency_user")->where("id",$user_usdt['id'])->update(['num'=>$user_usdt['num'] - $ico_usdt]); // Db::name("app_currency_user")->where("id",$user_ico['id'])->update(['num'=>$user_ico['num'] + $num]); // Db::name("app_ico_set")->where("id",$id)->setDec("real_num",$num); Db::name("app_ico_user")->insert($ico_data); Db::name("app_detailed")->insertAll($detail_data); lopRedis($symbol); Db::commit(); $this->success(__('私募成功')); } catch (Exception $e) { Db::rollback(); lopRedis($symbol); $this->error(__('系统繁忙')); } } /** * 私募富文本详情 */ public function ico_con() { $id = $this->request->post("id"); $ico = Db::name("app_ico_set")->field("id,cover_image,content")->where("id",$id)->find(); if(empty($ico)){ $this->error(__("私募不存在")); } $ico['cover_image'] = Config::get("site.image_url").$ico['cover_image']; $ico['content'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $ico['content']); $this->success("ok",$ico); } /** * ICO审核记录 */ public function ico_user_log() { $user_id = $this->auth->id; $list = Db::name("app_ico_user a")->field("a.id,a.num,a.bili,a.status,a.createtime,b.name,b.price") ->join("app_ico_set b","a.ico_id=b.id","left") ->where("a.user_id",$user_id) ->order("a.id desc") ->paginate(20,false,['query' => request()->param()]); foreach ($list as $key => $value) { $value['price'] = $value['price']*1; $value['createtime'] = date("Y-m-d H:i",$value['createtime']); if($value['status'] == 1){ if($value['bili'] >0 ){ $value['real_num'] = sprintf("%.2f",$value['num']*$value['bili']/100); }else{ $value['real_num'] = $value['num']; } }else{ $value['real_num'] = 0; } unset($value['bili']); $list[$key] = $value; } $this->success("ok",$list); } /** * ICO USDT统计 */ public function ico_usdt() { $user_id = $this->auth->id; $list = Db::name("app_ico_user a")->field("a.id,a.num,a.bili,a.status,a.createtime,b.name,b.price") ->join("app_ico_set b","a.ico_id=b.id","left") ->where("a.user_id",$user_id) ->select(); $succ_usdt = 0;$have_usdt = 0; foreach ($list as $key => $value) { if($value['status'] == 0){ $have_usdt = $have_usdt+($value['num']*$value['price']); }else{ if($value['bili'] > 0){ $succ_usdt = $succ_usdt+($value['num']*$value['price']*$value['bili']/100); }else{ $succ_usdt = $succ_usdt+($value['num']*$value['price']); } } } $data = array( "succ_usdt" => sprintf("%.2f",$succ_usdt), "have_usdt" => sprintf("%.2f",$have_usdt), ); $this->success("ok",$data); } /** * 质押内容返回 */ public function zhiya_con() { $cycle = Db::name("app_zhiya_set")->where("status",1)->select(); foreach ($cycle as $key => $value) { $value['yield'] = sprintf("%.2f",$value['yield']*$value['day']); $cycle[$key] = $value; } $lang = $this->request->request("lang"); switch ($lang) { case "zh-cn": $zhiya_text = Config::get("site.zhiya_text"); break; default: $zhiya_text = Config::get("site.zhiya_text_en"); break; } $data = array( "cycle" => $cycle, "zhiya_text" => $zhiya_text, ); $this->success("ok",$data); } /** * 锁仓提交 */ public function zhiya_sub() { $user_id = $this->auth->id; $id = $this->request->post("id"); $num = $this->request->post("num"); $pay_pwd = $this->request->post("pay_pwd"); $zhiya = Db::name("app_zhiya_set")->where("id",$id)->find(); //判断交易密码 if(strtoupper(md5(strtoupper(md5($pay_pwd.'skund')))) != $this->auth->pay_pwd) { $this->error(__('交易密码错误')); } if(empty($zhiya)){ $this->error(__("周期不存在")); } if($zhiya['status'] != 1){ $this->error(__("周期不存在")); } if(!is_numeric($num) || $num < 1){ $this->error(__("请输入有效数量")); } $user_apt = Db::name("app_currency_user")->where("curr_id",2)->where("user_id",$user_id)->find(); if($user_apt['num'] < $num){ $this->error(__("余额不足")); } //redis防重复点击 $symbol = "zhiya_sub" . $this->auth->id; $submited = pushRedis($symbol); if (!$submited) { $this->error(__("操作频繁")); } $zhiya_data = array( "user_id" => $user_id, "zhiya_id" => $id, "num" => $num, "add_time" => time(), "end_time" => time()+($zhiya['day']*86400+43200), "last_time" => time(), ); //资金明细 $detail_data[] = array( "user_id" => $user_id, "curr_id" => 2, "price" => $num, "cart" => 2, "type" => 9, "description" => "锁仓", "createtime" => time(), "before_num" => $user_apt['num'], "after_num" => $user_apt['num'] - $num, ); Db::startTrans(); try { Db::name("app_currency_user")->where("id",$user_apt['id'])->update(['num'=>$user_apt['num'] - $num]); Db::name("app_zhiya_user")->insert($zhiya_data); Db::name("app_detailed")->insertAll($detail_data); lopRedis($symbol); Db::commit(); $this->success(__('锁仓成功')); } catch (Exception $e) { Db::rollback(); lopRedis($symbol); $this->error(__('系统繁忙')); } } /** * 锁仓记录 */ public function zhiya_list() { $user_id = $this->auth->id; $list = Db::name("app_zhiya_user a")->field("a.id,a.num,a.profit_num,a.add_time,b.day") ->join("app_zhiya_set b","a.zhiya_id=b.id","left") ->where("a.user_id",$user_id) ->order("a.id desc") ->paginate(10,false,['query' => request()->param()]); foreach ($list as $key => $value) { $value['add_time'] = date("Y-m-d H:i",$value['add_time']); $list[$key] = $value; } $this->success("ok",$list); } /** * 释放详情 */ public function zhiya_shif_con() { $user_id = $this->auth->id; $id = $this->request->post("id"); $con = Db::name("app_zhiya_user a")->field("a.id,a.profit_num,b.day") ->join("app_zhiya_set b","a.zhiya_id=b.id","left") ->where("a.user_id",$user_id) ->where("a.id",$id) ->find(); if(empty($con)){ $this->error("记录不存在"); } $cont_sf = Db::name("app_zhiya_detail a") ->where("a.user_id",$user_id) ->where("a.zhiya_id",$id) ->count(); $con['last_day'] = $con['day'] - $cont_sf; $this->success("ok",$con); } /** * 释放记录 */ public function zhiya_shif_log() { $user_id = $this->auth->id; $id = $this->request->post("id"); $list = Db::name("app_zhiya_detail a")->field("a.id,a.num,a.addtime") ->where("a.user_id",$user_id) ->where("a.zhiya_id",$id) ->order("a.id desc") ->paginate(10,false,['query' => request()->param()]); foreach ($list as $key => $value) { $value['addtime'] = date("Y-m-d H:i",$value['addtime']); $list[$key] = $value; } $this->success("ok",$list); } /** * 资讯币种 */ public function zhixun_curr() { $curr = Db::name("app_rate")->field("id,name")->where("is_zx",1)->select(); $this->success("ok",$curr); } /* * 币种内容 */ public function zhixun_curr_con() { $lang = $this->request->request("lang"); $id = $this->request->post("id",1); $curr = Db::name("app_rate")->field("id,name,cover_image,symbol,amount,high,low,close,increase,logo_image,level,count_price,count_num,faxin_price,desc,desc_en,bb_type") ->where("id",$id) ->where("is_zx",1) ->find(); if(empty($curr)){ $this->error("币种不存在"); } $curr['logo_image'] = Config::get("site.image_url").$curr['logo_image']; $curr['cover_image'] = Config::get("site.image_url").$curr['cover_image']; switch ($lang) { case "zh-cn": $curr['desc'] = $curr['desc']; break; default: $curr['desc'] = $curr['desc_en']; break; } //小时线 $url = 'https://api.huobi.pro/market/history/kline?period=60min&size=1&symbol='.$curr['symbol']; $data = json_decode(http_curl($url),true); if(isset($data['status']) && $data['status'] == 'ok') { $update = [ 'open' => $data['data'][0]['open'], 'close' => $data['data'][0]['close'] ]; $curr['hour_increase'] = sprintf('%.4f',($update['close']-$update['open'])/$update['open']); }else{ $curr['hour_increase'] = "0.0000"; } //周线 $url = 'https://api.huobi.pro/market/history/kline?period=1week&size=1&symbol='.$curr['symbol']; $data = json_decode(http_curl($url),true); if(isset($data['status']) && $data['status'] == 'ok') { $update = [ 'open' => $data['data'][0]['open'], 'close' => $data['data'][0]['close'] ]; $curr['week_increase'] = sprintf('%.4f',($update['close']-$update['open'])/$update['open']); }else{ $curr['hour_increase'] = "0.0000"; } //月线 $url = 'https://api.huobi.pro/market/history/kline?period=1mon&size=1&symbol='.$curr['symbol']; $data = json_decode(http_curl($url),true); if(isset($data['status']) && $data['status'] == 'ok') { $update = [ 'open' => $data['data'][0]['open'], 'close' => $data['data'][0]['close'] ]; $curr['month_increase'] = sprintf('%.4f',($update['close']-$update['open'])/$update['open']); }else{ $curr['hour_increase'] = "0.0000"; } $this->success("ok",$curr); } /** * 资讯列表 */ public function all_zixun() { $lang = $this->request->request("lang"); $message = Db::name('app_zixun a')->field("a.id,a.title,a.title_en,a.cover_image,a.look_num,a.addtime,b.nickname,b.avatar,a.content,a.content_en") ->join("user b","a.user_id=b.id","left") ->order('a.id desc') ->paginate(10,false,['query' => request()->param()]); foreach ($message as $key => $value) { $value['addtime'] = date("Y-m-d H:i:s",$value['addtime']); $value['cover_image'] = Config::get("site.image_url").$value['cover_image']; $value['avatar'] = Config::get("site.image_url").$value['avatar']; switch ($lang) { case "zh-cn": $value['title'] = $value['title']; $value['content'] = strip_tags($value['content']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); break; default: $value['title'] = $value['title_en']; $value['content'] = strip_tags($value['content_en']); $value['content'] = str_replace( ' ' , '' , $value['content'] ); break; } unset($value['title_en']); unset($value['content_en']); $message[$key] = $value; } $this->success("ok",$message); } /** * 资讯详情 */ public function zixun_con() { $id = $this->request->post("id"); $lang = $this->request->request("lang"); $message = Db::name('app_zixun a')->field("a.*,b.nickname,b.avatar") ->join("user b","a.user_id=b.id","left") ->where("a.id",$id) ->find(); if(empty($message)){ $this->error(__("内容不存在")); } $message['addtime'] = date("Y-m-d H:i:s",$message['addtime']); $message['avatar'] = Config::get("site.image_url").$message['avatar']; $message['cover_image'] = Config::get("site.image_url").$message['cover_image']; switch ($lang) { case "zh-cn": $message['title'] = $message['title']; $message['content'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $message['content']); break; default: $message['title'] = $message['title_en']; $message['content'] = str_replace("src=\"","src=\"".Config::get("site.image_url"), $message['content_en']); break; } unset($message['content_en']); unset($message['title_en']); unset($message['cover_image']); Db::name("app_zixun")->where("id",$message['id'])->setInc("look_num",1); $this->success("ok",$message); } /** * 商务合作 */ public function cooperation() { $user_id = $this->auth->id; $email = $this->request->post("email"); $username = $this->request->post("username"); $notice = $this->request->post("notice"); if(!$email){ $this->error("请输入邮箱"); } if(!$username){ $this->error("请输入姓名"); } if(!$notice){ $this->error("请输入备注"); } $today = strtotime(date("Y-m-d", time())); $res = Db::name("app_cooperation")->where("user_id",$user_id)->where("addtime",">",$today)->find(); if($res){ $this->error("请勿重复申请"); } $insert = array( "user_id" => $user_id, "email" => $email, "username" => $username, "notice" => $notice, "addtime" => time(), ); $res = Db::name("app_cooperation")->insert($insert); if($res){ $this->success("申请成功"); }else{ $this->error("申请失败"); } } /** * 上币申请 */ public function curr_apply() { $user_id = $this->auth->id; $title = $this->request->post("title");//项目名称 $desc = $this->request->post("desc");//智能链描述 $faxin_num = $this->request->post("faxin_num");//发行量 $web_url = $this->request->post("web_url","");//官网 $white_paper = $this->request->post("white_paper","");//白皮书 $qun = $this->request->post("qun","");//社群 $email = $this->request->post("email");//联系方式 $jianjie = $this->request->post("jianjie");//简介 if(!$title){ $this->error("请输入项目名称"); } if(!$desc){ $this->error("请输入智能链描述"); } if(!$faxin_num){ $this->error("请输入发行量"); } if(!$email){ $this->error("请输入联系方式"); } if(!$jianjie){ $this->error("请输入简介"); } $today = strtotime(date("Y-m-d", time())); $res = Db::name("app_curr_apply")->where("user_id",$user_id)->where("addtime",">",$today)->find(); if($res){ $this->error("请勿重复申请"); } $insert = array( "user_id" => $user_id, "title" => $title, "desc" => $desc, "faxin_num" => $faxin_num, "web_url" => $web_url, "white_paper" => $white_paper, "qun" => $qun, "email" => $email, "jianjie" => $jianjie, "addtime" => time(), ); $res = Db::name("app_curr_apply")->insert($insert); if($res){ $this->success("申请成功"); }else{ $this->error("申请失败"); } } /** * 任务中心 */ public function task_center() { $lang = $this->request->request("lang"); $user_id = $this->auth->id; $list = Db::name("app_mission_set a")->field("a.id,a.name,a.name_en,a.price,a.url") ->where("a.status",1) ->select(); foreach ($list as $key => $value) { switch ($lang) { case "zh-cn": $value['name'] = $value['name']; break; case "fre": $value['name'] = $value['name_en']; break; case "ger": $value['name'] = $value['name_en']; break; case "ily": $value['name'] = $value['name_en']; break; case "jp": $value['name'] = $value['name_en']; break; case "kr": $value['name'] = $value['name_en']; break; case "mn": $value['name'] = $value['name_en']; break; case "ms": $value['name'] = $value['name_en']; break; default: $value['name'] = $value['name_en']; break; } switch ($value['id']) { case 1: //初级认证 $res = Db::name("app_auth")->where("user_id",$user_id)->where("status",1)->find(); break; case 2: //完成高级认证 $res = Db::name("app_auth_high")->where("user_id",$user_id)->where("status",1)->find(); break; case 3: //绑定邮箱 if($this->auth->email){ $res = true; }else{ $res = false; } break; case 4: //绑定手机号 if($this->auth->mobile){ $res = true; }else{ $res = false; } break; case 5: //绑定支付方式 $res = Db::name("app_collection")->where("user_id",$user_id)->find(); break; case 6: //完成一笔交易 $res = Db::name("app_coin_trade")->where("user_id",$user_id)->where("status",2)->find(); if(!$res){ $res = Db::name("app_coin_trade_apt")->where("user_id",$user_id)->where("status",2)->find(); } break; case 7: //完成一次新用户推广 $res = Db::name("user")->where("pid",$user_id)->find(); break; case 8: //完成一次锁仓 $res = Db::name("app_zhiya_user")->where("user_id",$user_id)->find(); break; default: break; } if($res){ $renwu = Db::name("app_mission_user")->where("user_id",$user_id)->where("mission_id",$value['id'])->find(); if($renwu){ $value['status'] = 2; }else{ $value['status'] = 1; } }else{ $value['status'] = 0; } unset($value['name_en']); $list[$key] = $value; } //我的奖励 $my_num = $this->auth->score; $data = array( "my_num" => $my_num, "list" => $list, ); $this->success("ok",$data); } /** * 领取奖励 */ public function task_linqu() { $id = $this->request->post("id"); $user_id = $this->auth->id; $task = Db::name("app_mission_set")->where("id",$id)->where("status",1)->find(); if(empty($task)){ $this->error("您所提交的任务不存在"); } //redis防重复点击 $symbol = "task_linqu" . $this->auth->id; $submited = pushRedis($symbol); if (!$submited) { $this->error(__("操作频繁")); } switch ($task['id']) { case 1: //初级认证 $res = Db::name("app_auth")->where("user_id",$user_id)->where("status",1)->find(); break; case 2: //完成高级认证 $res = Db::name("app_auth_high")->where("user_id",$user_id)->where("status",1)->find(); break; case 3: //绑定邮箱 if($this->auth->email){ $res = true; }else{ $res = false; } break; case 4: //绑定手机号 if($this->auth->mobile){ $res = true; }else{ $res = false; } break; case 5: //绑定支付方式 $res = Db::name("app_collection")->where("user_id",$user_id)->find(); break; case 6: //完成一笔交易 $res = Db::name("app_coin_trade")->where("user_id",$user_id)->where("status",2)->find(); if(!$res){ $res = Db::name("app_coin_trade_apt")->where("user_id",$user_id)->where("status",2)->find(); } break; case 7: //完成一次新用户推广 $res = Db::name("user")->where("pid",$user_id)->find(); break; case 8: //完成一次锁仓 $res = Db::name("app_zhiya_user")->where("user_id",$user_id)->find(); break; default: lopRedis($symbol); $this->error("Error"); break; } if($res){ $renwu = Db::name("app_mission_user")->where("user_id",$user_id)->where("mission_id",$task['id'])->find(); if($renwu){ $status = 2; }else{ $status = 1; } }else{ $status = 0; } if($status == 0){ lopRedis($symbol); $this->error("您还未完成该任务"); } if($status == 2){ lopRedis($symbol); $this->error("请勿重复领取"); } $insert = array( "user_id" => $user_id, "mission_id" => $id, "price" => $task['price'], "addtime" => time(), ); Db::startTrans(); try { Db::name("user")->where("id",$user_id)->setInc("score",$task['price']); Db::name("app_mission_user")->insert($insert); Db::commit(); lopRedis($symbol); $this->success(__('Success')); } catch (Exception $e) { Db::rollback(); lopRedis($symbol); $this->error(__('Error')); } } /** * 签到七天返回 */ public function sign_con() { $user_id = $this->auth->id; $w = date("w"); if($w == 0){ $w = "7"; } $time = time(); $monday = date("Ymd",$time-($w-1)*86400); $sign = Db::name("app_sign_log")->where("user_id",$user_id)->where("time_str",$monday)->find();//本周1数据 $list = Db::name("app_sign_set")->field("day,score,logo_image")->order("day asc")->select(); $str = "day".$w; foreach ($list as $key => $value) { if($value['day'] < $w){ if(empty($sign) || $sign["day".$value['day']] != 1){ $value['status'] = 0; }else{ $value['status'] = 1; } }elseif($value['day'] == $w){ if(empty($sign) || $sign[$str] != 1){ $value['status'] = 2; }else{ $value['status'] = 1; } }else{ $value['status'] = 3; } $value['logo_image'] = Config::get("site.image_url").$value['logo_image']; $list[$key] = $value; } $this->success("ok",$list); } /** * 签到 */ public function sign() { $user_id = $this->auth->id; $w = date("w"); if($w == 0){ $w = "7"; } //redis防重复点击 $symbol = "sign_con" . $this->auth->id; $submited = pushRedis($symbol); if (!$submited) { $this->error(__("操作频繁")); } $time = time(); $monday = date("Ymd",$time-($w-1)*86400); $sign_my = Db::name("app_sign_log")->where("user_id",$user_id)->where("time_str",$monday)->find();//本周1数据 $sign_set = Db::name("app_sign_set")->where("day",$w)->find(); $str = "day".$w; if(empty($sign_my)){ $insert = array( "user_id" => $user_id, "count" => 1, "time_str" => $monday, ); $insert[$str] = 1; Db::startTrans(); try { $price = $sign_set['score']; Db::name("user")->where("id",$user_id)->setInc("score",$sign_set['score']); Db::name("app_sign_log")->insert($insert); Db::commit(); lopRedis($symbol); $this->success(__('Success'),['score'=>$price]); } catch (Exception $e) { Db::rollback(); lopRedis($symbol); $this->error(__('Error')); } }else{ if($sign_my[$str] == 1){ $this->error("您今日已经签到过了"); }else{ $update = array( "count" => $sign_my['count']+1, ); $update[$str] = 1; Db::startTrans(); try { $price = $sign_set['score']; if($update['count'] == 7){ $price = $sign_set['score']*4; } Db::name("user")->where("id",$user_id)->setInc("score",$price); Db::name("app_sign_log")->where("id",$sign_my['id'])->update($update); Db::commit(); lopRedis($symbol); $this->success(__('Success'),['score'=>$price]); } catch (Exception $e) { Db::rollback(); lopRedis($symbol); $this->error(__('Error')); } } } } /** * 盲盒抽取 */ public function chou_box() { $user_id = $this->auth->id; $box_ap_num = Config::get("site.box_ap_num"); if($this->auth->score < $box_ap_num){ $this->error(__("余额不足")); } //redis防重复点击 $symbol = "chou_box" . $this->auth->id; $submited = pushRedis($symbol); if (!$submited) { $this->error(__("操作频繁")); } $box = Db::name('app_mission_box')->where("status",1)->select(); foreach ($box as $key => $val) { $arr[$key] = $val['gailv']; } $rid = $this->get_rand($arr); //根据概率获取人员ID $zj_box = $box[$rid]; $insert = array( "user_id" => $user_id, "box_id" => $zj_box['id'], "addtime" => time(), ); unset($zj_box['gailv']); $zj_box['cover_image'] = Config::get("site.image_url").$zj_box['cover_image']; Db::startTrans(); try { switch ($zj_box['type']) { case 1: //USDT $user_curr = Db::name("app_currency_user")->where("user_id",$user_id)->where("curr_id",1)->find(); $detail = array( "user_id" => $user_id, "curr_id" => 1, "price" => $zj_box['num'], "cart" => 1, "type" => 5, "description" => "盲盒抽奖", "createtime" => time(), "before_num" => $user_curr['num'], "after_num" => $user_curr['num']+$zj_box['num'], ); Db::name("app_detailed")->insert($detail); Db::name("app_currency_user")->where("id",$user_curr['id'])->update(['num'=>$user_curr['num']+$zj_box['num']]); break; case 2: //APT $user_curr = Db::name("app_currency_user")->where("user_id",$user_id)->where("curr_id",2)->find(); $detail = array( "user_id" => $user_id, "curr_id" => 2, "price" => $zj_box['num'], "cart" => 1, "type" => 5, "description" => "盲盒抽奖", "createtime" => time(), "before_num" => $user_curr['num'], "after_num" => $user_curr['num']+$zj_box['num'], ); Db::name("app_detailed")->insert($detail); Db::name("app_currency_user")->where("id",$user_curr['id'])->update(['num'=>$user_curr['num']+$zj_box['num']]); break; case 3: //AP Db::name("user")->where("id",$user_id)->setInc("score",$zj_box['num']); break; default: break; } Db::name("user")->where("id",$user_id)->setDec("score",$box_ap_num); Db::name("app_mission_box_log")->insert($insert); Db::commit(); lopRedis($symbol); $this->success(__('Success'),$zj_box); } catch (Exception $e) { Db::rollback(); lopRedis($symbol); $this->error(__('Error')); } } //得出当前中奖人 public function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; } /** * 抽奖记录 */ public function box_log() { $user_id = $this->auth->id; $my_box = Db::name("app_mission_box_log a")->field("b.name,b.cover_image,a.addtime") ->join("app_mission_box b","a.box_id=b.id","left") ->where("a.user_id",$user_id) ->paginate(20,false,['query' => request()->param()]); foreach ($my_box as $key => $value) { $value['addtime'] = date("Y-m-d H:i",$value['addtime']); $value['cover_image'] = Config::get("site.image_url").$value['cover_image']; $my_box[$key] = $value; } $this->success("ok",$my_box); } /** * 盲盒说明 */ public function box_text() { $box_text = Config::get("site.box_text"); $data = array( "box_text" => $box_text, ); $this->success("ok",$data); } }