GoodsVideo.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2018/9/12
  6. * Time: 9:23
  7. */
  8. namespace app\backend\modules\goods\models;
  9. use app\common\services\Utils;
  10. /**
  11. * Class GoodsVideo
  12. * @package app\backend\modules\goods\models
  13. */
  14. class GoodsVideo extends \app\common\models\goods\GoodsVideo
  15. {
  16. public static function store($goods_id, $data)
  17. {
  18. $model = static::where('goods_id', $goods_id)->first();
  19. if (is_null($model)) {
  20. $model = new static;
  21. }
  22. $attr['goods_id'] = $goods_id;
  23. //商品视频地址
  24. $attr['goods_video'] = $data['goods_video']?:'';
  25. $attr['video_image'] = $data['video_image']?:'';
  26. $model->setRawAttributes($attr);
  27. return $model->save();
  28. }
  29. public static function relationSave($goodsId, $data, $operate = '')
  30. {
  31. if (!$goodsId) {
  32. return false;
  33. }
  34. if (!$data) {
  35. return false;
  36. }
  37. $model = self::getThis($goodsId, $operate);
  38. //判断deleted
  39. if ($operate == 'deleted') {
  40. return $model->delete();
  41. }
  42. $attr['goods_id'] = $goodsId;
  43. //商品视频地址
  44. $attr['goods_video'] = $data['goods_video'];
  45. $attr['video_image'] = $data['video_image'];
  46. $model->setRawAttributes($attr);
  47. return $model->save();
  48. }
  49. public static function getThis($goodsId, $operate)
  50. {
  51. $model = false;
  52. if ($operate != 'created') {
  53. $model = static::where(['goods_id' => $goodsId])->first();
  54. }
  55. !$model && $model = new static;
  56. return $model;
  57. }
  58. /**
  59. * 无法使用 exec 已被禁用
  60. */
  61. public function test($data)
  62. {
  63. if ($data['goods_video']) {
  64. $path = storage_path('app'.DIRECTORY_SEPARATOR.'public'.DIRECTORY_SEPARATOR.'goods'.DIRECTORY_SEPARATOR.'video-image'.DIRECTORY_SEPARATOR.\YunShop::app()->uniacid.DIRECTORY_SEPARATOR.date('Y', time()).DIRECTORY_SEPARATOR.date('m', time()));
  65. Utils::mkdirs($path);
  66. $file_path = self::getFile($path);
  67. $command = 'ffmpeg -i '.$data['goods_video'].' -y -f image2 -t 0.003 -s 352x240 '.$file_path;
  68. exec($command, $output,$return_val);
  69. if ($return_val !== 0) {
  70. $data['status'] = 1;
  71. } else {
  72. $data['video_image'] = substr($file_path, strpos($file_path, 'app'));
  73. }
  74. }
  75. }
  76. public static function getFile($path)
  77. {
  78. $str = str_replace('.', '-', uniqid('YZ',true));
  79. return $path.DIRECTORY_SEPARATOR.$str.'.jpg';
  80. }
  81. }