178 lines
7.5 KiB
PHP
178 lines
7.5 KiB
PHP
<?php
|
|
|
|
namespace addon\cardservice\storeapi\controller;
|
|
|
|
use addon\cardservice\model\MemberCard as MemberCardModel;
|
|
use app\storeapi\controller\BaseStoreApi;
|
|
use think\facade\Db;
|
|
|
|
/**
|
|
* 会员管理 控制器
|
|
*/
|
|
class Membercard extends BaseStoreApi
|
|
{
|
|
/**
|
|
* 会员卡项
|
|
*/
|
|
public function lists()
|
|
{
|
|
$member_id = isset($this->params['member_id']) ? $this->params['member_id'] : 0;
|
|
$page = isset($this->params['page']) ? $this->params['page'] : 1;
|
|
$page_size = isset($this->params['page_size']) ? $this->params['page_size'] : PAGE_LIST_ROWS;
|
|
$status = $this->params['status'] ?? 'all';
|
|
$search = $this->params['search'] ?? '';
|
|
$member_oncecard_model = new MemberCardModel();
|
|
$condition = [
|
|
['mgc.site_id', '=', $this->site_id],
|
|
];
|
|
if ($member_id != 0) {
|
|
$condition[] = [
|
|
['mgc.member_id', '=', $member_id]
|
|
];
|
|
};
|
|
if ($search != '') {
|
|
$condition[] = [
|
|
['mgc.trade_no', '=', $search]
|
|
];
|
|
}
|
|
if ($status != 'all') $condition[] = ['mgc.status', '=', $status];
|
|
$field = 'mgc.card_id, mgc.create_time, mgc.end_time, mgc.status, mgc.card_code, mgc.card_type, mgc.goods_name, mgc.total_num, mgc.total_use_num,mgc.trade_no,mgc.order_id,m.nickname,m.headimg,m.mobile,gc.average_original_price,o.order_money,o.order_id';
|
|
$res = $member_oncecard_model->getCardPageList($condition, $field, 'mgc.create_time desc', $page, $page_size, 'mgc', [
|
|
['order o', 'o.order_id = mgc.order_id', 'inner'],
|
|
['member m', 'm.member_id = mgc.member_id', 'inner'],
|
|
['goods_card gc', 'gc.goods_id = mgc.goods_id', 'inner'],
|
|
]);
|
|
if (empty($res['data'])) return $res;
|
|
$order_ids=array_column($res['data']['list'],'order_id');
|
|
$zorderInfo=Db::name('zima_order')
|
|
->where([['order_id','in',$order_ids],['pay_time', '>', 0]])
|
|
->group('order_id')
|
|
->column('sum(amount) as amount','order_id');
|
|
foreach ($res['data']['list'] as $k => &$v) {
|
|
if(isset($zorderInfo[$v['order_id']])){
|
|
$v['pay_money']=$zorderInfo[$v['order_id']];
|
|
$v['wait_pay_money']=$v['order_money']-$zorderInfo[$v['order_id']];
|
|
}else{
|
|
$v['pay_money']=0;
|
|
$v['wait_pay_money']=$v['order_money'];
|
|
}
|
|
}
|
|
return $this->response($res);
|
|
}
|
|
|
|
/**
|
|
* 卡项详情
|
|
*/
|
|
public function detail()
|
|
{
|
|
$card_id = $this->params['card_id'] ?? 0;
|
|
$member_id = $this->params['member_id'] ?? 0;
|
|
if (empty($card_id) || empty($card_id)) {
|
|
return $this->response($this->error('', 'REQUEST_ID'));
|
|
}
|
|
$model = new MemberCardModel();
|
|
$condition = [
|
|
['mgc.site_id', '=', $this->site_id],
|
|
['mgc.card_id', '=', $card_id],
|
|
];
|
|
$field = 'mgc.*, g.goods_name,g.price,g.goods_image,g.introduction,g.goods_content,mgc.trade_no,mgc.order_id,g.price,m.nickname,m.headimg,m.mobile,
|
|
gc.average_original_price,gc.is_cloud_zmxx,gc.validity_type,gc.validity_day,gc.validity_time,gc.common_num,gc.cloud_card_type,gc.downPaymentPeriods,gc.downPayment,gc.perPeriodPriceArray
|
|
,gc.discount_type,gc.average_discount_price,
|
|
o.create_time as order_create_time,o.order_money,o.goods_num,o.order_no';
|
|
$join = [
|
|
['goods g', 'mgc.goods_id = g.goods_id', 'inner'],
|
|
['order o', 'o.order_id = mgc.order_id', 'inner'],
|
|
['member m', 'm.member_id = mgc.member_id', 'inner'],
|
|
['goods_card gc', 'gc.goods_id = g.goods_id', 'inner'],
|
|
];
|
|
$info = $model->getCardInfo($condition, $field, 'mgc', $join)['data'];
|
|
if (empty($info)) return $this->response($this->error('', '未获取到卡项信息'));
|
|
$condition = [
|
|
['mgci.card_id', '=', $info['card_id']],
|
|
// [ 'sku.is_delete', '=', 0 ],
|
|
];
|
|
$info['card_item'] = $model->getCartItemList($condition, 'mgci.*,sku.sku_name,sku.price,sku.sku_image,sku.sku_images,sku.goods_class_name,sku.stock,
|
|
v.verify_code,v.verify_type,v.verify_type_name,v.verify_content_json,v.verifier_id,v.verifier_name,v.is_verify,v.verify_time,v.expire_time,v.verify_from,v.verify_remark,v.verify_total_count,v.verify_use_num', 'mgci.card_id asc', 'mgci',
|
|
[
|
|
['goods_sku sku', 'mgci.sku_id = sku.sku_id', 'inner'],
|
|
['verify v', 'mgci.member_verify_id = v.id', 'left']
|
|
]
|
|
)['data'] ?? [];
|
|
$info['end_time'] = 0;
|
|
switch ($info['validity_type']) {
|
|
case 0:
|
|
$info['end_time'] = strtotime('+10years', $info['order_create_time']);
|
|
break;
|
|
case 1:
|
|
$info['end_time'] = strtotime('+' . $info['validity_day'] . 'days', $info['order_create_time']);
|
|
break;
|
|
case 2:
|
|
$info['end_time'] = $info['validity_time'];
|
|
break;
|
|
}
|
|
return $this->response($this->success($info));
|
|
}
|
|
|
|
/**
|
|
* 使用记录
|
|
*/
|
|
public function records()
|
|
{
|
|
$card_id = $this->params['card_id'] ?? 0;
|
|
$item_id = $this->params['item_id'] ?? 0;
|
|
$member_id = $this->params['member_id'] ?? 0;
|
|
$page = isset($this->params['page']) ? $this->params['page'] : 1;
|
|
$page_size = isset($this->params['page_size']) ? $this->params['page_size'] : PAGE_LIST_ROWS;
|
|
if (empty($member_id) || (empty($card_id) && empty($item_id))) {
|
|
return $this->response($this->error([], '请传入必要参数'));
|
|
}
|
|
|
|
$condition = [];
|
|
$condition[] = ['cr.site_id', '=', $this->site_id];
|
|
$condition[] = ['ci.member_id', '=', $member_id];
|
|
if (!empty($item_id)) {
|
|
$condition[] = ['cr.card_item_id', '=', $item_id];
|
|
}
|
|
if (!empty($card_id)) {
|
|
$condition[] = ['cr.card_id', '=', $card_id];
|
|
}
|
|
$alias = 'cr';
|
|
$prefix = config('database.connections.mysql.prefix');
|
|
$field = 'cr.*, sku.sku_name,sku.sku_image,sku.sku_images,sku.price,ci.num as item_num,
|
|
IF(cr.type = \'order\', (select order_id from `' . $prefix . 'order_goods` og where og.order_goods_id = cr.relation_id), 0) as order_id';
|
|
|
|
$join = [
|
|
['member_goods_card_item ci', 'ci.item_id = cr.card_item_id', 'left'],
|
|
['goods_sku sku', 'ci.sku_id = sku.sku_id', 'left'],
|
|
];
|
|
|
|
$model = new MemberCardModel();
|
|
$list = $model->getMemberCardRecordsPageList($condition, $field, 'cr.create_time desc', $page, $page_size, $alias, $join);
|
|
return $this->response($list);
|
|
}
|
|
|
|
/**
|
|
* Common: 获取合约使用记录
|
|
* Author: wu-hui
|
|
* Time: 2023/04/21 11:29
|
|
* @return false|string
|
|
*/
|
|
public function useRecords()
|
|
{
|
|
// 参数获取
|
|
$orderId = $this->params['order_id'] ?? 0;
|
|
if (!$orderId) return $this->response($this->error([], '非法请求'));
|
|
// 查询信息获取
|
|
$where = [
|
|
['a.order_id', '=', $orderId],
|
|
['a.period', '>', 0]
|
|
];
|
|
$field = "a.order_id,a.userid,a.uid,a.period,a.amount,a.order_status,a.create_time,a.pay_time,u.username,a.id";
|
|
$join = [
|
|
['user u', 'a.uid = u.uid', 'left']
|
|
];
|
|
$result = model('zima_order')->getList($where, $field, 'a.period desc', 'a', $join);
|
|
return $this->response($this->success($result));
|
|
}
|
|
|
|
} |