IssueController.class.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <?php
  2. namespace Home\Controller;
  3. class IssueController extends HomeController
  4. {
  5. protected function _initialize()
  6. {
  7. parent::_initialize();
  8. $allow_action=array("index","details","issuelog", "upbuynum","sendteamjl","normalissue","overdueissue");
  9. if(!in_array(ACTION_NAME,$allow_action)){
  10. $this->error(L("非法操作"));
  11. }
  12. }
  13. //认购冻结中的记录
  14. public function normalissue(){
  15. if (!userid()) {
  16. $this->redirect('/Login/index');
  17. }
  18. $uid = userid();
  19. $list = M("issue_log")->where(array('uid'=>$uid,'status'=>1))->order("id desc")->select();
  20. $this->assign('list',$list);
  21. $this->display();
  22. }
  23. //认购已解冻结的记录
  24. public function overdueissue(){
  25. if (!userid()) {
  26. $this->redirect('/Login/index');
  27. }
  28. $uid = userid();
  29. $list = M("issue_log")->where(array('uid'=>$uid,'status'=>2))->order("id desc")->select();
  30. $this->assign('list',$list);
  31. $this->display();
  32. }
  33. //认购首页
  34. public function index(){
  35. $list = M("issue")->where(array('status'=>1))->order("id desc")->select();
  36. $this->assign('list',$list);
  37. $this->display();
  38. }
  39. //认购项目详情
  40. public function details($id=NULL){
  41. $info = M("issue")->where(array('id'=>$id))->find();
  42. if(empty($info)){
  43. $this->redirect('Issue/index');
  44. }
  45. $uid = userid();
  46. $buycoin = trim($info['buycoin']);
  47. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  48. $this->assign("uid",$uid);
  49. $money = $minfo[$buycoin];
  50. if($money <= 0){
  51. $money = 0;
  52. }
  53. $this->assign('info',$info);
  54. $this->assign("money",$money);
  55. $list = M("issue_log")->where(array('uid'=>$uid,'status'=>1))->order("id desc")->select();
  56. $this->assign('list',$list);
  57. $this->display();
  58. }
  59. public function upbuynum($pid=null,$num=null){
  60. if (checkstr($id) || checkstr($num)) {
  61. $this->ajaxReturn(['code'=>0,'info'=>L('参数错误')]);
  62. }
  63. $uid = userid();
  64. $uinfo = M("user")->where(array('id'=>$uid))->field("id,rzstatus,username,invit_1,invit_2,invit_3,is_tax,taxstatus")->find();
  65. if(empty($uinfo)){
  66. $this->ajaxReturn(['code'=>0,'info'=>L('请先登陆')]);
  67. }
  68. if($uinfo['rzstatus'] != 2){
  69. $this->ajaxReturn(['code'=>0,'info'=>L('请先完成实名认证')]);
  70. }
  71. //检查该会员是不是需要缴纳税金,如有需要检查有没有缴纳
  72. if($uinfo['is_tax'] == 1){
  73. if($uinfo['taxstatus'] != 1){
  74. $this->ajaxReturn(['code'=>3]);
  75. }
  76. }
  77. $issue = M("issue")->where(array('id'=>$pid))->find();
  78. if(empty($issue)){
  79. $this->ajaxReturn(['code'=>0,'info'=>L('参数错误')]);
  80. }
  81. if(time() < strtotime($issue['starttime'])){
  82. $this->ajaxReturn(['code'=>0,'info'=>L('认购未开始')]);
  83. }
  84. if(time() > strtotime($issue['finishtime'])){
  85. $this->ajaxReturn(['code'=>0,'info'=>L('认购已结束')]);
  86. }
  87. if($issue['state'] != 1){
  88. $this->ajaxReturn(['code'=>0,'info'=>L('禁止认购')]);
  89. }
  90. if($num <= 0){
  91. $this->ajaxReturn(['code'=>0,'info'=>L('请输入认购数量')]);
  92. }
  93. if($num < $issue['min']){
  94. $this->ajaxReturn(['code'=>0,'info'=>L('不能小于最低认购量')]);
  95. }
  96. if($num > $issue['max']){
  97. $this->ajaxReturn(['code'=>0,'info'=>L('不能高于最高认购量')]);
  98. }
  99. //查已经认购的量
  100. $allnum = M("issue_log")->where(array('uid'=>$uid,'pid'=>$id))->count("num");
  101. if(($allnum + $num) > $issue['allmax']){
  102. $this->ajaxReturn(['code'=>0,'info'=>L('已超出个人认购上限')]);
  103. }
  104. //计算发行剩余量
  105. $surplus = $issue['num'] - $issue['sellnum'] - $issue['ysnum'];
  106. if($surplus < $num){
  107. $this->ajaxReturn(['code'=>0,'info'=>L('超出发行总量')]);
  108. }
  109. //计算支付额度
  110. $allmoney = $num * $issue['price'];
  111. $buycoin = trim(strtolower($issue['buycoin']));
  112. //查会员余额
  113. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  114. if($minfo[$buycoin] < $allmoney){
  115. $this->ajaxReturn(['code'=>0,'info'=>L('账户余额不足')]);
  116. }
  117. //组装认购记录
  118. $log['pid'] = $pid;
  119. $log['uid'] = $uid;
  120. $log['account'] = $uinfo['username'];
  121. $log['name'] = $issue['name'];
  122. $log['coinname'] = $issue['coinname'];
  123. $log['buycoin'] = $issue['buycoin'];
  124. $log['price'] = $issue['price'];
  125. $log['num'] = $num;
  126. $log['mum'] = $allmoney;
  127. $log['lockday'] = $issue['lockday'];
  128. $log['addtime'] = date("Y-m-d H:i:s",time());
  129. $log['endtime'] = date("Y-m-d H:i:s",(time() + 86400 *$issue['lockday']));
  130. $log['endday'] = date("Y-m-d",(time() + 86400 *$issue['lockday']));
  131. $log['status'] = 1;
  132. $logre = M("issue_log")->add($log);
  133. //修改项目已出售量
  134. $upre = M("issue")->where(array('id'=>$pid))->setInc('sellnum',$num);
  135. //扣除会员购买金额并写入日志
  136. $decre = M("user_coin")->where(array('userid'=>$uid))->setDec($buycoin,$allmoney);
  137. $decbill['uid'] = $uid;
  138. $decbill['username'] = $uinfo['username'];
  139. $decbill['num'] = $allmoney;
  140. $decbill['coinname'] = $buycoin;
  141. $decbill['afternum'] = $minfo[$buycoin] - $allmoney;
  142. $decbill['type'] = 11;
  143. $decbill['addtime'] = date("Y-m-d H:i:s",time());
  144. $decbill['st'] = 2;
  145. $decbill['remark'] = $issue['name'].L("认购");
  146. $decbillre = M("bill")->add($decbill);
  147. //增加会员认购币金额(冻结)并写入日志
  148. $coinnamed = $issue['coinname']."d";
  149. $incre = M("user_coin")->where(array('userid'=>$uid))->setInc($coinnamed,$num);
  150. $incbill['uid'] = $uid;
  151. $incbill['username'] = $uinfo['username'];
  152. $incbill['num'] = $num;
  153. $incbill['coinname'] = $issue['coinname'];
  154. $incbill['afternum'] = $minfo[$coinnamed] - $num;
  155. $incbill['type'] = 12;
  156. $incbill['addtime'] = date("Y-m-d H:i:s",time());
  157. $incbill['st'] = 1;
  158. $incbill['remark'] = $issue['name'].L("认购");
  159. $incbillre = M("bill")->add($incbill);
  160. if($logre && $upre && $decre && $decbillre && $incre && $incbillre){
  161. $jlcoin = $issue['jlcoin'];
  162. if($uinfo['invit_1'] > 0){
  163. $onebl = $issue['one_jl'];
  164. $onemoney = $num * $onebl / 100;
  165. if($onemoney > 0){
  166. $this->sendteamjl($uinfo['invit_1'],$onemoney,$jlcoin,1);
  167. }
  168. }
  169. if($uinfo['invit_2'] > 0){
  170. $twobl = $issue['two_jl'];
  171. $twomoney = $num * $twobl / 100;
  172. $this->sendteamjl($uinfo['invit_2'],$twomoney,$jlcoin,2);
  173. }
  174. if($uinfo['invit_3'] > 0){
  175. $threebl = $issue['three_jl'];
  176. $threemoney = $num * $threebl / 100;
  177. $this->sendteamjl($uinfo['invit_3'],$threemoney,$jlcoin,3);
  178. }
  179. $this->ajaxReturn(['code'=>0,'info'=>L('认购成功')]);
  180. }else{
  181. $this->ajaxReturn(['code'=>0,'info'=>L('认购失败')]);
  182. }
  183. }
  184. //派发团队奖励
  185. public function sendteamjl($uid,$money,$coinanme,$invit){
  186. $coinnamed = $coinanme."d";
  187. $uinfo = M("user")->where(array('id'=>$uid))->field("id,username")->find();
  188. $minfo = M("user_coin")->where(array('userid'=>$uid))->find();
  189. M("user_coin")->where(array('userid'=>$uid))->setInc($coinnamed,$money);
  190. if($invit == 1){
  191. $type = 13;
  192. $str = L('一代会员认购奖励');
  193. }elseif($invit == 2){
  194. $type = 14;
  195. $str = L('二代会员认购奖励');
  196. }elseif($invit == 3){
  197. $type = 15;
  198. $str = L('三代会员认购奖励');
  199. }
  200. $incbill['uid'] = $uid;
  201. $incbill['username'] = $uinfo['username'];
  202. $incbill['num'] = $money;
  203. $incbill['coinname'] = $coinanme;
  204. $incbill['afternum'] = $minfo[$coinnamed] + $money;
  205. $incbill['type'] = $type;
  206. $incbill['addtime'] = date("Y-m-d H:i:s",time());
  207. $incbill['st'] = 1;
  208. $incbill['remark'] = $str;
  209. M("bill")->add($incbill);
  210. }
  211. //认购记录
  212. public function issuelog(){
  213. if (!userid()) {
  214. redirect('/Login/index');
  215. }
  216. $uid = userid();
  217. //全部认购
  218. $alllist = M("issue_log")->where(array('uid'=>$uid))->order("id desc")->select();
  219. $this->assign('alllist',$alllist);
  220. //冻结中的认购
  221. $djllist = M("issue_log")->where(array('uid'=>$uid,'status'=>1))->order("id desc")->select();
  222. $this->assign('djllist',$djllist);
  223. //已解冻
  224. $jdllist = M("issue_log")->where(array('uid'=>$uid,'status'=>2))->order("id desc")->select();
  225. $this->assign('jdllist',$jdllist);
  226. $this->display();
  227. }
  228. }
  229. ?>