<?php

namespace app\admin\controller;

use app\admin\model\DataGroup as DataGroupModel;
use think\facade\Db;
use think\facade\Validate;

class GoodOfflineLog extends Base
{

    //列表
    public function getList()
    {

        $param = $this->request->only(['start_date' => '',"type"=>1,'companyNo' => '','supplierNo' => '','relaComNo' =>
         '', "spuCode"=>'',"good_name"=>'','end_date' => '', 'creater' => '', 'page' => 1,'size' => 15], 'post', 'trim');

        $where = [["a.type","=",$param["type"]]];
        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['a.addtime', 'between', [$param['start_date'], $param['end_date']]];
        if ($param['creater'] != '') $where[] = ['a.creater', 'like', '%' . $param['creater'] . '%'];
		if ($param['spuCode'] != '') $where[] = ['a.spuCode', 'like', '%' . $param['spuCode'] . '%'];
        if ($param['good_name'] != '') $where[] = ['a.good_name', 'like', '%' . $param['good_name'] . '%'];
        if ($param['companyNo'] != '') $where[] = ['b.companyNo', 'like', '%' . $param['companyNo'] . '%'];
        if ($param['supplierNo'] != '') $where[] = ['b.supplierNo', 'like', '%' . $param['supplierNo'] . '%'];

        $count = Db::name('good_offline_log')
            ->alias("a")
            ->leftJoin("good_basic b","a.spuCode=b.spuCode")
            ->where($where)
            ->count('a.id');
        $list = Db::name('good_offline_log')
            ->alias("a")
            ->field('a.id,a.spuCode,a.good_name,a.creater,a.addtime,a.createrid,b.companyNo,b.supplierNo')
            ->leftJoin("good_basic b","a.spuCode=b.spuCode")
            ->where($where)
            ->order('a.addtime', 'desc')
            ->page($param['page'], $param['size'])
            ->select()
            ->toArray();
        $userCommon=\app\admin\common\User::getIns();
		 $supplierInfo = $userCommon->handle('getCodeAndName',['code'=>array_merge(array_column($list,'companyNo'),array_column($list,'supplierNo'))]);
		 foreach ($list as &$value){
		 	$value['companyName'] = $supplierInfo["data"][$value['companyNo']]??"";
		 	$value['supplierName'] = $supplierInfo["data"][$value['supplierNo']]??"";
		 }
        return json_show(0, "获取成功", ['list' => $list, 'count' => $count]);

    }

    //详情
    public function getDetail()
    {

        $id = $this->request->post('id', null, 'trim');

        $val = Validate::rule(['id' => 'require|number|gt:0']);

        if (!$val->check(['id' => $id])) return error_show(1004, $val->getError());
        else {
            $res = Db::name('good_offline_log')
                ->alias('gol')
                ->field('gol.*,ri.result')
                ->where('gol.id', $id)
                ->leftJoin('result_info ri', 'ri.result_code=gol.offline_reason')
                ->find();

            $res['children_list'] = Db::name('good_platform')
                ->alias('gp')
                ->field('gp.id,gp.skuCode,p.platform_name,g.creater purchease,gp.creater')
                ->where(['gp.spuCode' => $res['spuCode']])
                ->whereIn('gp.skuCode', $res['skuCodes'])
                ->leftJoin('platform p', 'p.id=gp.platform_code')
                ->leftJoin('good g', 'g.spuCode=gp.spuCode')
                ->select()
                ->toArray();

            return app_show(0, "获取成功", $res);
        }

    }

}