123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- <?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);
- }
- }
|