|
|
@@ -26,11 +26,168 @@ class StoreOrder extends ModelBasic
|
|
|
{
|
|
|
use ModelTrait;
|
|
|
|
|
|
+ public static function orderCount(){
|
|
|
+ $data['wz']=self::statusByWhere(0,new self())->count();
|
|
|
+ $data['wf']=self::statusByWhere(1,new self())->count();
|
|
|
+ $data['ds']=self::statusByWhere(2,new self())->count();
|
|
|
+ $data['dp']=self::statusByWhere(3,new self())->count();
|
|
|
+ $data['jy']=self::statusByWhere(4,new self())->count();
|
|
|
+ $data['tk']=self::statusByWhere(-1,new self())->count();
|
|
|
+ $data['yt']=self::statusByWhere(-2,new self())->count();
|
|
|
+ $data['general']=self::where(['pink_id'=>0,'combination_id'=>0,'seckill_id'=>0])->count();
|
|
|
+ $data['pink']=self::where('pink_id|combination_id','neq',0)->count();
|
|
|
+ $data['seckill']=self::where('seckill_id','neq',0)->count();
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function OrderList($where){
|
|
|
+ $model = self::getOrderWhere($where,self::alias('a')->join('user r','r.uid=a.uid','LEFT'),'a.','r')->field('a.*,r.nickname');
|
|
|
+ if($where['order']!=''){
|
|
|
+ $model = $model->order(self::setOrder($where['order']));
|
|
|
+ }else{
|
|
|
+ $model = $model->order('a.id desc');
|
|
|
+ }
|
|
|
+ $data=($data=$model->page((int)$where['page'],(int)$where['limit'])->select()) && count($data) ? $data->toArray() : [];
|
|
|
+ foreach ($data as &$item){
|
|
|
+ $_info = db('store_order_cart_info')->where('oid',$item['id'])->field('cart_info')->select();
|
|
|
+ foreach ($_info as $k=>$v){
|
|
|
+ $_info[$k]['cart_info'] = json_decode($v['cart_info'],true);
|
|
|
+ }
|
|
|
+ $item['_info'] = $_info;
|
|
|
+ if($item['pink_id'] && $item['combination_id']){
|
|
|
+ $pinkStatus = StorePink::where('order_id_key',$item['id'])->value('status');
|
|
|
+ switch ($pinkStatus){
|
|
|
+ case 1:
|
|
|
+ $item['pink_name'] = '[拼团订单]正在进行中';
|
|
|
+ $item['color'] = '#f00';
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ $item['pink_name'] = '[拼团订单]已完成';
|
|
|
+ $item['color'] = '#00f';
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ $item['pink_name'] = '[拼团订单]未完成';
|
|
|
+ $item['color'] = '#f0f';
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ $item['pink_name'] = '[拼团订单]历史订单';
|
|
|
+ $item['color'] = '#457856';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if($item['seckill_id']){
|
|
|
+ $item['pink_name'] = '[秒杀订单]';
|
|
|
+ $item['color'] = '#32c5e9';
|
|
|
+ }else{
|
|
|
+ $item['pink_name'] = '[普通订单]';
|
|
|
+ $item['color'] = '#895612';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if($item['paid']==1){
|
|
|
+ switch ($item['pay_type']){
|
|
|
+ case 'weixin':
|
|
|
+ $item['pay_type_name']='微信支付';
|
|
|
+ break;
|
|
|
+ case 'yue':
|
|
|
+ $item['pay_type_name']='微信支付';
|
|
|
+ break;
|
|
|
+ case 'offline':
|
|
|
+ $item['pay_type_name']='线下支付';
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ $item['pay_type_name']='其他支付';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ switch ($item['pay_type']){
|
|
|
+ default:
|
|
|
+ $item['pay_type_name']='未支付';
|
|
|
+ break;
|
|
|
+ case 'offline':
|
|
|
+ $item['pay_type_name']='线下支付';
|
|
|
+ $item['pay_type_info']=1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if($item['paid']==0 && $item['status']==0){
|
|
|
+ $item['status_name']='未支付';
|
|
|
+ }else if($item['paid']==1 && $item['status']==0 && $item['refund_status']==0){
|
|
|
+ $item['status_name']='未发货';
|
|
|
+ }else if($item['paid']==1 && $item['status']==1 && $item['refund_status']==0){
|
|
|
+ $item['status_name']='待收货';
|
|
|
+ }else if($item['paid']==1 && $item['status']==2 && $item['refund_status']==0){
|
|
|
+ $item['status_name']='待评价';
|
|
|
+ }else if($item['paid']==1 && $item['status']==3 && $item['refund_status']==0){
|
|
|
+ $item['status_name']='待评价';
|
|
|
+ }else if($item['paid']==1 && $item['refund_status']==1){
|
|
|
+ $item['status_name']=<<<HTML
|
|
|
+<b style="color:#f124c7">申请退款</b><br/>
|
|
|
+<span>退款原因:{$item['refund_reason_wap']}</span>
|
|
|
+HTML;
|
|
|
+ }else if($item['paid']==1 && $item['refund_status']==2){
|
|
|
+ $item['status_name']='已退款';
|
|
|
+ }
|
|
|
+ if($item['paid']==0 && $item['status']==0 && $item['refund_status']==0){
|
|
|
+ $item['_status']=1;
|
|
|
+ }else if($item['paid']==1 && $item['status']==0 && $item['refund_status']==0){
|
|
|
+ $item['_status']=2;
|
|
|
+ }else if($item['paid']==1 && $item['refund_status']==1){
|
|
|
+ $item['_status']=3;
|
|
|
+ }else if($item['paid']==1 && $item['status']==1 && $item['refund_status']==0){
|
|
|
+ $item['_status']=4;
|
|
|
+ }else if($item['paid']==1 && $item['status']==2 && $item['refund_status']==0){
|
|
|
+ $item['_status']=5;
|
|
|
+ }else if($item['paid']==1 && $item['status']==3 && $item['refund_status']==0){
|
|
|
+ $item['_status']=6;
|
|
|
+ }else if($item['paid']==1 && $item['refund_status']==2){
|
|
|
+ $item['_status']=7;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isset($where['excel']) && $where['excel']==1){
|
|
|
+ self::SaveExcel($data);
|
|
|
+ }
|
|
|
+ $count=self::getOrderWhere($where,self::alias('a')->join('user r','r.uid=a.uid','LEFT'),'a.','r')->count();
|
|
|
+ return compact('count','data');
|
|
|
+ }
|
|
|
+ /*
|
|
|
+ * 保存并下载excel
|
|
|
+ * $list array
|
|
|
+ * return
|
|
|
+ */
|
|
|
+ public static function SaveExcel($list){
|
|
|
+ $export = [];
|
|
|
+ foreach ($list as $index=>$item){
|
|
|
+ $_info = db('store_order_cart_info')->where('oid',$item['id'])->column('cart_info');
|
|
|
+ $goodsName = [];
|
|
|
+ foreach ($_info as $k=>$v){
|
|
|
+ $v = json_decode($v,true);
|
|
|
+ $goodsName[] = implode(
|
|
|
+ [$v['productInfo']['store_name'],
|
|
|
+ isset($v['productInfo']['attrInfo']) ? '('.$v['productInfo']['attrInfo']['suk'].')' : '',
|
|
|
+ "[{$v['cart_num']} * {$v['truePrice']}]"
|
|
|
+ ],' ');
|
|
|
+ }
|
|
|
+ $item['cartInfo'] = $_info;
|
|
|
+ $export[] = [
|
|
|
+ $item['order_id'],$item['pay_type_name'],
|
|
|
+ $item['total_num'],$item['total_price'],$item['total_postage'],$item['pay_price'],$item['refund_price'],
|
|
|
+ $item['mark'],$item['remark'],
|
|
|
+ [$item['real_name'],$item['user_phone'],$item['user_address']],
|
|
|
+ $goodsName,
|
|
|
+ [$item['paid'] == 1? '已支付':'未支付','支付时间: '.($item['pay_time'] > 0 ? date('Y/md H:i',$item['pay_time']) : '暂无')]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ PHPExcelService::setExcelHeader(['订单号','支付方式','商品总数','商品总价','邮费','支付金额','退款金额','用户备注','管理员备注','收货人信息','商品信息','支付状态'])
|
|
|
+ ->setExcelTile('订单导出','订单信息'.time(),' 生成时间:'.date('Y-m-d H:i:s',time()))
|
|
|
+ ->setExcelContent($export)
|
|
|
+ ->ExcelSave();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param $where
|
|
|
* @return array
|
|
|
*/
|
|
|
- public static function systemPage($where,$userid){
|
|
|
+ public static function systemPage($where,$userid=false){
|
|
|
$model = self::getOrderWhere($where,self::alias('a')->join('user r','r.uid=a.uid','LEFT'),'a.','r')->field('a.*,r.nickname');
|
|
|
if($where['order']){
|
|
|
$model = $model->order('a.'.$where['order']);
|
|
|
@@ -80,7 +237,6 @@ class StoreOrder extends ModelBasic
|
|
|
->ExcelSave();
|
|
|
}
|
|
|
return self::page($model,function ($item){
|
|
|
- $item['nickname'] = WechatUser::where('uid',$item['uid'])->value('nickname');
|
|
|
$_info = db('store_order_cart_info')->where('oid',$item['id'])->field('cart_info')->select();
|
|
|
foreach ($_info as $k=>$v){
|
|
|
$_info[$k]['cart_info'] = json_decode($v['cart_info'],true);
|
|
|
@@ -88,29 +244,32 @@ class StoreOrder extends ModelBasic
|
|
|
$item['_info'] = $_info;
|
|
|
if($item['pink_id'] && $item['combination_id']){
|
|
|
$pinkStatus = StorePink::where('order_id_key',$item['id'])->value('status');
|
|
|
- if($pinkStatus == 1){
|
|
|
- $item['pink_name'] = '[拼团订单]正在进行中';
|
|
|
- $item['color'] = '#f00';
|
|
|
- }else if($pinkStatus == 2){
|
|
|
- $item['pink_name'] = '[拼团订单]已完成';
|
|
|
- $item['color'] = '#00f';
|
|
|
- }else if($pinkStatus == 3){
|
|
|
- $item['pink_name'] = '[拼团订单]未完成';
|
|
|
- $item['color'] = '#f0f';
|
|
|
- }else{
|
|
|
- $item['pink_name'] = '[拼团订单]历史订单';
|
|
|
- $item['color'] = '#457856';
|
|
|
+ switch ($pinkStatus){
|
|
|
+ case 1:
|
|
|
+ $item['pink_name'] = '[拼团订单]正在进行中';
|
|
|
+ $item['color'] = '#f00';
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ $item['pink_name'] = '[拼团订单]已完成';
|
|
|
+ $item['color'] = '#00f';
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ $item['pink_name'] = '[拼团订单]未完成';
|
|
|
+ $item['color'] = '#f0f';
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ $item['pink_name'] = '[拼团订单]历史订单';
|
|
|
+ $item['color'] = '#457856';
|
|
|
+ break;
|
|
|
}
|
|
|
}else{
|
|
|
- if($item['seckill_id']){
|
|
|
- $item['pink_name'] = '[秒杀订单]';
|
|
|
- $item['color'] = '#32c5e9';
|
|
|
- }else{
|
|
|
- $item['pink_name'] = '[普通订单]';
|
|
|
- $item['color'] = '#895612';
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ if($item['seckill_id']){
|
|
|
+ $item['pink_name'] = '[秒杀订单]';
|
|
|
+ $item['color'] = '#32c5e9';
|
|
|
+ }else{
|
|
|
+ $item['pink_name'] = '[普通订单]';
|
|
|
+ $item['color'] = '#895612';
|
|
|
+ }
|
|
|
}
|
|
|
},$where);
|
|
|
}
|
|
|
@@ -193,27 +352,107 @@ class StoreOrder extends ModelBasic
|
|
|
// $model = $model->where('combination_id',0);
|
|
|
if($where['status'] != '') $model = self::statusByWhere($where['status'],$model,$aler);
|
|
|
if($where['is_del'] != '' && $where['is_del'] != -1) $model = $model->where($aler.'is_del',$where['is_del']);
|
|
|
- if($where['combination_id'] =='普通订单'){
|
|
|
- $model = $model->where($aler.'combination_id',0)->where($aler.'seckill_id',0);
|
|
|
- }
|
|
|
- if($where['combination_id'] =='拼团订单'){
|
|
|
- $model = $model->where($aler.'combination_id',">",0)->where($aler.'pink_id',">",0);
|
|
|
+ if(isset($where['combination_id'])){
|
|
|
+ if($where['combination_id'] =='普通订单'){
|
|
|
+ $model = $model->where($aler.'combination_id',0)->where($aler.'seckill_id',0);
|
|
|
+ }
|
|
|
+ if($where['combination_id'] =='拼团订单'){
|
|
|
+ $model = $model->where($aler.'combination_id',">",0)->where($aler.'pink_id',">",0);
|
|
|
+ }
|
|
|
+ if($where['combination_id'] =='秒杀订单'){
|
|
|
+ $model = $model->where($aler.'seckill_id',">",0);
|
|
|
+ }
|
|
|
}
|
|
|
- if($where['combination_id'] =='秒杀订单'){
|
|
|
- $model = $model->where($aler.'seckill_id',">",0);
|
|
|
+ if(isset($where['type'])){
|
|
|
+ switch ($where['type']){
|
|
|
+ case 1:
|
|
|
+ $model = $model->where($aler.'combination_id',0)->where($aler.'seckill_id',0);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ $model = $model->where($aler.'combination_id',">",0)->where($aler.'pink_id',">",0);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ $model = $model->where($aler.'seckill_id',">",0);
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if($where['real_name'] != ''){
|
|
|
$model = $model->where($aler.'order_id|'.$aler.'real_name|'.$aler.'user_phone'.($join ? '|'.$join.'.nickname|'.$join.'.uid':''),'LIKE',"%$where[real_name]%");
|
|
|
}
|
|
|
if($where['data'] !== ''){
|
|
|
- list($startTime,$endTime) = explode(' - ',$where['data']);
|
|
|
- $model = $model->where($aler.'add_time','>',strtotime($startTime));
|
|
|
- $model = $model->where($aler.'add_time','<',strtotime($endTime));
|
|
|
+ $model = self::getModelTime($where,$model,$aler.'add_time');
|
|
|
}
|
|
|
return $model;
|
|
|
}
|
|
|
-
|
|
|
+ public static function getBadge($where){
|
|
|
+ $price=self::getOrderPrice($where);
|
|
|
+ return [
|
|
|
+ [
|
|
|
+ 'name'=>'订单数量',
|
|
|
+ 'field'=>'件',
|
|
|
+ 'count'=>$price['total_num'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'售出商品',
|
|
|
+ 'field'=>'件',
|
|
|
+ 'count'=>$price['total_num'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'订单金额',
|
|
|
+ 'field'=>'元',
|
|
|
+ 'count'=>$price['pay_price'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'退款金额',
|
|
|
+ 'field'=>'元',
|
|
|
+ 'count'=>$price['refund_price'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'微信支付金额',
|
|
|
+ 'field'=>'元',
|
|
|
+ 'count'=>$price['pay_price_wx'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'余额支付金额',
|
|
|
+ 'field'=>'元',
|
|
|
+ 'count'=>$price['pay_price_yue'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'线下支付金额',
|
|
|
+ 'field'=>'元',
|
|
|
+ 'count'=>$price['pay_price_offline'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'积分抵扣',
|
|
|
+ 'field'=>'分',
|
|
|
+ 'count'=>$price['use_integral'].'(抵扣金额:¥'.$price['deduction_price'].')',
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'name'=>'退回积分',
|
|
|
+ 'field'=>'元',
|
|
|
+ 'count'=>$price['back_integral'],
|
|
|
+ 'background_color'=>'layui-bg-blue',
|
|
|
+ 'col'=>2
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ }
|
|
|
/**
|
|
|
* 处理订单金额
|
|
|
* @param $where
|
|
|
@@ -655,4 +894,14 @@ class StoreOrder extends ModelBasic
|
|
|
// }
|
|
|
// return $refundlist;
|
|
|
// }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单总数
|
|
|
+ * @param int $uid
|
|
|
+ * @return int|string
|
|
|
+ */
|
|
|
+ public static function getOrderCount($uid = 0){
|
|
|
+ if(!$uid) return 0;
|
|
|
+ return self::where('uid',$uid)->where('paid',1)->where('refund_status',0)->where('status',2)->count();
|
|
|
+ }
|
|
|
}
|