Goods.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\admin\controller;
  13. use app\model\goods\Goods as GoodsModel;
  14. use app\model\goods\Config as GoodsConfigModel;
  15. use app\model\goods\GoodsEvaluate;
  16. use app\model\message\Message;
  17. use extend\Poster;
  18. /**
  19. * 商品管理 控制器
  20. */
  21. class Goods extends BaseAdmin
  22. {
  23. /******************************* 正常商品列表及相关操作 ***************************/
  24. /**
  25. * 商品列表
  26. */
  27. public function lists()
  28. {
  29. $goods_model = new GoodsModel();
  30. if (request()->isAjax()) {
  31. $page_index = input('page', 1);
  32. $page_size = input('page_size', PAGE_LIST_ROWS);
  33. $search_text = input('search_text', "");
  34. $search_text_type = input('search_text_type', "goods_name");
  35. $goods_state = input('goods_state', "");
  36. $verify_state = input('verify_state', "");
  37. $category_id = input('category_id', "");
  38. $brand_id = input('goods_brand', '');
  39. $goods_attr_class = input("goods_attr_class", "");
  40. $site_id = input("site_id", "");
  41. $goods_class = input('goods_class', "");
  42. $condition = [];
  43. if (!empty($search_text)) {
  44. $condition[] = [ $search_text_type, 'like', '%' . $search_text . '%' ];
  45. }
  46. if ($goods_class !== "") {
  47. $condition[] = [ 'goods_class', '=', $goods_class ];
  48. }
  49. if ($goods_state !== '') {
  50. $condition[] = [ 'goods_state', '=', $goods_state ];
  51. }
  52. if ($verify_state !== '') {
  53. $condition[] = [ 'verify_state', '=', $verify_state ];
  54. }
  55. if (!empty($category_id)) {
  56. $condition[] = [ 'category_id|category_id_1|category_id_2|category_id_3', '=', $category_id ];
  57. }
  58. if ($brand_id) {
  59. $condition[] = [ 'brand_id', '=', $brand_id ];
  60. }
  61. if ($goods_attr_class) {
  62. $condition[] = [ 'goods_attr_class', '=', $goods_attr_class ];
  63. }
  64. if (!empty($site_id)) {
  65. $condition[] = [ 'site_id', '=', $site_id ];
  66. }
  67. $res = $goods_model->getGoodsPageList($condition, $page_index, $page_size);
  68. return $res;
  69. } else {
  70. $verify_state = $goods_model->getVerifyState();
  71. $arr = [];
  72. foreach ($verify_state as $k => $v) {
  73. // 过滤已审核状态
  74. if ($k != 1) {
  75. $total = $goods_model->getGoodsTotalCount([ [ 'verify_state', '=', $k ] ]);
  76. $total = $total['data'];
  77. $arr[] = [
  78. 'state' => $k,
  79. 'value' => $v,
  80. 'count' => $total
  81. ];
  82. }
  83. }
  84. $verify_state = $arr;
  85. $this->assign("verify_state", $verify_state);
  86. return $this->fetch('goods/lists');
  87. }
  88. }
  89. /**
  90. * 刷新审核状态商品数量
  91. */
  92. public function refreshVerifyStateCount()
  93. {
  94. if (request()->isAjax()) {
  95. $goods_model = new GoodsModel();
  96. $verify_state = $goods_model->getVerifyState();
  97. $arr = [];
  98. foreach ($verify_state as $k => $v) {
  99. // 过滤已审核状态
  100. if ($k != 1) {
  101. $total = $goods_model->getGoodsTotalCount([ [ 'verify_state', '=', $k ] ]);
  102. $total = $total['data'];
  103. $arr[] = [
  104. 'state' => $k,
  105. 'value' => $v,
  106. 'count' => $total
  107. ];
  108. }
  109. }
  110. $verify_state = $arr;
  111. return $verify_state;
  112. }
  113. }
  114. /**
  115. * 获取SKU商品列表
  116. * @return \multitype
  117. */
  118. public function getGoodsSkuList()
  119. {
  120. if (request()->isAjax()) {
  121. $goods_id = input("goods_id", 0);
  122. $goods_model = new GoodsModel();
  123. $res = $goods_model->getGoodsSkuList([ [ 'goods_id', '=', $goods_id ] ], 'sku_id,sku_name,price,stock,sale_num,sku_image,spec_name');
  124. return $res;
  125. }
  126. }
  127. /******************************* 违规下架商品列表及相关操作 ***************************/
  128. /**
  129. * 违规下架
  130. */
  131. public function lockup()
  132. {
  133. if (request()->isAjax()) {
  134. $verify_state_remark = input("verify_state_remark", 0);
  135. $goods_ids = input("goods_ids", 0);
  136. $goods_model = new GoodsModel();
  137. $res = $goods_model->lockup([ [ 'goods_id', 'in', $goods_ids ] ], $verify_state_remark,$goods_ids);
  138. $this->addLog("商品违规下架id:" . $goods_ids . "原因:" . $verify_state_remark);
  139. return $res;
  140. }
  141. }
  142. /**
  143. * 获取商品违规或审核失败说明
  144. * @return \multitype
  145. */
  146. public function getVerifyStateRemark()
  147. {
  148. if (request()->isAjax()) {
  149. $goods_id = input("goods_id", 0);
  150. $goods_model = new GoodsModel();
  151. $res = $goods_model->getGoodsInfo([ [ 'goods_id', '=', $goods_id ], [ 'verify_state', 'in', [ -2, 10 ] ] ], 'verify_state_remark');
  152. return $res;
  153. }
  154. }
  155. /******************************* 待审核商品列表及相关操作 ***************************/
  156. /**
  157. * 商品审核
  158. */
  159. public function verifyOn()
  160. {
  161. if (request()->isAjax()) {
  162. $goods_ids = input("goods_ids", 0);
  163. $verify_state = input("verify_state", -2);
  164. $verify_state_remark = input("verify_state_remark", '');
  165. $goods_model = new GoodsModel();
  166. $res = $goods_model->modifyVerifyState($goods_ids, $verify_state, $verify_state_remark);
  167. return $res;
  168. }
  169. }
  170. /**
  171. * 审核设置
  172. */
  173. public function verifyConfig()
  174. {
  175. if (request()->isAjax()) {
  176. $is_open = input("is_open", 0);
  177. $data = [
  178. 'is_open' => $is_open
  179. ];
  180. $goods_config = new GoodsConfigModel();
  181. $res = $goods_config->setVerifyConfig($data);
  182. return $res;
  183. } else {
  184. $goods_config = new GoodsConfigModel();
  185. $goods_verify_info = $goods_config->getVerifyConfig();
  186. $goods_verify_info = $goods_verify_info['data'];
  187. $this->assign("goods_verify_info", $goods_verify_info['value']);
  188. return $this->fetch('goods/verify_config');
  189. }
  190. }
  191. /******************************* 商品评价列表及相关操作 ***************************/
  192. /**
  193. * 商品评价
  194. */
  195. public function evaluateList()
  196. {
  197. if (request()->isAjax()) {
  198. $page_index = input('page', 1);
  199. $page_size = input('limit', PAGE_LIST_ROWS);
  200. $site_id = input("site_id", "");
  201. $explain_type = input('explain_type', ''); //1好评2中评3差评
  202. $search_text = input('search_text', "");
  203. $search_type = input('search_type', "sku_name");
  204. $condition = [];
  205. //评分类型
  206. if ($explain_type != "") {
  207. $condition[] = [ "explain_type", "=", $explain_type ];
  208. }
  209. if (!empty($search_text)) {
  210. if (!empty($search_type)) {
  211. $condition[] = [ $search_type, 'like', '%' . $search_text . '%' ];
  212. } else {
  213. $condition[] = [ 'sku_name', 'like', '%' . $search_text . '%' ];
  214. }
  215. }
  216. if (!empty($site_id)) {
  217. $condition[] = [ 'site_id', '=', $site_id ];
  218. }
  219. $evaluate_model = new GoodsEvaluate();
  220. $res = $evaluate_model->getEvaluatePageList($condition, $page_index, $page_size);
  221. return $res;
  222. } else {
  223. return $this->fetch('goods/evaluate_list');
  224. }
  225. }
  226. /**
  227. * 评价删除
  228. */
  229. public function deleteEvaluate()
  230. {
  231. if (request()->isAjax()) {
  232. $id = input('id', '');
  233. $evaluate_model = new GoodsEvaluate();
  234. $res = $evaluate_model->deleteEvaluate($id);
  235. $this->addLog("删除商品评价id:" . $id);
  236. return $res;
  237. }
  238. }
  239. /**
  240. * 商品推广
  241. * return
  242. */
  243. public function goodsUrl()
  244. {
  245. $goods_id = input('goods_id', '');
  246. $goods_model = new GoodsModel();
  247. $goods_sku_info = $goods_model->getGoodsSkuInfo([ [ 'goods_id', '=', $goods_id ] ], 'sku_id,goods_name');
  248. $goods_sku_info = $goods_sku_info['data'];
  249. $res = $goods_model->qrcode($goods_sku_info['sku_id'], $goods_sku_info['goods_name']);
  250. return $res;
  251. }
  252. /**
  253. * 商品预览
  254. * return
  255. */
  256. public function goodsPreview()
  257. {
  258. $goods_id = input('goods_id', '');
  259. $goods_model = new GoodsModel();
  260. $goods_sku_info = $goods_model->getGoodsSkuInfo([ [ 'goods_id', '=', $goods_id ] ], 'sku_id,goods_name');
  261. $goods_sku_info = $goods_sku_info['data'];
  262. $res = $goods_model->qrcode($goods_sku_info['sku_id'], $goods_sku_info['goods_name']);
  263. return $res;
  264. }
  265. }