Comment.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\virtualevaluation\shop\controller;
  11. use addon\virtualevaluation\model\VirtualEvaluation;
  12. use addon\virtualevaluation\model\VirtualStock;
  13. use app\model\express\ExpressTemplate as ExpressTemplateModel;
  14. use app\model\goods\Goods;
  15. use app\model\goods\Goods as GoodsModel;
  16. use app\model\goods\GoodsCategory as GoodsCategoryModel;
  17. use app\model\goods\GoodsLabel as GoodsLabelModel;
  18. use app\model\goods\GoodsService as GoodsServiceModel;
  19. use app\model\upload\Album;
  20. use app\shop\controller\BaseShop;
  21. /**
  22. * 虚拟评价
  23. * Class Virtualgoods
  24. * @package app\shop\controller
  25. */
  26. class Comment extends BaseShop
  27. {
  28. public function goodsLists()
  29. {
  30. $stockalarm = input('stockalarm', 0);
  31. $goods_model = new GoodsModel();
  32. if (request()->isAjax()) {
  33. $page_index = input('page', 1);
  34. $page_size = input('page_size', PAGE_LIST_ROWS);
  35. $search_text = input('search_text', "");
  36. $goods_state = input('goods_state', "");
  37. $start_sale = input('start_sale', 0);
  38. $end_sale = input('end_sale', 0);
  39. $start_price = input('start_price', 0);
  40. $end_price = input('end_price', 0);
  41. $goods_class = input('goods_class', "");
  42. $label_id = input('label_id', "");
  43. $order = input('order', '');
  44. $sort = input('sort', 'asc');
  45. $order_by = 'create_time desc';
  46. if ($order != '') {
  47. if ($order == 'sort') {
  48. $order_by = $order . ' ' . $sort . ',create_time desc';
  49. } else {
  50. $order_by = $order . ' ' . $sort;
  51. }
  52. }
  53. $promotion_type = input('promotion_type', "");
  54. $condition = [ [ 'is_delete', '=', 0 ], [ 'site_id', '=', $this->site_id ] ];
  55. if (!empty($search_text)) {
  56. $condition[] = [ 'goods_name', 'like', '%' . $search_text . '%' ];
  57. }
  58. $category_id = input('category_id', "");
  59. if (!empty($category_id)) {
  60. $condition[] = [ 'category_id', 'like', '%,' . $category_id . ',%' ];
  61. }
  62. if ($goods_class !== "") {
  63. $condition[] = [ 'goods_class', '=', $goods_class ];
  64. }
  65. if (!empty($label_id)) {
  66. $condition[] = [ 'label_id', '=', $label_id ];
  67. }
  68. if (!empty($promotion_type)) {
  69. $condition[] = [ 'promotion_addon', 'like', "%{$promotion_type}%" ];
  70. }
  71. // 上架状态
  72. if ($goods_state !== '') {
  73. $condition[] = [ 'goods_state', '=', $goods_state ];
  74. }
  75. if (!empty($start_sale)) $condition[] = [ 'sale_num', '>=', $start_sale ];
  76. if (!empty($end_sale)) $condition[] = [ 'sale_num', '<=', $end_sale ];
  77. if (!empty($start_price)) $condition[] = [ 'price', '>=', $start_price ];
  78. if (!empty($end_price)) $condition[] = [ 'price', '<=', $end_price ];
  79. // 查询库存预警的商品
  80. if ($stockalarm) {
  81. $stock_alarm = $goods_model->getGoodsStockAlarm($this->site_id);
  82. if (!empty($stock_alarm[ 'data' ])) {
  83. $condition[] = [ 'goods_id', 'in', $stock_alarm[ 'data' ] ];
  84. } else {
  85. return success(0, '', [ 'page_count' => 1, 'count' => 0, 'list' => [] ]);
  86. }
  87. }
  88. $field = 'goods_id,goods_name,site_id,site_name,goods_image,goods_state,price,goods_stock,goods_stock_alarm,create_time,sale_num,is_virtual,goods_class,is_fenxiao,fenxiao_type,promotion_addon,sku_id,is_consume_discount,discount_config,discount_method,sort,evaluate,evaluate_shaitu,success_evaluate_num,fail_evaluate_num,wait_evaluate_num';
  89. $res = $goods_model->getGoodsPageList($condition, $page_index, $page_size, $order_by, $field);
  90. $goods_promotion_type = event('GoodsPromotionType');
  91. if (!empty($res[ 'data' ][ 'list' ])) {
  92. foreach ($res[ 'data' ][ 'list' ] as $k => $v) {
  93. $res[ 'data' ][ 'list' ][ $k ][ 'goods_stock' ] = numberFormat($res[ 'data' ][ 'list' ][ $k ][ 'goods_stock' ]);
  94. $res[ 'data' ][ 'list' ][ $k ][ 'sale_num' ] = numberFormat($res[ 'data' ][ 'list' ][ $k ][ 'sale_num' ]);
  95. if (!empty($v[ 'promotion_addon' ])) {
  96. $v[ 'promotion_addon' ] = json_decode($v[ 'promotion_addon' ], true);
  97. foreach ($v[ 'promotion_addon' ] as $ck => $cv) {
  98. foreach ($goods_promotion_type as $gk => $gv) {
  99. if ($gv[ 'type' ] == $ck) {
  100. $res[ 'data' ][ 'list' ][ $k ][ 'promotion_addon_list' ][] = $gv;
  101. break;
  102. }
  103. }
  104. }
  105. }
  106. }
  107. }
  108. return $res;
  109. } else {
  110. $this->forthMenu();
  111. $goods_state = input('state', '');
  112. $this->assign('goods_state', $goods_state);
  113. //获取一级商品分类
  114. $goods_category_model = new GoodsCategoryModel();
  115. $condition = [
  116. [ 'pid', '=', 0 ],
  117. [ 'site_id', '=', $this->site_id ]
  118. ];
  119. $goods_category_list = $goods_category_model->getCategoryList($condition, 'category_id,category_name,level,commission_rate');
  120. $goods_category_list = $goods_category_list[ 'data' ];
  121. $this->assign("goods_category_list", $goods_category_list);
  122. // 商品分组
  123. $goods_label_model = new GoodsLabelModel();
  124. $label_list = $goods_label_model->getLabelList([ [ 'site_id', '=', $this->site_id ] ], 'id,label_name', 'create_time desc')[ 'data' ];
  125. $this->assign("label_list", $label_list);
  126. // 商品服务
  127. $goods_service_model = new GoodsServiceModel();
  128. $service_list = $goods_service_model->getServiceList([ [ 'site_id', '=', $this->site_id ] ], 'id,service_name,icon')[ 'data' ];
  129. $this->assign("service_list", $service_list);
  130. //获取运费模板
  131. $express_template_model = new ExpressTemplateModel();
  132. $express_template_list = $express_template_model->getExpressTemplateList([ [ 'site_id', "=", $this->site_id ] ], 'template_id,template_name', 'is_default desc');
  133. $express_template_list = $express_template_list[ 'data' ];
  134. $this->assign("express_template_list", $express_template_list);
  135. //判断会员价插件
  136. $memberprice_is_exit = addon_is_exit('memberprice', $this->site_id);
  137. $this->assign('memberprice_is_exit', $memberprice_is_exit);
  138. // 判断采集插件
  139. $goodsgrab_is_exit = addon_is_exit('goodsgrab', $this->site_id);
  140. $this->assign('goodsgrab_is_exit', $goodsgrab_is_exit);
  141. // 营销活动
  142. $goods_promotion_type = event('GoodsPromotionType');
  143. $this->assign('promotion_type', $goods_promotion_type);
  144. $this->assign('virtualcard_exit', addon_is_exit('virtualcard', $this->site_id));
  145. $this->assign('stockalarm', $stockalarm);
  146. return $this->fetch("comment/goods_lists");
  147. }
  148. }
  149. /**
  150. * 创建虚拟评价
  151. * Class Virtualgoods
  152. * @package app\shop\controller
  153. */
  154. public function setting()
  155. {
  156. $goods_ids = input('goods_ids', 0);
  157. $goods_model = new Goods();
  158. $goods_data = $goods_model->getGoodsList([ [ 'goods_id', 'in', $goods_ids ], [ 'site_id', '=', $this->site_id ] ], 'sku_id,goods_id,goods_name,price,goods_image');
  159. $data = json_decode(input('field'), true);
  160. if (!empty($data[ 'member_headimg' ])) {
  161. $data[ 'member_headimg' ] = $data[ 'member_headimg' ][ 0 ];
  162. }
  163. $pingjia_img = '';
  164. if (!empty($data[ 'pingjia_img' ])) {
  165. foreach ($data[ 'pingjia_img' ] as $k => $val) {
  166. $pingjia_img = $pingjia_img . ',' . $val;
  167. }
  168. $pingjia_img = trim($pingjia_img, ',');
  169. }
  170. $data[ 'pingjia_img' ] = $pingjia_img;
  171. $data[ 'goods_data' ] = '';
  172. if (!empty($goods_data[ 'data' ])) {
  173. $data[ 'goods_data' ] = $goods_data[ 'data' ];
  174. }
  175. $VirtualEvaluation_model = new VirtualEvaluation();
  176. $res = $VirtualEvaluation_model->addGoodsComment($data, $this->site_id);
  177. return $res;
  178. }
  179. /**
  180. * 虚拟评价库
  181. * Class Virtualgoods
  182. * @package app\shop\controller
  183. */
  184. public function stock()
  185. {
  186. if (request()->isAjax()) {
  187. $stock_model = new VirtualStock();
  188. $page = input('page', 1);
  189. $page_size = input('page_size', PAGE_LIST_ROWS);
  190. $condition = [
  191. 'site_id' => $this->site_id
  192. ];
  193. $stock_data = $stock_model->getStockPageList($condition, $page, $page_size, '', '');
  194. return $stock_data;
  195. } else {
  196. $this->forthMenu();
  197. return $this->fetch("comment/stock");
  198. }
  199. }
  200. /**
  201. * 添加虚拟评价库
  202. * Class Virtualgoods
  203. * @package app\shop\controller
  204. */
  205. public function addStock()
  206. {
  207. $stock_model = new VirtualStock();
  208. $stock_name = input('stock_name', '');
  209. $data = [
  210. 'stock_name' => $stock_name,
  211. 'site_id' => $this->site_id,
  212. 'create_time' => time(),
  213. ];
  214. return $stock_model->addStock($data);
  215. }
  216. /**
  217. * 删除虚拟评价库
  218. * Class Virtualgoods
  219. * @package app\shop\controller
  220. */
  221. public function deleteStock()
  222. {
  223. $stock_model = new VirtualStock();
  224. $stock_id = input('stock_id', '');
  225. return $stock_model->deleteStock($stock_id, $this->site_id);
  226. }
  227. /**
  228. * 获取虚拟评价库信息
  229. * Class Virtualgoods
  230. * @package app\shop\controller
  231. */
  232. public function getStockInfo()
  233. {
  234. $stock_model = new VirtualStock();
  235. $stock_id = input('stock_id', '');
  236. return $stock_model->getStockInfo($stock_id, $this->site_id);
  237. }
  238. /**
  239. * 编辑虚拟评价库
  240. * Class Virtualgoods
  241. * @package app\shop\controller
  242. */
  243. public function editStock()
  244. {
  245. $stock_model = new VirtualStock();
  246. $stock_id = input('stock_id', 0);
  247. $stock_name = input('stock_name', '');
  248. $data = [
  249. 'stock_name' => $stock_name,
  250. 'modify_time' => time(),
  251. 'stock_id' => $stock_id
  252. ];
  253. return $stock_model->updateStock($data, $this->site_id);
  254. }
  255. /**
  256. * 获取虚拟评价库里的评论信息
  257. * Class Virtualgoods
  258. * @package app\shop\controller
  259. */
  260. public function getContents()
  261. {
  262. $stock_id = input('stock_id', 0);
  263. if (request()->isAjax()) {
  264. $stock_model = new VirtualStock();
  265. $page = input('page', 1);
  266. $page_size = input('page_size', PAGE_LIST_ROWS);
  267. $condition = [
  268. 'site_id' => $this->site_id,
  269. 'stock_id' => $stock_id,
  270. ];
  271. $stock_data = $stock_model->getContentsPageList($condition, $page, $page_size, '', '');
  272. return $stock_data;
  273. } else {
  274. $this->assign('stock_id', $stock_id);
  275. return $this->fetch("comment/contents");
  276. }
  277. }
  278. /**
  279. * 添加虚拟评价库评论
  280. * Class Virtualgoods
  281. * @package app\shop\controller
  282. */
  283. public function addContent()
  284. {
  285. $stock_model = new VirtualStock();
  286. $stock_id = input('stock_id', 0);
  287. $content = input('content', '');
  288. $data = [
  289. 'stock_id' => $stock_id,
  290. 'site_id' => $this->site_id,
  291. 'content' => $content,
  292. 'create_time' => time(),
  293. ];
  294. return $stock_model->addContent($data);
  295. }
  296. /**
  297. * 删除虚拟评价库评论
  298. * Class Virtualgoods
  299. * @package app\shop\controller
  300. */
  301. public function deleteContent()
  302. {
  303. $stock_model = new VirtualStock();
  304. $id = input('id', 0);
  305. return $stock_model->deleteContent($id, $this->site_id);
  306. }
  307. /**
  308. * 获取虚拟评价库评论信息
  309. * Class Virtualgoods
  310. * @package app\shop\controller
  311. */
  312. public function getContentInfo()
  313. {
  314. $stock_model = new VirtualStock();
  315. $id = input('id', 0);
  316. return $stock_model->getContentInfo($id, $this->site_id);
  317. }
  318. /**
  319. * 修改虚拟评价库评论信息
  320. * Class Virtualgoods
  321. * @package app\shop\controller
  322. */
  323. public function editContent()
  324. {
  325. $stock_model = new VirtualStock();
  326. $id = input('id', 0);
  327. $content = input('content', '');
  328. $data = [
  329. 'content' => $content,
  330. 'id' => $id
  331. ];
  332. return $stock_model->editContentInfo($data, $this->site_id);
  333. }
  334. /**
  335. * 批量添加单个商品的评论
  336. * Class Virtualgoods
  337. * @package app\shop\controller
  338. */
  339. public function batchAdd()
  340. {
  341. $album_model = new Album();
  342. $stock_model = new VirtualStock();
  343. $goods_id = input('goods_id', 0);
  344. if (request()->isAjax()) {
  345. $start_time = date_to_time(input('start_time'));
  346. $end_time = date_to_time(input('end_time'));
  347. if ($start_time == '' || $end_time == '' || $end_time < $start_time) return error('-1', '时间格式不正确');
  348. $virtual_evaluation_model = new VirtualEvaluation();
  349. $data = [
  350. 'goods_id' => input('goods_id', 0),
  351. 'number' => input('number', 0),
  352. 'pingfen' => input('pingfen', ''),
  353. 'start_time' => $start_time,
  354. 'end_time' => $end_time,
  355. 'album_id' => input('album_id', 0),
  356. 'stock_id' => input('stock_id', 0)
  357. ];
  358. $res = $virtual_evaluation_model->batghAdd($data, $this->site_id);
  359. return $res;
  360. } else {
  361. //获取相册
  362. $album_list = $album_model->getAlbumList([ [ 'site_id', '=', $this->site_id ], [ 'num', '>', 0 ] ]);
  363. $this->assign('album_list', $album_list[ 'data' ]);
  364. //获取评论库
  365. $stock_list = $stock_model->getStockList([ [ 'site_id', '=', $this->site_id ], [ 'num', '>', 0 ] ]);
  366. $this->assign('stock_list', $stock_list[ 'data' ]);
  367. $this->assign('goods_id', $goods_id);
  368. return $this->fetch("comment/batchadd");
  369. }
  370. }
  371. }