69 lines
2.3 KiB
PHP
69 lines
2.3 KiB
PHP
|
<?php
|
||
|
namespace app\controller\api;
|
||
|
|
||
|
use app\exception\RepositoryException;
|
||
|
use app\repository\CouponRepository;
|
||
|
|
||
|
/**
|
||
|
* 优惠卷相关
|
||
|
* Class Coupon
|
||
|
* @package app\controller\api
|
||
|
*/
|
||
|
class Coupon extends Base
|
||
|
{
|
||
|
protected $noNeedLogin = [
|
||
|
'getMyCouponList'
|
||
|
];
|
||
|
|
||
|
/**
|
||
|
* 我的优惠卷列表
|
||
|
*
|
||
|
* type in ['', 'notUsed', 'normal', 'used']
|
||
|
*/
|
||
|
public function getMyCouponList()
|
||
|
{
|
||
|
$page = $this->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, '优惠卷查询失败!');
|
||
|
}
|
||
|
}
|
||
|
}
|