assign('start_time',$begin); $this->assign('end_time',$end); $this->begin = strtotime($begin); $this->end = strtotime($end)/*+86399*/; mlog($this->begin.' '.$this->end.' 2',"report"); $this->assign('timegap',date('Y-m-d h:m:s',$this->begin).' - '.date('Y-m-d h:m:s',$this->end)); } //销售统计首页 public function index() { //统计的时间默认2个月前的数据 $lastweek = date('Y-m-d', strtotime("-1 month"));//60天前 $begin = I('begin', $lastweek) . ' 00:00:00'; $this->assign('start_time', $begin); $GoodsLogic = new GoodsLogic(); $brandList = $GoodsLogic->getSortBrands(); $categoryList = $GoodsLogic->getSortCategory(); $this->assign('categoryList', $categoryList); $this->assign('brandList', $brandList); $getsearch_field=cache_new("Report","index","search_field:".getAdmStoId()."_".getAdminId().""); if ($getsearch_field) { $this->assign('search_field', $getsearch_field); } else { $search_field = array(); $search_field['add_time'] = "单据日期"; $search_field['erp_givetime'] = "POS调单时间"; $search_field['order_sn'] = "订单号"; $search_field['exp_type'] = "配送方式"; $search_field['order_status'] = "订单状态"; $search_field['pay_name'] = "支付方式"; $search_field['num'] = "总数量"; $search_field['all_order_amount'] = "总金额"; $this->assign('search_field', json_encode($search_field)); } return $this->fetch('', getAdmStoId()); } //ajax调用销售统计 public function ajaxindex() { $p = I('p/d', 1); $start = ($p - 1) * 20; $res = []; $count = ''; $total_sel = 0; $end_time = ''; $start_time = ''; $where1 = ''; $coutwhere = ''; //时间 // var_dump($timegap);die; //订单编号 $order_sn = I('get.order_sn'); $pickup_name = I('get.pickup_name'); //快递单号 $expressno = I('get.expressno'); //会员信息 $vipinfo = I('get.vipinfo'); //门店id $pickup_id = I('get.pickup_id'); $pickup_name1 = I('get.pickup_name1'); $pickup_name = I('get.pickup_name'); //订单状态 $order_status = I('order_status'); //支付方式 $pay_name = I('get.pay_name'); //商品名称 $goods_name = I('get.goods_name'); //配送方式 $exp_type = I('get.exp_type'); //汇总查询 $total_sel = I('total_sel'); //商品id $goods_id = I('goods_id'); //商品品类、品牌 $cat_id = I('cat_id'); $brand_id = I('brand_id'); //订单分类 $prom_type = I('prom_type'); $order_type = I('order_type'); //时间查询 $timetype = I('timetype'); $search_field= I('search_field'); if ($search_field) { cache_new("Report","index","search_field:".getAdmStoId()."_".getAdminId()."",json_encode($search_field),TPSHOP_CACHE_TIME); $this->assign('search_field', json_decode($search_field, true)); } $where = []; $join = []; $where1 = " a.store_id=" . getAdmStoId() . " and "; $c_field = null; $tjarr = null; //销售概况 /*$today1=I('today1');*/ switch ($total_sel) { case 0: //汇总查询 $field = 'c.pickup_no,c.pickup_name,d.vipname,a.consignee,a.address,a.more_address,a.expressno,a.integral_money,a.coupon_price,a.user_money,a.is_zsorder,a.order_id,a.pay_code,a.order_status,a.shipping_status,a.add_time,a.erp_givetime,a.order_sn,a.exp_type,a.pay_status,a.pt_status,pay_name,a.total_amount,a.pickup_id,a.expressno,a.order_amount,a.user_money,a.integral,sum(b.warenum)num'; $field.=",(a.order_prom_amount+a.discount_amount) as youhui,a.user_note,sum(a.order_amount+a.user_money+a.pt_tail_money)all_order_amount"; $group = 'a.order_id'; $c_field = "count(distinct(a.order_id))cou,sum(total_amount)max1,sum(b.warenum)max2,sum(order_amount+user_money+pt_tail_money) max3"; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'], ['(SELECT mobile,user_id,vipname from wxd_users where store_id=' . getAdmStoId() . ') d', 'a.user_id=d.user_id', 'left'] ]; break; case 1://按单号汇总 $field = 'a.is_zsorder,a.order_id,a.pay_code,a.order_status,a.shipping_status,a.add_time,a.erp_givetime,a.order_sn,a.exp_type,a.pay_status,a.pt_status,pay_name,a.total_amount,a.pickup_id,a.expressno,a.order_amount,a.user_money,a.integral,sum(b.warenum)num,a.user_note,sum(total_amount)all_total_amount,sum(a.order_amount+a.user_money+a.pt_tail_money)all_order_amount'; $c_field = "count(distinct(a.order_id))cou,sum(a.total_amount)max1,sum(b.warenum)max2,sum(a.order_amount+a.user_money+a.pt_tail_money) max3"; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ]; $group = 'a.order_id'; break; case 2: //按门店汇总 $field = 'c.pickup_no,c.pickup_name,count(1)num,sum(b.warenum)warenum,a.user_note,sum(a.total_amount)all_total_amount,sum(a.order_amount+a.user_money+a.pt_tail_money)all_order_amount'; $c_field = "count(distinct(c.pickup_no))cou,count(distinct(a.order_id))ordernum,sum(a.total_amount)max1,sum(b.warenum)max2,sum(a.order_amount+a.user_money+a.pt_tail_money) max3"; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'] ]; $group = 'c.pickup_no'; break; case 3: //按商品汇总 $field = 'b.goods_name,b.goods_sn,b.goods_price,e.shop_price,sum(b.goods_num)num,sum(b.goods_price*b.goods_num)all_total_amount,sum(e.shop_price*b.goods_num) all_order_amount'; $c_field = "count(distinct(CONCAT(b.goods_sn,b.goods_name,cast(b.goods_price as CHAR(50)),cast(e.shop_price as CHAR(50)))))cou,sum(b.goods_price*b.goods_num)max1,sum(b.goods_num)max2,sum(e.shop_price*b.goods_num) max3"; $join = [ ['(SELECT * FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ') b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'], ['(SELECT * FROM wxd_goods WHERE store_id=' . getAdmStoId() . ') e', 'e.goods_id=b.goods_id', 'left'] ]; $where['a.pay_status'] = 1; $group = 'b.goods_sn,b.goods_name,b.goods_price,e.shop_price'; break; case 4: //按配送汇总 $field = 'a.exp_type,count(1)num,sum(a.shipping_price)shipping_price,sum(b.warenum)warenum '; $group = 'a.exp_type'; $c_field = "count(distinct(a.exp_type))cou,count(distinct(a.order_id))ordernum,sum(total_amount)max1,sum(b.warenum)max2,sum(order_amount+user_money+pt_tail_money) max3,sum(a.shipping_price) shipping_price"; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'] ]; break;//->join('(SELECT * FROM wxd_order_goods WHERE store_id='.getAdmStoId().') b','a.order_id=b.order_id','left') case 5: //按支付方式汇总 $field = "sum(order_amount)all_order_amount,sum(user_money)all_user_money,sum(integral)all_integral, sum(case when tail_pay_type=0 then pt_tail_money else 0 end) t_w, sum(case when tail_pay_type=1 then pt_tail_money else 0 end) t_y,count(1)cou"; $join = [ ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'] ]; $group = 'a.store_id'; break; } //商品品类、品牌 $GoodsLogic = new GoodsLogic; $brandList = $GoodsLogic->getSortBrands(); $this->assign('brandList', $brandList); $categoryList = $GoodsLogic->getSortCategory(); $this->assign('categoryList', $categoryList); $pickup_name1 = empty($pickup_name1) ? $pickup_name : $pickup_name1; if (I('get.end_time')) { $end = strtotime(urldecode(urldecode(I('get.end_time')))); } if (I('get.start_time')) { $begin = strtotime(urldecode(urldecode(I('get.start_time')))); } $coutwhere = ' store_id=' . getAdmStoId() . ' '; if (empty($begin)) { $begin = strtotime("-1 month"); } if (empty($end)) { $end = strtotime('now'); } if ($begin) { switch ($timetype) { case "1": $where1 .= 'a.add_time >' . $begin; $coutwhere .= ' and add_time >' . $begin; break; case "2": $where1 .= 'a.erp_givetime >' . $begin; $coutwhere .= ' and erp_givetime >' . $begin; break; default: break; } } if ($end) { switch ($timetype) { case "1": $where1 .= ' and a.add_time < ' . $end . ' AND '; $coutwhere .= ' and add_time < ' . $end . ''; break; case "2": $where1 .= ' and a.erp_givetime < ' . $end . ' AND '; $coutwhere .= ' and erp_givetime < ' . $end . ''; break; default: break; } } $exccount = M('order')->where($coutwhere)->count();//当前时间段订单数 if ($order_sn) //订单号码 { $where['a.order_sn'] = $order_sn; } if ($expressno) //快递单号 { $where['a.expressno'] = $expressno; } if ($vipinfo) //会员信息 { $where['d.vipname|d.mobile'] = ['like', '%' . $vipinfo . '%']; } if ($pickup_name) //门店名称 { $where['c.pickup_name|c.pickup_no'] = ['like', '%' . $pickup_name . '%']; } if ($goods_name) //商品名称 { $where['b.goods_name|b.goods_sn'] = ['like', '%' . $goods_name . '%']; } if ($order_status) //订单状态 { if ($order_status == 'WAITPAY') $where1 .= 'a.pay_status = 0 AND a.order_status = 0 AND a.pay_code !="cod" AND '; //待付款 if ($order_status == 'WAITSEND') $where1 .= ' (a.pay_status=1 OR a.pay_code="cod") AND a.shipping_status=0 AND a.order_status in(0,1) AND ';//待发货 if ($order_status == 'WAITRECEIVE') $where1 .= ' a.shipping_status in(1,2) AND a.order_status = 1 AND';//待收货 if ($order_status == 'WAITCCOMMENT') $where1 .= ' a.order_status=2 AND';//已收货 if ($order_status == 'CANCEL') $where1 .= ' a.order_status = 3 AND';//已取消 if ($order_status == 'FINISH') $where1 .= ' a.order_status = 4 AND';//已完成 if ($order_status == 'CANCELLED') $where1 .= ' a.order_status = 5 AND';//已作废 if ($order_status == 'RETURNED') $where1 .= ' a.order_status = 6 AND';//退款退货完成 if ($order_status == 'PAYED') $where1 .= ' a.pay_status = 1 AND ';//已付款 } switch ($pay_name) { case 1://微信支付 //$where['a.order_amount'] = ['>', 0]; $where1 .= " a.order_amount > 0 and "; break; case 2://用户余额 //$where['a.user_money'] = ['>', 0]; $where1 .= " a.user_money > 0 and "; break; case 3://积分兑换 //$where['a.integral'] = ['>', 0]; $where1 .= " a.integral > 0 and "; break; } if ($exp_type) //物流 { $where['a.exp_type'] = $exp_type - 1; } if ($prom_type) //订单分类 普通、团购等 { if ($prom_type == 7) { $where['b.is_distri'] = 1; } else { $where['b.prom_type'] = $prom_type - 1; } } if ($cat_id)//品类 { $grandson_ids = getCatGrandson($cat_id); $where1 .= " cat_id in(" . implode(',', $grandson_ids) . ") and "; // 初始化搜索条件 } if ($brand_id)//品牌 { $where1 .= " brand_id = " . I('brand_id') . " and "; } $where1 .= " a.store_id=" . getAdmStoId(); $order = ' a.add_time desc'; $res = M('order') ->alias('a') ->join($join) ->where($where) ->where($where1) ->field($field) ->group($group) ->order($order) ->limit($start, 20) ->select(); $singlecout = array( 'amount' => 0, 'ordernum' => 0, 'pronum' => 0, 'shopnum' => 0, 'shipping_price' => 0, 'all_order_amount' => 0, 'all_total_amount' => 0 ); if ($c_field) { $tjarr1 = M('order') ->alias('a')->join($join) ->where($where)->where($where1) ->field($c_field) ->select(); $tjarr = $tjarr1[0]; $Page = new AjaxPage($tjarr['cou'], 20); $show = $Page->show(); $this->assign('page', $show); } switch ($total_sel) { case 0: //汇总查询 case 1://按单号汇总 /*--- $singlecout['ordernum']++; $singlecout['amount']+= $count[$kt]['total_amount']; $singlecout['pronum']+= $count[$kt]['num']; $singlecout['all_order_amount']+= $count[$kt]['all_order_amount']; $singlecout['all_total_amount']+= $count[$kt]['all_total_amount'];--*/ $singlecout['ordernum'] = $tjarr['cou']; $singlecout['amount'] = $tjarr['max1']; $singlecout['pronum'] = $tjarr['max2']; $singlecout['all_order_amount'] = $tjarr['max3']; $singlecout['all_total_amount'] = $tjarr['max1']; break; case 2: //按门店汇总 $singlecout['shopnum'] = $tjarr['cou']; $singlecout['ordernum'] = $tjarr['ordernum']; $singlecout['pronum'] = $tjarr['max2']; $singlecout['all_order_amount'] = $tjarr['max3']; $singlecout['all_total_amount'] = $tjarr['max1']; break; case 3: //按商品汇总 $singlecout['proamount'] = $tjarr['cou']; $singlecout['pronum'] = $tjarr['max2']; $singlecout['all_order_amount'] = $tjarr['max3']; $singlecout['all_total_amount'] = $tjarr['max1']; break; case 4: //按配送汇总 $singlecout['ordernum'] = $tjarr['ordernum']; $singlecout['pronum'] = $tjarr['max2']; $singlecout['shipping_price'] = $tjarr['shipping_price']; $singlecout['all_order_amount'] = $tjarr['max3']; $singlecout['all_total_amount'] = $tjarr['max1']; break; case 5: //按支付方式汇总 $tjarr['cou'] = $res[0]['cou']; break; } $singlecout['all_order_amount'] = sprintf("%.2f", $singlecout['all_order_amount']); $singlecout['all_total_amount'] = sprintf("%.2f", $singlecout['all_total_amount']); $singlecout['shipping_price'] = sprintf("%.2f", $singlecout['shipping_price']); $singlecout['amount'] = sprintf("%.2f", $singlecout['amount']); foreach ($res as $kk => $vv) { $order_status_arr = C('ORDER_STATUS_DESC'); $order_status_code = orderStatusDesc(0, $vv); // 订单状态显示给用户看的 $res[$kk]['order_status_desc'] = $order_status_arr[$order_status_code]; } $this->assign('list', $res); $this->assign('count', $tjarr['cou']); $this->assign('order_sn', $order_sn); $this->assign('expressno', $expressno); $this->assign('vipinfo', $vipinfo); $this->assign('pickup_name1', $pickup_name1); $this->assign('pickup_name', $pickup_name); $this->assign('order_status', $order_status); $this->assign('pay_name', $pay_name); $this->assign('exp_type', $exp_type); $this->assign('total_sel', $total_sel); $this->assign('where1', str_replace("\"", "@", $where1)); $this->assign('where', json_encode($where)); $this->assign('goods_name', $goods_name); $this->assign('prom_type', $prom_type); $this->assign('timetype', $timetype); $this->assign('cat_id', $cat_id); $this->assign('brand_id', $brand_id); //统计后的数据 $this->assign('singlecout', $singlecout); return $this->fetch("", getAdmStoId()); } public function outdata() { $data=I('get.'); //字段名 $arr['str']=explode(',', rtrim($data['str'], ',')); //表头 $arr['txt']=explode(',', rtrim($data['txt'], ',')); if(is_array($arr)) { $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($arr)) { foreach ($arr as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
订单号
 ' . $val['order_sn'] . ' ' . $val['add_time'] . ' ' .($val['pay_time']=="0"?'':$val['pay_time1']). '' . $val['consignee'] . ' ' . $val['goods_num'] . '' . $val['goods_price'] . '' . $val['shipping_price'] . '' . $val['total_amount'] . '' . $val['order_status_desc'] . '' . $val['mobile'] . '' . $val['ADDRESS'] . '' . ($val['exp_type'] == '0' ? '物流' :'自提') . '' . $val['expressno'] . '' . $val['shipping_name'] . '' . ($val['pickup_no']) . '' . ($val['pickup_name']) . '' . $val['user_note'] . '
