display(); } public function vip_acount() { $this->display(); } public function vip_label() { $this->display(); } // 获取商品类目-- 所有的 public function getGoodsClass() { $merchant_id = $this->merchant_id; $id = I('post.id'); $type = I('post.type'); if ($type == 1) { $class = M('retail_goods_class') ->where(['merchantid' => $merchant_id, 'type' => 1, 'status' => 0]) ->field('id,class_name') ->select(); } else if ($type == 2) { $class = M('retail_goods_class as c1') ->join('ls_retail_goods_class as c2 on c1.id=c2.pid') ->where(['c1.id' => $id, 'c2.status' => 0]) ->field('c2.id,c2.class_name') ->order('c2.code asc') ->select(); } else { $class = M('retail_goods_class as c2') ->join('ls_retail_goods_class as c3 on c2.id=c3.pid') ->where(['c2.id' => $id, 'c3.status' => 0]) ->field('c3.id,c3.class_name') ->order('c3.code asc') ->select(); } if (!empty($class)) { $result['status'] = 1; $result['data'] = $class; $result['msg'] = '查询成功'; } else { $result['status'] = 2; $result['msg'] = '暂无分类'; } $this->ajaxReturn($result); } // 获取商品类目--售出 public function getGoodsClassSell() { $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 7; $class['list'] = M('retail_sell as rs') ->field(['rgc.id', 'rgc.class_name']) ->join('ls_retail_goods_class as rgc on rgc.id=rs.goods_class_id', 'LEFT') ->where(['rgc.status' => 0, 'rgc.merchantid' => $this->merchant_id]) ->group('rs.goods_class_id') ->page($page, $pageSize) ->select(); $res['status'] = 1; $res['data'] = $class; $res['msg'] = !empty($class['list']) ? '数据获取成功' : '暂无数据'; $this->ajaxReturn($res); } // 获取用户数据列表 public function getUserList() { $merchant_id = $this->merchant_id; if (!$merchant_id) { $this->error("无权访问"); } $where['merchantid'] = $merchant_id; $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $start_time = I('post.start_time'); // 开始时间 $end_time = I('post.end_time'); // 结束时间 if ($start_time) { $start_time = strtotime($start_time); } if ($end_time) { $end_time = strtotime($end_time); } $expense_num = I('post.expense_num');// 最近购买次数 $min_amount = I('post.min_amount'); // 最小消费金额 $max_amount = I('post.max_amount'); // 最大金额 $search = I('post.search'); // 搜索条件 $member_type = I('post.member_type'); // 会员类型 $vip_label = I('post.vip_label'); // 会员标签 $goods_class = I('post.goods_class'); // 商品;类目 if ($search) { $where['nickname|mobile_phone'] = ['like', "%{$search}%"]; } if ($member_type) { $where['plus_type'] = $member_type; } $userArr = []; if ($vip_label) { $userArr = $this->getUserByLabel($vip_label); } if ($goods_class) { $userArr = $this->getUserByGoodsClass($goods_class, $userArr); } $MemberAnalyzeModel = new MemberAnalyzeModel(); // 根据最近消费次数/购买次数/消费金额 获取会员 $userExpense = $this->getUserByExpense($start_time, $end_time, $expense_num, $min_amount, $max_amount, $userArr, $goods_class); if ($userExpense) { $where['id'] = ['in', $userExpense]; } $field = [ 'id', 'name', 'nickname', 'mobile_phone', 'plus_type', 'grade_integral', ]; $store_id = $this->store_id; $store_show_vip_info = M('retail_store_jurisdiction')->where(array('storeid' => $store_id))->getField("store_show_vip_info"); $store_show_vip_info = $store_show_vip_info ? $store_show_vip_info : 1; if ($store_show_vip_info == 2) { //关闭显示所有会员 $where['storeid'] = $store_id; } $list['list'] = $MemberAnalyzeModel->getSelect($where, $field, $page, $pageSize, 'id desc'); $list['total'] = $MemberAnalyzeModel->getCount($where); $merchant_id = $this->merchant_id; if ($list['list']) { foreach ($list['list'] as $key => &$value) { $value['vip_type'] = $value['plus_type'] == 2 ? 'Plus 会员' : '常规会员'; if ($value['plus_type'] == 2) { $value['vip_lv'] = '-'; } else { $gradeName = M('retail_vip_integral') ->where(array('min_integral' => array('ELT', $value['grade_integral']), 'merchantid' => $merchant_id)) ->order('min_integral desc') ->getField("cardname"); $value['vip_lv'] = $gradeName ? $gradeName : '无等级'; } if ($expense_num == 0) { $value['expense_num'] = 0; $value['expense_amount'] = 0; $value['expense_last'] = 0; } else { $expense_info = $this->getUserExpenseAmount($value['id'], $start_time, $end_time, $goods_class); $value['expense_num'] = $expense_info['expense_num']; $value['expense_amount'] = round($expense_info['expense_amount'], 2); $value['expense_last'] = $expense_info['expense_last']; if ($expense_num == -1) { $value['expense_num'] = $expense_info['expense_num']; } else { $value['expense_num'] = $expense_num; } } } } $res['status'] = 1; $res['data'] = $list; $res['msg'] = !empty($list['list']) ? '数据获取成功' : '暂无数据'; $this->ajaxReturn($res); } // 筛选出符合条件的用户 public function getUserByExpense($start_time = '', $end_time = '', $expense_num = '', $min_amount = '', $max_amount = '', $userArr = '', $goods_class = '') { $merchant_id = $this->merchant_id; $where['rpo.merchant_id'] = $merchant_id; $store_id = $this->store_id; // if ($store_id) { // $where['rpo.store_id'] = $store_id; // } $where['rpo.order_type'] = ['NEQ', 3]; $where['rpo.vid'] = ['gt', 0]; $where['rpo.vid'] = ['EXP', 'IS NOT NULL']; $vipArr = $userArr; if ($userArr) { $where['rpo.vid'] = ['in', $vipArr]; } if ($expense_num != -1) { if ($goods_class) { $where['rgc.goods_class_id'] = $goods_class; $arr_first = M('retail_pay_order rpo') ->field('rpo.vid') ->join('ls_retail_sell as rgc on rgc.bill_id = rpo.bill_id', 'LEFT') ->where($where) ->group('rpo.vid') ->having('count(rpo.id) =' . $expense_num) ->select(); if ($arr_first) { foreach ($arr_first as $key => $value) { $arr_first[$key] = $value['vid']; } } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } unset($where['rgc.goods_class_id']); } else { if ($expense_num == 0) { $where0['rpo.vid'] = ['exp', ' is NULL']; $arr_first = M('retail_vip rv') ->field('rv.id') ->join('ls_retail_pay_order as rpo on rpo.vid = rv.id', 'LEFT') ->where($where0) ->select(); if ($arr_first) { foreach ($arr_first as $key => $value) { $arr_first[$key] = $value['id']; } } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } } else { $arr_first = M('retail_pay_order rpo') ->where($where) ->group('rpo.vid') ->having('count(rpo.id) =' . $expense_num) ->getField("vid", true); } } if ($arr_first) { $vipArr = $arr_first; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } } if ($start_time && $end_time) { $where['rpo.add_time'] = ['between', [$start_time, $end_time]]; if ($vipArr) { $where['rpo.vid'] = ['in', $vipArr]; } if ($goods_class) { $where['rgc.goods_class_id'] = $goods_class; $arr_second = M('retail_pay_order rpo') ->field('rpo.vid') ->join('ls_retail_sell as rgc on rgc.bill_id = rpo.bill_id', 'LEFT') ->where($where) ->group('vid') ->select(); if ($arr_second) { foreach ($arr_second as $key => $value) { $arr_second[$key] = $value['vid']; } } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } unset($where['rgc.goods_class_id']); } else { $arr_second = M('retail_pay_order rpo')->where($where)->group('vid')->getField("vid", true); } if ($arr_second) { $vipArr = $arr_second; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } } if ($min_amount > -1 && $max_amount) { if ($vipArr) { $where['rpo.vid'] = ['in', $vipArr]; } if ($goods_class) { $where['rgc.goods_class_id'] = $goods_class; $arr_third_min = M('retail_pay_order rpo') ->field('rpo.vid') ->join('ls_retail_sell as rgc on rgc.bill_id = rpo.bill_id', 'LEFT') ->where($where) ->group('rpo.vid') ->having('sum(rpo.trade_amount) >=' . $min_amount) ->select(); if ($arr_third_min) { foreach ($arr_third_min as $key => $value) { $arr_third_min[$key] = $value['vid']; } } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } if ($arr_third_min) { $vipArr = $arr_third_min; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } if ($vipArr) { $where['rpo.vid'] = ['in', $vipArr]; } $arr_third_max = M('retail_pay_order rpo') ->field('rpo.vid') ->join('ls_retail_sell as rgc on rgc.bill_id = rpo.bill_id', 'LEFT') ->where($where) ->group('rpo.vid') ->having('sum(rpo.trade_amount) <=' . $max_amount) ->select(); if ($arr_third_max) { if ($arr_third_max) { foreach ($arr_third_max as $key => $value) { $arr_third_max[$key] = $value['vid']; } $vipArr = $arr_third_max; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } } else { $arr_third_min = M('retail_pay_order rpo') ->where($where) ->group('rpo.vid') ->having('sum(trade_amount) >=' . $min_amount) ->getField("vid", true); if ($arr_third_min) { $vipArr = $arr_third_min; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } if ($vipArr) { $where['rpo.vid'] = ['in', $vipArr]; } $arr_third_max = M('retail_pay_order rpo') ->where($where) ->group('rpo.vid') ->having('sum(rpo.trade_amount) <= ' . $max_amount) ->getField("vid", true); if ($arr_third_max) { $vipArr = $arr_third_max; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; $res['data'] = []; $this->ajaxReturn($res); } } } return $vipArr; } // 根据标签获取会员数 public function getUserByLabel($vip_label_id = '') { $where = [ 'is_del' => 1, 'vip_label_id' => $vip_label_id, ]; $VipWithLabelModel = new RetailVipWithLabelModel(); $arr_first = $VipWithLabelModel->getGroupFindField($where, 'vid', 'vid', true); if ($arr_first) { return $arr_first; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; } $this->ajaxReturn($res); } // 根据商品类目回去会员 public function getUserByGoodsClass($goods_class_id = '', $userArr = '') { $store_id = $this->store_id; $merchant_id = $this->merchant_id; $where = [ 'vid' => ['gt', 0], 'pay_state' => 1, 'merchant_id' => $merchant_id ]; if ($goods_class_id) { $where['goods_class_id'] = $goods_class_id; } if ($userArr) { $where['vid'] = ['in', $userArr]; } $arr_first = M('retail_sell')->where($where)->group('vid')->getField("vid", true); if ($arr_first) { return $arr_first; } else { $res['status'] = 1; $res['msg'] = '暂无数据'; } $this->ajaxReturn($res); } // 根据条件获取会员的累计消费金额 public function getUserExpenseAmount($vid, $start_time = '', $end_time = '', $goods_class = '') { // $store_id = $this->store_id; // $where['rpo.store_id'] = $store_id; $where['rpo.order_type'] = ['NEQ', 3]; $where['rpo.vid'] = $vid; $where['rpo.order_state'] = 'SUCCESS'; if ($start_time && $end_time) { $where['rpo.add_time'] = ['between', [$start_time, $end_time]]; } if ($goods_class) { $where['rs.goods_class_id'] = $goods_class; $arr_first = M('retail_pay_order rpo') ->field("rpo.trade_amount, rpo.add_time") ->join('ls_retail_sell as rs on rs.bill_id = rpo.bill_id', 'LEFT') ->where($where) ->order('rpo.add_time desc') ->select(); } else { $arr_first = M('retail_pay_order rpo') ->field("rpo.trade_amount, rpo.add_time") ->where($where) ->order('rpo.add_time desc') ->select(); } if ($arr_first) { $res['expense_num'] = count($arr_first); $res['expense_amount'] = array_sum(array_map(function ($val) { return $val['trade_amount']; }, $arr_first)); if ($arr_first[0]['add_time']) { $res['expense_last'] = date('Y-m-d H:i:s', $arr_first[0]['add_time']); } else { $res['expense_last'] = '-'; } } else { $res['expense_num'] = 0; $res['expense_amount'] = 0; $res['expense_last'] = '-'; } return $res; } // 根据最后筛选条件查询类目 public function getGoodsClassByConditions() { $vid = I('post.vid'); $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $merchant_id = $this->merchant_id; if (!$merchant_id) { $this->error("无权访问"); } if (!$vid) { $res['status'] = 0; $res['msg'] = '必要参数缺失'; $this->ajaxReturn($res); } $start_time = I('post.start_time'); // 开始时间 $end_time = I('post.end_time'); // 结束时间 if ($start_time) { $start_time = strtotime($start_time); } if ($end_time) { $end_time = strtotime($end_time) + 86400; } $where['vid'] = $vid; $where['merchant_id'] = $merchant_id; $where['goods_class_id'] = ['NEQ', 0]; if ($start_time && $end_time) { $where['add_time'] = ['between', [$start_time, $end_time]]; } $RetailSellModel = new RetailSellModel(); $result['list'] = $RetailSellModel->getGroupSelect($where, 'goods_class_id', 'goods_class_id', $page, $pageSize); $res['total'] = $RetailSellModel->getGroupCount($where, 'goods_class_id'); if ($result['list']) { $result['total'] = count($result['list']); foreach ($result['list'] as &$value) { $value['name'] = $this->getAllGoodsClassByID($value['goods_class_id']); } $res['status'] = 1; $res['msg'] = '数据获取成功'; $res['data'] = $result; } else { $res['status'] = 1; $res['data'] = $result; $res['msg'] = '暂无数据'; } $this->ajaxReturn($res); } // 根据商品类目ID 获取详细类目 public function getAllGoodsClassByID($goods_id) { $GoodClassModel = new RetailGoodsClassModel(); $goods_class = $GoodClassModel->getFind(['id' => $goods_id], 'id, class_name, pid, type'); if ($goods_class) { if ($goods_class['type'] == 3) { $second = M('retail_goods_class') ->field('id, class_name, pid, type') ->where(['id' => $goods_class['pid']]) ->find(); $third = M('retail_goods_class') ->field('id, class_name, pid, type') ->where(['id' => $second['pid']]) ->find(); return $third['class_name'] . '-' . $second['class_name'] . '-' . $goods_class['class_name']; } else if ($goods_class['type'] == 2) { $second = M('retail_goods_class') ->field('id, class_name, pid, type') ->where(['id' => $goods_class['pid']]) ->find(); return $second['class_name'] . '-' . $goods_class['class_name']; } else { return $goods_class['class_name']; } } else { return '未知类目'; } } /* ************************************** 会员统计Start ************************************** */ // 获取会员信息 -- 饼状图 public function getActiveUserBread() { $type = I('post.type'); $store_id = $this->store_id; $merchant_id = $this->merchant_id; $MemberAnalyzeModel = new MemberAnalyzeModel(); $result = $MemberAnalyzeModel->getActiveUserBread($type, $store_id, $merchant_id); $this->ajaxReturn($result); } // 根据月份获取用户数据 public function getActiveUserByMonth() { $timestamp = I('post.timestamp'); // 查询月份 $page = I('post.page') ? I('post.page') : 0; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $type = I('post.type'); // 沉睡会员/活跃会员 $store_id = $this->store_id; $merchant_id = $this->merchant_id; $MemberAnalyzeModel = new MemberAnalyzeModel(); $result = $MemberAnalyzeModel->getActiveUserByMonth($timestamp, $type, $page, $pageSize, $store_id, $merchant_id); $this->ajaxReturn($result); } // 会员生日统计 -- 饼状图 public function getBirthUserBread() { $merchant_id = $this->merchant_id; $MemberAnalyzeModel = new MemberAnalyzeModel(); $result = $MemberAnalyzeModel->getBirthUserBread($merchant_id); $this->ajaxReturn($result); } // 获取会员生日信息 public function getActiveUserByBirth() { $type = I('post.type'); $page = I('post.page') ? I('post.page') : 0; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $merchant_id = $this->merchant_id; $MemberAnalyzeModel = new MemberAnalyzeModel(); $result = $MemberAnalyzeModel->getActiveUserByBirth($type, $page, $pageSize, $merchant_id); $this->ajaxReturn($result); } /* ************************************** 会员详细信息 Start ************************************** */ public function detail() { $vid = I("get.id"); $this->assign('vid', $vid); $this->display(); } // 获取会员详细信息 public function getUserDetails() { $vid = I('post.vid'); if (!$vid) { $res['status'] = 0; $res['msg'] = '必要参数缺失'; $this->ajaxReturn($res); } $map = [ 'ro.id' => $vid ]; $field = [ 'ro.id', 'ro.name', 'ro.nickname', 'ro.mobile_phone', 'ro.birthday', 'ro.headimgurl', 'ro.addtime', 'ro.plus_type', 'ro.integral', 'ro.grade_integral', 'ro.balance' ]; $MemberAnalyzeModel = new MemberAnalyzeModel; $UserInfo = $MemberAnalyzeModel->getUserDetails($map, $field); $merchant_id = $this->merchant_id; if ($UserInfo) { $UserInfo['vip_type'] = $UserInfo['plus_type'] == 2 ? 'Plus 会员' : '常规会员'; if ($UserInfo['plus_type'] == 2) { $UserInfo['vip_lv'] = '-'; // 获取Plus 开始/结束时间 $plusInfo = $MemberAnalyzeModel->getPlusTime(['vip_id' => $vid]); $UserInfo['plus_start'] = date('Y-m-d H:i:s', $plusInfo['start_time']); $UserInfo['plus_end'] = date('Y-m-d H:i:s', $plusInfo['end_time']); } else { $gradeName = M('retail_vip_integral') ->where(array('min_integral' => array('ELT', $UserInfo['grade_integral']), 'merchantid' => $merchant_id)) ->order('min_integral desc') ->getField("cardname"); $UserInfo['vip_lv'] = $gradeName ? $gradeName : '无等级'; } $UserInfo['addtime'] = date('Y-m-d H:i:s', $UserInfo['addtime']); $res['status'] = 1; $res['data'] = $UserInfo; $res['msg'] = '数据获取成功'; } else { $res['status'] = 0; $res['msg'] = '会员信息有误'; } $this->ajaxReturn($res); } // 获取会员余额 public function getUserRecharge() { $vid = I('post.vid'); $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; $plus_type = I('post.plus_type') ? I('post.plus_type') : 2; // 2plus会员 3常规会员 if (!$vid) { $res['status'] = 0; $res['msg'] = '必要参数缺失'; $this->ajaxReturn($res); } $map = [ 'ro.vid' => $vid, 'ro.status' => 1, ]; $field = [ 'ro.id', 'ro.add_time', 'ro.type', 'ro.money', 'ro.all_money', 'ro.remark' ]; $MemberAnalyzeModel = new MemberAnalyzeModel; $recharge = $MemberAnalyzeModel->getUserRecharge($map, $field, $page, $pageSize); if ($recharge['list']) { foreach ($recharge['list'] as $key => &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['add_time']); switch ($value['type']) { case 1 : $value['type_text'] = '充值'; if ($value['money'] == $value['all_money']) { $value['money_text'] = '充值¥' . $value['money']; } else { $newMoney = ($value['all_money'] * 10000 - $value['money'] * 10000) / 10000; $value['money_text'] = '充值¥' . $value['money'] . '赠¥' . $newMoney; } break; case 2 : $value['type_text'] = '消费'; $value['money_text'] = '¥' . $value['all_money']; break; default : $value['type_text'] = '其他'; $value['money_text'] = '¥' . $value['all_money']; } } } $res['status'] = 1; $res['data'] = $recharge; $res['msg'] = !empty($recharge['list']) ? '数据获取成功' : '暂无数据'; $this->ajaxReturn($res); } // 获取会员积分 public function getUserIntegral() { $vid = I('post.vid'); $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; if (!$vid) { $res['status'] = 0; $res['msg'] = '必要参数缺失'; $this->ajaxReturn($res); } $map = [ 'rio.vid' => $vid ]; $field = [ 'rio.id', 'rio.addtime', 'rio.remark', 'rio.integral', 'rio.type' ]; $MemberAnalyzeModel = new MemberAnalyzeModel; $integral = $MemberAnalyzeModel->getUserIntegral($map, $field, $page, $pageSize); if ($integral['list']) { foreach ($integral['list'] as $key => &$value) { // 积分类型: 1签到获取 2消费获取 3使用积分 4后台充值 5后台扣除 6完善资料获取 7分享朋友赠送积分 8收银机充值 9积分抵现买单 10充值退款 if ($value['type'] == 3 || $value['type'] == 5 || $value['type'] == 9 || $value['type'] == 10) { $value['integral'] = '- ' . $value['integral']; } else { $value['integral'] = '+ ' . $value['integral']; } $value['add_time'] = date('Y-m-d H:i:s', $value['addtime']); } } $res['status'] = 1; $res['data'] = $integral; $res['msg'] = !empty($integral['list']) ? '数据获取成功' : '暂无数据'; $this->ajaxReturn($res); } // 获取会员订单 public function getUserBillOrder() { $vid = I('post.vid'); $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; if (!$vid) { $res['status'] = 0; $res['msg'] = '必要参数缺失'; $this->ajaxReturn($res); } $map = [ 'rbo.vid' => $vid, 'rbo.pay_state' => 1, ]; $field = [ 'rbo.id', 'rbo.order_no', 'rbo.type', 'rbo.add_time', 'rbo.all_money as amount_received', 'lrbo.order_genre' ]; $MemberAnalyzeModel = new MemberAnalyzeModel; $billOrder = $MemberAnalyzeModel->getUserBillOrder($map, $field, $page, $pageSize); if ($billOrder['list']) { foreach ($billOrder['list'] as $key => &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['add_time']); $value['type'] = $value['type'] == 1 ? '线上消费' : '线下消费'; switch ($value['order_genre']) { // 订单类型 1.普通订单 2.拼团订单 3.秒杀订单 4预售订单 case 1 : $value['order_type'] = '普通订单'; break; case 2 : $value['order_type'] = '拼团订单'; break; case 3 : $value['order_type'] = '秒杀订单'; break; case 4 : $value['order_type'] = '预售订单'; break; default : $value['order_type'] = '-'; } } } $res['status'] = 1; $res['data'] = $billOrder; $res['msg'] = !empty($billOrder['list']) ? '数据获取成功' : '暂无数据'; $this->ajaxReturn($res); } // 查看订单商品信息 public function getBillOrderInfo() { $id = I('post.id'); $sell_goods_info = M('retail_bill_order as b') ->join('ls_retail_bill_online as o on b.id=o.bill_id', 'LEFT') ->join('ls_retail_bill_discount as d on b.id=d.bill_id', 'LEFT') ->where(array('id' => $id)) ->find(); if ($sell_goods_info['type'] == 1) { $name = $sell_goods_info['user_name']; $phone = $sell_goods_info['user_phone']; if ($sell_goods_info['pickup_type'] == 1) { $address = '到店自提'; } else { $address = $sell_goods_info['user_address']; } } //出售表id $sellOrder = D('RetailSell')->getSelect(array('bill_id' => $sell_goods_info['id'])); foreach ($sellOrder as $key => &$sell) { $sell['company'] = D("RetailGoods")->getFindField(array('id' => $sell['goods_id']), "company"); $sell['discount_price'] = round(($sell['original_price'] - $sell['price']) * $sell['num'], 2); if ($sell['pricing_method'] == 2) { $sell['num'] = $sell['num'] . "(称重)"; } if (intval($sell['num']) == $sell['num']) { $sell['num'] = intval($sell['num']); } if (($sell['goods_type'] == 2 || $sell['goods_id'] == 0) && empty($sell['goods_name'])) { $sell['goods_name'] = '无码商品'; } if ($sell['sku_json_info']) { $sell['goods_name'] .= '(' . json_decode($sell['sku_json_info'], true)['name'] . ')'; } $sell['image'] = getImage($sell['goods_img_id']); $sell_goods_info2[] = $sell; } if (!$id) { $rt['code'] = 1; $rt['msg'] = ''; $rt['data'] = array(); $this->ajaxReturn($rt); } $rt['id'] = $id; $rt['code'] = 0; $rt['msg'] = ''; $rt['data'] = $sell_goods_info2; $rt['all_money'] = $sell_goods_info['all_money']; //总计 $rt['type'] = $sell_goods_info['type']; //订单类型 $rt['delivery_fee'] = $sell_goods_info['delivery_fee']; //配送费 if ($sell_goods_info['type'] == 1) { $rt['name'] = $name; $rt['phone'] = $phone; $rt['address'] = $address; $rt['remark'] = $sell_goods_info['remark']; } $this->ajaxReturn($rt); } // 获取Plus会员信息 public function getPlusUserRecord() { $vid = I('post.vid'); $page = I('post.page') ? I('post.page') : 1; $pageSize = I('post.pageSize') ? I('post.pageSize') : 10; if (!$vid) { $res['status'] = 0; $res['msg'] = '必要参数缺失'; $this->ajaxReturn($res); } $map = [ 'rpc.vip_id' => $vid, 'rpc.pay_state' => 1 ]; $field = [ 'rpc.id', 'rpc.addtime', 'rpc.pay_type', 'rpc.money', 'rpc.type', 'rpc.time' ]; $MemberAnalyzeModel = new MemberAnalyzeModel; $plus = $MemberAnalyzeModel->getPlusUserRecord($map, $field, $page, $pageSize); if ($plus['list']) { // 支付状态 0 未支付 1.微信 2.会员 3.支付宝 4.现金 5.其他 $payArr = [ '1' => '微信', '2' => '会员', '3' => '支付宝', '4' => '现金', '5' => '其他' ]; // 1.购买套餐 2.套餐续费 3.充值 4.充值续费 5.购买商品 6.购买商品套餐 $plusArr = [ '1' => '购买套餐', '2' => '套餐续费', '3' => '充值', '4' => '充值续费', '5' => '购买商品', '5' => '购买商品套餐' ]; foreach ($plus['list'] as $key => &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['addtime']); $value['pay_type'] = $payArr[$value['pay_type']]; $value['type'] = $plusArr[$value['type']]; } } $res['status'] = 1; $res['data'] = $plus; $res['msg'] = !empty($plus['list']) ? '数据获取成功' : '暂无数据'; $this->ajaxReturn($res); } }