request->param('page/d', 1); $size = $this->request->param('size/d', 10); $type = $this->request->param('type', ''); $page = $page < 1 ? 1 : $page; $size = $size < 1 ? 10 : $size; $accountCode = $this->request->user['user_code'] ?? ''; try { $whereMap = []; $sortOrder = ['received_time' => 'desc']; $fields = ['*', '(end_time > NOW()) as sort_weight']; // TODO `status`字段需要核实是否用于筛选条件 $whereMap[] = ['consumer_code', '=', $accountCode]; switch ($type) { case 'notUsed': // 未使用(包含已过期) $whereMap[] = ['is_verificated', '=', self::BOOL_FALSE]; $sortOrder = ['sort_weight' => 'desc', 'end_time' => 'asc']; break; case 'normal': // 未使用且未过期 $whereMap[] = ['is_verificated', '=', self::BOOL_FALSE]; $whereMap[] = ['end_time', '< TIME', date('Y-m-d H:i:s')]; $fields = []; break; case 'used': // 已使用 $whereMap[] = ['is_verificated', '=', self::BOOL_TRUE]; $sortOrder = ['verificate_time' => 'desc']; $fields = []; break; } $res = CouponRepository::getInstance()->findList($whereMap, $fields, $page, $size, null, $sortOrder); $res['list'] = multiTwoArrayKeysExcludeFilter($res['list']->toArray(), ['sort_weight']); return $this->json(0, 'success', $res); } catch (RepositoryException | \Exception $e) { return $this->json(5001, '优惠卷查询失败!'); } } }