'; } } public function saleTop(){ $sql = "select goods_name,goods_sn,sum(goods_num) as sale_num,sum(goods_num*goods_price) as sale_amount from __PREFIX__order_goods "; $sql .=" where store_id=".getAdmStoId()." and is_send = 1 group by goods_id order by sale_amount DESC limit 100"; $res = DB::cache("saleTop_".getAdmStoId(),3600)->query($sql); $this->assign('list',$res); upload_ylp_log('B46销售排行查询/搜索'); return $this->fetch('',getAdmStoId()); } public function userTop() { //var_dump(I('GET.'));die; $p = I('p', 1); $start = ($p - 1) * 20; $vipname = urldecode(urldecode(I('vipname'))); $i_vipname = I('i_vipname'); $is_mzvip = I('is_mzvip'); $is_buyorder = I('is_buyorder'); $pickup_id = I('pickup_id'); $pickup_name1 = urldecode(urldecode(I('pickup_name1', ''))); $pickup_name = urldecode(urldecode(I('pickup_name', ''))); //var_dump($pickup_name);die; $where1 = ""; $mobile = ""; if (I('end_time')) { $end = strtotime(urldecode(urldecode(I('end_time')))); $where1 .= " a.reg_time < " . "'" . $end . "' and "; } if (I('start_time')) { $begin = strtotime(urldecode(urldecode(I('start_time')))); $where1 .= "a.reg_time > " . "'" . $begin . "' and "; } $where = ""; if ($vipname) { $where['a.vipname|a.mobile'] = ['like', '%' . $vipname . '%']; } $where['a.openid']=array('neq',''); if ($is_mzvip) { switch ($is_mzvip) { case 1: $where['a.is_mzvip'] = 0; break; case 2: $where['a.is_mzvip'] = 1; break; case 3: $where1 .= " ifnull(d.order_num,0)=0 and "; break; default: break; } } if ($is_buyorder) { switch ($is_buyorder) { case 1: $where1 .= " ifnull(d.order_num,0)>0 and "; break; case 2: $where1 .= " ifnull(d.order_num,0)=0 and "; break; default: break; } } if ($pickup_name) { $where['b.pickup_name'] = ['like', '%' . $pickup_name . '%']; } if ($i_vipname) { $where['c.vipname|c.mobile'] = ['like', '%' . $i_vipname . '%']; } $pickup_name1 = empty($pickup_name) ? $pickup_name1 : $pickup_name; $where1 .= "a.store_id=" . getAdmStoId(); if (getERPId()) $where1 .= " and ifnull(a.erpvipid,'') <> '' and ifnull(a.mobile,'') <>''"; else $where1 .= " and ifnull(a.mobile,'') <>''"; // var_dump($where,$where1); $count = M('users')->alias('a') ->join('pick_up b', 'a.pickup_id=b.pickup_id', 'left') ->join('users c', 'a.fromuser_id=c.user_id', 'left') ->join('(select count(1) as order_num,user_id from wxd_order where store_id=' . getAdmStoId() . ' and pay_status=1 group by user_id) d', ' d.user_id=a.user_id', 'left') ->where($where) ->where($where1) ->count(); $Page = new Page($count, 20); $show = $Page->show(); $res = M('users')->alias('a') ->join('pick_up b', 'a.pickup_id=b.pickup_id and a.store_id=b.store_id', 'left') ->join('users c', 'a.fromuser_id=c.user_id', 'left') ->join('(select count(1) as order_num,user_id from wxd_order where store_id=' . getAdmStoId() . ' and pay_status=1 group by user_id) d', ' d.user_id=a.user_id', 'left') ->field('a.*,ifnull(d.order_num,0) as order_num ,b.pickup_name ,c.vipname as i_vipname,c.mobile as i_mobile')//case when c.vipname=null then c.mobile else c.vipname end ->where($where) ->where($where1) ->limit($Page->firstRow . ',' . $Page->listRows) ->order(' a.reg_time desc') ->select(); $this->assign('vipname', $vipname); $this->assign('mobile', $mobile); $this->assign('i_vipname', $i_vipname); $this->assign('is_mzvip', $is_mzvip); $this->assign('is_buyorder', $is_buyorder); $this->assign('list', $res); $this->assign('page', $show); $this->assign('pager', $Page); $this->assign('pickup_id', $pickup_id); $this->assign('pickup_name', $pickup_name); upload_ylp_log('B47会员排行查询/搜索'); return $this->fetch('', getAdmStoId()); } //会员管理导出 public function exportreport_usertop() { $p = I('p', 1); $start = ($p - 1) * 20; $vipname = urldecode(urldecode(I('vipname'))); $i_vipname = I('i_vipname'); $is_mzvip = I('is_mzvip'); $is_buyorder = I('is_buyorder'); $pickup_id = I('pickup_id'); $pickup_name1 = urldecode(urldecode(I('pickup_name1', ''))); $pickup_name = urldecode(urldecode(I('pickup_name', ''))); //var_dump($pickup_name);die; $where1 = ""; $mobile = ""; if (I('end_time')) { $end = strtotime(urldecode(urldecode(I('end_time')))); $where1 .= " a.reg_time < " . "'" . $end . "' and "; } if (I('start_time')) { $begin = strtotime(urldecode(urldecode(I('start_time')))); $where1 .= "a.reg_time > " . "'" . $begin . "' and "; } $where = ""; if ($vipname) { $where['a.vipname|a.mobile'] = ['like', '%' . $vipname . '%']; } if ($is_mzvip) { $where['a.is_mzvip'] = $is_mzvip - 1; } if ($pickup_name) { $where['b.pickup_name'] = ['like', '%' . $pickup_name . '%']; } if ($i_vipname) { $where['c.vipname|c.mobile'] = ['like', '%' . $i_vipname . '%']; } if ($is_buyorder) { switch ($is_buyorder) { case 1: $where1 .= " ifnull(d.order_num,0)>0 and "; break; case 2: $where1 .= " ifnull(d.order_num,0)=0 and "; break; default: break; } } $pickup_name1 = empty($pickup_name) ? $pickup_name1 : $pickup_name; $where1 .= "a.store_id=" . getAdmStoId(); $where1 .= " and ifnull(a.erpvipid,'') <> '' and ifnull(a.mobile,'') <>''"; $res = M('users')->alias('a') ->join('pick_up b', 'a.pickup_id=b.pickup_id and a.store_id=b.store_id', 'left') ->join('users c', 'a.fromuser_id=c.user_id', 'left') ->join('(select count(1) as order_num,user_id from wxd_order where store_id=' . getAdmStoId() . ' and pay_status=1 group by user_id) d', ' d.user_id=a.user_id', 'left') ->field('a.*,IFNULL(order_num,0) as order_num,b.pickup_name ,c.mobile as i_mobile,c.vipname as i_vipname') ->where($where) ->where($where1) ->order(' a.reg_time desc') ->select(); $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; // $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($res)) { foreach ($res as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; // $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
会员姓名手机性别地址登记门店卡类注册时间介绍人姓名介绍人手机消费次数
 ' . $val['vipname'] . ' ' . $val['mobile'] . '  ' . ($val['sex'] == "1" ? '男' : ($val['sex'] == "2" ? '女' : '保密')) . ' ' . $val['address'] . ' ' . $val['pickup_name'] . '' . ($val['is_mzvip'] == "1" ? '美妆会员' : '普通会员') . ' ' . ($val['reg_time'] == "0" ? '' : date('Y-m-d H:i:s', $val['reg_time'])) . '' . $val['i_vipname'] . '' . $val['i_mobile'] . '' . $val['order_num'] . '
