Vote.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <?php
  2. /**
  3. *
  4. * @author: wuhaotian<442384644@qq.com>
  5. * @day: 2019/12/07
  6. */
  7. namespace app\admin\controller\vote;
  8. use app\admin\controller\AuthController;
  9. use app\admin\model\vote\Vote as GroupModel;
  10. use app\admin\model\vote\VoteJoin;
  11. use app\admin\model\vote\VoteOrder;
  12. use crmeb\services\JsonService;
  13. use crmeb\services\UtilService;
  14. use crmeb\services\FormBuilder as Form;
  15. use think\facade\Route as Url;
  16. /**
  17. * Class UserGroup
  18. * @package app\admin\controller\user
  19. */
  20. class Vote extends AuthController
  21. {
  22. /**
  23. * 投票页面
  24. * @return string
  25. */
  26. public function index()
  27. {
  28. return $this->fetch();
  29. }
  30. /**
  31. * 投票列表
  32. */
  33. public function groupList()
  34. {
  35. $where = UtilService::getMore([
  36. ['page', 1],
  37. ['limit', 20],
  38. ]);
  39. return JsonService::successlayui(GroupModel::getList($where));
  40. }
  41. /**
  42. * 添加/修改分组页面
  43. * @param int $id
  44. * @return string
  45. */
  46. public function addGroup($id = 0)
  47. {
  48. $group = GroupModel::get($id);
  49. $f = array();
  50. if (!$group) {
  51. $f[] = Form::input('title', '投票标题', '');
  52. $f[] = Form::number('price', '单票价格', 0)->step(0.01);
  53. $f[] = Form::dateTime('start_time', '开始时间', '');
  54. $f[] = Form::dateTime('end_time', '结束时间', '');
  55. // $f[] = Form::input('add_time', '添加事件', $group->getData('start_time'));
  56. $f[] = Form::radio('status', '状态', 0)->setOptions([['label' => '开启', 'value' => 1], ['label' => '关闭', 'value' => 0]]);
  57. // $f[] = Form::input('visit', '访问量', $group->getData('visit'));
  58. } else {
  59. $f[] = Form::input('title', '投票标题', $group->getData('title'));
  60. $f[] = Form::number('price', '单票价格', $group->getData('price'))->step(0.01);
  61. $f[] = Form::number('day_free', '每日免费票', $group->getData('day_free'))->step(1);
  62. $f[] = Form::dateTime('start_time', '开始时间', date('Y-m-d H:i:s', $group->getData('start_time')));
  63. $f[] = Form::dateTime('end_time', '结束时间', date('Y-m-d H:i:s', $group->getData('end_time')));
  64. // $f[] = Form::input('add_time', '添加事件', $group->getData('start_time'));
  65. $f[] = Form::radio('status', '状态', (int)$group->getData('status'))->setOptions([['label' => '开启', 'value' => 1], ['label' => '关闭', 'value' => 0]]);
  66. }
  67. $form = Form::make_post_form('添加用户通知', $f, Url::buildUrl('saveGroup', array('id' => $id)));
  68. $this->assign(compact('form'));
  69. return $this->fetch('public/form-builder');
  70. }
  71. /**
  72. * 添加/修改
  73. * @param int $id
  74. */
  75. public function saveGroup($id = 0)
  76. {
  77. $data = UtilService::postMore([
  78. ['title', ''],
  79. ['start_time', ''],
  80. ['end_time', ''],
  81. ['price', ''],
  82. ['status', ''],
  83. ['day_free', ''],
  84. ]);
  85. $data['start_time'] = strtotime($data['start_time']);
  86. $data['end_time'] = strtotime($data['end_time']);
  87. if ($id) {
  88. if (GroupModel::where('id', $id)->update($data)) {
  89. return JsonService::success('修改成功');
  90. } else {
  91. return JsonService::fail('修改失败或者您没有修改什么!');
  92. }
  93. } else {
  94. $data['add_time'] = time();
  95. if ($res = GroupModel::create($data)) {
  96. return JsonService::success('保存成功', ['id' => $res->id]);
  97. } else {
  98. return JsonService::fail('保存失败!');
  99. }
  100. }
  101. }
  102. /**
  103. * 删除
  104. * @param $id
  105. * @throws \Exception
  106. */
  107. public function delete($id)
  108. {
  109. if (!$id) return $this->failed('数据不存在');
  110. if (!GroupModel::be(['id' => $id])) return $this->failed('数据不存在');
  111. if (!GroupModel::where('id', $id)->delete())
  112. return JsonService::fail(GroupModel::getErrorInfo('删除失败,请稍候再试!'));
  113. else
  114. return JsonService::successful('删除成功!');
  115. }
  116. public function content($id)
  117. {
  118. if (!$id) return $this->failed('数据不存在');
  119. $product = GroupModel::get($id);
  120. if (!$product) return Json::fail('数据不存在!');
  121. $this->assign([
  122. 'content' => $product->detail,
  123. 'field' => 'detail',
  124. 'action' => Url::buildUrl('change_field', ['id' => $id, 'field' => 'detail'])
  125. ]);
  126. return $this->fetch('public/edit_content');
  127. }
  128. public function change_field($id, $field)
  129. {
  130. if (!$id) return $this->failed('数据不存在');
  131. $bargain = GroupModel::get($id);
  132. if (!$bargain) return JsonService::fail('数据不存在!');
  133. if ($field == 'rule') {
  134. $data['rule'] = request()->post('rule');
  135. } else {
  136. $data['detail'] = request()->post('detail');
  137. }
  138. $res = GroupModel::edit($data, $id);
  139. if ($res)
  140. return JsonService::successful('添加成功');
  141. else
  142. return JsonService::fail('添加失败');
  143. }
  144. /**
  145. * 投票页面
  146. * @return string
  147. */
  148. public function join($id)
  149. {
  150. $this->assign('id', $id);
  151. return $this->fetch();
  152. }
  153. /**
  154. * 投票列表
  155. */
  156. public function joinList($id)
  157. {
  158. $where = UtilService::getMore([
  159. ['page', 1],
  160. ['limit', 20],
  161. ['export', 0],
  162. ]);
  163. // $where['vid'] = $id;
  164. JsonService::successlayui(VoteJoin::getList($id, $where));
  165. }
  166. /**
  167. * 投票页面
  168. * @return string
  169. */
  170. public function log($id)
  171. {
  172. $this->assign('id', $id);
  173. return $this->fetch();
  174. }
  175. /**
  176. * 投票列表
  177. */
  178. public function logList($id)
  179. {
  180. $where = UtilService::getMore([
  181. ['page', 1],
  182. ['limit', 20],
  183. ]);
  184. JsonService::successlayui(VoteOrder::getValidList($id, $where));
  185. }
  186. public function fail($id)
  187. {
  188. if (!VoteJoin::be(['id' => $id, 'status' => 0])) JsonService::fail('操作记录不存在或状态错误!');
  189. $fail_msg = request()->post('message', '');
  190. $extract = VoteJoin::get($id);
  191. if (!$extract) JsonService::fail('操作记录不存在!');
  192. if ($extract->status == 1) JsonService::fail('已经通过,错误操作!');
  193. if ($extract->status == 2) JsonService::fail('已经拒绝,请勿重复操作!');
  194. $res = VoteJoin::where('id', $id)->update(['mark' => $fail_msg, 'status' => 2]);
  195. if ($res) {
  196. JsonService::successful('操作成功!');
  197. } else {
  198. JsonService::fail('操作失败!');
  199. }
  200. }
  201. public function succ($id)
  202. {
  203. if (!VoteJoin::be(['id' => $id, 'status' => 0]))
  204. JsonService::fail('操作记录不存在或状态错误!');
  205. VoteJoin::beginTrans();
  206. $extract = VoteJoin::get($id);
  207. if (!$extract) JsonService::fail('操作记录不存!');
  208. if ($extract->status == 1) JsonService::fail('已经通过,请勿重复提现!');
  209. if ($extract->status == -1) JsonService::fail('已经拒绝,错误操作!');
  210. $res = VoteJoin::where('id', $id)->update(['status' => 1, 'sub_id' => VoteJoin::where('vid', $extract['vid'])->max('sub_id') + 1]);
  211. if ($res) {
  212. VoteJoin::commitTrans();
  213. JsonService::successful('操作成功!');
  214. } else {
  215. VoteJoin::rollbackTrans();
  216. JsonService::fail('操作失败!');
  217. }
  218. }
  219. }