Memberaccount.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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 addon\coupon\model\Coupon;
  12. use app\model\account\Point;
  13. use app\model\member\Member as MemberModel;
  14. use app\model\member\MemberAccount as MemberAccountModel;
  15. /**
  16. * 会员账户管理 控制器
  17. */
  18. class Memberaccount extends BaseShop
  19. {
  20. /*
  21. * 会员积分
  22. */
  23. public function point()
  24. {
  25. //账户类型和来源类型
  26. $member_account_model = new MemberAccountModel();
  27. $from_type = $member_account_model->getFromType();
  28. $this->assign('from_type', $from_type['point']);
  29. $total_usable_point = (new MemberModel())->getMemberSum([ ['site_id', '=', $this->site_id], ['is_delete', '=', 0] ], 'point')['data'];
  30. $this->assign('total_usable_point', round($total_usable_point));
  31. $grant_point = $member_account_model->getMemberAccountSum([ ['site_id', '=', $this->site_id], ['account_type', '=', 'point'], ['account_data', '>', 0] ], 'account_data')['data'];
  32. $this->assign('grant_point', round($grant_point));
  33. $consume_point = $member_account_model->getMemberAccountSum([ ['site_id', '=', $this->site_id], ['account_type', '=', 'point'], ['account_data', '<', 0] ], 'account_data')['data'];
  34. $this->assign('consume_point', abs(round($consume_point)));
  35. return $this->fetch('account/point');
  36. }
  37. /**
  38. * 积分规则
  39. * @return mixed
  40. */
  41. public function pointConfig()
  42. {
  43. //账户类型和来源类型
  44. $member_account_model = new MemberAccountModel();
  45. $total_usable_point = (new MemberModel())->getMemberSum([ ['site_id', '=', $this->site_id], ['is_delete', '=', 0] ], 'point')['data'];
  46. $this->assign('total_usable_point', round($total_usable_point));
  47. $grant_point = $member_account_model->getMemberAccountSum([ ['site_id', '=', $this->site_id], ['account_type', '=', 'point'], ['account_data', '>', 0] ], 'account_data')['data'];
  48. $this->assign('grant_point', round($grant_point));
  49. $consume_point = $member_account_model->getMemberAccountSum([ ['site_id', '=', $this->site_id], ['account_type', '=', 'point'], ['account_data', '<', 0] ], 'account_data')['data'];
  50. $this->assign('consume_point', abs(round($consume_point)));
  51. $rule = event('PointRule', ['site_id' => $this->site_id]);
  52. $this->assign('rule', $rule);
  53. return $this->fetch('account/point_config');
  54. }
  55. /**
  56. * 会员余额
  57. */
  58. public function balance()
  59. {
  60. $member_account_model = new MemberAccountModel();
  61. $from_type = $member_account_model->getFromType();
  62. $this->assign('from_type', array_merge($from_type['balance'], $from_type['balance_money']));
  63. $member_model = new MemberModel();
  64. $total_balance = $member_model->getMemberSum([ ['site_id', '=', $this->site_id], ['is_delete', '=', 0] ], 'balance')['data'];
  65. $this->assign('total_balance', sprintf("%.2f", $total_balance));
  66. $total_balance_money = $member_model->getMemberSum([ ['site_id', '=', $this->site_id], ['is_delete', '=', 0] ], 'balance_money')['data'];
  67. $this->assign('total_balance_money', sprintf("%.2f", $total_balance_money));
  68. $total_consume_money = $member_account_model->getMemberAccountSum([ ['site_id', '=', $this->site_id], ['account_type', 'in', ['balance', 'balance_money'] ], ['account_data', '<', 0], ['from_type', '<>', 'adjust'] ], 'account_data')['data'];
  69. $this->assign('total_consume_money', sprintf("%.2f", abs($total_consume_money)));
  70. return $this->fetch('account/balance');
  71. }
  72. /**
  73. * 会员成长值
  74. */
  75. public function growth()
  76. {
  77. $member_account_model = new MemberAccountModel();
  78. $from_type = $member_account_model->getFromType();
  79. $this->assign('from_type', $from_type['growth']);
  80. return $this->fetch('account/growth');
  81. }
  82. /**
  83. * 会员优惠券
  84. */
  85. public function coupon()
  86. {
  87. $model = new Coupon();
  88. if (request()->isAjax()) {
  89. $page = input('page', 1);
  90. $page_size = input('page_size', PAGE_LIST_ROWS);
  91. $start_date = input('start_time', '');
  92. $end_date = input('end_time', '');
  93. $search_text = input('search_text', '');
  94. $get_type = input('get_type', '');
  95. $state = input('state', '');
  96. $condition[] = [ 'c.site_id', '=', $this->site_id ];
  97. if ($start_date != '' && $end_date != '') {
  98. $condition[] = [ 'c.fetch_time', 'between', [ strtotime($start_date), strtotime($end_date) ] ];
  99. } else if ($start_date != '' && $end_date == '') {
  100. $condition[] = [ 'c.fetch_time', '>=', strtotime($start_date) ];
  101. } else if ($start_date == '' && $end_date != '') {
  102. $condition[] = [ 'c.fetch_time', '<=', strtotime($end_date) ];
  103. }
  104. if ($search_text) {
  105. $condition[] = [ 'm.nickname|m.mobile', 'like', '%'.$search_text.'%' ];
  106. }
  107. if ($get_type) {
  108. $condition[] = [ 'get_type', '=', $get_type ];
  109. }
  110. if ($state) {
  111. $condition[] = [ 'state', '=', $state ];
  112. }
  113. $join = [
  114. ['member m', 'm.member_id = c.member_id', 'inner']
  115. ];
  116. $field = 'c.*,m.nickname,m.headimg,m.mobile';
  117. return $model->getCouponPageList($condition, $page, $page_size, 'c.fetch_time desc', $field, 'c', $join);
  118. }
  119. $this->forthMenu();
  120. $total_count = $model->getMemberCouponCount([ ['site_id', '=', $this->site_id] ])['data'];
  121. $this->assign('total_count', $total_count);
  122. $used_count = $model->getMemberCouponCount([ ['site_id', '=', $this->site_id], ['state', '=', 2] ])['data'];
  123. $this->assign('used_count', $used_count);
  124. $not_used_count = $model->getMemberCouponCount([ ['site_id', '=', $this->site_id], ['state', '=', 1] ])['data'];
  125. $this->assign('not_used_count', $not_used_count);
  126. $this->assign('get_type', $model->getCouponGetType());
  127. return $this->fetch('account/coupon');
  128. }
  129. /**
  130. * 账户详情
  131. */
  132. public function accountDetail()
  133. {
  134. if (request()->isAjax()) {
  135. $page = input('page', 1);
  136. $page_size = input('page_size', PAGE_LIST_ROWS);
  137. $account_type = input('account_type', '');
  138. $from_type = input('from_type', '');
  139. $start_date = input('start_time', '');
  140. $end_date = input('end_time', '');
  141. $search_text = input('search_text', '');
  142. $condition[] = [ 'ma.site_id', '=', $this->site_id ];
  143. //账户类型
  144. if ($account_type != '') {
  145. $condition[] = [ 'ma.account_type', 'in', explode(',', $account_type) ];
  146. }
  147. //来源类型
  148. if ($from_type != '') {
  149. $condition[] = [ 'from_type', '=', $from_type ];
  150. }
  151. //发生时间
  152. if ($start_date != '' && $end_date != '') {
  153. $condition[] = [ 'ma.create_time', 'between', [ strtotime($start_date), strtotime($end_date) ] ];
  154. } else if ($start_date != '' && $end_date == '') {
  155. $condition[] = [ 'ma.create_time', '>=', strtotime($start_date) ];
  156. } else if ($start_date == '' && $end_date != '') {
  157. $condition[] = [ 'ma.create_time', '<=', strtotime($end_date) ];
  158. }
  159. if ($search_text) {
  160. $condition[] = [ 'm.nickname|m.mobile', 'like', '%'.$search_text.'%' ];
  161. }
  162. $field = 'ma.*,m.nickname,m.headimg,m.mobile';
  163. $join = [
  164. ['member m', 'm.member_id = ma.member_id', 'left']
  165. ];
  166. $member_account_model = new MemberAccountModel();
  167. $res = $member_account_model->getMemberAccountPageList($condition, $page, $page_size, 'ma.create_time desc', $field, 'ma', $join);
  168. return $res;
  169. }
  170. }
  171. /**
  172. * 积分清零
  173. */
  174. public function pointClear(){
  175. $point_model = new Point();
  176. $result = $point_model->pointClear(['site_id' => $this->site_id, 'remark' => input('remark', '')]);
  177. return $result;
  178. }
  179. /**
  180. * 积分重置
  181. */
  182. public function pointReset(){
  183. $point_model = new Point();
  184. $result = $point_model->pointReset(['site_id' => $this->site_id]);
  185. return $result;
  186. }
  187. }