| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | <?php/** * Created by PhpStorm. * User: zhao * Date: 2017/11/17 * Time: 下午4:44 */namespace  App\Modules\Book\Services;use App\Modules\Book\Models\BookConfig;use App\Modules\Book\Models\CpExceptBook;use DB;class CpExceptBookService{    /**     * 获取列表     * @param array $where     */    public static function getList(array $where=[]){        $res = CpExceptBook::join('cp_users','cp_users.id','=','cp_except_book.cp_user_id')            ->select('cp_except_book.id','cp_except_book.bid','cp_except_book.book_name','cp_users.username');        if(isset($where['username']) && !empty($where['username'])){            $res->where('cp_users.username',$where['username']);        }        return $res->paginate(20);    }    /**     * 根据cp和书名获取图书信息     * @param string $cp     * @param string $name     * @return mixed     */    public static function getBookByCp(string $cp,string $name){        return BookConfig::join('books','book_configs.bid','=','books.id')->select('books.name','books.id')            ->where('book_configs.cp_source',$cp)            ->where('books.name','like','%'.$name.'%')            ->whereNotExists(function ($query){                $query->select('bid')->from('cp_except_book')->whereRaw('book_configs.bid=cp_except_book.bid');            })            ->get();    }    /**     * 添加     * @param array $info     * @return mixed     */    public static function create(array $info){        return CpExceptBook::create($info);    }    /**     * 获取派出的bid     * @param $id     * @return array     */    public static function getCpBidList(int $id):array {        if($id == 1){            return CpExceptBook::select('bid')->get()->pluck('bid')->all();        }        return CpExceptBook::where('cp_user_id',$id)->select('bid')->get()->pluck('bid')->all();    }    /**     * 是否已经加入排除     * @param int $cp_user_id     * @param int $bid     * @return bool     */    public static function isHadExcept(int $cp_user_id,int $bid){        $exist = CpExceptBook::where('cp_user_id',$cp_user_id)->where('bid',$bid)->first();        if($exist)            return true;        else            return false;    }    /***     * 获取所有cp     * @return mixed     */    public static function getAllcp(){        return DB::table('cp_users')->select('username','id')->get();    }    public static function deleteExcept(int $id){        CpExceptBook::where('id',$id)->delete();    }    public static function getBookCpList($oldname='',$newname=''){        $where = [];        if($oldname){            $where[] = ['books.name','like','%'.trim($oldname).'%'];        }        if($newname){            $where[] = ['book_configs.book_name','like','%'.trim($newname).'%'];        }        return BookConfig::join('books','books.id','=','book_configs.bid')            ->select('books.id','books.ly_bid','books.name as oldname','book_configs.book_name as newname','book_configs.cp_source','book_configs.is_on_shelf')            ->where($where)            ->paginate(20);    }    public static function editBookCp($bid,$cpid,$cpname){        BookConfig::where('bid',$bid)->update(['cp_source'=>$cpname]);        DB::table('cp_subs')->where('bid',$bid)->update([            'cp_user_id'=>$cpid,            'cp_source'=>$cpname,            'updated_at'=>date('Y-m-d H:i:s')        ]);    }    public static function cpDataStats($where,$whereIn,$group,$is_all=false){        $result =  DB::table('book_order_statistical')->join('book_configs','book_order_statistical.bid','book_configs.bid')            ->where($where);        if($whereIn){            $result->where('book_configs.bid',$whereIn);        }        if($group){            $result->select(                'book_configs.bid',                'book_configs.book_name',                'book_configs.cp_source',                'book_order_statistical.day',                'book_order_statistical.charge_balance',                DB::raw('left(book_order_statistical.day,7) as month'),                DB::raw('left(book_order_statistical.day,4) as year'));            foreach ($group as $v){                $result->groupBy($v);            }            //return $result;        }else{            $result->select(                'book_configs.bid',                'book_configs.book_name',                'book_configs.cp_source',                'book_order_statistical.day',                'book_order_statistical.charge_balance',                DB::raw('left(book_order_statistical.day,7) as month'),                DB::raw('left(book_order_statistical.day,4) as year')            );            if($is_all){                return $result->limit(10000)->get();            }else{                return $result->paginate(20);            }        }    }}
 |