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)); } }