Divideticket.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\divideticket\api\controller;
  11. use app\api\controller\BaseApi;
  12. use addon\divideticket\model\Divideticket as DivideticketModel;
  13. use addon\divideticket\model\DivideticketFriendsGroup;
  14. use app\model\member\Member as MemberModel;
  15. /**
  16. * 好友瓜分券
  17. * Class DivideTicket
  18. * @package addon\divideticket\api\controller
  19. */
  20. class Divideticket extends BaseApi
  21. {
  22. /**
  23. * 瓜分活动列表
  24. * @return false|string
  25. */
  26. public function lists()
  27. {
  28. $token = $this->checkToken();
  29. $member_id = '';
  30. if ($token[ 'code' ] >= 0) {
  31. $member_id = $this->member_id;
  32. }
  33. $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
  34. $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
  35. $name = isset($this->params[ 'name' ]) ? $this->params[ 'name' ] : '';
  36. $status = isset($this->params[ 'status' ]) ? $this->params[ 'status' ] : '';
  37. $validity_type = isset($this->params[ 'validity_type' ]) ? $this->params[ 'validity_type' ] : 0;
  38. $validity_start_time = isset($this->params[ 'validity_start_time' ]) ? $this->params[ 'validity_start_time' ] : 0;
  39. $validity_end_time = isset($this->params[ 'validity_end_time' ]) ? $this->params[ 'validity_end_time' ] : 0;
  40. $condition = [];
  41. if ($status != '') {
  42. $condition[] = [ 'status', '=', $status ];
  43. }
  44. $condition[] = [ 'status', '=', 1 ];
  45. //类型
  46. if ($validity_type) {
  47. switch ( $validity_type ) {
  48. case 1: //固定
  49. $condition[] = [ 'validity_end_time', 'between', [ $validity_start_time, $validity_end_time ] ];
  50. break;
  51. case 2:
  52. $condition[] = [ 'fixed_term', 'between', [ $validity_start_time, $validity_end_time ] ];
  53. break;
  54. }
  55. }
  56. $condition[] = [ 'site_id', '=', $this->site_id ];
  57. $condition[] = [ 'name', 'like', '%' . $name . '%' ];
  58. $order = 'create_time desc';
  59. $field = 'coupon_id,site_id,name,start_time,end_time,money,divide_num,image';
  60. $divideticket_model = new DivideticketModel();
  61. $data = $divideticket_model->getDivideticketPageList($condition, $page, $page_size, $order, $field);
  62. $group_arr = [];
  63. if ($member_id != '') {
  64. $friends_group_model = new DivideticketFriendsGroup();
  65. $group_list = $friends_group_model->getDivideticketFriendsGroupList([ [ 'header_id', '=', $member_id ], [ 'site_id', '=', $this->site_id ] ], 'promotion_id,status')[ 'data' ];
  66. if ($group_list) {
  67. $group_arr = array_column($group_list, 'status', 'promotion_id');
  68. }
  69. }
  70. if ($data[ 'data' ]) {
  71. foreach ($data[ 'data' ][ 'list' ] as $k => $v) {
  72. // 2 去瓜分 1瓜分成工(去查看) 0组队中
  73. $data[ 'data' ][ 'list' ][ $k ][ 'g_status' ] = $group_arr[ $v[ 'coupon_id' ] ] ?? 2;
  74. }
  75. }
  76. return $this->response($data);
  77. }
  78. /**
  79. * 我的瓜分优惠券
  80. */
  81. public function launchPage()
  82. {
  83. $token = $this->checkToken();
  84. if ($token[ 'code' ] < 0) return $this->response($token);
  85. $page = $this->params[ 'page' ] ?? 1;
  86. $page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS;
  87. $status = $this->params[ 'status' ] ?? '';
  88. $condition = [
  89. [ 'g.site_id', '=', $this->site_id ],
  90. [ 'g.header_id', '=', $this->member_id ]
  91. ];
  92. if ($status != '') {
  93. $condition[] = [ 'g.status', '=', $status ];
  94. }
  95. $friends_group_model = new DivideticketFriendsGroup();
  96. $join = [
  97. [ 'promotion_friends_coupon p', 'g.promotion_id = p.coupon_id', 'left' ],
  98. ];
  99. $field = 'g.group_id,g.site_id,g.start_time,g.end_time,g.status as g_status,p.coupon_id,g.group_member_ids,g.is_look,p.name,p.divide_num,p.money,p.image';
  100. $data = $friends_group_model->getDivideticketFriendsGroupPageList($condition, $page, $page_size, 'g.group_id desc', $field, 'g', $join);
  101. return $this->response($data);
  102. }
  103. /**
  104. * 瓜分优惠券详情
  105. */
  106. public function info()
  107. {
  108. $token = $this->checkToken();
  109. $coupon_id = isset($this->params[ 'coupon_id' ]) ? $this->params[ 'coupon_id' ] : 0;#活动Id
  110. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : 0;#分组Id
  111. $inviter_id = isset($this->params[ 'inviter_id' ]) ? $this->params[ 'inviter_id' ] : 0;#邀请人Id
  112. if (empty($coupon_id)) {
  113. return $this->response($this->error('', 'REQUEST_COUPON_ID'));
  114. }
  115. $divideticket_model = new DivideticketModel();
  116. $condition = [
  117. [ 'coupon_id', '=', $coupon_id ],
  118. [ 'site_id', '=', $this->site_id ]
  119. ];
  120. $info = $divideticket_model->getDivideticketInfo($condition);
  121. if (empty($info[ 'data' ])) return $this->response($this->error('', '未查询到活动信息'));
  122. $friends_group_model = new DivideticketFriendsGroup();
  123. $group_condition = [
  124. [ 'a.promotion_id', '=', $coupon_id ],
  125. [ 'a.site_id', '=', $this->site_id ],
  126. ];
  127. if ($group_id) {
  128. $group_condition[] = [ 'a.group_id', '=', $group_id ];
  129. } else {
  130. $group_condition[] = [ 'a.header_id', '=', $this->member_id ];
  131. $group_condition[] = [ 'a.status', '<=', 1 ];
  132. }
  133. $field = 'a.*,m.username as header_username,m.nickname as header_nickname,m.headimg as header_headimg';
  134. $alias = 'a';
  135. $join = [
  136. [ 'member m', 'a.header_id = m.member_id', 'left' ]
  137. ];
  138. $group = $friends_group_model->getDivideticketFriendsGroupInfo($group_condition, $field, $alias, $join)[ 'data' ] ?? [];
  139. $info[ 'data' ][ 'inviter_info' ] = [];
  140. if ($inviter_id) {
  141. $member_model = new MemberModel();
  142. $inviter_info = $member_model->getMemberInfo([ [ 'member_id', '=', $inviter_id ], [ 'site_id', '=', $this->site_id ] ], 'member_id,username,nickname,headimg')[ 'data' ];
  143. if ($inviter_info) {
  144. $info[ 'data' ][ 'inviter_info' ][ 'member_id' ] = $inviter_info[ 'member_id' ] ?? '';
  145. $info[ 'data' ][ 'inviter_info' ][ 'username' ] = $inviter_info[ 'username' ] ?? '';
  146. $info[ 'data' ][ 'inviter_info' ][ 'nickname' ] = $inviter_info[ 'nickname' ] ?? '';
  147. $info[ 'data' ][ 'inviter_info' ][ 'headimg' ] = $inviter_info[ 'headimg' ] ?? '';
  148. }
  149. }
  150. $info[ 'data' ][ 'group_info' ] = $group;
  151. $info[ 'data' ][ 'member_id' ] = $this->member_id;
  152. return $this->response($info);
  153. }
  154. /**
  155. * 推广海报
  156. * @return false|string
  157. */
  158. public function poster()
  159. {
  160. $token = $this->checkToken();
  161. if ($token[ 'code' ] < 0) return $this->response($token);
  162. $coupon_id = isset($this->params[ 'coupon_id' ]) ? $this->params[ 'coupon_id' ] : 0;
  163. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : 0;
  164. $inviter_id = isset($this->params[ 'inviter_id' ]) ? $this->params[ 'inviter_id' ] : 0;#邀请人Id
  165. $app_type = isset($this->params[ 'app_type' ]) ? $this->params[ 'app_type' ] : 'h5';
  166. $member_id = $this->member_id;
  167. $arr = [
  168. 'cid' => $coupon_id,
  169. 'gid' => $group_id,
  170. 'id' => $inviter_id
  171. ];
  172. $divideticket_model = new DivideticketModel();
  173. $qrcode = $divideticket_model->poster($arr, $app_type, $this->site_id, $member_id);
  174. return $this->response($qrcode);
  175. }
  176. /**
  177. * 发起瓜分
  178. * @return false|string
  179. */
  180. public function launch()
  181. {
  182. $token = $this->checkToken();
  183. if ($token[ 'code' ] < 0) return $this->response($token);
  184. $coupon_id = isset($this->params[ 'coupon_id' ]) ? $this->params[ 'coupon_id' ] : 0;
  185. if (empty($coupon_id)) {
  186. return $this->response($this->error('', 'REQUEST_ID'));
  187. }
  188. $divideticket_model = new DivideticketModel();
  189. $res = $divideticket_model->launch($coupon_id, $this->member_id, $this->site_id);
  190. return $this->response($res);
  191. }
  192. /**
  193. * 帮瓜分
  194. * @return false|string
  195. */
  196. public function divideticket()
  197. {
  198. $token = $this->checkToken();
  199. if ($token[ 'code' ] < 0) return $this->response($token);
  200. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : 0;
  201. if (empty($group_id)) {
  202. return $this->response($this->error('', 'GROUP_ID'));
  203. }
  204. $divideticket_model = new DivideticketModel();
  205. $res = $divideticket_model->divideticket($group_id, $this->member_id, $this->site_id);
  206. return $this->response($res);
  207. }
  208. }