UserFolderController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. namespace App\Http\Controllers\V1;
  3. use App\Models\Product;
  4. use App\Models\UserCollect;
  5. use App\Models\UserFolder;
  6. use App\Models\UserFolderImage;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. /**
  10. * 用户文件夹
  11. */
  12. class UserFolderController extends Controller
  13. {
  14. public function __construct()
  15. {
  16. $this->user = auth('api')->user();
  17. $this->userId = $this->user ? $this->user->id : 0;
  18. //如果用户被删除,会自动退出登录
  19. if (!empty($this->user->deleted_at)) {
  20. $this->user->online = 0;
  21. $this->user->save();
  22. auth('api')->logout();
  23. }
  24. }
  25. /**
  26. * @return void
  27. * 新建文件夹
  28. */
  29. public function addFolder(Request $request){
  30. $params = $request->all();
  31. if(empty($params['name'])){
  32. return $this->error("名称不能为空!");
  33. }
  34. if(empty($params['type'])){
  35. return $this->error("类型不能为空!");
  36. }
  37. $params['user_id'] = $this->userId; // 用户ID
  38. $res = UserFolder::query()->create($params);
  39. if(!$res){
  40. return $this->error("创建失败!");
  41. }
  42. return $this->success();
  43. }
  44. /**
  45. * @return void
  46. * 文件夹列表
  47. */
  48. public function folderList(Request $request){
  49. $type = $request->get('type',1);
  50. $sort = $request->get('sort');
  51. $user_id = $request->get('user_id');
  52. if(empty($user_id)){
  53. $user_id = $this->userId;
  54. }
  55. $query = UserFolder::query();
  56. if($sort == "time"){
  57. $query->orderByDesc("created_at");
  58. }elseif ($sort == "letter"){
  59. $query->orderByRaw("CONVERT(`name` USING gbk) COLLATE gbk_chinese_ci");
  60. }else{
  61. $query->orderByDesc("id");
  62. }
  63. $list = $query->withCount('images')
  64. ->where('type',$type)
  65. ->where('user_id','=',$user_id)
  66. ->get();
  67. return $this->success($list);
  68. }
  69. /**
  70. * @return void
  71. * 文件夹详情
  72. */
  73. public function folderDetail(Request $request){
  74. $id = $request->get('id');
  75. if(!$id){
  76. return $this->error("缺少参数ID!");
  77. }
  78. $res = UserFolder::query()->where('id',$id)->first();
  79. return $this->success($res);
  80. }
  81. /**
  82. * @return void
  83. * 编辑文件夹
  84. */
  85. public function editFolder(Request $request){
  86. $params = $request->all();
  87. if(empty($params['id'])){
  88. return $this->error("缺少参数ID");
  89. }
  90. // if(empty($params['name'])){
  91. // return $this->error("标题不能为空!");
  92. // }
  93. DB::beginTransaction();
  94. try {
  95. $folder = UserFolder::query()->where('id',$params['id'])->first();
  96. if(!$folder){
  97. throw new \Exception("数据不存在!");
  98. }
  99. if(!empty($params['is_del'])){
  100. // 删除图片库
  101. UserFolderImage::query()->where('folder_id',$params['id'])->where('user_id',$this->userId)->delete();
  102. // 删除文件夹
  103. $folder->delete();
  104. }else{
  105. $folder->update($params);
  106. }
  107. DB::commit();
  108. }catch (\Exception $e){
  109. DB::rollBack();
  110. return $this->error($e->getMessage());
  111. }
  112. return $this->success();
  113. }
  114. /**
  115. * @return void
  116. * 移动文件
  117. */
  118. public function moveFile(Request $request){
  119. $params = $request->all();
  120. if(empty($params['folder_id'])){
  121. return $this->error("缺少文件夹ID");
  122. }
  123. // $params['product_ids'] = [1];
  124. if(empty($params['product_ids'])){
  125. return $this->error("文件ID");
  126. }
  127. $params['product_ids'] = explode(',',$params['product_ids']);
  128. DB::beginTransaction();
  129. try {
  130. $product = Product::query()->whereIn('id',$params['product_ids'])->select("id","image")->get();
  131. if($product){
  132. foreach ($product as $v){
  133. $data = [
  134. 'user_id'=>$this->userId,
  135. 'folder_id'=>$params['folder_id'],
  136. 'image'=>$v['image']
  137. ];
  138. UserFolderImage::query()->create($data); // 移动文件
  139. UserCollect::query()->where('product_id',$v['id'])->update(['is_arrange'=>1]); // 标识已整理的文件
  140. }
  141. }
  142. DB::commit();
  143. }catch (\Exception $e){
  144. DB::rollBack();
  145. return $this->error($e->getMessage());
  146. }
  147. return $this->success();
  148. }
  149. /**
  150. * @return void
  151. * 图片列表
  152. */
  153. public function imageList(Request $request){
  154. $id = $request->get('folder_id');
  155. $limit = $request->get('limit',10);
  156. $go = $request->get('go');
  157. if(!$id || !$go){
  158. return $this->error("缺少参数!");
  159. }
  160. $list = UserFolderImage::query()->where('folder_id','=',$id)->where('user_id',$this->userId)->paginate($limit);
  161. return $this->success(pages($list,$go));
  162. }
  163. }