文件
mashangyoujiu/Application/Retail/Controller/MemberAnalyzeController.class.php

1039 行
35 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Retail\Controller;
use Common\Model\MemberAnalyzeModel;
use Common\Model\RetailGoodsClassModel;
use Common\Model\RetailSellModel;
use Common\Model\RetailVipWithLabelModel;
use Think\Controller;
//[1.8.96]
/**
* 后台-会员分析
* @author shao nianyi
* @create_time 2020年4月25日
* Class MemberAnalyzeController
* @package Retail\Controller
*/
class MemberAnalyzeController extends BaseController
{
// protected $merchant_id =1;
public function analysis()
{
$this->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);
}
}