'; echo $strTable; unset($res); downloadExcel($strTable, '会员管理'); exit(); } //分销分析 public function fenx(){ $user_id=I('post.user_id'); $where['a.is_distribut']=1; $where['a.user_id']=$user_id; $num=DB::query('select IFNULL(count(1),0) as num from __PREFIX__users where is_distribut=1 and (first_leader ='.$user_id.' or second_leader = '.$user_id.')')[0]; $user_res=Db::name('users')->alias('a') ->join('users b','a.first_leader=b.user_id','left') ->field('a.user_id,a.total_amount,a.be_dis_condition,IFNULL(a.be_distribut_time,0) as be_distribut_time,a.vipname,a.mobile,a.is_distribut,IFNULL(b.mobile,0) as fisrt_mobile,a.reg_time') ->where($where) ->find(); if($user_res) { if(empty($user_res['be_distribut_time'])){ $user_res['be_distribut_time']=$user_res['reg_time']; } $user_res['be_distribut_time']=date('Y-m-d H:i:s',$user_res['be_distribut_time']); if(!$user_res['fisrt_mobile']) { $user_res['fisrt_mobile']="无"; } $result = DB::query("select IFNULL(sum(goods_price),0) as goods_price, IFNULL(sum(money),0) as money,sum(case when status=3 then money else 0 end) as leji from __PREFIX__rebate_log where user_id = ".$user_id." and status>0 and status<4"); $user_res['goods_price']=$result[0]['goods_price']; $user_res['money']=$result[0]['leji']; if(empty($user_res['money'])) $user_res['money']="0.00"; //$user_res['goods_price']=$result[0]['goods_price']; //$user_res['money']=$result[0]['money']; $user_res['num']=$num['num']+1; //要加上自己一级会员 //分析条件 if(empty($user_res['be_dis_condition']) || strlen($user_res['be_dis_condition'])<3) { $condition=tpCache('distribut.condition',getAdmStoId()); if($condition==0) { $user_res['fenxs']="直接成为分销商"; } if($condition==1) { $user_res['fenxs']="购满".$condition['a.condition_money'].'元'; } if($condition==2) { $goodwhere['goods_id']=$condition['condition_goods_id']; $goodwhere['store_id']=getAdmStoId(); $goodsname=Db::name('goods')->field('goods_name')->where($goodwhere)->find(); if($goodsname) { $user_res['fenxs']="购买".$goodsname['goods_name'].'成为分销商'; } } if($condition==3){ $goodwhere['goods_id']=$condition['condition_goods_id']; $goodwhere['store_id']=getAdmStoId(); $goodsname=Db::name('goods')->field('goods_name')->where($goodwhere)->find(); if($goodsname) { $user_res['fenxs']="购买".$goodsname['goods_name']; } if($user_res['fenxs']) $user_res['fenxs'].="或购满".$condition['condition.money'].'元成为分销商'; else $user_res['fenxs']="购满".$condition['condition.money'].'元成为分销商'; } M('users')->where('user_id',$user_id)->save(['be_dis_condition'=>$user_res['fenxs'],'be_distribut_time'=>$user_res['reg_time']]); }else { $user_res['fenxs']=$user_res['be_dis_condition']; } //分销订单 $rebate_log= DB::query("select count(order_id) as order_num from __PREFIX__rebate_log rebate_log where status>0 and status<4 and user_id = ".$user_id."")[0]; if($rebate_log) { if(empty($rebate_log['order_num'])) { $user_res['order_num']=0; }else { $user_res['order_num']=$rebate_log['order_num']; } //$user_res['order_num']=empty($rebate_log['order_num'])?"0单":$rebate_log['order_num']."单"; }else{ $user_res['order_num']=0; } //待分成金额 $money_share= DB::query("select sum(money) as money_share from __PREFIX__rebate_log where user_id = ".$user_id." and status = 2")[0]; if($money_share) { $user_res['money_share']=empty($money_share['money_share'])?"0.00":mb_convert_encoding($money_share['money_share'], "UTF-8", "GBK"); }else{ $user_res['money_share']="0.00"; } return json_encode($user_res); }else{ return ""; } } //交易信息 public function jyxx(){ $user_id=I('post.user_id'); $where['user_id']=$user_id; $where['pay_status']=1; $res=Db::name('order') ->field('count(*) as order_num ,IFNULL(max(add_time),"0") as add_time, sum(IFNULL(user_money ,0)+IFNULL(order_amount ,0)+IFNULL(coupon_price ,0)) as sum_money,(IFNULL( user_money , 0)+IFNULL( order_amount , 0)) as cost_money') ->where($where) ->order('add_time desc') ->find(); if($res) { if(empty($res['sum_money'])) { $res['sum_money']=0; } if(!empty($res['add_time'])) { $res['add_time']=date('Y-m-d H:i:s',$res['add_time']); }else{ $res['add_time']='无'; } return json_encode($res); }else { return ""; } } //账户信息 public function zhxx() { $user_id=I('post.user_id'); $res=[]; // $user = M("users")->alias("a")->join(' store b','a.store_id=b.store_id','left')->where(array("a.user_id"=>$user_id,'a.store_id'=>getAdmStoId()))->field("a.erpvipid,a.erpvipno,b.api_token,a.user_id")->find(); $user = M("users")->where(array("user_id"=>$user_id,'store_id'=>getAdmStoId())) ->field("erpvipid,erpvipno,user_id,pay_points")->find(); $user['api_token']=tpCache('shop_info.api_token',getAdmStoId()); if(getERPId()) { //获取积分 if (!empty($user['erpvipid'])) { $integ = 0; $vsum = 0; $qnum = 0; $map['Id'] = $user['erpvipid']; $rs = getApiData('wxd.vip.info.shop.get', $user['api_token'], null, $map); //mlog("获取值:".json_encode($rs),"getindnum/".getAdmStoId()); $d = json_decode($rs, true); if ($d['code'] == 1) { $res['point'] = $d['data'][0]['Integral']; $res['point'] = number_format(empty($res['point']) ? 0 : $res['point'], 0); $vsum = $d['data'][0]['Balance']; $vsum = number_format(empty($vsum) ? 0 : $vsum, 2); $qnum = $d['data'][0]['cashcount']; $qnum = number_format(empty($qnum) ? 0 : $qnum, 0); }else{ $res['point'] =0; } } else{ $res['point'] =0; } }else{ $res['point'] =$user['pay_points']; } //可用余额 $where1 = ' user_id=' . $user_id; $current_money=M('users')->where($where1)->field('user_money')->find(); $dongmoney=M('users')->where($where1)->field('frozen_money')->find(); $locking_money=M('withdrawals')->where(array('user_id' => $user_id, 'status' => 0))->sum('money'); //流动资金 $liudong_money=$current_money['user_money']-$locking_money-$dongmoney['frozen_money']; $yucun_money=0; //预存款金额 $rs0=M('rebate_log')->where(array('user_id' => $user_id, 'status' => 2))->sum('money'); if($rs0){ $rs0=$rs0; }else{ $rs0=0.00; } if(($rs0+$liudong_money)<=0) { $res['money']='0.00'; }else{ $res['money']=number_format($rs0+$liudong_money,2); } //待分成 $money_share= DB::query("select sum(money) as money_share from __PREFIX__rebate_log where user_id = ".$user_id." and status = 2")[0]; if($money_share) { if(empty($money_share['money_share'])) { $res['money_share']="0.00"; }else{ $res['money_share']=mb_convert_encoding($money_share['money_share'], "UTF-8", "GBK"); } }else{ $res['money_share']="0.00"; } return json_encode($res); } public function saleList(){ $p = I('p',1); $start = ($p-1)*20; $cat_id = I('cat_id',0); $brand_id = I('brand_id',0); $where = "where b.add_time>$this->begin and b.add_time<$this->end "; if($cat_id>0){ $where .= " and g.cat_id=$cat_id"; $this->assign('cat_id',$cat_id); } if($brand_id>0){ $where .= " and g.brand_id=$brand_id"; $this->assign('brand_id',$brand_id); } $where.=" and a.store_id=".getAdmStoId(); $sql = "select a.*,b.order_sn,b.shipping_name,b.pay_name,b.add_time from __PREFIX__order_goods as a left join __PREFIX__order as b on a.order_id=b.order_id and a.store_id=b.store_id "; $sql .= " left join __PREFIX__goods as g on a.goods_id = g.goods_id and a.store_id=g.store_id $where "; $sql .= " order by add_time desc limit $start,20"; $res = DB::query($sql); $this->assign('list',$res); $sql2 = "select count(1) as tnum from __PREFIX__order_goods as a left join __PREFIX__order as b on a.order_id=b.order_id and a.store_id=b.store_id "; $sql2 .= " left join __PREFIX__goods as g on a.goods_id = g.goods_id and a.store_id=g.store_id $where"; $total = DB::query($sql2); $count = $total[0]['tnum']; $Page = new Page($count,20); $show = $Page->show(); $this->assign('page',$show); $GoodsLogic = new GoodsLogic(); $brandList = $GoodsLogic->getSortBrands(); $categoryList = $GoodsLogic->getSortCategory(); $this->assign('categoryList',$categoryList); $this->assign('brandList',$brandList); upload_ylp_log('B46销售排行查询/搜索'); return $this->fetch('',getAdmStoId()); } public function user(){ $today = strtotime(date('Y-m-d')); $month = strtotime(date('Y-m-01')); $user['today'] = D('users') ->where("erpvipid<>'' and erpvipid is not null and mobile is not null and mobile<>''") ->where("store_id=".getAdmStoId()." and reg_time>$today")->count();//今日新增会员 $user['month'] = D('users') ->where("erpvipid<>'' and erpvipid is not null and mobile is not null and mobile<>''") ->where("store_id=".getAdmStoId()." and reg_time>$month")->count();//本月新增会员 $user['total'] = D('users') ->where("erpvipid<>'' and erpvipid is not null and mobile is not null and mobile<>''") ->where("store_id=".getAdmStoId()."")->count();//会员总数 $user['user_money'] = D('users')->where("store_id=".getAdmStoId()." ")->sum('user_money');//会员余额总额 $res = M('order')->where("store_id=".getAdmStoId()." ")->cache('user_order_'.getAdmStoId())->distinct(true)->field('user_id')->select(); $user['hasorder'] = count($res); $this->assign('user',$user); $where=" and erpvipid<>'' and erpvipid is not null and mobile is not null and mobile<>''"; $sql = "SELECT COUNT(1) as num,FROM_UNIXTIME(reg_time,'%Y-%m-%d') as gap from __PREFIX__users where store_id=".getAdmStoId()." and reg_time>$this->begin and reg_time<$this->end ".$where." group by gap"; $new = DB::query($sql);//新增会员趋势 foreach ($new as $val){ $arr[$val['gap']] = $val['num']; } for($i=$this->begin;$i<=$this->end;$i=$i+24*3600){ $brr[] = empty($arr[date('Y-m-d',$i)]) ? 0 : $arr[date('Y-m-d',$i)]; $day[] = date('Y-m-d',$i); } $result = array('data'=>$brr,'time'=>$day); $this->assign('result',json_encode($result)); upload_ylp_log('B50会员统计查询/搜索'); return $this->fetch('',getAdmStoId()); } //财务统计 public function finance(){ $sql = "SELECT sum(b.goods_num*b.member_goods_price) as goods_amount,sum(a.shipping_price) as shipping_amount,sum(b.goods_num*b.cost_price) as cost_price,"; $sql .= "sum(a.coupon_price) as coupon_amount,FROM_UNIXTIME(a.add_time,'%Y-%m-%d') as gap from __PREFIX__order a left join __PREFIX__order_goods b on a.order_id=b.order_id and a.store_id=b.store_id "; $sql .= " where a.store_id=".getAdmStoId()." and a.add_time>$this->begin and a.add_time<$this->end AND a.pay_status=1 and a.shipping_status=1 and b.is_send=1 group by gap order by a.add_time"; $res = DB::cache("finance_".getAdmStoId())->query($sql);//物流费,交易额,成本价 foreach ($res as $val){ $arr[$val['gap']] = $val['goods_amount']; $brr[$val['gap']] = $val['cost_price']; $crr[$val['gap']] = $val['shipping_amount']; $drr[$val['gap']] = $val['coupon_amount']; } for($i=$this->begin;$i<=$this->end;$i=$i+24*3600){ $date = $day[] = date('Y-m-d',$i); $tmp_goods_amount = empty($arr[$date]) ? 0 : $arr[$date]; $tmp_cost_amount = empty($brr[$date]) ? 0 : $brr[$date]; $tmp_shipping_amount = empty($crr[$date]) ? 0 : $crr[$date]; $tmp_coupon_amount = empty($drr[$date]) ? 0 : $drr[$date]; $goods_arr[] = $tmp_goods_amount; $cost_arr[] = $tmp_cost_amount; $shipping_arr[] = $tmp_shipping_amount; $coupon_arr[] = $tmp_coupon_amount; $list[] = array('day'=>$date,'goods_amount'=>$tmp_goods_amount,'cost_amount'=>$tmp_cost_amount, 'shipping_amount'=>$tmp_shipping_amount,'coupon_amount'=>$tmp_coupon_amount,'end'=>date('Y-m-d',$i+24*60*60)); } $this->assign('list',$list); $result = array('goods_arr'=>$goods_arr,'cost_arr'=>$cost_arr,'shipping_arr'=>$shipping_arr,'coupon_arr'=>$coupon_arr,'time'=>$day); $this->assign('result',json_encode($result)); upload_ylp_log('B51运营概况查询/搜索'); return $this->fetch('',getAdmStoId()); } //分销销售统计 public function distrsaleList() { $lastweek = date('Y-m-d',strtotime("-1 month"));//30天前 $begin = I('begin',$lastweek).' 00:00:00'; $this->assign('start_time',$begin); $stoid=getAdmStoId(); $isajax = I('isajax'); $timegap = I('timegap1'); if ($timegap) { $gap = explode(' - ', $timegap); $begin = $gap[0]; $end = $gap[1]; } else { $lastweek = date('Y-m-d H:m:s', strtotime("-1 week")); $begin = I('begin', $lastweek); $end = I('end', date('Y-m-d H:m:s')); $timegap=$begin."-".$end; } $this->assign('timegap',$timegap); if ($isajax) { $isall=I('all',0); $timegap = I('timegap2'); if ($timegap) { $gap = explode(' - ', $timegap); $begin = $gap[0]; $end = $gap[1]; } $begin=strtotime($begin); $end=strtotime($end); $keyword = I('keyword'); $order_sn = I('order_sn'); $pickup_id = I('pickup_id'); $status = I('status'); $where="a.store_id=" . $stoid; $user_id=0; if($status!=""){ $where.=" and a.status=".$status; if ($timegap){ switch ($status){ case "0": case "1": $where.= " and a.create_time>=".$begin." and a.create_time<=".$end; break; case "2": $where.= " and a.confirm>=".$begin." and a.confirm<=".$end; break; case "3": $where.= " and a.confirm_time>=".$begin." and a.confirm_time<=".$end; break; } } } if ($timegap && $status=="") $where.= " and a.create_time>=".$begin." and a.create_time<=".$end; if($keyword){ $where_usr= " store_id=".$stoid." and (nickname like '%" . $keyword . "%' or mobile like '%" . $keyword . "%')"; $f_user=M("users")->where($where_usr)->field('user_id')->find(); if($f_user) { $user_id = $f_user['user_id']; $where .= " and a.user_id=" . $user_id; } } if($order_sn) $where .= " and a.order_sn='" . $order_sn . "' "; if($pickup_id) $where .= " and a.pickup_id='" . $pickup_id . "' "; $where1=$where; $all=M('rebate_log')->alias('a') ->join('users b','a.user_id=b.user_id and a.store_id=b.store_id') ->where($where)->field('id')->select(); $count=count($all); $Page = new AjaxPage($count, 10); $show = $Page->show(); $list=M('rebate_log')->alias('a') ->join('users b','a.user_id=b.user_id and a.store_id=b.store_id','left') ->where($where)->order('a.id desc')->field('a.*, b.mobile,b.nickname as distriname') ->limit($Page->firstRow . ',' . $Page->listRows)->select(); //$is_setdistri_first=tpCache('distribut.is_setdistri_first',getAdmStoId()); //$rs2= M('users')->where('store_id',getAdmStoId())->field('is_distribut,user_id,first_leader,second_leader,third_leader')->select(); foreach ($list as $k=>$v){ $where='order_id='.$v['order_id']; $where .= " and store_id=" . $stoid; $cout=M("order_goods")->where($where)->sum('goods_num'); $list[$k]['gsum']=$cout; $reb=""; //$tuser = null; //foreach ($rs2 as $k9 => $v9) { //if ($v9['user_id'] == $v['buy_user_id']) //$tuser = $v9; //} if($v['user_type']==1) { $reb="普通会员"; if($v['level']==1 ) $reb = "一级会员"; if($v['level']==2) $reb = "二级会员"; if($v['level']==3) $reb = "三级会员"; }else{ $reb="普通会员"; } $list[$k]['lev']=$reb; } $this->assign('list', $list); $this->assign('show', $show); //如果是整个查询 if($isall==1){ $fiels="count(distinct(a.order_sn))ordn,count(distinct(a.nickname))user_n"; $all2=M('rebate_log')->alias('a') ->field($fiels) ->where($where1) ->select(); $count2=$all2[0]['ordn']; $fusrnum=$all2[0]['user_n']; //$list2=M('rebate_log')->alias('a') // ->join('users b','a.user_id=b.user_id and a.store_id=b.store_id','left') // ->where($where1)->field('a.nickname')->group('a.nickname')->select(); $sql="select sum(f.gprice) as sumprice from (select a.order_sn,max(a.goods_price) gprice from __PREFIX__rebate_log a where ".$where1." group by a.order_sn) f"; $rb=Db::query($sql); $fsalesum=$rb[0]['sumprice']; $fmoney=M('rebate_log')->alias('a') //->join('users b','a.user_id=b.user_id and a.store_id=b.store_id') //->join('order c','a.order_sn=c.order_sn and a.store_id=c.store_id') ->where($where1)->sum('a.money'); $sql2="select sum(b.goods_num) num0 from (select a.order_sn from __PREFIX__rebate_log a where ".$where1." group by a.order_sn) a inner join __PREFIX__order_goods b on a.order_sn=b.order_sn where b.store_id=".getAdmStoId(); $outnum=0; $rs4=Db::query($sql2); $outnum=$rs4[0]['num0']; if(empty($fsalesum)) $fsalesum=0; if(empty($fmoney)) $fmoney=0; $barr['code']=1; $barr['ordcount']=$count2; $barr['fusrnum']=$fusrnum; $barr['outnum']=$outnum; $barr['fsalesum']=$fsalesum; $barr['fmoney']=$fmoney; $barr['data']=$this->fetch('ajaxdistrsalelist',$stoid); upload_ylp_log('B49分销统计查询/搜索'); return json($barr); }else{ return $this->fetch('ajaxdistrsalelist',$stoid); } }else{ $begin=strtotime($begin); $end=strtotime($end); $where1 = " create_time>=".$begin." and create_time<= ".$end; //$nopay=M('rebate_log')->where("status",0)->where('store_id',$stoid)->where($where1)->group('order_sn')->select(); //$pay=M('rebate_log')->where("status",1)->where('store_id',$stoid)->where($where1)->group('order_sn')->select(); $nopay=0; $pay=0; $str="select status,count(DISTINCT order_sn) as sumnum from wxd_rebate_log where store_id=".$stoid." and status in (0,1) and ".$where1." group by status order by status asc"; $db=Db::query($str); foreach ($db as $k=>$v){ if($v['status']==0) $nopay=$v['sumnum']; if($v['status']==1) $pay=$v['sumnum']; } //$salesum=M('rebate_log')->where("store_id =".$stoid." and status>0 and status<4 and ".$where1)->sum('goods_price'); $sql="select sum(a.gprice) as sumprice from (select order_sn,max(goods_price) gprice from __PREFIX__rebate_log where store_id =".$stoid." and status=1 and ".$where1." group by order_sn) a"; $rb=Db::query($sql); $salesum=$rb[0]['sumprice']; $where2=" confirm_time>=".$begin." and confirm_time<= ".$end; $rebatesum =M('rebate_log')->where("store_id =".$stoid." and status=3 and ".$where2)->sum('money'); $where3=" be_distribut_time >=".$begin." and be_distribut_time <= ".$end; $list2=M('users')->where("store_id =".$stoid.' and '.$where3)->field('user_id')->select(); $usrnum=count($list2); //$where4=" confirm>=".$begin." and confirm<= ".$end; //$outnum=M('rebate_log')->alias('a')->join('order_goods b','a.order_id=b.order_id')->where('a.store_id',$stoid)->where('a.status>1 and a.status<4')->where($where4)->sum('b.goods_num'); $where4=" confirm>=".$begin." and confirm<= ".$end; $sql1="select order_sn from __PREFIX__rebate_log where store_id =".$stoid." and status>0 and status<4 and ".$where4." group by order_sn"; $rb1=Db::query($sql1); $temp=DB::query("select order_sn,sum(goods_num) num0 from __PREFIX__order_goods where store_id=".getAdmStoId()." group by order_sn"); $outnum=0; foreach ($rb1 as $k=>$v){ foreach ($temp as $k00=>$v00){ if($v['order_sn']==$v00['order_sn']) $outnum+=$v00['num0']; } } $salesum=$salesum?$salesum:0; $rebatesum=$rebatesum?$rebatesum:0; $outnum=$outnum?$outnum:0; $this->assign('nopay', $nopay); $this->assign('pay', $pay); $this->assign('salesum', $salesum); $this->assign('rebatesum', $rebatesum); $this->assign('usrnum', $usrnum); $this->assign('outnum', $outnum); } upload_ylp_log('B49分销统计查询/搜索'); return $this->fetch('',$stoid); } //分销销售统计导出 public function distrsalelist_excel() { $stoid=getAdmStoId(); $isajax = I('isajax'); $timegap = I('timegap1'); if ($timegap) { $gap = explode(' - ', $timegap); $begin = $gap[0]; $end = $gap[1]; } else { $lastweek = date('Y-m-d H:m:s', strtotime("-1 week")); $begin = I('begin', $lastweek); $end = I('end', date('Y-m-d H:m:s')); $timegap=$begin."-".$end; } $this->assign('timegap',$timegap); if ($isajax) { $isall=I('all',0); $timegap = I('timegap2'); if ($timegap) { $gap = explode(' - ', $timegap); $begin = $gap[0]; $end = $gap[1]; } $begin=strtotime($begin); $end=strtotime($end); $keyword = I('keyword'); $order_sn = I('order_sn'); $status = I('status'); $where="a.store_id=" . $stoid; $user_id=0; if($status!=""){ $where.=" and a.status=".$status; if ($timegap){ switch ($status){ case "0": case "1": $where.= " and a.create_time>=".$begin." and a.create_time<=".$end; break; case "2": $where.= " and a.confirm>=".$begin." and a.confirm<=".$end; break; case "3": $where.= " and a.confirm_time>=".$begin." and a.confirm_time<=".$end; break; } } } if ($timegap && $status=="") $where.= " and a.create_time>=".$begin." and a.create_time<=".$end; if($keyword){ $where_usr= " store_id=".$stoid." and (nickname like '%" . $keyword . "%' or mobile like '%" . $keyword . "%')"; $f_user=M("users")->where($where_usr)->field('user_id')->find(); if($f_user) { $user_id = $f_user['user_id']; $where .= " and a.user_id=" . $user_id; } } if($order_sn) $where .= " and a.order_sn='" . $order_sn . "' "; $where1=$where; $list=M('rebate_log')->alias('a')->join('users b','a.user_id=b.user_id and a.store_id=b.store_id','left')->where($where)->order('a.id desc')->field('a.*, b.mobile,b.nickname as distriname') ->select(); //$is_setdistri_first=tpCache('distribut.is_setdistri_first',getAdmStoId()); $rs2= M('users')->where('store_id',getAdmStoId())->field('is_distribut,user_id,first_leader,second_leader,third_leader')->select(); foreach ($list as $k=>$v){ $where='order_id='.$v['order_id']; $where .= " and store_id=" . $stoid; $cout=M("order_goods")->where($where)->sum('goods_num'); $list[$k]['gsum']=$cout; $reb=""; $tuser = null; foreach ($rs2 as $k9 => $v9) { if ($v9['user_id'] == $v['buy_user_id']) $tuser = $v9; } if($tuser['is_distribut']==1) { $reb="普通会员"; if ($tuser['user_id'] == $v['user_id'] ) { if($v['level']==1 ) $reb = "一级会员"; } if ($tuser['first_leader'] == $v['user_id']) { if($v['level']==2) $reb = "二级会员"; } if ($tuser['second_leader'] == $v['user_id']) { if($v['level']==3) $reb = "三级会员"; } }else{ $reb="普通会员"; } $list[$k]['lev']=$reb; } $strTable =''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if(is_array($list)){ foreach($list as $k=>$val){ $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .='
分销商名称分销方式付款日期订单号会员昵称会员等级数量金额分成金额状态
'.$val['distriname'].''.($val['dis_moshi']==1?'单品分成模式':'比例分成模式').' '.date('Y-m-d H:i:s',$val['create_time']).''.$val['order_sn'].' '.$val['nickname'].''.$val['lev'].''.$val['gsum'].''.$val['goods_price'].''.$val['money'].''.($this->getstate_name($val['status'])).'
'; echo $strTable; unset($list); downloadExcel($strTable,'分销统计'); exit(); } } //订单状态 public function getstate_name($status) { switch ($status) { case 0: return "未付款"; break; case 1: return "未付款"; break; case 2: return "未付款"; break; case 3: return "未付款"; break; } } //点击搜索按钮进行统计 public function distrCount(){ $stoid=getAdmStoId(); $timegap = I('timegap1'); if($timegap){ $gap = explode(' - ', $timegap); $begin = $gap[0]; $end = $gap[1]; mlog($begin.':'.$end,'report/'.$stoid); } else{ $lastweek = date('Y-m-d H:m:s',strtotime("-1 week")); $begin = I('begin',$lastweek); $end = I('end',date('Y-m-d H:m:s')); } $begin=strtotime($begin); $end=strtotime($end); $where1 = " create_time>=".$begin." and create_time<= ".$end; $nopay=0; $pay=0; $str="select status,count(DISTINCT order_sn) as sumnum from wxd_rebate_log where store_id=".$stoid." and status in (0,1) and ".$where1." group by status order by status asc"; $db=Db::query($str); foreach ($db as $k=>$v){ if($v['status']==0) $nopay=$v['sumnum']; if($v['status']==1) $pay=$v['sumnum']; } $sql="select sum(a.gprice) as sumprice from (select order_sn,max(goods_price) gprice from __PREFIX__rebate_log where store_id =".$stoid." and status=1 and ".$where1." group by order_sn) a"; $rb=Db::query($sql); $salesum=$rb[0]['sumprice']; //$salesum=M('rebate_log')->where("store_id =".$stoid." and status>0 and status<4 and ".$where1)->sum('goods_price'); $where2=" confirm_time>=".$begin." and confirm_time<= ".$end; $rebatesum =M('rebate_log')->where("store_id =".$stoid." and status=3 and ".$where2)->sum('money'); $where3=" be_distribut_time >=".$begin." and be_distribut_time <= ".$end; $list2=M('users')->where("store_id =".$stoid.' and '.$where3)->where('is_distribut',1)->field('user_id')->select(); $usrnum=count($list2); //$where4=" confirm>=".$begin." and confirm<= ".$end; //$outnum=M('rebate_log')->alias('a')->join('order_goods b','a.order_id=b.order_id')->where('a.store_id',$stoid)->where('a.status>1 and a.status<4')->where($where4)->sum('b.goods_num'); $where4=" confirm>=".$begin." and confirm<= ".$end; $sql1="select order_sn from __PREFIX__rebate_log where store_id =".$stoid." and status>0 and status<4 and ".$where4." group by order_sn"; $rb1=Db::query($sql1); $temp=DB::query("select order_sn,sum(goods_num) num0 from __PREFIX__order_goods where store_id=".getAdmStoId()." group by order_sn"); $outnum=0; foreach ($rb1 as $k=>$v){ foreach ($temp as $k00=>$v00){ if($v['order_sn']==$v00['order_sn']) $outnum+=$v00['num0']; } } $salesum=$salesum?$salesum:0; $rebatesum=$rebatesum?$rebatesum:0; $outnum=$outnum?$outnum:0; upload_ylp_log('B49分销统计查询/搜索'); return json(['code'=>1,'nopay'=>$nopay,'pay'=>$pay,'salesum'=>$salesum, 'rebatesum'=>$rebatesum,'usrnum'=>$usrnum,'outnum'=>$outnum]); } //按门店汇总 public function ajaxdistrcount() { $where=" 1=1 "; $getstoid=getAdmStoId(); $where.=" and store_id=".$getstoid; $timegap = I('timegap2'); if ($timegap) { $gap = explode(' - ', $timegap); $begin = $gap[0]; $end = $gap[1]; } $begin = strtotime($begin); $end = strtotime($end); $pickup_id = I('pickup_id'); $status = I('status'); $user_id = 0; if ($status != "") { $where .= " and status=" . $status; if ($timegap) { switch ($status) { case "0": case "1": $where .= " and create_time>=" . $begin . " and create_time<=" . $end; break; case "2": $where .= " and confirm>=" . $begin . " and confirm<=" . $end; break; case "3": $where .= " and confirm_time>=" . $begin . " and confirm_time<=" . $end; break; } } } else { $where .= " and create_time>=" . $begin . " and create_time<=" . $end; } if ($pickup_id) $where .= " and pickup_id='" . $pickup_id . "' "; $sql="select IFNULL(b.pickup_no,'未选择') as pickup_no,IFNULL(b.pickup_name,'未选择') as pickup_name,ifnull(a.sum_money,0) as sum_money ,ifnull(a.sum_goods_price,0) as sum_goods_price,a.num,a.buy_usernum from ("; $sql.="select pickup_id,count(1) as num,sum(goods_price) as sum_goods_price,sum(money) as sum_money,count(DISTINCT buy_user_id) as buy_usernum from wxd_rebate_log where ".$where." group by pickup_id) a left join wxd_pick_up b on a.pickup_id=b.pickup_id"; $list=DB::query($sql); session('excel_distrcount'.getAdmStoId(),$list); // $Page = new AjaxPage($count, $pagenum); // $show = $Page->show(); // $list = M($sql)->alias('a') // ->join('wxd_pick_up b', 'a.pickup_id=b.pickup_id ') // ->where($where)->field('IFNULL(b.pickup_no,\'未选择\') as pickup_no,IFNULL(b.pickup_name,\'未选择\') as pickup_name,a.sum_money,a.num') // ->limit($Page->firstRow . ',' . $Page->listRows)->select(); $this->assign('list', $list); return $this->fetch('',$getstoid); } //分销销售门店统计导出 public function distrsalecount_excel() { $list=session('excel_distrcount'.getAdmStoId()); $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($list)) { foreach ($list as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
门店编号门店名称订单总数支付会员数销售总金额分成金额
' . $val['pickup_no'] . '' . $val['pickup_name'] . '' . $val['num'] . '' . $val['buy_usernum'] . '' . $val['sum_goods_price'] . '' . $val['sum_money'] . '
'; echo $strTable; unset($list); downloadExcel($strTable, '分销门店汇总'); exit(); } public function showgoodslist(){ $ordid=I("ordid/d"); $usrid=I("uid/d"); $stoid=getAdmStoId(); $goodlist=M('order_goods')->alias('a')->join('goods b','a.goods_id=b.goods_id','left')->where('a.order_id='.$ordid)->field('b.goods_name,a.goods_id,a.goods_price,a.goods_num,b.goods_sn,b.commission,b.prom_type')->select(); $comgoods=[]; $rs1=M('rebate_log')->where('order_id',$ordid)->where('user_id',$usrid)->where('store_id',getAdmStoId())->find(); $pattern=$rs1['dis_moshi']; $this->assign('pattern', $pattern); if(!empty($rs1['commission_json'])){ $comg=json_decode($rs1['commission_json'],true); foreach ($comg as $k=>$v){ $comgoods[$v['goods_id']]=$v['commission']; $yigoods[$v['goods_id']]=$v['fir']; $ergoods[$v['goods_id']]=$v['sec']; $sangoods[$v['goods_id']]=$v['thi']; } } foreach($goodlist as $kk=>$vv){ $promt = $vv['prom_type']; $goods_id = $vv['goods_id']; if($pattern==0) { if ($comgoods) { $goodlist[$kk]['commission'] = $comgoods[$goods_id]; }else { switch ($promt) { case "1": $now0 = time(); $where0 = [ 'end_time' => ['>=', $now0], 'start_time' => ['<=', $now0], 'goods_id' => $goods_id, 'is_end' => 0 ]; $ry = M('flash_sale')->where($where0)->find(); if ($ry) { $goodlist[$kk]['commission'] = $ry['commission']; } break; case "2": $now0 = time(); $where0 = [ 'end_time' => ['>=', $now0], 'start_time' => ['<=', $now0], 'goods_id' => $goods_id, 'is_end' => 0 ]; $ry = M('group_buy')->where($where0)->find(); if ($ry) { $goodlist[$kk]['commission'] = $ry['commission']; } break; case "4": $now0 = time(); $where0 = [ 'end_time' => ['>=', $now0], 'start_time' => ['<=', $now0], 'goods_id' => $goods_id, 'is_end' => 0, 'is_show' => 1 ]; $ry = M('integral_buy')->where($where0)->find(); if ($ry) { $goodlist[$kk]['commission'] = $ry['commission']; } break; } } }else if($pattern==1){ if ($rs1['second_rate']<=0 && $rs1['third_rate']<=0) { switch ($rs1['level']) { case 1: $goodlist[$kk]['dis_shi'] =$yigoods[$goods_id]+$ergoods[$goods_id]+$sangoods[$goods_id]; break; case 2: $goodlist[$kk]['dis_shi'] =0; break; case 3: $goodlist[$kk]['dis_shi'] =0; break; } } if ($rs1['second_rate']>0 &&$rs1['third_rate']<=0) { switch ($rs1['level']) { case 1: $goodlist[$kk]['dis_shi'] =$yigoods[$goods_id]; break; case 2: $goodlist[$kk]['dis_shi']=$ergoods[$goods_id]+$sangoods[$goods_id]; break; case 3: $goodlist[$kk]['dis_shi'] = 0; break; } } if ($rs1['second_rate']>0 && $rs1['third_rate']>0) { switch ($rs1['level']) { case 1: $goodlist[$kk]['dis_shi'] =$yigoods[$goods_id]; break; case 2: $goodlist[$kk]['dis_shi'] =$ergoods[$goods_id]; break; case 3: $goodlist[$kk]['dis_shi']=$sangoods[$goods_id]; break; } } } } $reb=0; switch ($rs1['level']){ case 1: $reb = $rs1['first_rate'];break; case 2: $reb = $rs1['second_rate'];break; case 3: $reb = $rs1['third_rate'];break; } $this->assign("goodlist",$goodlist); $this->assign("reb",$reb); return $this->fetch('',$stoid); } public function evaluation(){ $p = I('p',1); $start = ($p-1)*20; $wname=I('wname'); $sname=I('sname'); $where=" WHERE wxd_comment.store_id='".getAdmStoId()."' "; if(!empty($wname)) { $where.=" and wxd_goods.goods_name like '%".$wname."%'"; } if(!empty($sname)) { $where.=" and wxd_pick_up.pickup_name like '%".$sname."%' "; } //var_dump($where);die; $sql_w="SELECT wxd_goods.goods_name,wxd_pick_up.pickup_name,sum(CASE WHEN goods_rank<3 then 1 else 0 end) num1,sum(CASE WHEN goods_rank=3 then 1 else 0 end) num2,sum(CASE WHEN goods_rank>3 then 1 else 0 end) num3 from wxd_comment left JOIN wxd_goods on wxd_comment.goods_id=wxd_goods.goods_id LEFT JOIN wxd_order ON wxd_comment.order_id=wxd_order.order_id LEFT JOIN wxd_pick_up on wxd_order.pickup_id=wxd_pick_up.pickup_id ".$where." and wxd_comment.add_time>$this->begin and wxd_comment.add_time<$this->end GROUP BY wxd_comment.goods_id limit $start,20";// $sql_n="select count(1)tnum from(SELECT wxd_goods.goods_name,wxd_pick_up.pickup_name,sum(CASE WHEN goods_rank<3 then 1 else 0 end) num1,sum(CASE WHEN goods_rank=3 then 1 else 0 end) num2,sum(CASE WHEN goods_rank>3 then 1 else 0 end) num3 from wxd_comment left JOIN wxd_goods on wxd_comment.goods_id=wxd_goods.goods_id LEFT JOIN wxd_order ON wxd_comment.order_id=wxd_order.order_id LEFT JOIN wxd_pick_up on wxd_order.pickup_id=wxd_pick_up.pickup_id ".$where." and wxd_comment.add_time>$this->begin and wxd_comment.add_time<$this->end GROUP BY wxd_comment.goods_id)a"; $list_w=DB::query($sql_w); $sql="SELECT * from wxd_vcomment_day where store_id='".getAdmStoId()."' order by type ASC"; $list=DB::query($sql); $total = DB::query($sql_n); $count = $total[0]['tnum']; $Page = new Page($count,20); $show = $Page->show(); $this->assign('page',$show); for($i=0;$iassign('wname',$wname); $this->assign('sname',$sname); $this->assign('info',$info); $this->assign('list',$list_w); $this->assign('count',$count); return $this->fetch('',getAdmStoId()); } public function vipfenxi() { $p = I('p', 1); $start = ($p - 1) * 20; $cat_id = I('cat_id', 0);//0:会员统计 1二维码统计 2介绍人统计 $where = "where b.add_time>$this->begin and b.add_time<$this->end "; switch ($cat_id) { case 0: $sql = "SELECT IFNULL(b.new_vipnum,0) as 'new_vip','' as 'ordernum',IFNULL(b.sum_vipnum,0) as 'vipnum',date(FROM_UNIXTIME(a.real_date))as day,sum(case when a.issubscribe=1 then 1 else 0 end) gzsum,sum(case when a.issubscribe=0 then 1 else 0 end) cgzsum,sum(case when a.issubscribe=1 then 1 else -1 end) jgzsum, ROUND(sum(case when a.issubscribe=0 then 1 else 0 end)/(sum(case when a.issubscribe=0 then 1 else 0 end)+sum(case when a.issubscribe=1 then 1 else 0 end))*100,1) cgzper from (SELECT (case when issubscribe=0 then unsubscribe_date ELSE subscribe_date END)as real_date,issubscribe from wxd_wx_openlist where store_id=" . getAdmStoId() . ")a left join (select * from wxd_usercount where store_id=" . getAdmStoId() . ") b on store_id=b.store_id and date(FROM_UNIXTIME(a.real_date))=b.daynum where a.real_date>$this->begin and a.real_date<$this->end GROUP BY date(FROM_UNIXTIME(a.real_date))"; $sql2 = "select count(1)tnum from(" . $sql . ") aa "; $sql .= " order by day desc limit $start,20"; break; case 1: $order1 = I('order1/s', "1"); $order2 = I('order2/s', "desc"); switch ($order1) { case "1": $getorder1 = "a.staffno"; break; case "2": $getorder1 = "a.num"; break; case "3": $getorder1 = "regnum"; break; default: $getorder1 = "a.num"; break; } $this->assign('order1', $order1); $this->assign('order2', $order2); $where = " where issubscribe=1 and store_id=" . getAdmStoId() . " and subscribe_date>$this->begin and subscribe_date<$this->end "; $where1 = " where a.store_id=" . getAdmStoId() . " and ifnull(a.mobile,'')<>'' and a.reg_time>$this->begin and a.reg_time<$this->end "; $sql = " select a.*,c.regnum from (SELECT staffno ,count(1) num,''as 'name',''as 'storename' from (SELECT IFNULL(staffno,'')as staffno,subscribe_date from wxd_wx_openlist " . $where . ")a GROUP BY staffno ) a"; $sql .= " left join (select IFNULL(staffno,'')as staffno,count(1) as regnum from wxd_users a left join wxd_wx_openlist b on a.openid=b.wxopenid " . $where1 . " group by IFNULL(b.staffno,'')) c on a.staffno=c.staffno "; $sql .= " order by $getorder1 $order2 limit $start,20"; $sql2 = "select count(1)tnum from(SELECT count(1)tnum from wxd_wx_openlist " . $where . " GROUP BY staffno) aa "; //echo $sql;die; break; case 2: $order1 = I('order1/s', "1"); $order2 = I('order2/s', "desc"); switch ($order1) { case "1": $getorder1 = "b.mobile"; break; case "2": $getorder1 = "a.num"; break; case "3": $getorder1 = "regnum"; break; default: $getorder1 = "b.mobile"; break; } $this->assign('order1', $order1); $this->assign('order2', $order2); $where = "where ifnull(erpvipid,'') <>'' and ifnull(mobile,'')<>'' and reg_time>$this->begin and reg_time<$this->end "; $where .= " and store_id=" . getAdmStoId(); $keywords = I('keywords'); if ($keywords) { $where1 = " where (b.mobile like '%" . $keywords . "%' or b.vipname like '%" . $keywords . "%')"; } $sql = "SELECT a.*,b.mobile,b.vipname from (SELECT fromuser_id,COUNT(1) as num from wxd_users " . $where . " GROUP BY fromuser_id)a LEFT JOIN wxd_users b ON a.fromuser_id=b.user_id"; $sql .= $where1; $sql .= " order by $getorder1 $order2 limit $start,20"; $sql2 = "SELECT count(1)tnum from (SELECT fromuser_id,COUNT(1) as num from wxd_users " . $where . " GROUP BY fromuser_id)a LEFT JOIN wxd_users b ON a.fromuser_id=b.user_id"; $sql2 .= $where1; $this->assign('keywords', $keywords); break; } $res = DB::query($sql); $amountnum = 0;//统计总数 if ($cat_id == 0)//会员统计 { $info = ''; $res; $gznum = DB::query("SELECT issubscribe,count(1) num from (SELECT (case when issubscribe=0 then unsubscribe_date ELSE subscribe_date END)as real_date,issubscribe from wxd_wx_openlist where store_id=" . getAdmStoId() . " )a where a.real_date>$this->begin and a.real_date<$this->end GROUP BY a.issubscribe"); //统计总数 for ($k = 0; $k < count($gznum); $k++) { if ($gznum[$k]['issubscribe'] == 0) { $info['cnum'] = $gznum[$k]['num']; } if ($gznum[$k]['issubscribe'] == 1) { $info['gnum'] = $gznum[$k]['num']; } } $znum = DB::query("SELECT count(1)num from wxd_users where store_id=" . getAdmStoId() . " and erpvipid<>'' and reg_time>$this->begin and reg_time<$this->end"); $info['newnum'] = $znum[0]['num']; $where1 = 'store_id = ' . getAdmStoId(); $newsum = M('usercount')->where($where1)->order('daynum desc')->select(); // for ($i = 0; $i < count($res); $i++) { // for ($j = 0; $j < count($newsum); $j++) { // if ($res[$i]['day'] == $newsum[$j]['daynum']) { // $res[$i]['all_vip'] = $newsum[$j]['sum_vipnum']; // $res[$i]['new_vip'] = $newsum[$j]['new_vipnum']; // } else { // $res[$i]['all_vip'] = 0; // $res[$i]['new_vip'] = 0; // } // } // } $this->assign('today_all_vip', $newsum[0]['osum_vipnum']); $this->assign('today_new_vip', $newsum[0]['new_vipnum']); $this->assign('today_gzsum', $res[0]['gzsum']); } else if ($cat_id == 1) //二维码来源 { //$wxuser = M('wx_store')->where('store_id='.getAdmStoId())->find(); $token = tpCache('shop_info.api_token', getAdmStoId()); $staffnolist = json_decode(getApiData('wxd.base.staffinfo.list.get', $token, null, '', null, 1000), true);//$wxuser['token'] foreach ($res as $k => $v) { $amountnum += $v['num']; if ($staffnolist['code'] == 1 && count($staffnolist['data']) > 0) { for ($i = 0; $i < count($staffnolist['data']); $i++) { if ($v['staffno'] === $staffnolist['data'][$i]['StaffNo']) { $res[$k]['name'] = $staffnolist['data'][$i]['StaffName']; $res[$k]['storename'] = $staffnolist['data'][$i]['StorageName']; } } } } } else ///介绍来源 { foreach ($res as $k => $v) { $amountnum += $v['num']; } } $zs = M('users')->where("1=1 and ifnull(erpvipid,'')<>'' and ifnull(mobile,'')<>'' " . getStoWhere())->count(); $info['znum'] = $zs; session('excelvipfenxi_' . getAdmStoId(), $res); $this->assign('list', $res); //var_dump($res); $this->assign('cat_id', $cat_id); $total = DB::query($sql2); $count = $total[0]['tnum']; $Page = new Page($count, 20); $show = $Page->show(); $this->assign('page', $show); $this->assign('count', $count); $this->assign('amountnum', $amountnum); $this->assign('info', $info); return $this->fetch('', getAdmStoId()); } //会员分析单页导出 public function exportreportvipfenxi_page() { $cat_id = I('cat_id'); $cat_name = "关注统计"; $orderList = session('excelvipfenxi_' . getAdmStoId()); $page = I('page/d', 1); if (empty($orderList)) { return json(array('code' => -1, 'msg' => '无数据')); } switch ($cat_id) { case 0: $cat_name = "关注统计"; $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($orderList)) { foreach ($orderList as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
日期关注数取消关注数净关注取消率注册数量
' . $val['day'] . '' . $val['gzsum'] . '' . $val['cgzsum'] . ' ' . $val['jgzsum'] . ' ' . $val['cgzper'] . '% ' . $val['new_vip'] . '
'; break; case 1: $token = tpCache('shop_info.api_token', getAdmStoId()); $staffnolist = json_decode(getApiData('wxd.base.staffinfo.list.get', $token, null, '', null, 1000), true);//$wxuser['token'] $cat_name = "二维码统计"; $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($orderList)) { foreach ($orderList as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
二维码来源员工姓名所属门店扫码数量注册数量
' . $val['staffno'] . '' . $val['name'] . '' . $val['storename'] . ' ' . $val['num'] . ' ' . $val['regnum'] . '
'; break; case 2: $cat_name = "介绍人统计"; $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($orderList)) { foreach ($orderList as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
介绍人手机姓名数量
' . $val['mobile'] . '' . $val['vipname'] . ' ' . $val['num'] . '
'; break; default: break; } echo $strTable; unset($orderList); downloadExcel($strTable, '会员分析-' . $cat_name . $page); exit(); } //会员分析导出 public function exportreport_vipfenxi() { $p = I('p', 1); $cat_id = I('cat_id', 0);//0:会员统计 1二维码统计 2介绍人统计 $where = "where b.add_time>$this->begin and b.add_time<$this->end "; switch ($cat_id) { case 0: $sql = "SELECT '' as 'newvipnum','' as 'ordernum','' as 'vipnum',date(FROM_UNIXTIME(a.real_date))as day,sum(case when a.issubscribe=1 then 1 else 0 end) gzsum,sum(case when a.issubscribe=0 then 1 else 0 end) cgzsum,sum(case when a.issubscribe=1 then 1 else -1 end) jgzsum, ROUND(sum(case when a.issubscribe=0 then 1 else 0 end)/(sum(case when a.issubscribe=0 then 1 else 0 end)+sum(case when a.issubscribe=1 then 1 else 0 end))*100,1) cgzper from (SELECT (case when issubscribe=0 then unsubscribe_date ELSE subscribe_date END)as real_date,issubscribe from wxd_wx_openlist where store_id=" . getAdmStoId() . ")a where a.real_date>$this->begin and a.real_date<$this->end GROUP BY date(FROM_UNIXTIME(a.real_date))"; $sql .= " order by day desc"; break; case 1: $order1 = I('order1/s', "1"); $order2 = I('order2/s', "desc"); switch ($order1) { case "1": $getorder1 = "a.staffno"; break; case "2": $getorder1 = "a.num"; break; case "3": $getorder1 = "regnum"; break; default: $getorder1 = "a.num"; break; } $this->assign('order1', $order1); $this->assign('order2', $order2); $where = " where issubscribe=1 and store_id=" . getAdmStoId() . " and subscribe_date>$this->begin and subscribe_date<$this->end "; $where1 = " where a.store_id=" . getAdmStoId() . " and ifnull(a.mobile,'')<>'' and a.reg_time>$this->begin and a.reg_time<$this->end "; $sql = " select * from (SELECT staffno,count(1)num,''as 'name',''as 'storename' from (SELECT IFNULL(staffno,'')as staffno,subscribe_date from wxd_wx_openlist " . $where . ")a GROUP BY staffno ) a"; $sql .= " left join (select IFNULL(staffno,'')as staffno,count(1) as regnum from wxd_users a left join wxd_wx_openlist b on a.openid=b.wxopenid " . $where1 . " group by IFNULL(b.staffno,'')) c on a.staffno=c.staffno "; $sql .= " order by $getorder1 $order2 "; break; case 2: $order1 = I('order1/s', "1"); $order2 = I('order2/s', "desc"); switch ($order1) { case "1": $getorder1 = "b.mobile"; break; case "2": $getorder1 = "a.num"; break; default: $getorder1 = "b.mobile"; break; } $where = " where ifnull(erpvipid,'')<>'' and ifnull(mobile,'')<>'' and reg_time>$this->begin and reg_time<$this->end "; $where .= " and reg_time>$this->begin and reg_time<$this->end "; $where .= " and store_id=" . getAdmStoId(); $keywords = I('keywords'); if ($keywords) { $where1 = " where (b.mobile like '%" . $keywords . "%' or b.vipname like '%" . $keywords . "%')"; } $sql = "SELECT a.*,b.mobile,b.vipname from (SELECT fromuser_id,COUNT(1) as num from wxd_users " . $where . " GROUP BY fromuser_id)a LEFT JOIN wxd_users b ON a.fromuser_id=b.user_id"; $sql .= $where1; $sql .= " order by $getorder1 $order2 "; break; } $res = DB::query($sql); switch ($cat_id) { case 0: $znum = DB::query("SELECT count(1)num from wxd_users where store_id=" . getAdmStoId() . " and erpvipid<>'' and reg_time>$this->begin and reg_time<$this->end"); $info['newnum'] = $znum[0]['num']; $where1 = 'store_id = ' . getAdmStoId(); $newsum = M('usercount')->where($where1)->order('daynum desc')->select(); for ($i = 0; $i < count($res); $i++) { for ($j = 0; $j < count($newsum); $j++) { if ($res[$i]['day'] == $newsum[$j]['daynum']) { $res[$i]['all_vip'] = $newsum[$j]['sum_vipnum']; $res[$i]['new_vip'] = $newsum[$j]['new_vipnum']; } else { $res[$i]['all_vip'] = 0; $res[$i]['new_vip'] = 0; } } } $cat_name = "关注统计"; $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($res)) { foreach ($res as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
日期关注数取消关注数净关注取消率注册数量
' . $val['day'] . '' . $val['gzsum'] . '' . $val['cgzsum'] . ' ' . $val['jgzsum'] . ' ' . $val['cgzper'] . '% ' . $val['new_vip'] . '
'; break; case 1: $token = tpCache('shop_info.api_token', getAdmStoId()); $staffnolist = json_decode(getApiData('wxd.base.staffinfo.list.get', $token, null, '', null, 1000), true);//$wxuser['token'] foreach ($res as $k => $v) { if ($staffnolist['code'] == 1 && count($staffnolist['data']) > 0) { for ($i = 0; $i < count($staffnolist['data']); $i++) { if ($v['staffno'] == $staffnolist['data'][$i]['StaffNo']) { $res[$k]['name'] = $staffnolist['data'][$i]['StaffName']; $res[$k]['storename'] = $staffnolist['data'][$i]['StorageName']; } } } } $cat_name = "二维码统计"; $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($res)) { foreach ($res as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
二维码来源员工姓名所属门店扫码数量注册数量
' . $val['staffno'] . '' . $val['name'] . '' . $val['storename'] . ' ' . $val['num'] . ' ' . $val['regnum'] . '
'; break; case 2: $cat_name = "介绍人统计"; $strTable = ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; if (is_array($res)) { foreach ($res as $k => $val) { $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; $strTable .= ''; } } $strTable .= '
介绍人手机姓名数量
' . $val['mobile'] . '' . $val['vipname'] . ' ' . $val['num'] . '
'; break; default: break; } echo $strTable; unset($orderList); downloadExcel($strTable, '会员分析-' . $cat_name); exit(); } public function vipxqing() { $date = I('get.dates'); //var_dump($date);die; $sdate = strtotime($date . " 00:00:00"); $edate = strtotime($date . " 23:59:59"); $where1 = ''; $store_id = getAdmStoId(); $where1 = " a.store_id=" . $store_id; $where1 .= ' and ((a.subscribe_date>=' . $sdate . ' and a.subscribe_date<=' . $edate . ') or (a.unsubscribe_date>=' . $sdate . ' and a.unsubscribe_date<=' . $edate . '))'; $count = M('wx_openlist')->alias('a')->where($where1)->count(1); $Page = new Page($count, 10); $res = M('wx_openlist')->alias('a') ->where($where1) ->field('a.*') ->limit($Page->firstRow . ',' . $Page->listRows) ->select(); if ($res) { foreach ($res as $k => $v) { $usernick = M('users')->where(array('store_id' => $v['store_id'], 'openid' => $v['wxopenid']))->field('nickname,mobile,reg_time')->find(); $res[$k]['nickname'] = $usernick['nickname']; if ($usernick['mobile']) { $res[$k]['reg_time'] = $usernick['reg_time']; } } } $show = $Page->show();//分页显示输出 $this->assign('page', $show);//赋值分页输出 $this->assign('pager', $Page);//赋值分页输出 $this->assign('xqing', $res); return $this->fetch('', getAdmStoId()); } //介绍人详情 public function vipxqing3() { $fromuserid = I('get.fromuserid/d', 0); $where1 = ''; $store_id = getAdmStoId(); $where1 = " a.store_id=" . $store_id . " and a.fromuser_id=" . $fromuserid; $where1 .= " and a.reg_time>$this->begin and a.reg_time<$this->end "; $count = M('users')->alias('a')->where($where1)->count(1); $Page = new Page($count, 10); $res = M('users')->alias('a') ->where($where1) ->field('a.*') ->limit($Page->firstRow . ',' . $Page->listRows) ->order('a.reg_time desc') ->select(); if ($res) { $this->assign('xqing', $res); } $show = $Page->show();//分页显示输出 $this->assign('page', $show);//赋值分页输出 $this->assign('pager', $Page);//赋值分页输出 return $this->fetch('', getAdmStoId()); } //积分流水 public function show_liushui(){ $usr_id=I("uid"); $user=M("users")->where('user_id',$usr_id)->field('pay_points')->find(); $this->assign('user', $user);//赋值分页输出 $where="user_id=".$usr_id; $where.=" and pay_points<>0"; $where.=" and store_id=".getAdmStoId(); $count = M('account_log')->where($where)->count(); $Page = new Page($count, 10); $goodsList = M('account_log')->where($where)->order('log_id DESC')->limit($Page->firstRow . ',' . $Page->listRows)->select(); $show = $Page->show();//分页显示输出 $this->assign('page', $show);//赋值分页输出 $this->assign('goodsList', $goodsList); $this->assign('pager', $Page);//赋值分页输出 return $this->fetch("", getAdmStoId()); } //首页总的销售统计 public function all_index_tj(){ //销售概况统计 $today=array( '0'=>0,//total_amount '1'=>0,//order_amount '2'=>0,//return_goods '3'=>0,//return_ing '4'=>0,//count '5'=>0,//num ); $all_money=M('order') ->alias('a') ->join('(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id='.getAdmStoId().' GROUP BY order_id) b','a.order_id=b.order_id','left') ->where(' a.store_id='.getAdmStoId().' and a.pay_status=1 ') ->field('sum(b.warenum)goods_num,a.order_id,sum(a.total_amount)all_total_amount,sum(a.order_amount+a.user_money+a.pt_tail_money)all_order_amount') ->group('a.order_id') ->select(); $return_money=M('return_goods') ->alias('a') ->where(' a.store_id='.getAdmStoId().' ') ->field(' a.status,sum(a.back_money)back_money ') ->group('a.status') ->select(); if(!empty($all_money)) { $today['4']=count($all_money); for ($j=0;$j1,'data'=>$today]; } //销售导出 //销售导出 public function xx_export() { //支付方式 $pay_name = I('get.pay_name'); //配送方式 $exp_type = I('get.exp_type'); //汇总查询 $total_sel = I('total_sel'); //时间查询 $timetype = I('timetype', 1); //订单状态 $order_status = I('order_status'); $count = 0; switch ($total_sel) { case 0: //汇总查询 $field = 'a.is_zsorder,a.order_id,a.pay_code,a.order_status,a.more_address,address,a.shipping_status,a.add_time,a.erp_givetime,a.consignee,sum(a.user_money+a.order_amount)all_order_amount,a.order_sn,a.exp_type,a.pay_status,a.pt_status,pay_name,a.total_amount,a.pickup_id,a.expressno,a.order_amount,a.user_money,a.integral,sum(b.warenum)num'; $group = 'b.order_id'; // $c_field = "count(distinct(b.order_id))cou"; $c_field = "count(distinct(a.order_id))cou"; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'], ['(SELECT mobile,user_id,vipname from wxd_users where store_id=' . getAdmStoId() . ') d', 'a.user_id=d.user_id', 'left'] ]; break; case 1://按单号汇总 $field = 'a.is_zsorder,a.order_id,a.pay_code,a.order_status,a.more_address,address,a.consignee,sum(a.user_money+a.order_amount)all_order_amount,a.shipping_status,a.add_time,a.erp_givetime,a.order_sn,a.exp_type,a.pay_status,a.pt_status,pay_name,a.total_amount,a.pickup_id,a.expressno,a.order_amount,a.user_money,a.integral,sum(b.warenum)num,a.user_note,sum(total_amount)all_total_amount,sum(order_amount+user_money+pt_tail_money)all_order_amount'; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ]; $group = 'b.order_id'; $c_field = "count(distinct(b.order_id))cou"; break; case 2: //按门店汇总 $field = 'c.pickup_no,c.pickup_name,count(1)num,sum(b.warenum)warenum,a.user_note,sum(total_amount)all_total_amount,sum(order_amount+user_money+pt_tail_money)all_order_amount'; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'] ]; $group = 'c.pickup_no'; $c_field = "count(distinct(c.pickup_no))cou"; break; case 3: //按商品汇总 $field = 'b.goods_name,b.goods_sn,b.goods_price,e.shop_price,sum(b.goods_num)num,sum(b.goods_price*b.goods_num)all_total_amount,sum(e.shop_price*b.goods_num) all_order_amount'; $join = [ ['(SELECT * FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ') b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'], ['(SELECT * FROM wxd_goods WHERE store_id=' . getAdmStoId() . ') e', 'e.goods_id=b.goods_id', 'left'] ]; $where['a.pay_status'] = 1; $group = 'b.goods_sn,b.goods_name,b.goods_price,e.shop_price'; $c_field = "count(distinct(CONCAT(b.goods_sn,b.goods_name,cast(b.goods_price as CHAR(50)),cast(e.shop_price as CHAR(50)))))cou"; break; case 4: //按配送汇总 $field = 'a.exp_type,count(1)num,sum(a.shipping_price)shipping_price,sum(b.warenum)warenum '; $group = 'a.exp_type'; $join = [ ['(SELECT order_id,sum(goods_num)warenum FROM wxd_order_goods WHERE store_id=' . getAdmStoId() . ' GROUP BY order_id) b', 'a.order_id=b.order_id', 'left'], ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'] ]; $count = 2; break;//->join('(SELECT * FROM wxd_order_goods WHERE store_id='.getAdmStoId().') b','a.order_id=b.order_id','left') case 5: //按支付方式汇总 $field = '(sum(order_amount)+sum(case when tail_pay_type=0 then pt_tail_money else 0 end)) as all_order_amount,(sum(user_money)+sum(case when tail_pay_type=1 then pt_tail_money else 0 end))all_user_money,sum(integral)all_integral, count(1)cou'; $join = [ ['(SELECT * FROM wxd_pick_up WHERE store_id=' . getAdmStoId() . ') c', 'a.pickup_id=c.pickup_id', 'left'] ]; $group = 'a.store_id'; $count = 3; break; } $ispost = I('post.'); if (!isset($ispost['data'])) { exit(); } if (isset($ispost['type'])) { // $where1 = " a.store_id='" . getAdmStoId() . "'"; // if ($ispost['type']['start_time'] != '' && $ispost['type']['end_time'] != '') { // switch ($timetype) { // case "1": // $where1 .= " and a.add_time > " . strtotime(urldecode(urldecode($ispost['type']['start_time']))); // $where1 .= " and a.add_time < " . strtotime(urldecode(urldecode($ispost['type']['end_time']))); // break; // case "2": // $where1 .= " and a.erp_givetime > " . strtotime(urldecode(urldecode($ispost['type']['start_time']))); // $where1 .= " and a.erp_givetime < " . strtotime(urldecode(urldecode($ispost['type']['end_time']))); // break; // } // } $where = json_decode($ispost['where'], "true"); $where1 = str_replace("@", "\"", $ispost['where1']); if ($count == 0) { $c1 = M('order')->alias('a')->where($where1)->where($where)->count(); if ($c1 > 8000) $this->error("导出数据量大(最大支持8000条),请重新选择时间段进行导出"); } $join = [['pick_up d', 'd.store_id=' . getAdmStoId() . ' and a.pickup_id=d.pickup_id', 'left']]; $field = 'd.pickup_no,d.pickup_name,a.add_time,a.erp_givetime,a.order_sn,b.vipname,a.exp_type,a.consignee,a.more_address,a.address,a.order_status,a.order_amount,a.expressno,a.pay_name, a.integral_money,a.coupon_price,a.pay_status,a.pay_code,a.shipping_status,(a.order_prom_amount+a.discount_amount) as youhui, a.user_money,a.user_note,sum(c.goods_num)num,sum(a.user_money+a.order_amount)all_order_amount,'; if($total_sel!=3){ $field .= 'sum(a.total_amount)all_total_amount'; } $count = Db::name('order') ->alias('a') ->join('(select vipname,mobile,nickname,user_id from wxd_users where store_id=' . getAdmStoId() . ') b ', 'a.user_id=b.user_id', 'left') ->join('order_goods c', 'a.order_id=c.order_id', 'left') ->join($join) ->where($where) ->where($where1) ->field($field) ->order('add_time desc,order_sn desc') ->group('a.order_id') ->select(); $count_str = Db::name('order') ->alias('a') ->join('(select vipname,mobile,nickname,user_id from wxd_users where store_id=' . getAdmStoId() . ') b ', 'a.user_id=b.user_id', 'left') ->join('order_goods c', 'a.order_id=c.order_id', 'left') ->join($join) ->where($where) ->where($where1) ->field($field) ->order('add_time desc,order_sn desc') ->group('a.order_id')->fetchSql(true) ->select(); mlog("1:".$count_str,"xx_export/".getAdmStoId()); } else { $data = input(); $where = json_decode($data['where'], "true"); $where1 = str_replace("@", "\"", $data['where1']); if ($count == 0) { $tjarr1 = M('order') ->alias('a')->join($join) ->where($where)->where($where1) ->field($c_field) ->select(); $tjarr = $tjarr1[0]; $c1 = $tjarr['cou']; if ($c1 > 8000) $this->error("导出数据量大(最大支持8000条),请重新选择时间段进行导出"); } $count = M('order') ->alias('a') // ->join('(SELECT * FROM wxd_order_goods WHERE store_id='.getAdmStoId().') b','a.order_id=b.order_id','left') ->join($join) ->where($where) ->where($where1) ->field($field) ->order('a.add_time desc,a.order_sn desc') ->group($group) ->select(); } $strTable = ''; $strTable .= ''; foreach ($ispost['data'] as $k => $val) { $strTable .= ''; } $strTable .= ''; for ($i = 0; $i < count($count); $i++) { $strTable .= ''; foreach ($ispost['data'] as $k1 => $val) { // 时间戳转换 if (strripos('aaa,exp_type', $k1) > 0) { $strTable .= ''; } else if (strripos('reg_time,add_time,erp_givetime', $k1) > 0) { if ($count[$i][$k1]>0) { $strTable .= ''; }else { $strTable .= ''; } } else if (strripos('2,prom_type', $k1) > 0) { $strTable .= ''; } else if (strripos('2,pay_name', $k1) > 0) { $strTable .= ''; } else if (strripos('3,order_status', $k1) > 0) { $strTable .= ''; } else if (strripos('4,order_amount,shop_price,goods_price,shipping_price,total_amount,user_money,all_total_amount,all_order_amount,num,warenum,integral_money,coupon_price,youhui', $k1) > 0) { $strTable .= ''; } else if (strripos('5,address', $k1) > 0) { $strTable .= ''; } else { $strTable .= ''; } } $strTable .= ''; } $strTable .= '
' . $val . '
 '; if ($count[$i][$k1] == '0') { $strTable .= "物流"; } if ($count[$i][$k1] == '1') { $strTable .= "自提"; } $strTable .= ' ' . date('Y-m-d H:i:s', $count[$i][$k1]) . '  '; if ($count[$i][$k1] == '0') $strTable .= "普通订单"; if ($count[$i][$k1] == '1') $strTable .= "限时抢购"; if ($count[$i][$k1] == '2') $strTable .= "团购"; if ($count[$i][$k1] == '3') $strTable .= "促销优惠"; $strTable .= ' '; if ($pay_name == 1) { $strTable .= "微信支付"; } else if ($pay_name == 2) { $strTable .= "余额支付"; } else if ($pay_name == 3) { $strTable .= "积分兑换"; } else { if ($count[$i]['order_amount'] > 0) { $strTable .= "微信支付"; } else if ($count[$i]['user_money'] > 0) { $strTable .= "用户余额"; } else { $strTable .= "积分兑换"; } } $strTable .= ' '; //订单状态 switch ($count[$i]['pt_status']) { case "1": { $strTable .= "待付款"; } //待成团 break; case "2": if ($count[$i]['is_zsorder'] == 4) { $strTable .= "待付尾款"; } //待付尾款 else { $strTable .= $this->ex_ord_status($order_status, $count[$i]); } break; case "3": { $strTable .= "拼团失败"; } //拼团失败 break; case "6": { $strTable .= "未付尾款"; } //拼团失败 break; default: $strTable .= $this->ex_ord_status($order_status, $count[$i]); break; } $strTable .= '' . $count[$i][$k1] . ' ' .$count[$i]['more_address'] . $count[$i][$k1]. ' ' . $count[$i][$k1] . '
