Hongbao.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\hongbao\shop\controller;
  13. use app\shop\controller\BaseShop;
  14. use addon\hongbao\model\Hongbao as HongbaoModel;
  15. use addon\hongbao\model\HongbaoGroup;
  16. /**
  17. * 裂变红包
  18. * Class hongbao
  19. * @package addon\hongbao\shop\controller
  20. */
  21. class Hongbao extends BaseShop
  22. {
  23. /**
  24. * 活动列表
  25. * @return array|mixed
  26. */
  27. public function lists()
  28. {
  29. $hongbao_model = new HongbaoModel();
  30. if (request()->isAjax()) {
  31. $page = input('page', 1);
  32. $page_size = input('page_size', PAGE_LIST_ROWS);
  33. $name = input('name', '');
  34. $status = input('status', '');
  35. $condition = [];
  36. if ($status !== "") {
  37. $condition[] = ['status', '=', $status];
  38. }
  39. $condition[] = ['site_id', '=', $this->site_id];
  40. $condition[] = ['name', 'like', '%' . $name . '%'];
  41. $data = $hongbao_model->getHongbaoPageList($condition, $page, $page_size);
  42. return $data;
  43. } else {
  44. $hongbao_status = $hongbao_model->getHongbaoStatus();
  45. $this->assign('hongbao_status', $hongbao_status['data']);
  46. return $this->fetch("hongbao/lists");
  47. }
  48. }
  49. /**
  50. * 添加活动
  51. * @return mixed
  52. */
  53. public function add()
  54. {
  55. if (request()->isAjax()) {
  56. $data = [
  57. 'site_id' => $this->site_id,
  58. 'name' => input('name', ''),//活动名称
  59. 'money' => input('money', 0),//瓜分金额
  60. 'start_time' => strtotime(input('start_time', '')), // 活动开始时间
  61. 'end_time' => strtotime(input('end_time', '')), // 活动结束时间
  62. 'divide_num' => input('divide_num', 0),//瓜分人数
  63. 'image' => input('image', 0),//优惠券图片
  64. 'inventory' => input('inventory', ''),//库存
  65. 'count' => input('inventory', ''),//发放数量
  66. 'divide_time' => input('divide_time', 1),//瓜分有效期
  67. 'is_simulation' => input('is_simulation', 0),//是否模拟好友
  68. 'is_new' => input('is_new', 0),//仅新人限制
  69. 'balance_set' => input('balance_set', 1),//余额设置
  70. 'divide_type' => input('divide_type', ''),//瓜分方式
  71. 'create_time' => time(),//创建时间
  72. 'remark' => input('remark', ''),//活动规则
  73. ];
  74. $hongbao_model = new HongbaoModel();
  75. $res = $hongbao_model->addHongbao($data);
  76. return $res;
  77. } else {
  78. return $this->fetch("hongbao/add");
  79. }
  80. }
  81. /**
  82. * 编辑活动
  83. * @return mixed
  84. */
  85. public function edit()
  86. {
  87. $hongbao_model = new HongbaoModel();
  88. if (request()->isAjax()) {
  89. $data = [
  90. 'hongbao_id' => input('hongbao_id', ''),
  91. 'site_id' => $this->site_id,
  92. 'name' => input('name', ''),//活动名称
  93. 'money' => input('money', 0),//瓜分金额
  94. 'divide_time' => input('divide_time', 1),//瓜分有效期
  95. 'start_time' => strtotime(input('start_time', '')), // 活动开始时间
  96. 'end_time' => strtotime(input('end_time', '')), // 活动结束时间
  97. 'divide_num' => input('divide_num', 0),//瓜分人数
  98. 'image' => input('image', 0),//优惠券图片
  99. 'inventory' => input('inventory', ''),//发放数量
  100. 'is_simulation' => input('is_simulation', 0),//是否模拟好友
  101. 'is_new' => input('is_new', 0),//仅新人限制
  102. 'balance_set' => input('balance_set', 1),//余额设置
  103. 'divide_type' => input('divide_type', ''),//瓜分方式
  104. 'remark' => input('remark', ''),//活动规则
  105. ];
  106. $res = $hongbao_model->editHongbao($data);
  107. return $res;
  108. } else {
  109. $hongbao_id = input('hongbao_id', 0);
  110. $this->assign('hongbao_id', $hongbao_id);
  111. $condition = [
  112. ['hongbao_id', '=', $hongbao_id],
  113. ['site_id', '=', $this->site_id],
  114. ];
  115. $hongbao_info = $hongbao_model->getHongbaoInfo($condition);
  116. if (empty($hongbao_info['data'])) return $this->error('未获取到裂变红包数据', addon_url('hongbao://shop/hongbao/lists'));
  117. $this->assign('hongbao_info', $hongbao_info['data']);
  118. return $this->fetch("hongbao/edit");
  119. }
  120. }
  121. /**
  122. * 活动推广
  123. */
  124. public function spreadHongbao()
  125. {
  126. $hongbao_id = input('hongbao_id', '');
  127. $hongbao_model = new HongbaoModel();
  128. $hongbao_info = $hongbao_model->getHongbaoInfo([['hongbao_id', '=', $hongbao_id]], 'hongbao_id,name,site_id');
  129. $hongbao_info = $hongbao_info['data'];
  130. $res = $hongbao_model->spread($hongbao_info['hongbao_id'], $hongbao_info['name'], $this->site_id);
  131. return $res;
  132. }
  133. /**
  134. * 关闭活动
  135. */
  136. public function close()
  137. {
  138. if (request()->isAjax()) {
  139. $hongbao_id = input('hongbao_id', 0);
  140. $data = [
  141. 'hongbao_id' => $hongbao_id,
  142. 'site_id' => $this->site_id,
  143. ];
  144. $hongbao_model = new HongbaoModel();
  145. return $hongbao_model->closeHongbao($data);
  146. }
  147. }
  148. /**
  149. * 删除活动
  150. */
  151. public function delete()
  152. {
  153. if (request()->isAjax()) {
  154. $hongbao_id = input('hongbao_id', 0);
  155. $data = [
  156. 'hongbao_id' => $hongbao_id,
  157. 'site_id' => $this->site_id,
  158. ];
  159. $hongbao_model = new HongbaoModel();
  160. return $hongbao_model->deleteHongbao($data);
  161. }
  162. }
  163. /**
  164. * 运营
  165. */
  166. public function operate()
  167. {
  168. $hongbao_id = input('hongbao_id', '0');
  169. if (request()->isAjax()) {
  170. $page = input('page', 1);
  171. $page_size = input('page_size', PAGE_LIST_ROWS);
  172. $condition = [];
  173. $condition[] = ['a.site_id', '=', $this->site_id];
  174. if ($hongbao_id) {
  175. $condition[] = ['a.hongbao_id', '=', $hongbao_id];
  176. }
  177. $alias = 'a';
  178. $join = [
  179. ['promotion_hongbao p', 'a.hongbao_id = p.hongbao_id', 'left'],
  180. ['member m', 'a.header_id = m.member_id', 'left'],
  181. ];
  182. $field = 'a.*,p.name,m.username,m.nickname,m.headimg';
  183. $hongbao_group_model = new HongbaoGroup();
  184. $data = $hongbao_group_model->getHongbaoGroupPageList($condition, $page, $page_size, 'a.group_id desc', $field, $alias, $join);
  185. return $data;
  186. } else {
  187. $this->assign('hongbao_id', $hongbao_id);
  188. return $this->fetch("hongbao/operate");
  189. }
  190. }
  191. /**
  192. * 邀请人
  193. */
  194. public function groupMember()
  195. {
  196. $group_id = input('group_id', '0');
  197. if (request()->isAjax()) {
  198. $hongbao_group_model = new HongbaoGroup();
  199. $condition = [];
  200. $condition[] = ['a.group_id', '=', $group_id];
  201. $condition[] = ['a.site_id', '=', $this->site_id];
  202. $field = 'a.*,p.divide_num,p.money';
  203. $join = [
  204. ['promotion_hongbao p', 'a.hongbao_id = p.hongbao_id', 'left'],
  205. ];
  206. $data = $hongbao_group_model->getHongbaoGroupInfo($condition,$field, $alias = 'a', $join);
  207. $member_arr['code'] = 0;
  208. $member_arr['data']['list'] = $data['data']['member_list'] ??[];
  209. if($member_arr['data']['list']){
  210. foreach ($member_arr['data']['list'] as $k=>$v){
  211. $member_arr['data']['list'][$k]['divide_num'] = $data['data']['divide_num'];
  212. $member_arr['data']['list'][$k]['money'] = $data['data']['money'];
  213. $member_arr['data']['list'][$k]['balance_money'] = $v['money'] ?? '';
  214. }
  215. }
  216. return $member_arr;
  217. } else {
  218. $this->assign('group_id', $group_id);
  219. return $this->fetch("hongbao/group_member");
  220. }
  221. }
  222. }