Package.php 12.6 KB
<?php
namespace app\admin\controller;
use think\Db;
use think\facade\Request;
class Package extends Common
{
    /**
     * 商家菜品套餐-套餐列表
     */
    public function lists(){
        if(Request::isAjax()){
            $data = Request::except('file');

            $where = '';
            $channel = $data['channel'] ? $data['channel'] : 1;

            $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
            $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
            
            $offset = ($data["page"] - 1) * $data["limit"];
            $limit  = " LIMIT $offset,".$data['limit'];

            $sql ="SELECT
                                s.*
                            FROM
                                `xt-member-two-LINE`.xt_dc_dz_seller_food_set AS s
                                LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
                            WHERE ".$where." group by s.id ".$limit;
            //套餐信息
            $rs = Db::query($sql);

            //格式化数据
            foreach ($rs as $key => $value) {
                $rs[$key]['cdate'] = date("Y年m月d日",$value['cdate']);
            }

            //获取总条数
            $total = Db::query("SELECT
                            s.id 
                        FROM
                            `xt-member-two-LINE`.xt_dc_dz_seller_food_set AS s
                            LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
                        WHERE ".$where."");
            return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
        }
        $this->assign ( 'title','套餐列表');
        return $this->fetch();
    }

    /**
     * 创建套餐-商家列表
     */
    public function sellerlist(){
        if(Request::isAjax()){
            $data = Request::except('file');

            $where = '';
            $channel = $data['channel'] ? $data['channel'] : 1;

            $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
            $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
            
            
            $offset = ($data["page"] - 1) * $data["limit"];
            $limit  = " LIMIT $offset,".$data['limit'];

            //商家基本数据
            $rs = Db::query("SELECT
                                s.id,
                                s.sellername
                            FROM
                                `xt-member-two-LINE`.xt_seller AS s
                                LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
                            WHERE
                                s.isopen_dc = 1 
                            AND ".$where." GROUP BY s.id order by s.id".$limit);
            //获取总条数
            $total = Db::query("SELECT
                            s.id 
                        FROM
                            `xt-member-two-LINE`.xt_seller AS s
                            LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.id
                        WHERE
                            s.isopen_dc = 1 
                            AND ".$where."
                        GROUP BY
                            s.id");
            return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
        }
        return $this->fetch();
    }

    /**
     * 创建菜品套餐-完成创建
     */
    public function add_foodset(){
        $data = Request::except('file');
        if(Request::isAjax()){
            $arr = [];
            $arr['sid']             = $data['seller_id'] ? $data['seller_id'] : 0;
            $arr['sellername']      = $data['seller_name'] ? $data['seller_name'] : '';
            $arr['name']            = $data['name'];
            $arr['market_price']    = $data['market_price'];
            $arr['sale_price']      = $data['sale_price'];
            $arr['cost_price']      = $data['cost_price'];
            $arr['discount']        = bcdiv($data['sale_price'], $data['market_price'], 2);//折扣  = 现价【销售价】 / 原价【市场价】
            $arr['service']         = isset($data['server']) ? implode(',', $data['server']) : '';
            $arr['main_url']        = $data['upload_main_val'];
            $arr['detail_url']      = $data['upload_detail_val'];
            $time                   = $data['date'] ? explode(' - ', $data['date']) : '';
            //开始时间默认为 00:00:00  结束时间默认为23:59:59
            $eff_time_end = $time[1].'23:59:59';
            $arr['eff_time_start']  = $time ? strtotime(date($time[0],time())) : 0;
            $arr['eff_time_end']    = $time ? strtotime(date($eff_time_end,time())) : 0;
            $arr['use_time']        = $data['usetime'];
            $arr['use_notice']      = $data['usenotice'];
            $arr['status']          = $data['status'];
            $arr['cdate']           = time();
            $arr['founder']         = $_SESSION['think']['username'];
            //有新加参数 需在此后追加。。。

            $keys =  implode(',',array_keys($arr));

            $sql = "INSERT INTO `xt-member-two-LINE`.xt_dc_dz_seller_food_set  ($keys) VALUES (";
            foreach ($arr as $key => $value) {
                $sql .= '"'.$value.'",';
            }
            $sql = substr( $sql,0, strlen($sql)-1 );
            $sql .=")";
            $res = Db::query($sql);

            if(!$res){
                $result = ['code'=>1,'msg'=>'添加成功!','rel'=>1];
            }else{
                $result = ['code'=>0,'msg'=>'添加失败!','rel'=>1];
            }
            return $result;
        }
        return $this->fetch();
    }

    /**
     * 套餐详情
     */
    public function footsetdetail(){
        //print_r(Request::except('file'));die;
        $data = Request::except('file');
        //获取套餐详情
        $rs = Db::query("SELECT
                                *
                            FROM
                                `xt-member-two-LINE`.xt_dc_dz_seller_food_set
                            WHERE id = ".$data['id']."
                            ");
        $rs[0]['eff_time_end']      =  $rs[0]['eff_time_end'] ? date("Y年m月d日",$rs[0]['eff_time_end']) : '';
        $rs[0]['eff_time_start']    =  $rs[0]['eff_time_start'] ? date("Y年m月d日",$rs[0]['eff_time_start']) : '';
        $rs[0]['lasttime']          =  $rs[0]['lasttime'] ? date("Y年m月d日",$rs[0]['lasttime']) : '';
        $rs[0]['cdate']             =  $rs[0]['cdate'] ? date("Y年m月d日",$rs[0]['cdate']) : '';
        $rs[0]['off_time']          =  $rs[0]['off_time'] ? date("Y年m月d日",$rs[0]['off_time']) : '';
        $rs[0]['on_time']           =  $rs[0]['on_time'] ? date("Y年m月d日",$rs[0]['on_time']) : '';
        $this->assign ('rs',$rs[0]);
        $this->assign ( 'title','套餐详情');
        return $this->fetch();
    }

    /**
     * 创建套餐-选择商户
     */
    public function selectseller(){
        $this->assign ( 'title','创建套餐');
        return $this->fetch();
    }

    /**
     * 菜品套餐 上架/下架
     */
    public function foodState(){
        $id=input('post.id');
        $status=input('post.status');
        if (empty($id)){
            $result['status'] = 0;
            $result['info'] = '套餐不存在!';
            $result['url'] = url('lists');
            return $result;
        }
        if($status==1)
            $strtime = ' ,on_time  = '.time();
        else
            $strtime = ' ,off_time = '.time();

        $sql = "UPDATE `xt-member-two-LINE`.xt_dc_dz_seller_food_set set status = ".$status.",lasttime = ".time().", operator = '".$_SESSION['think']['username']."' $strtime where id = ".$id;
        $ups = Db::query($sql);
        if(!$ups){
            $result['code'] = 1;
            $result['info'] = '变更成功!';
            $result['url'] = url('lists');
        }else{
            $result['code'] = 0;
            $result['info'] = '变更失败,请联系管理员!';
            $result['url'] = url('lists');
        }
        
        return $result;
    }

    //订单列表
    public function orderlist(){
        if(Request::isAjax()){
            $data = Request::except('file');

            $where = '';
            $channel = $data['channel'] ? $data['channel'] : 1;

            $where .= ($channel && $channel==1) ? ' o.status in (2,3,4,5)' : " o.status in ($channel)";
            $where .= $data['key'] ? ' and o.sellername like "%'.$data['key'].'%"' : "";
            $where .= $data['share'] ? ' and re.main_name like "%'.$data['share'].'%"' : "";
            $where .= $data['foodname'] ? ' and s.name like "%'.$data['foodname'].'%"' : "";

            $time  = $data['time'] ? explode(' - ', $data['time']) : '';
            $stime = $time ? strtotime(date($time[0],time())) : strtotime(date('Y-m-d 00:00:00',time()));
            $etime = $time ? strtotime(date($time[1],time())) : strtotime(date('Y-m-d 23:59:59',time()));

            $where .= ' and o.create_time between '.$stime.' and '.$etime;
            $where .= ' AND o.wechat_no > 0 AND o.sub_mchid > 0';

            $offset = ($data["page"] - 1) * $data["limit"];
            $limit  = " LIMIT $offset,".$data['limit'];

            $sql ="SELECT
                        o.id,
                        o.sid,
                        o.sellername,
                        s.`name`,
                        o.actual_price,
                        w.nickname,
                        re.openid_main,
                        re.main_name,
                        re.openid_cover,
                        re.create_time as ctime,
                        o.pay_time,
                        o.use_time,
                        o.refund_time,
                        o.writeoff,
                        o.writeoff_name,
                        o.`status` 
                    FROM
                        `xt-member-two-LINE`.xt_dc_dz_user_food_orders AS o
                        LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_user_food_set AS s ON o.id = s.order_id
                        LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_wechat AS w ON o.openid = w.openid
                        LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_share_code_rel AS re ON (o.openid = re.openid_cover and s.id = re.fid)
                        WHERE ".$where.$limit;
            //套餐信息
            $rs = Db::query($sql);
            //格式化数据
            foreach ($rs as $key => $value) {
                //查询关系
                $rs[$key]['pay_time']    = $value['pay_time'] ? date("Y-m-d H:i:s",$value['pay_time']) : '';
                $rs[$key]['use_time']    = $value['use_time'] ? date("Y-m-d H:i:s",$value['use_time']) : '';
                $rs[$key]['refund_time'] = $value['refund_time'] ? date("Y-m-d H:i:s",$value['refund_time']) : '';
                
                switch ($value['status']) {
                    case '2':
                        $rs[$key]['str_status']    =  '已购买';
                        break;
                    case '3':
                        $rs[$key]['str_status']    =  '已使用';
                        break;
                    case '4':
                        $rs[$key]['str_status']    =  '退款中';
                        break;
                    case '5':
                        $rs[$key]['str_status']    =  '已退款';
                        break;
                    default:
                        # code...
                        break;
                }
                if($value['status']==3){
                    $rs[$key]['writeoff_name']    =  $value['writeoff_name'] ? $value['writeoff_name'] : $value['writeoff'];
                }
            }

            //获取总条数
            $total = Db::query("SELECT
                        count(1) as total
                    FROM
                        `xt-member-two-LINE`.xt_dc_dz_user_food_orders AS o
                        LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_user_food_set AS s ON o.id = s.order_id
                        LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_wechat AS w ON o.openid = w.openid
                        LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_share_code_rel AS re ON (o.openid = re.openid_cover and s.id = re.fid)
                        WHERE ".$where."");
            $new_total = $total ? $total[0]['total'] : 0;
            return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>$new_total,'rel'=>1];
        }
        $this->assign ( 'title','订单列表');
        return $this->fetch();
    }
}