Memberlevel.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\shop\controller;
  11. use app\model\member\MemberLevel as MemberLevelModel;
  12. use addon\coupon\model\CouponType;
  13. use app\model\member\Member as MemberModel;
  14. use app\model\member\Config;
  15. use app\model\system\UserGroup;
  16. /**
  17. * 会员等级管理 控制器
  18. */
  19. class Memberlevel extends BaseShop
  20. {
  21. /**
  22. * 会员等级列表
  23. */
  24. public function levelList()
  25. {
  26. if (request()->isAjax()) {
  27. $page = input('page', 1);
  28. $page_size = input('page_size', PAGE_LIST_ROWS);
  29. $search_text = input('search_text', '');
  30. $level_type = input('level_type', 0);
  31. $condition = [
  32. [ 'site_id', '=', $this->site_id ],
  33. [ 'level_type', '=', $level_type ]
  34. ];
  35. if (!empty($search_text)) $condition[] = [ 'level_name', 'like', "%" . $search_text . "%" ];
  36. $order = 'growth asc';
  37. $field = '*';
  38. $member_level_model = new MemberLevelModel();
  39. $list = $member_level_model->getMemberLevelPageList($condition, 1, MEMBER_LEVEL, $order, $field);
  40. $member_count = count($list[ 'data' ][ 'list' ]);
  41. $list_count = MEMBER_LEVEL - $member_count;
  42. $member_level = array ();
  43. for ($i = 1; $i <= $list_count; $i++) {
  44. $member_level[ $i ][ 'level_vip' ] = "VIP" . ( $i + count($list[ 'data' ][ 'list' ]) );
  45. }
  46. $list[ 'data' ][ 'list' ] = array_merge($list[ 'data' ][ 'list' ], $member_level);
  47. $member_status = 0;
  48. $store_id_arr = [];
  49. $userGroupModel = new UserGroup();
  50. $userInfo = $this->user_info;
  51. $userGroupWhere['uid'] = $userInfo['uid'];
  52. $userGroupList = $userGroupModel->getUserList($userGroupWhere,'uid,store_id');
  53. $store_id_arr = array_column($userGroupList['data'],'store_id');
  54. if(!empty($store_id_arr) && !$userInfo['is_admin']){
  55. $store_where[] = [ "store_id", "in", $store_id_arr];
  56. }
  57. if (!empty($list[ 'data' ][ 'list' ])) {
  58. $member_model = new MemberModel();
  59. foreach ($list[ 'data' ][ 'list' ] as $k => $item) {
  60. $list[ 'data' ][ 'list' ][ $k ][ 'member_num' ] = 0;
  61. if (isset($item[ 'level_id' ])) {
  62. $store_where[] = [ [ 'member_level', '=', $item[ 'level_id' ] ], [ 'is_delete', '=', 0 ] ];
  63. $count = $member_model->getMemberCount($store_where);
  64. $list[ 'data' ][ 'list' ][ $k ][ 'member_num' ] = $count[ 'data' ];
  65. }
  66. $list[ 'data' ][ 'list' ][ $k ][ 'level_vip' ] = 'VIP' . ( $k + 1 );
  67. $list[ 'data' ][ 'list' ][ $k ][ 'is_show' ] = 0;
  68. if ($k > 1 && $k == $member_count && $k < MEMBER_LEVEL) {
  69. if ($list[ 'data' ][ 'list' ][ $k - 1 ][ 'status' ] == 1) $list[ 'data' ][ 'list' ][ $k ][ 'is_add' ] = 1;
  70. }
  71. if ($k > 0 && $k < $member_count && $member_status == 0) {
  72. $list[ 'data' ][ 'list' ][ $k ][ 'is_one' ] = 0;
  73. if ($item[ 'status' ] == 0) {
  74. $list[ 'data' ][ 'list' ][ $k ][ 'is_show' ] = 1;
  75. $list[ 'data' ][ 'list' ][ $k - 1 ][ 'is_show' ] = 1;
  76. $member_status = 1;
  77. }
  78. if ($k == $member_count - 1 && $list[ 'data' ][ 'list' ][ $member_count - 1 ] [ 'status' ] == 1) {
  79. $list[ 'data' ][ 'list' ][ $k ][ 'is_show' ] = 1;
  80. }
  81. }
  82. }
  83. if ($member_count == 1) {
  84. $list[ 'data' ][ 'list' ][ $member_count ][ 'is_add' ] = 1;
  85. }
  86. $list[ 'data' ][ 'list' ][ 0 ][ 'is_show' ] = 0;
  87. }
  88. return $list;
  89. } else {
  90. $config = ( new Config )->getMemberConfig($this->site_id, $this->app_module)[ 'data' ] ?? [];
  91. $this->assign('is_update', $config[ 'value' ][ 'is_update' ] ?? 1);
  92. return $this->fetch('memberlevel/level_list');
  93. }
  94. }
  95. /**
  96. * 会员等级添加
  97. */
  98. public function addLevel()
  99. {
  100. $member_level_model = new MemberLevelModel();
  101. if (request()->isAjax()) {
  102. $data = [
  103. 'site_id' => $this->site_id,
  104. 'level_name' => input('level_name', ''),
  105. 'growth' => input('growth', 0),
  106. 'remark' => input('remark', ''),
  107. 'is_free_shipping' => input('is_free_shipping', 0),
  108. 'consume_discount' => input('consume_discount', 100),
  109. 'point_feedback' => input('point_feedback', 0),
  110. 'send_point' => input('send_point', 0),
  111. 'send_balance' => input('send_balance', 0),
  112. 'send_coupon' => input('send_coupon', ''),
  113. 'level_type' => 0,
  114. 'charge_rule' => '',
  115. 'charge_type' => 0,
  116. 'bg_color' => input('bg_color', '#333333'),
  117. 'level_text_color' => input('level_text_color', '#ffffff'),
  118. 'level_picture' => input('level_picture', ''),
  119. ];
  120. $this->addLog("会员等级添加:" . $data[ 'level_name' ]);
  121. $res = $member_level_model->addMemberLevel($data);
  122. ( new Config )->setMemberConfig([ 'is_update' => 1 ], $this->site_id, $this->app_module)[ 'data' ] ?? [];
  123. return $res;
  124. } else {
  125. //获取优惠券列表
  126. $coupon_model = new CouponType();
  127. $condition = [
  128. [ 'status', '=', 1 ],
  129. [ 'site_id', '=', $this->site_id ],
  130. ];
  131. //优惠券字段
  132. $coupon_field = 'coupon_type_id,type,coupon_name,image,money,discount,validity_type,fixed_term,status,is_limit,at_least,count,lead_count,end_time,goods_type,max_fetch';
  133. $coupon_list = $coupon_model->getCouponTypeList($condition, $coupon_field);
  134. $this->assign('coupon_list', $coupon_list);
  135. $this->assign('level_time', $member_level_model->level_time);
  136. $growth_up = $member_level_model->getFirstMemberLevel([ [ 'site_id', '=', $this->site_id ], [ 'level_type', '=', '0' ] ], 'growth', 'growth desc')[ 'data' ][ 'growth' ] ?? 0;
  137. $this->assign('growth_up', $growth_up);
  138. return $this->fetch('memberlevel/add_level');
  139. }
  140. }
  141. /**
  142. * 会员等级修改
  143. */
  144. public function editLevel()
  145. {
  146. $member_level_model = new MemberLevelModel();
  147. if (request()->isAjax()) {
  148. $data = [
  149. 'level_name' => input('level_name', ''),
  150. 'growth' => input('growth', 0.00),
  151. 'remark' => input('remark', ''),
  152. 'is_free_shipping' => input('is_free_shipping', 0),
  153. 'consume_discount' => input('consume_discount', 100),
  154. 'point_feedback' => input('point_feedback', 0),
  155. 'send_point' => input('send_point', 0),
  156. 'send_balance' => input('send_balance', 0),
  157. 'send_coupon' => input('send_coupon', ''),
  158. 'charge_rule' => '',
  159. 'bg_color' => input('bg_color', '#333333'),
  160. 'level_text_color' => input('level_text_color', '#ffffff'),
  161. 'level_picture' => input('level_picture', ''),
  162. ];
  163. $level_id = input('level_id', 0);
  164. $this->addLog("会员等级修改:" . $data[ 'level_name' ]);
  165. ( new Config )->setMemberConfig([ 'is_update' => 1 ], $this->site_id, $this->app_module)[ 'data' ] ?? [];
  166. return $member_level_model->editMemberLevel($data, [ [ 'level_id', '=', $level_id ], [ 'site_id', '=', $this->site_id ] ]);
  167. } else {
  168. $level_id = input('get.level_id', 0);
  169. $level_info = $member_level_model->getMemberLevelInfo([ [ 'level_id', '=', $level_id ], [ 'site_id', '=', $this->site_id ] ]);
  170. if (empty($level_info[ 'data' ])) $this->error('未获取到等级数据', addon_url('shop/memberlevel/levellist'));
  171. $this->assign('level_info', $level_info[ 'data' ]);
  172. $this->assign('level_time', $member_level_model->level_time);
  173. //获取优惠券列表
  174. $coupon_model = new CouponType();
  175. $condition = [
  176. [ 'status', '=', 1 ],
  177. [ 'site_id', '=', $this->site_id ],
  178. ];
  179. //优惠券字段
  180. $coupon_field = 'coupon_type_id,type,coupon_name,image,money,discount,validity_type,fixed_term,status,is_limit,at_least,count,lead_count,end_time,goods_type,max_fetch';
  181. $coupon_list = $coupon_model->getCouponTypeList($condition, $coupon_field);
  182. $this->assign('coupon_list', $coupon_list);
  183. $growth_up = $member_level_model->getFirstMemberLevel([ [ 'growth', '<', $level_info[ 'data' ][ 'growth' ] ], [ 'site_id', '=', $this->site_id ], [ 'level_type', '=', '0' ] ], 'growth', 'growth desc')[ 'data' ];
  184. //下级
  185. $growth_down = $member_level_model->getFirstMemberLevel([ [ 'growth', '>', $level_info[ 'data' ][ 'growth' ] ], [ 'site_id', '=', $this->site_id ], [ 'level_type', '=', '0' ] ], 'growth', 'growth asc')[ 'data' ];
  186. $this->assign('growth_up', $growth_up ? $growth_up['growth'] : 0);
  187. $this->assign('growth_down', $growth_down ? $growth_down['growth'] : 0);
  188. return $this->fetch('memberlevel/edit_level');
  189. }
  190. }
  191. /**
  192. * 会员等级删除
  193. */
  194. public function deleteLevel()
  195. {
  196. $level_id = input('level_id', '');
  197. $member_level_model = new MemberLevelModel();
  198. $this->addLog("会员等级删除id:" . $level_id);
  199. return $member_level_model->deleteMemberLevel($level_id, $this->site_id);
  200. }
  201. /**
  202. * 会员等级状态
  203. */
  204. public function statusLevel()
  205. {
  206. $level_id = input('level_id', '');
  207. $status = input('status', '');
  208. $member_level_model = new MemberLevelModel();
  209. $this->addLog("会员等级修改id:" . $level_id);
  210. return $member_level_model->editMemberLevel([ 'status' => $status ], [ [ 'level_id', '=', $level_id ], [ 'site_id', '=', $this->site_id ] ]);
  211. }
  212. /**
  213. * 更新会员等级状态
  214. */
  215. public function startlevel()
  216. {
  217. $member_level_model = new MemberLevelModel();
  218. ( new Config )->setMemberConfig([ 'is_update' => 0 ], $this->site_id, $this->app_module)[ 'data' ] ?? [];
  219. return $member_level_model->startlevel($this->site_id);
  220. }
  221. }