DiyPro.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace app\adminapi\controller\v1\diy;
  3. use app\adminapi\controller\AuthController;
  4. use app\services\diy\DiyProServices;
  5. use app\services\product\product\StoreProductServices;
  6. use think\facade\App;
  7. class DiyPro extends AuthController
  8. {
  9. public function __construct(App $app, DiyProServices $services)
  10. {
  11. parent::__construct($app);
  12. $this->services = $services;
  13. }
  14. public function getList()
  15. {
  16. return app('json')->success($this->services->getList());
  17. }
  18. public function getInfo($id = 0)
  19. {
  20. if ($id == 0) return app('json')->fail('参数错误');
  21. return app('json')->success($this->services->getInfo($id));
  22. }
  23. public function saveInfo($id = 0)
  24. {
  25. $data = $this->request->postMore([
  26. ['name', ''],
  27. ['title', ''],
  28. ['value', ''],
  29. ['type', 1],
  30. ['cover_image', ''],
  31. ['is_show', 0],
  32. ['is_bg_color', 0],
  33. ['is_bg_pic', 0],
  34. ['bg_tab_val', 0],
  35. ['color_picker', ''],
  36. ['bg_pic', ''],
  37. ['is_diy', 1],
  38. ['is_pro', 1],
  39. ['type', 2],
  40. ]);
  41. $value = is_string($data['value']) ? json_decode($data['value'], true) : $data['value'];
  42. foreach ($value as &$item) {
  43. if ($item['name'] === 'goodList') {
  44. if (isset($item['selectConfig']['list'])) {
  45. unset($item['selectConfig']['list']);
  46. }
  47. if (isset($item['goodsList']['list']) && is_array($item['goodsList']['list'])) {
  48. $limitMax = config('database.page.limitMax', 50);
  49. if (isset($item['numConfig']['val']) && isset($item['tabConfig']['tabVal']) && $item['tabConfig']['tabVal'] == 0 && $item['numConfig']['val'] > $limitMax) {
  50. return app('json')->fail('您设置得商品个数超出系统限制,最大限制' . $limitMax . '个商品');
  51. }
  52. $item['goodsList']['ids'] = array_column($item['goodsList']['list'], 'id');
  53. unset($item['goodsList']['list'], $item['productList']['list']);
  54. }
  55. } elseif ($item['name'] === 'articleList') {
  56. if (isset($item['selectList']['list']) && is_array($item['selectList']['list'])) {
  57. unset($item['selectList']['list']);
  58. }
  59. } elseif ($item['name'] === 'promotionList') {
  60. if (isset($item['tabConfig']['list']) && $item['tabConfig']['list']) {
  61. $list = $item['tabConfig']['list'];
  62. foreach ($list as &$tabValue) {
  63. if (isset($tabValue['goodsList']['list']) && is_array($tabValue['goodsList']['list'])) {
  64. $limitMax = config('database.page.limitMax', 50);
  65. if (isset($tabValue['numConfig']['val']) && isset($tabValue['tabConfig']['tabVal']) && $tabValue['tabConfig']['tabVal'] == 0 && $tabValue['numConfig']['val'] > $limitMax) {
  66. return app('json')->fail('您设置得商品个数超出系统限制,最大限制' . $limitMax . '个商品');
  67. }
  68. $tabValue['goodsList']['ids'] = array_column($tabValue['goodsList']['list'], 'id');
  69. }
  70. unset($tabValue['goodsList']['list'], $item['productList']['list']);
  71. }
  72. $item['tabConfig']['list'] = $list;
  73. }
  74. } elseif ($item['name'] === 'newVip') {
  75. unset($item['newVipList']['list']);
  76. } elseif ($item['name'] === 'shortVideo') {
  77. unset($item['videoList']);
  78. }
  79. }
  80. $data['value'] = json_encode($value);
  81. $data['version'] = uniqid();
  82. return app('json')->success($id ? '修改成功' : '保存成功', ['id' => $this->services->saveInfo($id, $data)]);
  83. }
  84. public function delInfo($id)
  85. {
  86. $this->services->delInfo($id);
  87. return app('json')->success('删除成功');
  88. }
  89. public function setInfoStatus($id)
  90. {
  91. return app('json')->success($this->services->setInfoStatus($id));
  92. }
  93. public function getProduct()
  94. {
  95. $where = $this->request->getMore([
  96. ['cate_id', []],//搜索分类
  97. ['salesOrder', ''],//销量排序
  98. ['priceOrder', ''],//价格排序
  99. ['store_label_id', []],//标签ID
  100. ['ids', []],//商品ID
  101. ]);
  102. $where['is_show'] = 1;
  103. $where['is_del'] = 0;
  104. [$page, $limit] = $this->services->getPageValue();
  105. $list = app()->make(StoreProductServices::class)->getSearchList($where, $page, $limit, ['id,store_name,cate_id,image,IFNULL(sales, 0) + IFNULL(ficti, 0) as sales,price,stock,activity,ot_price,spec_type,recommend_image,unit_name,is_vip,vip_price']);
  106. return app('json')->success($list);
  107. }
  108. public function updateName($id = 0)
  109. {
  110. [$name] = $this->request->postMore([
  111. ['name', '']
  112. ], true);
  113. if (!$name) return app('json')->fail('请输入名称');
  114. $this->services->updateName($id, $name);
  115. return app('json')->success('修改成功');
  116. }
  117. public function exportDIYData($id)
  118. {
  119. $value = $this->services->exportDIYData($id);
  120. $filename = 'DIY数据_' . date('YmdHis', time()) . '.txt';
  121. return app('json')->success('导出成功', ['value' => $value, 'filename' => $filename]);
  122. }
  123. public function importDIYData()
  124. {
  125. // 获取文件
  126. $file = $this->request->file('file');
  127. if (!$file) return app('json')->fail('请上传文件');
  128. // 获取文件的临时路径
  129. $tempPath = $file->getRealPath();
  130. // 使用文件流读取内容
  131. $content = file_get_contents($tempPath);
  132. // 保存内容
  133. $this->services->importDIYData($content);
  134. return app('json')->success('导入成功');
  135. }
  136. }