| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.com
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
- * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
- * =========================================================
- */
- namespace addon\store\siteapi\controller;
- use app\model\member\Balance as MemberBalance;
- use app\model\member\MemberAccount;
- use app\model\member\Point as MemberPoint;
- use app\model\system\Config;
- use app\model\system\Promotion as PromotionModel;
- /**
- * 积分控制器
- * Class Account
- * @package addon\shop\siteapi\controller
- */
- class Account extends BaseStoreApi
- {
- /**
- * 积分流水
- * @return mixed
- */
- public function pointLists()
- {
- $from_type = isset($this->params[ 'from_type' ]) ? $this->params[ 'from_type' ] : '';
- $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
- $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
- $start_date = isset($this->params[ 'start_date' ]) ? $this->params[ 'start_date' ] : '';
- $end_date = isset($this->params[ 'end_date' ]) ? $this->params[ 'end_date' ] : '';
- $search_text_type = isset($this->params[ 'search_text_type' ]) ? $this->params[ 'search_text_type' ] : '';
- $search_text = isset($this->params[ 'search_text' ]) ? $this->params[ 'search_text' ] : '';
- $type = isset($this->params[ 'type' ]) ? $this->params[ 'type' ] : '';
- $condition = [
- [ 'ma.site_id', '=', $this->site_id ],
- [ 'ma.account_type', '=', 'point' ]
- ];
- //来源类型
- if ($from_type != '') {
- $condition[] = [ 'ma.from_type', '=', $from_type ];
- }
- //发生时间
- if ($start_date != '' && $end_date != '') {
- $condition[] = [ 'ma.create_time', 'between', [ strtotime($start_date), strtotime($end_date) ] ];
- } else if ($start_date != '' && $end_date == '') {
- $condition[] = [ 'ma.create_time', '>=', strtotime($start_date) ];
- } else if ($start_date == '' && $end_date != '') {
- $condition[] = [ 'ma.create_time', '<=', strtotime($end_date) ];
- }
- if (!empty($search_text)) {
- if ($search_text_type == 'nickname') {
- $condition[] = [ 'm.nickname', 'like', "%" . $search_text . "%" ];
- } else {
- $condition[] = [ 'm.mobile', 'like', "%" . $search_text . "%" ];
- }
- }
- if ($type !== '') {
- if ($type == 2) {//获取
- $condition[] = [ 'ma.account_data', '>', 0 ];
- }
- if ($type == 3) {//消费
- $condition[] = [ 'ma.account_data', '<', 0 ];
- }
- }
- $join = [
- [ 'member m', 'm.member_id = ma.member_id', 'left' ],
- ];
- $field = 'ma.member_id,ma.fans_id,ma.account_type,ma.account_data,ma.from_type,ma.type_name,ma.remark,ma.create_time,m.nickname as m_nickname,m.headimg as m_headimg, m.mobile as m_mobile';
- $member_account_model = new MemberAccount();
- $res = $member_account_model->getMemberAccountPageList($condition, $page, $page_size, 'ma.create_time desc', $field, 'ma', $join);
- return $this->response($res);
- }
- /**
- * 积分
- */
- public function point()
- {
- $from_type = isset($this->params[ 'from_type' ]) ? $this->params[ 'from_type' ] : '';
- $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
- $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
- $start_date = isset($this->params[ 'start_date' ]) ? $this->params[ 'start_date' ] : '';
- $end_date = isset($this->params[ 'end_date' ]) ? $this->params[ 'end_date' ] : '';
- $from_type_id = isset($this->params[ 'from_type_id' ]) ? $this->params[ 'from_type_id' ] : '';
- $condition = [
- [ 'a.site_id', '=', $this->site_id ],
- ];
- //来源类型
- if ($from_type != '') {
- $condition[] = [ 'a.from_type', '=', $from_type ];
- }
- if ($from_type_id != '') {
- $condition[] = [ 'a.from_type_id', '=', $from_type_id ];
- }
- //发生时间
- if ($start_date != '' && $end_date != '') {
- $condition[] = [ 'a.create_time', 'between', [ strtotime($start_date), strtotime($end_date) ] ];
- } else if ($start_date != '' && $end_date == '') {
- $condition[] = [ 'a.create_time', '>=', strtotime($start_date) ];
- } else if ($start_date == '' && $end_date != '') {
- $condition[] = [ 'a.create_time', '<=', strtotime($end_date) ];
- }
- $join = [
- [ 'goods g', "g.goods_id = a.from_type_id and a.from_type = 'goods' ", 'left' ],
- [ 'promotion p', "p.promotion_id = a.from_type_id and a.from_type = 'promotion' ", 'left' ],
- ];
- $order = 'a.state WHEN 1 WHEN 0 WHEN 2 END';
- $field = "a.*,IF(a.from_type = 'goods',(g.goods_image),(p.image)) as images,IF(a.from_type = 'goods',(g.start_time),(p.start_time)) as start_time,IF(a.from_type = 'goods',(g.end_time),(p.end_time)) as end_time,IF(a.from_type = 'goods',(g.promotion_type),(p.promotion_type)) as promotion_type";
- $point = new MemberPoint();
- $res = $point->getPointPageList($condition, $page, $page_size, $order, $field, $alias = 'a', $join);
- $promotion_model = new PromotionModel();
- $promotion_type_list = $promotion_model->getPromotionType('all');
- if (!empty($res[ 'data' ][ 'list' ])) {
- foreach ($res[ 'data' ][ 'list' ] as $k => $v) {
- $res[ 'data' ][ 'list' ][ $k ][ 'promotion_type_name' ] = $promotion_type_list[ $v[ 'promotion_type' ] ][ 'title' ];
- $res[ 'data' ][ 'list' ][ $k ][ 'promotion_type_icon' ] = $promotion_type_list[ $v[ 'promotion_type' ] ][ 'icon' ];
- }
- }
- return $this->response($res);
- }
- /**
- * 积分配置项
- */
- public function pointConfig()
- {
- $point = new MemberPoint();
- $config = new Config();
- $config_type = $point->getConfigType();
- foreach ($config_type as $k => $v) {
- $config_info = $config->getConfig([ [ 'site_id', '=', $this->site_id ], [ 'app_module', '=', $this->app_module ], [ 'config_key', '=', $v[ 'key' ] ] ]);
- $config_type[ $k ][ 'config' ] = $config_info[ 'data' ];
- }
- return $this->response($this->success($config_type));
- }
- /**
- * 设置积分配置
- */
- public function setPointConfig()
- {
- $key = isset($this->params[ 'key' ]) ? $this->params[ 'key' ] : '';
- $value = isset($this->params[ 'value' ]) ? $this->params[ 'value' ] : '';
- $desc = isset($this->params[ 'desc' ]) ? $this->params[ 'desc' ] : '';
- $config = new Config();
- $res = $config->setConfig(json_decode($value), $desc, '1', [ [ 'site_id', '=', $this->site_id ], [ 'app_module', '=', $this->app_module ], [ 'config_key', '=', $key ] ]);
- return $this->response($this->success($res));
- }
- /**
- * 账户积分数据
- */
- public function pointAccount()
- {
- $account = new MemberAccount();
- //可用积分
- $surplus_point = $account->getAccountSum([ [ 'site_id', '=', $this->site_id ] ], 'point')[ 'data' ];
- //累计发放
- $total_point = $account->getMemberAccountSum([ [ 'site_id', '=', $this->site_id ], [ 'account_type', '=', 'point' ], [ 'account_data', '>', '0' ] ], 'account_data')[ 'data' ];
- //累计消耗
- $use_total_point = $account->getMemberAccountSum([ [ 'site_id', '=', $this->site_id ], [ 'account_type', '=', 'point' ], [ 'account_data', '<', '0' ] ], 'account_data')[ 'data' ];
- $data = [];
- $data[ 'surplus_point' ] = $surplus_point;
- $data[ 'total_point' ] = $total_point;
- $data[ 'use_total_point' ] = $use_total_point;
- return $this->response($this->success($data));
- }
- /**
- * 积分来源类型类型
- */
- public function pointType()
- {
- $point_type = ( new MemberAccount() )->getFromType();
- $point_type = $point_type[ 'point' ] ?? [];
- return $this->response($this->success($point_type));
- }
- /**
- * 余额类型
- */
- public function balanceType()
- {
- $balance_type = ( new MemberAccount() )->getFromType();
- $balance_type = $balance_type[ 'balance' ] ?? [];
- return $this->response($this->success($balance_type));
- }
- /**
- * 余额流水
- */
- public function balance()
- {
- $from_type = isset($this->params[ 'from_type' ]) ? $this->params[ 'from_type' ] : '';
- $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
- $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
- $start_date = isset($this->params[ 'start_date' ]) ? $this->params[ 'start_date' ] : '';
- $end_date = isset($this->params[ 'end_date' ]) ? $this->params[ 'end_date' ] : '';
- $from_type_id = isset($this->params[ 'from_type_id' ]) ? $this->params[ 'from_type_id' ] : '';
- $condition = [
- [ 'a.site_id', '=', $this->site_id ],
- ];
- //来源类型
- if ($from_type != '') {
- $condition[] = [ 'a.from_type', '=', $from_type ];
- }
- if ($from_type_id != '') {
- $condition[] = [ 'a.from_type_id', '=', $from_type_id ];
- }
- //发生时间
- if ($start_date != '' && $end_date != '') {
- $condition[] = [ 'a.create_time', 'between', [ strtotime($start_date), strtotime($end_date) ] ];
- } else if ($start_date != '' && $end_date == '') {
- $condition[] = [ 'a.create_time', '>=', strtotime($start_date) ];
- } else if ($start_date == '' && $end_date != '') {
- $condition[] = [ 'a.create_time', '<=', strtotime($end_date) ];
- }
- $balance = new MemberBalance();
- $join = [
- [ 'goods g', "g.goods_id = a.from_type_id and a.from_type = 'goods' ", 'left' ],
- [ 'promotion p', "p.promotion_id = a.from_type_id and a.from_type = 'promotion' ", 'left' ],
- ];
- $order = 'a.state WHEN 1 WHEN 0 WHEN 2 END';
- $field = "a.*,IF(a.from_type = 'goods',(g.goods_image),(p.image)) as images,IF(a.from_type = 'goods',(g.start_time),(p.start_time)) as start_time,IF(a.from_type = 'goods',(g.end_time),(p.end_time)) as end_time,IF(a.from_type = 'goods',(g.promotion_type),(p.promotion_type)) as promotion_type";
- $res = $balance->getBalancePageList($condition, $page, $page_size, $order, $field, $alias = 'a', $join);
- $promotion_model = new PromotionModel();
- $promotion_type_list = $promotion_model->getPromotionType('all');
- if (!empty($res[ 'data' ][ 'list' ])) {
- foreach ($res[ 'data' ][ 'list' ] as $k => $v) {
- $res[ 'data' ][ 'list' ][ $k ][ 'promotion_type_name' ] = $promotion_type_list[ $v[ 'promotion_type' ] ][ 'title' ];
- $res[ 'data' ][ 'list' ][ $k ][ 'promotion_type_icon' ] = $promotion_type_list[ $v[ 'promotion_type' ] ][ 'icon' ];
- }
- }
- return $this->response($res);
- }
- /**
- *账户余额数据
- */
- public function balanceAccount()
- {
- $site_id = $this->site_id;
- $account = new MemberAccount();
- //余额总额
- $balance_money = $account->getAccountSum([ [ 'site_id', '=', $site_id ] ], 'balance_money')[ 'data' ];
- $balance = $account->getAccountSum([ [ 'site_id', '=', $site_id ] ], 'balance')[ 'data' ];
- //累计发放
- $total_banance = $account->getMemberAccountSum([ [ 'site_id', '=', $site_id ], [ 'account_type', 'in', 'balance_money,balance' ], [ 'account_data', '>', '0' ] ], 'account_data')[ 'data' ];
- //累计消耗
- $use_total_banance = $account->getMemberAccountSum([ [ 'site_id', '=', $site_id ], [ 'account_type', 'in', 'balance_money,balance' ], [ 'account_data', '<', '0' ] ], 'account_data')[ 'data' ];
- $data = [];
- $data[ 'balance_money' ] = $balance_money;
- $data[ 'balance' ] = $balance;
- $data[ 'total_banance' ] = $total_banance;
- $data[ 'use_total_banance' ] = abs($use_total_banance);
- return $this->response($this->success($data));
- }
- /**
- * 余额流水
- * @return mixed
- */
- public function balanceLists()
- {
- $from_type = isset($this->params[ 'from_type' ]) ? $this->params[ 'from_type' ] : '';
- $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
- $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
- $start_date = isset($this->params[ 'start_date' ]) ? $this->params[ 'start_date' ] : '';
- $end_date = isset($this->params[ 'end_date' ]) ? $this->params[ 'end_date' ] : '';
- $search_text_type = isset($this->params[ 'search_text_type' ]) ? $this->params[ 'search_text_type' ] : '';
- $search_text = isset($this->params[ 'search_text' ]) ? $this->params[ 'search_text' ] : '';
- $type = isset($this->params[ 'type' ]) ? $this->params[ 'type' ] : '';
- $condition = [
- [ 'ma.site_id', '=', $this->site_id ],
- [ 'ma.account_type', 'in', [ 'balance', 'balance_money' ] ]
- ];
- //来源类型
- if ($from_type != '') {
- $condition[] = [ 'ma.from_type', '=', $from_type ];
- }
- //发生时间
- if ($start_date != '' && $end_date != '') {
- $condition[] = [ 'ma.create_time', 'between', [ strtotime($start_date), strtotime($end_date) ] ];
- } else if ($start_date != '' && $end_date == '') {
- $condition[] = [ 'ma.create_time', '>=', strtotime($start_date) ];
- } else if ($start_date == '' && $end_date != '') {
- $condition[] = [ 'ma.create_time', '<=', strtotime($end_date) ];
- }
- if (!empty($search_text)) {
- if ($search_text_type == 'nickname') {
- $condition[] = [ 'm.nickname', 'like', "%" . $search_text . "%" ];
- } else {
- $condition[] = [ 'm.mobile', 'like', "%" . $search_text . "%" ];
- }
- }
- if ($type !== '') {
- if ($type == 3) {//获取
- $condition[] = [ 'ma.account_data', '>', 0 ];
- }
- if ($type == 4) {//消费
- $condition[] = [ 'ma.account_data', '<', 0 ];
- }
- }
- $join = [
- [ 'member m', 'm.member_id = ma.member_id', 'left' ],
- ];
- $field = 'ma.member_id,ma.fans_id,ma.account_type,ma.account_data,ma.from_type,ma.type_name,ma.remark,ma.create_time,m.nickname as m_nickname,m.headimg as m_headimg, m.mobile as m_mobile';
- $member_account_model = new MemberAccount();
- $res = $member_account_model->getMemberAccountPageList($condition, $page, $page_size, 'ma.create_time desc', $field, 'ma', $join);
- return $this->response($res);
- }
- }
|