where(['mall_id' => $mall_id]) ->andWhere(['status' => StatusEnum::ENABLED]) ->andWhere(['or', ['like', 'id', $params['keyword']], ['like', 'nickname', $params['keyword']], ['like', 'mobile', $params['keyword']]]) ->select('id')->column(); if (empty($uids)) return []; $params['user_id'] = $uids; } if (!empty($params['date_start'])) $params['date_start'] = strtotime($params['date_start']); if (!empty($params['date_end'])) $params['date_end'] = strtotime($params['date_end']); if ($wallet_type == 'commission_frozen' && (!isset($params['status']) && $params['status'] === '0') && $user_id == 0) { $params['status'] = StatusEnum::DISABLED; } elseif ($wallet_type == 'commission') { unset($params['status']); } $params['limit'] = $params['limit'] ?? 10; $list = CapitalLog::getCapitalLogLists($params, $wallet_type, ReservationServiceEnum::ADDONS_NAME, $user_id ? '' : $fields); if (!empty(CapitalLog::getStaticError())) return CapitalLog::getStaticError(); if (!empty($list['list'])) { $commission_map = GlobalVarMap::getEnumMapByType('FromTypeMap'); $capital_type_map = GlobalVarMap::getEnumMapByType('CapitalTypeMap'); $user_ids = array_column($list['list'], 'user_id'); $userList = User::lists([ 'where' => [ ['id' => $user_ids] ], 'index' => 'id', 'select'=> 'id, nickname, avatar_url, mobile' ]); foreach ($list['list'] as &$item) { $item['source_text'] = ($commission_map[$item['from_type']] ?? '').($capital_type_map[$item['capital_type']] ?'-'.$capital_type_map[$item['capital_type']]:''); $item['user'] = $userList[$item['user_id']] ?? null; } } return $list; } /** * @param int $mall_id * @param int $user_id * @param array $params * @return false|mixed|string */ public function list(int $mall_id, int $user_id, array $params) { $where = [ ['mall_id' => $mall_id], ['user_id' => $user_id], ['from_type' => ReservationServiceEnum::ADDONS_NAME] ]; if ($params['status'] == 999 || !isset($params['status']) || $params['status'] == '' || !in_array($params['status'], [StatusEnum::ENABLED, StatusEnum::DISABLED])) { // 多表查询 array_unshift($where, 'and'); $query = CommissionLog::find()->where($where)->select('created_at, change_num, order_no, id as status'); $query->union("SELECT created_at, change_num, order_no, status FROM qimall_commission_frozen_log WHERE `mall_id` = {$mall_id} AND `status` = -1 AND `user_id` = {$user_id} AND `from_type` = 'ReservationService'"); $ret['page_size'] = $params['limit'] ?? 10; $ret['page'] = max($params['page'] ?? 1, 1); $ret['count'] = $query->count(); $pages = new Pagination(['totalCount' => $ret['count']]); $pages->pageSizeParam = "limit"; $pages->defaultPageSize = $ret['page_size']; $pages->setPageSize($ret['page_size']); $ret['pagination'] = $pages; $ret['page_count'] = (!empty($ret['count'] ) && $ret['count'] > 0) ? ceil($ret['count'] / $ret['page_size']) : 1; $offset = ($ret['page']-1) * $ret['page_size']; $sql = $query->createCommand()->getRawSql(); $ret['list'] = \Yii::$app->db->createCommand("$sql ORDER BY created_at DESC LIMIT $offset, {$ret['page_size']}")->queryAll(); } else { if ($params['status'] == 0) { // 待结算 CapitalLog::$capitalType = "commission_frozen"; $select = 'change_num, order_no, status'; $where[] = ['status' => $params['status']]; } else { CapitalLog::$capitalType = "commission"; $select = 'change_num, order_no'; } $ret = CapitalLog::listPage([ 'where' => $where, 'select'=> $select, 'limit' => $params['limit'] ?? 10, 'order' => 'id desc', ]); } if (!empty(CapitalLog::getStaticError())) return CapitalLog::getStaticError(); if (!empty($ret['list'])) { $order_nos = array_column($ret['list'], 'order_no'); $list = ReservationServiceOrder::lists([ 'where' => [ ['order_no' => $order_nos] ], 'index' => 'order_no', 'select'=> 'service_start_at, service_end_at, order_detail_id, order_no', 'with' => ['orderDetail' => function($query) { $query->select('id, goods_name, goods_attr_name, original_goods_price, goods_price, num, pic_url'); }] ]); if (!empty(ReservationServiceOrder::getStaticError())) return ReservationServiceOrder::getStaticError(); foreach ($ret['list'] as &$item) { $order = $list[$item['order_no']]; $order['reserve_at'] = DateHelper::reserveAt($order['service_start_at']); $order['service_start_at'] = date('Y-m-d H:i', $order['service_start_at']); $order['service_end_at'] = date('Y-m-d H:i', $order['service_end_at']); $order['change_num'] = $item['change_num']; $order['status'] = min($item['status'] ?? 1, 1); $order['status_text'] = $order['status'] == 0 ? '待结算' : '已结算'; $item = $order; } } return $ret; } }