'; downloadExcel($strTable, 'order'); exit(); } public function ex_ord_status($order_status,$order){ if ($order_status) //订单状态 { if ($order_status == 'WAITPAY') {return "待付款";} //待付款 if ($order_status == 'WAITSEND') {return "待发货";};//待发货 if ($order_status == 'WAITRECEIVE') {return "待收货";};//待收货 if ($order_status == 'WAITCCOMMENT') {return "已收货";};//已收货 if ($order_status == 'CANCEL') {return "已取消";};//已取消 if ($order_status == 'FINISH') {return "已完成";};//已完成 if ($order_status == 'CANCELLED') {return "已作废";};//已作废 if ($order_status == 'RETURNED') {return "退款退货完成";};//退款退货完成 if ($order_status == 'PAYED') {return "已付款";};//已付款 } else{ if($order['pay_status']==0 && $order['order_status']==0 && $order['pay_code']!='cod'){ return "待付款";} else if(($order['pay_status']==1 || $order['pay_code']=='cod') && $order['shipping_status']==0 && ($order['order_status']==0 || $order['order_status']==1)){ return "待发货";} else if(($order['shipping_status']==1 || $order['shipping_status']==2) && $order['order_status']==1){return "待收货";} else if($order['order_status']==2){return "已收货";} else if($order['order_status']==3){return "已取消";} else if($order['order_status']==4){return "已完成";} else if($order['order_status']==5){return "已作废";} else if($order['order_status']==6){return "退款退货完成";} else if($order['pay_status']==1){return "已付款";} } } }