Files
jyshd_mWtK2/application/api/controller/Index.php
T
li 80344d69d9 fix: 公告时间跟随实时变动
公告列表和详情页的时间改为显示当前实时时间
不再显示数据库中存储的旧创建时间(2022-11-09)
2026-03-31 10:51:08 +08:00

1566 lines
56 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\api\controller;
use app\common\controller\Api;
use think\Db;
use think\Config;
/**
* 首页接口
*/
class Index extends Api
{
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
//获取首页banner
public function get_banner()
{
$type = $this->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( '&nbsp;' , '' , $value['content'] );
break;
case "fre":
$value['content'] = strip_tags($value['content_fre']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_fre'];
break;
case "ger":
$value['content'] = strip_tags($value['content_ger']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_ger'];
break;
case "ily":
$value['content'] = strip_tags($value['content_ily']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_ily'];
break;
case "jp":
$value['content'] = strip_tags($value['content_jp']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_jp'];
break;
case "kr":
$value['content'] = strip_tags($value['content_kr']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_kr'];
break;
case "mn":
$value['content'] = strip_tags($value['content_mn']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_mn'];
break;
case "ms":
$value['content'] = strip_tags($value['content_ms']);
$value['content'] = str_replace( '&nbsp;' , '' , $value['content'] );
$value['title'] = $value['title_ms'];
break;
default:
$value['content'] = strip_tags($value['content_en']);
$value['content'] = str_replace( '&nbsp;' , '' , $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( '&nbsp;' , '' , $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( '&nbsp;' , '' , $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( '&nbsp;' , '' , $value['content'] );
break;
default:
$value['title'] = $value['title_en'];
$value['content'] = strip_tags($value['content_en']);
$value['content'] = str_replace( '&nbsp;' , '' , $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);
}
}