RecoBookInputController.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: admin
  5. * Date: 2018/8/16
  6. * Time: 17:00
  7. */
  8. namespace App\Http\Controllers\Manage\RecommendBook;
  9. use App\Http\Controllers\Manage\BaseController;
  10. use App\Modules\RecommendBook\Models\Recommend;
  11. use App\Modules\RecommendBook\Models\RecomVersion;
  12. use Illuminate\Http\Request;
  13. use PhpOffice\PhpSpreadsheet\IOFactory;
  14. use DB;
  15. class RecoBookInputController extends BaseController {
  16. public function uploadRecommendBooks(Request $request) {
  17. if(!$request->has('channel')) {
  18. return response()->error('PARAM_EMPTY');
  19. }
  20. $channel = $request->input('channel');
  21. if(!in_array($channel,['1','2',1,2])){
  22. return response()->error('PARAM_ERROR');
  23. }
  24. $file_obj = $request->file('file');
  25. $spreadsheet = IOFactory::load($file_obj->path());
  26. $sheetData = $spreadsheet->getActiveSheet(0)->toArray(null, true, true, true);
  27. $arr_length = count($sheetData);
  28. $valid_data = array();
  29. $hayStack = array('loop','hot','live','recom','new_recom');
  30. /*var_dump($sheetData);
  31. die;*/
  32. DB::beginTransaction();
  33. try{
  34. $version = RecomVersion::create(array(
  35. 'channel' => $channel,
  36. 'status'=>0
  37. ));
  38. for($i=2;$i<=$arr_length;$i++) {
  39. if(!in_array($sheetData[$i]['A'],$hayStack)) {
  40. DB::rollBack();
  41. return ['code'=>300,'msg'=>'A'.($i+1).'单元格数据有误,请更正!'];
  42. }
  43. $valid_data[] = array(
  44. 'bid'=>$sheetData[$i]['C'],
  45. 'channel'=>$channel,
  46. 'sequence'=>$sheetData[$i]['D'],
  47. 'subject'=>$sheetData[$i]['A'],
  48. 'version_id'=>$version->id,
  49. 'is_show'=>0,
  50. 'created_at'=>date('Y-m-d H:i:s'),
  51. 'updated_at'=>date('Y-m-d H:i:s')
  52. );
  53. }
  54. Recommend::insert($valid_data);
  55. DB::commit();
  56. }catch (\Exception $e){
  57. DB::rollBack();
  58. return ['code'=>301,'msg'=>$e->getMessage()];
  59. }
  60. return response()->success();
  61. }
  62. public function getRecentRecommend(Request $request) {
  63. if(!$request->has('channel')) {
  64. return response()->error('PARAM_EMPTY');
  65. }
  66. $channel = $request->input('channel');
  67. if(!in_array($channel,['1','2',1,2])){
  68. return response()->error('PARAM_ERROR');
  69. }
  70. $recom_ver = RecomVersion::where([
  71. ['channel','=',$channel],
  72. ['status','=',0],
  73. ])
  74. ->orderBy('created_at','desc')
  75. ->first();
  76. $recommend = array();
  77. if($recom_ver){
  78. $recommend = Recommend::leftjoin('book_configs','book_configs.id','=','recommend_books.bid')
  79. ->select('recommend_books.bid','recommend_books.channel','recommend_books.sequence','recommend_books.subject','recommend_books.is_show','book_configs.book_name')
  80. ->where('recommend_books.version_id',$recom_ver->id)
  81. ->get();
  82. }
  83. $recommend_valid = array();
  84. foreach ($recommend as $key=>$value) {
  85. $subject = '';
  86. switch ($value->subject){
  87. case 'loop':$subject = '轮播图';break;
  88. case 'hot':$subject = '热门推荐';break;
  89. case 'live':$subject = '神书直播';break;
  90. case 'recom':$subject = '编辑推荐';break;
  91. case 'new_recom':$subject = '新书推荐';break;
  92. default:;
  93. }
  94. $channel= '';
  95. switch ($value->channel){
  96. case '1':$channel = '男频';break;
  97. case '2':$channel = '女频';break;
  98. default: ;
  99. }
  100. $recommend_valid[] = array(
  101. 'book_name'=>$value->book_name,
  102. 'subject'=>$subject,
  103. 'channel'=>$channel,
  104. 'bid'=>$value->bid,
  105. 'sequence'=>$value->sequence
  106. );
  107. }
  108. $res = ['version'=>$recom_ver?$recom_ver->id:'','recommend'=>$recommend_valid];
  109. return response()->success($res);
  110. }
  111. public function setRecommend(Request $request) {
  112. if(!$request->has('channel')) {
  113. return response()->error('PARAM_EMPTY');
  114. }
  115. if(!$request->has('version')) {
  116. return response()->error('PARAM_EMPTY');
  117. }
  118. $channel = $request->input('channel');
  119. $version = $request->input('version');
  120. if(!in_array($channel,['1','2',1,2])){
  121. return response()->error('PARAM_ERROR');
  122. }
  123. $recom_version = RecomVersion::where([
  124. ['channel','=',$channel],
  125. ['id','=',$version]
  126. ])->first();
  127. if(!$recom_version){
  128. return response()->error('PARAM_ERROR');
  129. }
  130. DB::beginTransaction();
  131. try{
  132. $recommend_old = Recommend::where([['is_show','=',1],['channel','=',$channel]])->get();
  133. foreach($recommend_old as $item) {
  134. $item->is_show = 0;
  135. $item->save();
  136. }
  137. $recommends = Recommend::where('version_id',$version)->get();
  138. foreach ($recommends as $recommend) {
  139. $recommend->is_show = 1;
  140. $recommend->save();
  141. }
  142. $recom_version->status= 1;
  143. $recom_version->save();
  144. $unResured = RecomVersion::where([['status','=',0],['channel','=',$channel]])->get();
  145. foreach ($unResured as $each)
  146. {
  147. $each->status = 1;
  148. $each->save();
  149. }
  150. DB::commit();
  151. }catch (\Exception $e){
  152. DB::rollBack();
  153. return ['code'=>301,'msg'=>$e->getMessage()];
  154. }
  155. return response()->success();
  156. }
  157. public function getEnsuredList(Request $request){
  158. if(!$request->has('channel')) {
  159. return response()->error('PARAM_EMPTY');
  160. }
  161. $channel = $request->input('channel');
  162. if(!in_array($channel,['1','2',1,2])){
  163. return response()->error('PARAM_ERROR');
  164. }
  165. $recommend = Recommend::leftjoin('book_configs','book_configs.id','=','recommend_books.bid')
  166. ->select('recommend_books.bid','recommend_books.channel','recommend_books.sequence','recommend_books.subject','recommend_books.is_show','book_configs.book_name')
  167. ->where([
  168. ['recommend_books.is_show','=',1],
  169. ['recommend_books.channel','=',$channel],
  170. ])
  171. ->get();
  172. $recommend_valid = array();
  173. foreach ($recommend as $key=>$value) {
  174. $subject = '';
  175. switch ($value->subject){
  176. case 'loop':$subject = '轮播图';break;
  177. case 'hot':$subject = '热门推荐';break;
  178. case 'live':$subject = '神书直播';break;
  179. case 'recom':$subject = '编辑推荐';break;
  180. case 'new_recom':$subject = '新书推荐';break;
  181. default:;
  182. }
  183. $channel= '';
  184. switch ($value->channel){
  185. case '1':$channel = '男频';break;
  186. case '2':$channel = '女频';break;
  187. default: ;
  188. }
  189. $recommend_valid[] = array(
  190. 'book_name'=>$value->book_name,
  191. 'subject'=>$subject,
  192. 'channel'=>$channel,
  193. 'bid'=>$value->bid,
  194. 'sequence'=>$value->sequence
  195. );
  196. }
  197. return response()->success($recommend_valid);
  198. }
  199. }