123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- <?php
- /* 应用 - ICO众筹认购 */
- namespace Mobile\Controller;
- class IssueController extends MobileController
- {
- protected function _initialize()
- {
- parent::_initialize();
- $allow_action=array("index","details","issuelog", "upbuynum","sendteamjl");
- if(!in_array(ACTION_NAME,$allow_action)){
- $this->error(L("非法操作"));
- }
- }
- //认购首页
- public function index(){
- $fields = "id,name,coinname,buycoin,num,price,imgs,lockday,starttime,finishtime,ysnum,sellnum";
- $list = M("issue")->where(array('status'=>1))->field($fields)->order("id desc")->select();
- // $this->assign('list',$list);
- $congif = M("config")->where(array('id'=>1))->field("webissue")->find();
- $webissue = $congif['webissue'];
- foreach ($list as &$item){
- $item['imgs'] = 'http://'.$_SERVER['HTTP_HOST'].'/Upload/public/'.$item['imgs'];
- }
- $data = [
- 'list' => $list,
- 'webissue' => 'http://'.$_SERVER['HTTP_HOST'].'/Upload/public/'.$webissue,
- ];
- $this->ajaxReturn(['code' => 1, 'data' => $data]);
- // $this->assign('webissue',$webissue);
- // $this->display();
- }
-
- //认购项目详情
- public function details($id=NULL){
- $info = M("issue")->where(array('id'=>$id))->find();
- if(empty($info)){
- $this->ajaxReturn(['code' => 3, 'info' => L('未登录')]);
- }
- $uid = userid();
- $buycoin = trim($info['buycoin']);
- $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
- // $this->assign("uid",$uid);
- $money = $minfo[$buycoin];
- if($money <= 0){
- $money = 0;
- }
- $info['imgs'] = 'http://'.$_SERVER['HTTP_HOST'].'/Upload/public/'.$info['imgs'];
- $data = [
- 'uid' => $uid,
- 'info' => $info,
- 'money' => $money,
- ];
- $this->ajaxReturn(['code' => 1, 'data' => $data]);
- // $this->assign('info',$info);
- // $this->assign("money",$money);
-
- // $this->display();
- }
-
-
- public function upbuynum($pid=null,$num=null){
- if (checkstr($pid) || checkstr($num)) {
- $this->ajaxReturn(['code'=>0,'info'=>L('参数错误')]);
- }
- $uid = userid();
- $uinfo = M("user")->where(array('id'=>$uid))->field("id,rzstatus,username,invit_1,invit_2,invit_3,is_tax,taxstatus")->find();
- if(empty($uinfo)){
- $this->ajaxReturn(['code' => 3, 'info' => L('未登录')]);
- }
-
- if($uinfo['rzstatus'] != 2){
- $this->ajaxReturn(['code'=>0,'info'=>L('请先完成实名认证')]);
- }
-
- //检查该会员是不是需要缴纳税金,如有需要检查有没有缴纳
- if($uinfo['is_tax'] == 1){
- if($uinfo['taxstatus'] != 1){
- $this->ajaxReturn(['code'=>3]);
- }
- }
- $issue = M("issue")->where(array('id'=>$pid))->find();
- if(empty($issue)){
- $this->ajaxReturn(['code'=>0,'info'=>L('参数错误')]);
- }
-
- if(time() < strtotime($issue['starttime'])){
- $this->ajaxReturn(['code'=>0,'info'=>L('认购未开始')]);
- }
- if(time() > strtotime($issue['finishtime'])){
- $this->ajaxReturn(['code'=>0,'info'=>L('认购已结束')]);
- }
- if($issue['state'] != 1){
- $this->ajaxReturn(['code'=>0,'info'=>L('禁止认购')]);
- }
-
-
- if($num <= 0){
- $this->ajaxReturn(['code'=>0,'info'=>L('请输入认购数量')]);
- }
- if($num < $issue['min']){
- $this->ajaxReturn(['code'=>0,'info'=>L('不能小于最低认购量')]);
- }
- if($num > $issue['max']){
- $this->ajaxReturn(['code'=>0,'info'=>L('不能高于最高认购量')]);
- }
-
- //查已经认购的量
- $allnum = M("issue_log")->where(array('uid'=>$uid,'pid'=>$pid))->count("num");
- if(($allnum + $num) > $issue['allmax']){
- $this->ajaxReturn(['code'=>0,'info'=>L('已超出个人认购上限')]);
- }
-
- //计算发行剩余量
- $surplus = $issue['num'] - $issue['sellnum'] - $issue['ysnum'];
- if($surplus < $num){
- $this->ajaxReturn(['code'=>0,'info'=>L('超出发行总量')]);
- }
-
- //计算支付额度
- $allmoney = $num * $issue['price'];
- $buycoin = trim(strtolower($issue['buycoin']));
-
- //查会员余额
- $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
- if($minfo[$buycoin] < $allmoney){
- $this->ajaxReturn(['code'=>0,'info'=>L('账户余额不足')]);
- }
-
- //组装认购记录
- $log['pid'] = $pid;
- $log['uid'] = $uid;
- $log['account'] = $uinfo['username'];
- $log['name'] = $issue['name'];
- $log['coinname'] = $issue['coinname'];
- $log['buycoin'] = $issue['buycoin'];
- $log['price'] = $issue['price'];
- $log['num'] = $num;
- $log['mum'] = $allmoney;
- $log['lockday'] = $issue['lockday'];
- $log['addtime'] = date("Y-m-d H:i:s",time());
- $log['endtime'] = date("Y-m-d H:i:s",(time() + 86400 *$issue['lockday']));
- $log['endday'] = date("Y-m-d",(time() + 86400 *$issue['lockday']));
- $log['status'] = 1;
- $logre = M("issue_log")->add($log);
-
-
- //修改项目已出售量
- $upre = M("issue")->where(array('id'=>$pid))->setInc('sellnum',$num);
-
- //扣除会员购买金额并写入日志
- $decre = M("user_coin")->where(array('userid'=>$uid))->setDec($buycoin,$allmoney);
-
- $decbill['uid'] = $uid;
- $decbill['username'] = $uinfo['username'];
- $decbill['num'] = $allmoney;
- $decbill['coinname'] = $buycoin;
- $decbill['afternum'] = $minfo[$buycoin] - $allmoney;
- $decbill['type'] = 11;
- $decbill['addtime'] = date("Y-m-d H:i:s",time());
- $decbill['st'] = 2;
- $decbill['remark'] = $issue['name'].L("认购");
- $decbillre = M("bill")->add($decbill);
-
- //增加会员认购币金额(冻结)并写入日志
- $coinnamed = $issue['coinname']."d";
- $incre = M("user_coin")->where(array('userid'=>$uid))->setInc($coinnamed,$num);
-
- $incbill['uid'] = $uid;
- $incbill['username'] = $uinfo['username'];
- $incbill['num'] = $num;
- $incbill['coinname'] = $issue['coinname'];
- $incbill['afternum'] = $minfo[$coinnamed] - $num;
- $incbill['type'] = 12;
- $incbill['addtime'] = date("Y-m-d H:i:s",time());
- $incbill['st'] = 1;
- $incbill['remark'] = $issue['name'].L("认购");
- $incbillre = M("bill")->add($incbill);
-
- if($logre && $upre && $decre && $decbillre && $incre && $incbillre){
-
- $jlcoin = $issue['jlcoin'];
- if($uinfo['invit_1'] > 0){
- $onebl = $issue['one_jl'];
- $onemoney = $num * $onebl / 100;
- if($onemoney > 0){
- $this->sendteamjl($uinfo['invit_1'],$onemoney,$jlcoin,1);
- }
- }
- if($uinfo['invit_2'] > 0){
- $twobl = $issue['two_jl'];
- $twomoney = $num * $twobl / 100;
- $this->sendteamjl($uinfo['invit_2'],$twomoney,$jlcoin,2);
- }
- if($uinfo['invit_3'] > 0){
- $threebl = $issue['three_jl'];
- $threemoney = $num * $threebl / 100;
- $this->sendteamjl($uinfo['invit_3'],$threemoney,$jlcoin,3);
- }
- $this->ajaxReturn(['code'=>1,'info'=>L('认购成功')]);
- }else{
- $this->ajaxReturn(['code'=>0,'info'=>L('认购失败')]);
- }
-
- }
-
- //派发团队奖励
- public function sendteamjl($uid,$money,$coinanme,$invit){
- $coinnamed = $coinanme."d";
- $uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find();
- $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
- M("user_coin")->where(array('userid'=>$uid))->setInc($coinnamed,$money);
- if($invit == 1){
- $type = 13;
- $str = L('一代会员认购奖励');
- }elseif($invit == 2){
- $type = 14;
- $str = L('二代会员认购奖励');
- }elseif($invit == 3){
- $type = 15;
- $str = L('三代会员认购奖励');
- }
- $incbill['uid'] = $uid;
- $incbill['username'] = $uinfo['username'];
- $incbill['num'] = $money;
- $incbill['coinname'] = $coinanme;
- $incbill['afternum'] = $minfo[$coinnamed] + $money;
- $incbill['type'] = $type;
- $incbill['addtime'] = date("Y-m-d H:i:s",time());
- $incbill['st'] = 1;
- $incbill['remark'] = $str;
- M("bill")->add($incbill);
- }
-
- //认购记录
- public function issuelog(){
- if (!userid()) {
- $this->ajaxReturn(['code' => 3, 'info' => L('未登录')]);
- }
-
- $uid = userid();
- $type = I('get.type');
- $page = I('get.page');
- $limit = I('get.limit');
- if ($type == 1){
- //全部认购
- $list = M("issue_log")->where(array('uid'=>$uid))->page($page, $limit)->order("id desc")->select();
- }elseif ($type == 2){
- //冻结中的认购
- $list = M("issue_log")->where(array('uid'=>$uid,'status'=>1))->page($page, $limit)->order("id desc")->select();
- }elseif ($type == 3){
- //已解冻
- $list = M("issue_log")->where(array('uid'=>$uid,'status'=>2))->page($page, $limit)->order("id desc")->select();
- }
- $list = count($list) == 0 ? [] : $list;
- $this->ajaxReturn(['code' => 1, 'data' => $list]);
- }
- }
- ?>
|