1566 lines
56 KiB
PHP
Executable File
1566 lines
56 KiB
PHP
Executable File
<?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( ' ' , '' , $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);
|
||
}
|
||
|
||
}
|