Huoma.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace app\api\controller;
  3. use app\model\Huoma as HuomaModel;
  4. use app\model\HuomaUser;
  5. use app\model\HuomaZima;
  6. use think\facade\Db;
  7. class Huoma extends Base
  8. {
  9. //活码详情
  10. public function code_detail()
  11. {
  12. $token = $this->request->token;
  13. $data = $this->request->only(['id','uid']);
  14. $is_sing=0;
  15. if(!empty($data['uid'])){
  16. $you=HuomaUser::where([['uid','=',$data['uid']],['mid','=',$data['id']]])->value('bind_code');
  17. if(!empty($you)){
  18. //$you_zima_data=HuomaZima::where('id',$you)->field('id,qrcode_img')->find();
  19. $is_sing=1;
  20. }
  21. }
  22. $code_data=HuomaModel::with(['company'=>function($query){
  23. $query->field('root_id,company_name,logo');
  24. }])->where([['id','=',$data['id']],['status','=',1]])->field('id,name,is_poster,poster_img,root_id')->find();
  25. if(empty($code_data)) return json(['code' => 1, 'msg' => '活码信息为空']);
  26. $data=array(
  27. 'code_data'=>$code_data,
  28. 'is_sing'=>$is_sing
  29. );
  30. return json(['code' => 0, 'data'=>$data ,'msg' => '请求成功.']);
  31. }
  32. //分配二维码
  33. public function send_qrcode()
  34. {
  35. $token = $this->request->token;
  36. $data = $this->request->only(['id','uid','mobile']);
  37. if(!empty($data['uid'])){
  38. $you=HuomaUser::where([['uid','=',$data['uid']],['mid','=',$data['id']]])->value('bind_code');
  39. if(!empty($you)){
  40. $you_zima_data=HuomaZima::where('id',$you)->field('id,qrcode_img')->find();
  41. return json(['code' => 0, 'data'=>$you_zima_data['qrcode_img'] ,'msg' => '请求成功.']);
  42. }
  43. }
  44. $code_data=HuomaModel::where([['id','=',$data['id']],['status','=',1]])->find();
  45. if(empty($code_data)) return json(['code' => 1, 'msg' => '活码信息为空或者已经停止']);
  46. $code_id=$this->switch_type($code_data['id'],$code_data['switch_type']);
  47. if(empty($code_id)) return json(['code' => 1, 'msg' => '二维码暂无']);
  48. $add=array(
  49. 'uid'=>$data['uid'],
  50. 'bind_code'=>$code_id,
  51. 'mid'=>$data['id'],
  52. 'phone'=>!empty($data['mobile'])?$data['mobile']:''
  53. );
  54. Db::startTrans();
  55. try {
  56. HuomaUser::insert($add);
  57. $zima_data=HuomaZima::where('id',$code_id)->find();//->inc('visit_num')->update();
  58. $zima_data->visit_num=Db::raw('visit_num+1');
  59. $zima_data->save();
  60. $code_data->visit=Db::raw('visit+1');
  61. $code_data->save();
  62. Db::commit();
  63. }catch (\Exception $e) {
  64. Db::rollback();
  65. return json(['code' => 1, 'msg' => '录入数据失败.']);
  66. }
  67. return json(['code' => 0, 'data'=>$zima_data['qrcode_img'] ,'msg' => '请求成功.']);
  68. }
  69. private function switch_type($id,$type)
  70. {
  71. $list=HuomaZima::where([['mid','=',$id],['code_invalid_time','>=',date('Y-m-d',time())]])->order('stort asc')->select()->toArray();
  72. $newid=null;
  73. switch($type)
  74. {
  75. //轮循切换
  76. case 1:
  77. $shang=HuomaUser::where('mid',$id)->order('id desc')->value('bind_code');
  78. $xin=null;
  79. foreach($list as $key=>$val){
  80. if($val['visit_num'] < $val['max_visit']){
  81. $xin[]=$val['id'];
  82. }
  83. }
  84. //var_dump($xin);
  85. //exit;
  86. if(empty($xin)) break;
  87. if(!empty($shang)){
  88. $k=array_search($shang,$xin);
  89. if($k==(count($xin)-1)){
  90. $newid=$xin[0];
  91. }
  92. if($k < (count($xin)-1)){
  93. $newid=$xin[$k+1];
  94. }
  95. }else{
  96. $newid=$xin[0];
  97. }
  98. break;
  99. //顺序切换
  100. case 2:
  101. foreach($list as $key=>$val){
  102. if($val['visit_num'] < $val['max_visit']){
  103. //return $val['id'];
  104. $newid=$val['id'];
  105. break;
  106. }
  107. }
  108. break;
  109. //随机切换
  110. case 3:
  111. foreach($list as $key=>$val){
  112. if($val['visit_num'] < $val['max_visit']){
  113. $xin[]=$val['id'];
  114. }
  115. }
  116. $newid=$xin[array_rand($xin)];
  117. break;
  118. }
  119. return $newid;
  120. }
  121. public function sd_list()
  122. {
  123. $list=HuomaModel::with(['zima'])->select();
  124. return json(['code' => 0, 'data'=>$list ,'msg' => '请求成功.']);
  125. }
  126. }
  127. ?>