DistAppearanceTemplate.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Models;
  3. use Dcat\Admin\Traits\HasDateTimeFormatter;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Support\Facades\DB;
  6. class DistAppearanceTemplate extends Model
  7. {
  8. use HasDateTimeFormatter;
  9. protected $table = 'dist_appearance_template';
  10. /*
  11. * 把原始模板复制给分销商
  12. */
  13. public static function copyTemplateToDist($appearanceId,$distId) {
  14. $appearanceId = intval($appearanceId);
  15. $distId = intval($distId);
  16. $count = self::where('dist_id', $distId)->where('appearance_id', $appearanceId)->count();
  17. if ($count > 0) {
  18. return;
  19. }
  20. //复制
  21. DB::statement("
  22. INSERT INTO `dist_appearance_template` (`dist_id`, `appearance_id`, `file_name`, `file_path`, `content`, `created_at`, `updated_at`, `parent_id`, `file_type`,`template_code`)
  23. SELECT {$distId}, `appearance_id`, `file_name`, `file_path`, `content`, NOW(), NOW(), `parent_id`, `file_type`,`template_code`
  24. FROM `dist_appearance_template`
  25. WHERE `dist_id` = 0 AND `appearance_id` = {$appearanceId};
  26. ");
  27. //更新parent_id
  28. $rows = self::select('id','file_path','file_name','parent_id')->where('dist_id',$distId)->where('appearance_id',$appearanceId)->get();
  29. if ($rows) {
  30. $updateData = [];
  31. foreach ($rows as $row) {
  32. $parentId = $row->parent_id;
  33. if ($parentId > 0) {
  34. $newParentId = self::findParentId($rows, $row->file_path, $row->file_name);
  35. if ($newParentId > -1) {
  36. $updateData[] = ['id' => $row->id, 'parent_id' => $newParentId];
  37. }
  38. }
  39. }
  40. //批量更新
  41. if ($updateData) {
  42. self::upsert($updateData,['id'],['parent_id']);
  43. }
  44. }
  45. }
  46. private static function findParentId(&$rows,$filePath,$fileName) {
  47. foreach ($rows as $row) {
  48. $filePath = str_replace('/'.$fileName,'',$filePath);
  49. if ($row->file_path == $filePath) {
  50. return $row->id;
  51. }
  52. }
  53. return -1;
  54. }
  55. }