<?php
/**
* Created by PhpStorm.
* User: admin
* Date: 2018/8/16
* Time: 17:00
*/
namespace App\Http\Controllers\Manage\RecommendBook;
use App\Http\Controllers\Manage\BaseController;
use App\Modules\RecommendBook\Models\Recommend;
use App\Modules\RecommendBook\Models\RecomVersion;
use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;
use DB;
class RecoBookInputController extends BaseController {
public function uploadRecommendBooks(Request $request) {
if(!$request->has('channel')) {
return response()->error('PARAM_EMPTY');
}
$channel = $request->input('channel');
if(!in_array($channel,['1','2',1,2])){
return response()->error('PARAM_ERROR');
}
$file_obj = $request->file('file');
$spreadsheet = IOFactory::load($file_obj->path());
$sheetData = $spreadsheet->getActiveSheet(0)->toArray(null, true, true, true);
$arr_length = count($sheetData);
$valid_data = array();
$hayStack = array('loop','hot','live','recom','new_recom');
/*var_dump($sheetData);
die;*/
DB::beginTransaction();
try{
$version = RecomVersion::create(array(
'channel' => $channel,
'status'=>0
));
for($i=2;$i<=$arr_length;$i++) {
if(!in_array($sheetData[$i]['A'],$hayStack)) {
DB::rollBack();
return ['code'=>300,'msg'=>'A'.($i+1).'单元格数据有误,请更正!'];
}
$valid_data[] = array(
'bid'=>$sheetData[$i]['C'],
'channel'=>$channel,
'sequence'=>$sheetData[$i]['D'],
'subject'=>$sheetData[$i]['A'],
'version_id'=>$version->id,
'is_show'=>0,
'created_at'=>date('Y-m-d H:i:s'),
'updated_at'=>date('Y-m-d H:i:s')
);
}
Recommend::insert($valid_data);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return ['code'=>301,'msg'=>$e->getMessage()];
}
return response()->success();
}
public function getRecentRecommend(Request $request) {
if(!$request->has('channel')) {
return response()->error('PARAM_EMPTY');
}
$channel = $request->input('channel');
if(!in_array($channel,['1','2',1,2])){
return response()->error('PARAM_ERROR');
}
$recom_ver = RecomVersion::where([
['channel','=',$channel],
['status','=',0],
])
->orderBy('created_at','desc')
->first();
$recommend = array();
if($recom_ver){
$recommend = Recommend::leftjoin('book_configs','book_configs.id','=','recommend_books.bid')
->select('recommend_books.bid','recommend_books.channel','recommend_books.sequence','recommend_books.subject','recommend_books.is_show','book_configs.book_name')
->where('recommend_books.version_id',$recom_ver->id)
->get();
}
$recommend_valid = array();
foreach ($recommend as $key=>$value) {
$subject = '';
switch ($value->subject){
case 'loop':$subject = '轮播图';break;
case 'hot':$subject = '热门推荐';break;
case 'live':$subject = '神书直播';break;
case 'recom':$subject = '编辑推荐';break;
case 'new_recom':$subject = '新书推荐';break;
default:;
}
$channel= '';
switch ($value->channel){
case '1':$channel = '男频';break;
case '2':$channel = '女频';break;
default: ;
}
$recommend_valid[] = array(
'book_name'=>$value->book_name,
'subject'=>$subject,
'channel'=>$channel,
'bid'=>$value->bid,
'sequence'=>$value->sequence
);
}
$res = ['version'=>$recom_ver?$recom_ver->id:'','recommend'=>$recommend_valid];
return response()->success($res);
}
public function setRecommend(Request $request) {
if(!$request->has('channel')) {
return response()->error('PARAM_EMPTY');
}
if(!$request->has('version')) {
return response()->error('PARAM_EMPTY');
}
$channel = $request->input('channel');
$version = $request->input('version');
if(!in_array($channel,['1','2',1,2])){
return response()->error('PARAM_ERROR');
}
$recom_version = RecomVersion::where([
['channel','=',$channel],
['id','=',$version]
])->first();
if(!$recom_version){
return response()->error('PARAM_ERROR');
}
DB::beginTransaction();
try{
$recommend_old = Recommend::where([['is_show','=',1],['channel','=',$channel]])->get();
foreach($recommend_old as $item) {
$item->is_show = 0;
$item->save();
}
$recommends = Recommend::where('version_id',$version)->get();
foreach ($recommends as $recommend) {
$recommend->is_show = 1;
$recommend->save();
}
$recom_version->status= 1;
$recom_version->save();
$unResured = RecomVersion::where([['status','=',0],['channel','=',$channel]])->get();
foreach ($unResured as $each)
{
$each->status = 1;
$each->save();
}
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return ['code'=>301,'msg'=>$e->getMessage()];
}
return response()->success();
}
public function getEnsuredList(Request $request){
if(!$request->has('channel')) {
return response()->error('PARAM_EMPTY');
}
$channel = $request->input('channel');
if(!in_array($channel,['1','2',1,2])){
return response()->error('PARAM_ERROR');
}
$recommend = Recommend::leftjoin('book_configs','book_configs.id','=','recommend_books.bid')
->select('recommend_books.bid','recommend_books.channel','recommend_books.sequence','recommend_books.subject','recommend_books.is_show','book_configs.book_name')
->where([
['recommend_books.is_show','=',1],
['recommend_books.channel','=',$channel],
])
->get();
$recommend_valid = array();
foreach ($recommend as $key=>$value) {
$subject = '';
switch ($value->subject){
case 'loop':$subject = '轮播图';break;
case 'hot':$subject = '热门推荐';break;
case 'live':$subject = '神书直播';break;
case 'recom':$subject = '编辑推荐';break;
case 'new_recom':$subject = '新书推荐';break;
default:;
}
$channel= '';
switch ($value->channel){
case '1':$channel = '男频';break;
case '2':$channel = '女频';break;
default: ;
}
$recommend_valid[] = array(
'book_name'=>$value->book_name,
'subject'=>$subject,
'channel'=>$channel,
'bid'=>$value->bid,
'sequence'=>$value->sequence
);
}
return response()->success($recommend_valid);
}
}