Vote.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\AdminBaseController;
  4. use app\common\model\VoteApplyModel;
  5. use app\common\model\VoteModel;
  6. use app\common\service\QrcodeService;
  7. use app\common\validate\VoteValidate;
  8. use think\exception\ValidateException;
  9. class Vote extends AdminBaseController
  10. {
  11. /**
  12. * 列表
  13. */
  14. public function index()
  15. {
  16. return view('',[
  17. 'status_list' => VoteModel::STATUS,
  18. ]);
  19. }
  20. public function listVote()
  21. {
  22. $map = $this->dealEqualInput(['status']);
  23. $list = VoteModel::where($map)->limit(input('limit'))->page(input('page'))->append(['status_text'])->select();
  24. $count = VoteModel::where($map)->count();
  25. if ($count == 0) {
  26. ajax_return(1, '未查询到数据');
  27. }
  28. list_return($list, $count);
  29. }
  30. /**
  31. * 编辑
  32. */
  33. public function voteForm()
  34. {
  35. $id = input('id/d, 0');
  36. $info = VoteModel::find($id);
  37. return view('', [
  38. 'info' => $info,
  39. 'status_list' => VoteModel::STATUS,
  40. 'option' => empty($info['option']) ? '[]' : json_encode($info['option']),
  41. ]);
  42. }
  43. public function editVote()
  44. {
  45. $data = input('post.');
  46. try {
  47. validate(VoteValidate::class)->check($data);
  48. } catch (ValidateException $e) {
  49. ajax_return(1, $e->getError());
  50. }
  51. if (empty($data['id'])) {
  52. VoteModel::create($data);
  53. } else {
  54. VoteModel::update($data, ['id' => $data['id']]);
  55. }
  56. ajax_return();
  57. }
  58. public function delVote()
  59. {
  60. $id = input('id/d');
  61. $check = VoteApplyModel::where('vote_id', $id)->find();
  62. if (!empty($check)) {
  63. ajax_return(1, '已有投票的活动无法删除!');
  64. }
  65. VoteModel::destroy($id);
  66. ajax_return();
  67. }
  68. /**
  69. * 二维码
  70. */
  71. public function qrcodeVote()
  72. {
  73. $id = input('id/d', 0);
  74. $file_name = "/vote_{$id}.png";
  75. $link = url('/mobile/vote/detail') . '?id=' . $id;
  76. $file_url = QrcodeService::getQrcode($file_name, $link, 600);
  77. ajax_return(0, '', $file_url);
  78. }
  79. /**
  80. * 查看票数
  81. */
  82. public function showNum()
  83. {
  84. $id = input('id/d', 0);
  85. $apply = VoteApplyModel::where('vote_id', $id)->select();
  86. $res = [];
  87. foreach ($apply as $v) {
  88. if (empty($res[$v['option_name']])) {
  89. $res[$v['option_name']] = 0;
  90. }
  91. $res[$v['option_name']]++;
  92. }
  93. return view('', [
  94. 'info' => $res,
  95. ]);
  96. }
  97. /**
  98. * 投票明细
  99. */
  100. public function apply()
  101. {
  102. $vote_list = VoteModel::select();
  103. return view('', [
  104. 'vote_list' => $vote_list,
  105. ]);
  106. }
  107. public function listApply()
  108. {
  109. $map = $this->dealEqualInput(['vote_id']);
  110. $list = VoteApplyModel::with(['user', 'vote'])->where($map)->limit(input('limit'))->page(input('page'))->select();
  111. $count = VoteApplyModel::where($map)->count();
  112. if ($count == 0) {
  113. ajax_return(1, '未查询到数据');
  114. }
  115. list_return($list, $count);
  116. }
  117. /**
  118. * 带活动id的投票明细
  119. */
  120. public function applyVote()
  121. {
  122. return view('', [
  123. 'id' => input('id/d', 0),
  124. ]);
  125. }
  126. }