MusicController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552
  1. <?php
  2. /**
  3. * 背景音乐管理
  4. */
  5. namespace app\admin\controller;
  6. use cmf\controller\AdminBaseController;
  7. use think\facade\Db;
  8. use think\db\Query;
  9. class MusicController extends AdminbaseController {
  10. /*分类列表*/
  11. public function classify(){
  12. $lists = Db::name('user_music_classify')
  13. ->where(function (Query $query) {
  14. $data = $this->request->param();
  15. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  16. if (!empty($keyword)) {
  17. $query->where('title', 'like', "%$keyword%");
  18. }
  19. })
  20. ->order("orderno,addtime DESC")
  21. ->paginate(20);
  22. $lists->each(function($v,$k){
  23. $v['img_url']=get_upload_path($v['img_url']);
  24. return $v;
  25. });
  26. //分页-->筛选条件参数
  27. $data = $this->request->param();
  28. $lists->appends($data);
  29. // 获取分页显示
  30. $page = $lists->render();
  31. $this->assign('lists', $lists);
  32. $this->assign("page", $page);
  33. return $this->fetch();
  34. }
  35. /*分类添加*/
  36. public function classify_add(){
  37. return $this->fetch();
  38. }
  39. /*分类添加提交*/
  40. public function classify_add_post(){
  41. if($this->request->isPost()) {
  42. $data = $this->request->param();
  43. $classify=Db::name("user_music_classify");
  44. $title=trim($data['title']);
  45. $url=$data['img_url'];
  46. $orderno=$data['orderno'];
  47. if($title==""){
  48. $this->error("请填写分类名称");
  49. }
  50. if($url==""){
  51. $this->error("请上传分类图标");
  52. }
  53. if(!is_numeric($orderno)){
  54. $this->error("排序号请填写数字");
  55. }
  56. if($orderno<0){
  57. $this->error("排序号必须大于0");
  58. }
  59. $isexit=$classify
  60. ->where("title='{$title}'")
  61. ->find();
  62. if($isexit){
  63. $this->error('该分类已存在');
  64. }
  65. $data['title']=$title;
  66. $data['orderno']=$orderno;
  67. $data['img_url']=$url;
  68. $data['addtime']=time();
  69. $result=$classify->insert($data);
  70. if($result){
  71. $this->success('添加成功','admin/Music/classify',3);
  72. }else{
  73. $this->error('添加失败');
  74. }
  75. }
  76. }
  77. /*分类删除*/
  78. public function classify_del(){
  79. $id = $this->request->param('id');
  80. if($id){
  81. $result=Db::name("user_music_classify")->where("id={$id}")->update(array("isdel"=>1));
  82. if($result){
  83. $this->success('删除成功');
  84. }else{
  85. $this->error('删除失败');
  86. }
  87. }else{
  88. $this->error('数据传入失败!');
  89. }
  90. }
  91. /*分类取消删除*/
  92. public function classify_canceldel(){
  93. $id = $this->request->param('id');
  94. if($id){
  95. $result=Db::name("user_music_classify")->where("id={$id}")->update(array("isdel"=>0));
  96. if($result){
  97. $this->success('取消成功');
  98. }else{
  99. $this->error('取消失败');
  100. }
  101. }else{
  102. $this->error('数据传入失败!');
  103. }
  104. }
  105. /*分类编辑*/
  106. public function classify_edit(){
  107. $id = $this->request->param('id');
  108. if($id){
  109. $info=Db::name("user_music_classify")->where("id={$id}")->find();
  110. $this->assign("classify_info",$info);
  111. }else{
  112. $this->error('数据传入失败!');
  113. }
  114. return $this->fetch();
  115. }
  116. /*分类编辑提交*/
  117. public function classify_edit_post(){
  118. if($this->request->isPost()) {
  119. $data = $this->request->param();
  120. $id=$data["id"];
  121. $title=$data["title"];
  122. $url=$data['img_url'];
  123. $orderno=$data["orderno"];
  124. if(!trim($title)){
  125. $this->error('分类标题不能为空');
  126. }
  127. if($url==""){
  128. $this->error("请上传分类图标");
  129. }
  130. if(!is_numeric($orderno)){
  131. $this->error("排序号请填写数字");
  132. }
  133. if($orderno<0){
  134. $this->error("排序号必须大于0");
  135. }
  136. $isexit=Db::name("user_music_classify")
  137. ->where("id!={$id} and title='{$title}'")
  138. ->find();
  139. if($isexit){
  140. $this->error('该分类已存在');
  141. }
  142. $result=Db::name("user_music_classify")
  143. ->update($data);
  144. if($result!==false){
  145. $this->success('修改成功');
  146. }else{
  147. $this->error('修改失败');
  148. }
  149. }
  150. }
  151. //分类排序
  152. public function classify_listorders(){
  153. $ids = $this->request->param('listorders');
  154. foreach ($ids as $key => $r) {
  155. $data['orderno'] = $r;
  156. Db::name("user_music_classify")->where(array('id' => $key))->update($data);
  157. }
  158. $status = true;
  159. if ($status) {
  160. $this->success("排序更新成功!");
  161. } else {
  162. $this->error("排序更新失败!");
  163. }
  164. }
  165. /*背景音乐*/
  166. public function index(){
  167. $lists = Db::name('user_music')
  168. ->where(function (Query $query) {
  169. $data = $this->request->param();
  170. $classify_id=isset($data['classify_id']) ? $data['classify_id']: '';
  171. if (!empty($classify_id)) {
  172. $query->where('classify_id', $classify_id);
  173. }
  174. $upload_type=isset($data['upload_type']) ? $data['upload_type']: '';
  175. if (!empty($upload_type)) {
  176. $query->where('upload_type', $upload_type);
  177. }
  178. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  179. if (!empty($keyword)) {
  180. $query->where('title', 'like', "%$keyword%");
  181. }
  182. })
  183. ->order("use_nums DESC")
  184. ->paginate(20);
  185. $lists->each(function($v,$k){
  186. $v['img_url']=get_upload_path($v['img_url']);
  187. $v['file_url']=get_upload_path($v['file_url']);
  188. $classify_title=Db::name("user_music_classify")->where("id={$v['classify_id']}")->find();
  189. if($classify_title){
  190. $v['classify_title']=$classify_title['title'];
  191. }else{
  192. $v['classify_title']='默认分类';
  193. }
  194. $userinfo=Db::name("user")
  195. ->field("user_nickname")
  196. ->where("id='$v[uploader]'")
  197. ->find();
  198. if(!$userinfo){
  199. $userinfo=['user_nickname'=>'用户不存在'];
  200. }
  201. $v['uploader_nickname']=$userinfo['user_nickname'];
  202. return $v;
  203. });
  204. //分页-->筛选条件参数
  205. $data = $this->request->param();
  206. $lists->appends($data);
  207. // 获取分页显示
  208. $page = $lists->render();
  209. //分类列表
  210. $classify=Db::name("user_music_classify")
  211. ->order("orderno")
  212. ->select();
  213. $this->assign('lists', $lists);
  214. $this->assign('classify', $classify);
  215. $this->assign("page", $page);
  216. return $this->fetch();
  217. }
  218. /*背景音乐添加*/
  219. public function music_add(){
  220. $classify=Db::name("user_music_classify")
  221. ->order("orderno")
  222. ->select();
  223. $this->assign('classify', $classify);
  224. return $this->fetch();
  225. }
  226. /*背景音乐添加保存*/
  227. public function music_add_post(){
  228. if($this->request->isPost()) {
  229. $data = $this->request->param();
  230. $data['addtime']=time();
  231. $data['upload_type']=1;
  232. $data['uploader']=get_current_admin_id(); //当前管理员id
  233. $img_url=$data['img_url'];
  234. $title=$data['title'];
  235. $author=$data['author'];
  236. $length=$data['length'];
  237. $use_nums=$data['use_nums'];
  238. if($title==""){
  239. $this->error("请填写音乐名称");
  240. }
  241. // 判断该音乐是否存在
  242. $isexist=Db::name("user_music")
  243. ->where(["title"=>$title])
  244. ->find();
  245. if($isexist){
  246. $this->error("该音乐已经存在");
  247. }
  248. if($author==""){
  249. $this->error("请填写演唱者");
  250. }
  251. if($img_url==""){
  252. $this->error("请上传音乐封面");
  253. }
  254. if($length==""){
  255. $this->error("请填写音乐时长");
  256. }
  257. if(!strpos($length,":")){
  258. $this->error("请按照格式填写音乐时长");
  259. }
  260. if(!is_numeric($use_nums)||$use_nums<0){
  261. $this->error("使用次数请写正整数");
  262. }
  263. $files["file"]=$_FILES["file"];
  264. $type='mp3';
  265. $uploadSetting = cmf_get_upload_setting();
  266. $extensions=$uploadSetting['file_types']['audio']['extensions'];
  267. $allow=explode(",",$extensions);
  268. if (!get_file_suffix($files['file']['name'],$allow)){
  269. $this->error("请上传正确格式的音频文件或检查上传设置中音频设置的文件类型");
  270. }
  271. $rs=adminUploadFiles($files,$type);
  272. if($rs['code']!=0){
  273. $this->error($rs['msg']);
  274. }
  275. $data['file_url']=$rs['filepath'];
  276. unset($data['file']);
  277. $result=Db::name("user_music")->insert($data);
  278. if($result){
  279. $this->success('添加成功','admin/music/music_add',3);
  280. }else{
  281. $this->error('添加失败');
  282. }
  283. }
  284. }
  285. /*音乐试听*/
  286. public function music_listen(){
  287. $id = $this->request->param('id');
  288. if(!$id||$id==""||!is_numeric($id)){
  289. $this->error("加载失败");
  290. }else{
  291. //获取音乐信息
  292. $info=Db::name("user_music")->where("id={$id}")->find();
  293. $this->assign("info",$info);
  294. }
  295. return $this->fetch();
  296. }
  297. /*音乐删除*/
  298. public function music_del(){
  299. $id = $this->request->param('id');
  300. if(!$id||$id==""||!is_numeric($id)){
  301. $this->error("操作失败");
  302. }else{
  303. $count=Db::name("user_video")->where("music_id={$id}")->count();
  304. if($count>0){
  305. $result=Db::name("user_music")->where("id={$id}")->update(array("isdel"=>1));
  306. }else{
  307. $result=Db::name("user_music")->where("id={$id}")->delete();
  308. }
  309. if($result){
  310. $this->success('删除成功');
  311. }else{
  312. $this->error('删除失败');
  313. }
  314. }
  315. }
  316. /*取消删除*/
  317. public function music_canceldel(){
  318. $id = $this->request->param('id');
  319. if(!$id||$id==""||!is_numeric($id)){
  320. $this->error("操作失败");
  321. }else{
  322. $result=Db::name("user_music")->where("id={$id}")->update(array("isdel"=>0));
  323. if($result){
  324. $this->success('取消成功');
  325. }else{
  326. $this->error('取消失败');
  327. }
  328. }
  329. }
  330. /*音乐编辑*/
  331. public function music_edit(){
  332. $id = $this->request->param('id');
  333. if($id==""){
  334. $this->error("操作失败");
  335. }else{
  336. $music=Db::name("user_music");
  337. $info=$music->where("id={$id}")->find();
  338. $this->assign("info",$info);
  339. $classify=Db::name("user_music_classify")->order("orderno")->select();
  340. $this->assign("classify",$classify);
  341. }
  342. return $this->fetch();
  343. }
  344. public function music_edit_post(){
  345. if($this->request->isPost()) {
  346. $data = $this->request->param();
  347. $music=Db::name("user_music");
  348. $data['updatetime']=time();
  349. $id=$data['id'];
  350. $img_url=$data['img_url'];
  351. $title=$data['title'];
  352. $author=$data['author'];
  353. $length=$data['length'];
  354. $use_nums=$data['use_nums'];
  355. if($title==""){
  356. $this->error("请填写音乐名称");
  357. }
  358. //判断该音乐是否存在
  359. $isexist=Db::name("user_music")
  360. ->where([['title','=',$title],['id','<>',$id]])
  361. ->find();
  362. if($isexist){
  363. $this->error("该音乐已经存在");
  364. }
  365. if($author==""){
  366. $this->error("请填写演唱者");
  367. }
  368. if($img_url==""){
  369. $this->error("请上传音乐封面");
  370. }
  371. if($length==""){
  372. $this->error("请填写音乐时长");
  373. }
  374. if(!strpos($length,":")){
  375. $this->error("请按照格式填写音乐时长");
  376. }
  377. if(!is_numeric($use_nums)||$use_nums<0){
  378. $this->error("使用次数请写正整数");
  379. }
  380. if($_FILES){
  381. $files["file"]=$_FILES["file"];
  382. $type='mp3';
  383. $uploadSetting = cmf_get_upload_setting();
  384. $extensions=$uploadSetting['file_types']['audio']['extensions'];
  385. $allow=explode(",",$extensions);
  386. if (!get_file_suffix($files['file']['name'],$allow)){
  387. $this->error("请上传正确格式的音频文件或检查上传设置中音频设置的文件类型");
  388. }
  389. $rs=adminUploadFiles($files,$type);
  390. if($rs['code']!=0){
  391. $this->error($rs['msg']);
  392. }
  393. $data['file_url']=$rs['filepath'];
  394. }
  395. unset($data['file']);
  396. $result=$music->update($data);
  397. if($result!==false){
  398. $this->success('修改成功');
  399. }else{
  400. $this->error('修改失败');
  401. }
  402. }
  403. }
  404. }