Discount.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\discount\model;
  11. use app\model\BaseModel;
  12. use app\model\goods\Goods;
  13. use app\model\system\Cron;
  14. use think\facade\Db;
  15. /**
  16. * 限时折扣
  17. */
  18. class Discount extends BaseModel
  19. {
  20. private $discount_status = [
  21. 0 => '未开始',
  22. 1 => '进行中',
  23. 2 => '已结束',
  24. -1 => '已关闭(手动)',
  25. ];
  26. /**
  27. * 限时折扣状态
  28. */
  29. public function getDiscountStatus()
  30. {
  31. return $this->discount_status;
  32. }
  33. /**
  34. * 添加限时折扣活动
  35. * @param unknown $data
  36. */
  37. public function addDiscount($data)
  38. {
  39. $cron = new Cron();
  40. $discount_goods = $data[ 'goods_data' ];
  41. foreach ($discount_goods as $k => $v) {
  42. //查询是否存在活动
  43. $promotion_info = Db::name('promotion_discount')->where([
  44. [ 'start_time|end_time', 'between', [ $data[ 'start_time' ], $data[ 'end_time' ] ] ],
  45. [ 'site_id', '=', $data[ 'site_id' ] ],
  46. [ 'status', 'in', '0,1' ],
  47. [ 'goods_id', '=', $v[ 'goods_id' ] ]
  48. ])->find();
  49. if (!empty($promotion_info)) {
  50. return $this->error('', "有商品在当前时间段内存在限时折扣活动");
  51. }
  52. $promotion_info = Db::name('promotion_discount')->where([ [ 'start_time', '<', $data[ 'start_time' ] ], [ 'end_time', '>', $data[ 'end_time' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'status', 'in', '0,1' ], [ 'goods_id', '=', $v[ 'goods_id' ] ] ])->find();
  53. if (!empty($promotion_info)) {
  54. return $this->error('', "有商品在当前时间段内存在限时折扣活动");
  55. }
  56. }
  57. model('promotion_discount')->startTrans();
  58. try {
  59. foreach ($discount_goods as $key => $item) {
  60. $discount_data = [
  61. 'site_id' => $data[ 'site_id' ],
  62. 'discount_name' => $data[ 'discount_name' ],
  63. 'remark' => $data[ 'remark' ],
  64. 'start_time' => $data[ 'start_time' ],
  65. 'end_time' => $data[ 'end_time' ],
  66. 'create_time' => time(),
  67. 'goods_id' => $item[ 'goods_id' ],
  68. 'discount_price' => $item[ 'sku_list' ][ 0 ][ 'discount_price' ]
  69. ];
  70. if ($discount_data[ 'start_time' ] <= time()) {
  71. $discount_data[ 'status' ] = 1;//直接启动
  72. $discount_id = model('promotion_discount')->add($discount_data);
  73. $cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $discount_data[ 'end_time' ], $discount_id);
  74. } else {
  75. $discount_data[ 'status' ] = 0;
  76. $discount_id = model('promotion_discount')->add($discount_data);
  77. $cron->addCron(1, 0, "限时折扣开启", "OpenDiscount", $data[ 'start_time' ], $discount_id);
  78. $cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $data[ 'end_time' ], $discount_id);
  79. }
  80. $goods = new Goods();
  81. foreach ($item[ 'sku_list' ] as $k => $v) {
  82. $sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'is_delete', '=', 0 ], [ 'goods_state', '=', 1 ] ], 'goods_id, sku_id, sku_name,price,sku_image');
  83. $discount_goods_count = model('promotion_discount_goods')->getCount([ 'discount_id' => $discount_id, 'goods_id' => $sku_info[ 'goods_id' ], 'sku_id' => $sku_info[ 'sku_id' ] ]);
  84. if (!empty($sku_info) && $discount_goods_count == 0) {
  85. $discount_goods_data = [
  86. 'discount_id' => $discount_id,
  87. 'start_time' => $discount_data[ 'start_time' ],
  88. 'end_time' => $discount_data[ 'end_time' ],
  89. 'goods_id' => $sku_info[ 'goods_id' ],
  90. 'sku_id' => $sku_info[ 'sku_id' ],
  91. 'price' => $sku_info[ 'price' ],
  92. 'discount_price' => $v[ 'discount_price' ],
  93. 'sku_name' => $sku_info[ 'sku_name' ],
  94. 'sku_image' => $sku_info[ 'sku_image' ]
  95. ];
  96. model('promotion_discount_goods')->add($discount_goods_data);
  97. if ($discount_data[ 'status' ] == 1) {
  98. model('goods_sku')->update([ 'promotion_type' => 1, 'discount_price' => $v[ 'discount_price' ], 'start_time' => $discount_data[ 'start_time' ], 'end_time' => $discount_data[ 'end_time' ] ], [ [ 'sku_id', '=', $v[ 'sku_id' ] ] ]);
  99. }
  100. // 更新营销商品活动标识
  101. $goods->modifyPromotionAddon($sku_info[ 'goods_id' ], [ 'discount' => $discount_id ]);
  102. }
  103. }
  104. }
  105. model('promotion_discount')->commit();
  106. return $this->success();
  107. } catch (\Exception $e) {
  108. model('promotion_discount')->rollback();
  109. return $this->error('', $e->getMessage());
  110. }
  111. }
  112. /**
  113. * 修改限时折扣活动
  114. * @param unknown $data //传输数据(针对已经开始之后活动不能修改时间)
  115. */
  116. public function editDiscount($data)
  117. {
  118. $discount_id = $data[ 'discount_id' ];
  119. //针对未开始的活动进行设置
  120. $cron = new Cron();
  121. //查询是否存在活动
  122. $promotion_info = Db::name('promotion_discount')->where([
  123. [ 'start_time|end_time', 'between', [ $data[ 'start_time' ], $data[ 'end_time' ] ] ],
  124. [ 'site_id', '=', $data[ 'site_id' ] ],
  125. [ 'discount_id', '<>', $discount_id ],
  126. [ 'status', 'in', '0,1' ],
  127. [ 'goods_id', '=', $data[ 'goods_id' ] ]
  128. ])->find();
  129. if (!empty($promotion_info)) {
  130. return $this->error('', "当前时间段内存在限时折扣活动");
  131. }
  132. $promotion_info = Db::name('promotion_discount')->where([
  133. [ 'start_time', '<', $data[ 'start_time' ] ],
  134. [ 'end_time', '>', $data[ 'end_time' ] ],
  135. [ 'site_id', '=', $data[ 'site_id' ] ],
  136. [ 'discount_id', '<>', $discount_id ],
  137. [ 'status', 'in', '0,1' ],
  138. [ 'goods_id', '=', $data[ 'goods_id' ] ]
  139. ])->find();
  140. if (!empty($promotion_info)) {
  141. return $this->error('', "当前时间段内存在限时折扣活动");
  142. }
  143. if ($data[ 'start_time' ] <= time()) {
  144. $sku_list = $data[ 'sku_list' ];
  145. unset($data[ 'sku_list' ]);
  146. if ($sku_list) $data[ 'discount_price' ] = $sku_list[ 0 ][ 'discount_price' ];
  147. $data[ 'status' ] = 1;//直接启动
  148. $res = model('promotion_discount')->update($data, [ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $data[ 'site_id' ] ] ]);
  149. model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ] ]);
  150. foreach ($sku_list as $k => $v) {
  151. $sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $v[ 'sku_id' ] ] ], 'goods_id, sku_id, sku_name,price,sku_image');
  152. if (!empty($sku_info)) {
  153. $discount_goods_data = [
  154. 'discount_id' => $discount_id,
  155. 'start_time' => $data[ 'start_time' ],
  156. 'end_time' => $data[ 'end_time' ],
  157. 'goods_id' => $sku_info[ 'goods_id' ],
  158. 'sku_id' => $sku_info[ 'sku_id' ],
  159. 'price' => $sku_info[ 'price' ],
  160. 'discount_price' => $v[ 'discount_price' ],
  161. 'sku_name' => $sku_info[ 'sku_name' ],
  162. 'sku_image' => $sku_info[ 'sku_image' ]
  163. ];
  164. model('promotion_discount_goods')->add($discount_goods_data);
  165. model('goods_sku')->update([ 'promotion_type' => 1, 'discount_price' => $v[ 'discount_price' ], 'start_time' => $data[ 'start_time' ], 'end_time' => $data[ 'end_time' ] ], [ [ 'sku_id', '=', $v[ 'sku_id' ] ] ]);
  166. }
  167. }
  168. if (!empty($data[ 'cancel_sku_list' ])) {
  169. foreach ($data[ 'cancel_sku_list' ] as $kk => $vv) {
  170. $sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $vv[ 'sku_id' ] ] ], 'goods_id, sku_id, sku_name,price,sku_image');
  171. model('goods_sku')->update([ 'promotion_type' => 1, 'discount_price' => $sku_info [ 'price' ] ], [ [ 'sku_id', '=', $sku_info [ 'sku_id' ] ] ]);
  172. }
  173. }
  174. //活动商品启动
  175. $this->cronCloseDiscount($discount_id);
  176. $this->cronOpenDiscount($discount_id);
  177. $cron->deleteCron([ [ 'event', '=', 'OpenDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
  178. $cron->deleteCron([ [ 'event', '=', 'CloseDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
  179. $cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $data[ 'end_time' ], $discount_id);
  180. } else {
  181. $sku_list = $data[ 'sku_list' ];
  182. unset($data[ 'sku_list' ]);
  183. unset($data[ 'discount_id' ]);
  184. if ($sku_list) $data[ 'discount_price' ] = $sku_list[ 0 ][ 'discount_price' ];
  185. $res = model('promotion_discount')->update($data, [ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $data[ 'site_id' ] ] ]);
  186. model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ] ]);
  187. foreach ($sku_list as $k => $v) {
  188. $sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $v[ 'sku_id' ] ] ], 'goods_id, sku_id, sku_name,price,sku_image');
  189. if (!empty($sku_info)) {
  190. $discount_goods_data = [
  191. 'discount_id' => $discount_id,
  192. 'start_time' => $data[ 'start_time' ],
  193. 'end_time' => $data[ 'end_time' ],
  194. 'goods_id' => $sku_info[ 'goods_id' ],
  195. 'sku_id' => $sku_info[ 'sku_id' ],
  196. 'price' => $sku_info[ 'price' ],
  197. 'discount_price' => $v[ 'discount_price' ],
  198. 'sku_name' => $sku_info[ 'sku_name' ],
  199. 'sku_image' => $sku_info[ 'sku_image' ]
  200. ];
  201. model('promotion_discount_goods')->add($discount_goods_data);
  202. }
  203. }
  204. $cron->deleteCron([ [ 'event', '=', 'OpenDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
  205. $cron->deleteCron([ [ 'event', '=', 'CloseDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
  206. $cron->addCron(1, 0, "限时折扣开启", "OpenDiscount", $data[ 'start_time' ], $discount_id);
  207. $cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $data[ 'end_time' ], $discount_id);
  208. }
  209. return $this->success($res);
  210. }
  211. /**
  212. * 手动关闭限时折扣
  213. * @param unknown $discount_id
  214. * @param unknown $site_id
  215. * @return multitype:string
  216. */
  217. public function closeDiscount($discount_id, $site_id)
  218. {
  219. $discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'start_time,status');
  220. if (!empty($discount_info)) {
  221. //针对正在进行的活动
  222. if ($discount_info[ 'status' ] == 1) {
  223. $res = model('promotion_discount')->update([ 'status' => -1 ], [ [ 'discount_id', '=', $discount_id ] ]);
  224. // 删除商品营销活动标识
  225. $this->deleteGoodsPromotionAddon($discount_id);
  226. //商品恢复原价
  227. Db::name('promotion_discount_goods')->alias('npdg')
  228. ->leftjoin("goods_sku ngs", "npdg.sku_id = ngs.sku_id")
  229. ->where([ [ 'npdg.discount_id', '=', $discount_id ] ])
  230. ->update(
  231. [
  232. "ngs.discount_price" => Db::raw('ngs.price'),
  233. "ngs.promotion_type" => 0,
  234. "ngs.start_time" => 0,
  235. "ngs.end_time" => 0
  236. ]);
  237. return $this->success($res);
  238. } else {
  239. return $this->error("", "正在进行的活动才能进行关闭操作");
  240. }
  241. } else {
  242. return $this->error("", "活动不存在");
  243. }
  244. }
  245. /**
  246. * 启动限时折扣事件
  247. * @param unknown $discount_id
  248. */
  249. public function cronOpenDiscount($discount_id)
  250. {
  251. $discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ] ], 'start_time,status');
  252. if (!empty($discount_info)) {
  253. if ($discount_info[ 'start_time' ] <= time() && $discount_info[ 'status' ] != 1) {
  254. $res = model('promotion_discount')->update([ 'status' => 1 ], [ [ 'discount_id', '=', $discount_id ] ]);
  255. // 删除商品营销活动标识
  256. $this->deleteGoodsPromotionAddon($discount_id);
  257. Db::name('promotion_discount_goods')->alias('npdg')
  258. ->leftjoin("goods_sku ngs", "npdg.sku_id = ngs.sku_id")
  259. ->where([ [ 'npdg.discount_id', '=', $discount_id ] ])
  260. ->update(
  261. [
  262. "ngs.discount_price" => Db::raw('npdg.discount_price'),
  263. "ngs.promotion_type" => 1,
  264. "ngs.start_time" => Db::raw('npdg.start_time'),
  265. "ngs.end_time" => Db::raw('npdg.end_time')
  266. ]);
  267. return $this->success($res);
  268. } else {
  269. return $this->error("", "限时折扣活动已开启或者关闭");
  270. }
  271. } else {
  272. return $this->error("", "限时折扣活动不存在");
  273. }
  274. }
  275. /**
  276. * 结束限时折扣事件
  277. * @param unknown $discount_id
  278. */
  279. public function cronCloseDiscount($discount_id)
  280. {
  281. $discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ] ], 'start_time,status');
  282. if (!empty($discount_info)) {
  283. //针对正在进行的活动
  284. if ($discount_info[ 'status' ] == 1) {
  285. $res = model('promotion_discount')->update([ 'status' => 2 ], [ [ 'discount_id', '=', $discount_id ] ]);
  286. // 删除商品营销活动标识
  287. $this->deleteGoodsPromotionAddon($discount_id);
  288. //商品恢复原价
  289. Db::name('promotion_discount_goods')->alias('npdg')
  290. ->leftjoin("goods_sku ngs", "npdg.sku_id = ngs.sku_id")
  291. ->where([ [ 'npdg.discount_id', '=', $discount_id ] ])
  292. ->update(
  293. [
  294. "ngs.discount_price" => Db::raw('ngs.price'),
  295. "ngs.promotion_type" => 0,
  296. "ngs.start_time" => 0,
  297. "ngs.end_time" => 0
  298. ]);
  299. return $this->success($res);
  300. } else {
  301. return $this->error("", "正在进行的活动才能进行关闭操作");
  302. }
  303. } else {
  304. return $this->error("", "活动不存在");
  305. }
  306. }
  307. /**
  308. * 删除限时折扣活动(针对未进行中)
  309. * @param unknown $discount_id
  310. */
  311. public function deleteDiscount($discount_id, $site_id)
  312. {
  313. $res = model('promotion_discount')->delete([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ], [ 'status', '<>', 1 ] ]);
  314. if ($res) {
  315. // 删除商品营销活动标识
  316. $this->deleteGoodsPromotionAddon($discount_id);
  317. model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ] ]);
  318. return $this->success($res);
  319. } else {
  320. return $this->error('', "正在进行中或者权限不足");
  321. }
  322. }
  323. /**
  324. * 删除限时折扣商品
  325. */
  326. public function deleteDiscountGoods($discount_id, $sku_id, $site_id)
  327. {
  328. $discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'status');
  329. if (!empty($discount_info)) {
  330. // 删除商品营销活动标识
  331. $this->deleteGoodsPromotionAddon($discount_id, $sku_id);
  332. $res = model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ], [ 'sku_id', '=', $sku_id ] ]);
  333. if ($res && $discount_info[ 'status' ] == 1) {
  334. model('goods_sku')->update(
  335. [
  336. "discount_price" => Db::raw('price'),
  337. "promotion_type" => 0,
  338. "start_time" => 0,
  339. "end_time" => 0,
  340. ],
  341. [ [ 'sku_id', '=', $sku_id ] ]);
  342. }
  343. return $this->success($res);
  344. } else {
  345. return $this->error('', '活动不存在');
  346. }
  347. }
  348. /**
  349. * 获取限时折扣基础信息
  350. */
  351. public function getDiscountInfo($discount_id, $site_id)
  352. {
  353. $info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'discount_id, site_id, discount_name, status, remark, start_time, end_time, create_time, modify_time');
  354. return $this->success($info);
  355. }
  356. /**
  357. * 获取限时折扣详情
  358. */
  359. public function getDiscountDetail($discount_id, $site_id)
  360. {
  361. $info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'goods_id,discount_id, site_id, discount_name, status, remark, start_time, end_time, create_time, modify_time');
  362. $goods_sku = model('goods_sku')->getList([ [ 'goods_id', '=', $info[ 'goods_id' ] ] ], 'goods_name, stock, goods_id, sku_id, sku_name,price,sku_image');
  363. $discount_goods = model("promotion_discount_goods")->getList([ [ 'goods_id', '=', $info[ 'goods_id' ] ], [ 'discount_id', '=', $info[ 'discount_id' ] ] ], '*');
  364. foreach ($goods_sku as $k => $v) {
  365. $goods_sku[ $k ][ 'stock' ] = numberFormat($goods_sku[ $k ][ 'stock' ]);
  366. $goods_sku[ $k ][ 'is_select' ] = 0;
  367. $goods_sku[ $k ][ 'discount_price' ] = $v[ 'price' ];
  368. foreach ($discount_goods as $key => $val) {
  369. if ($val[ 'sku_id' ] == $v[ 'sku_id' ]) {
  370. $goods_sku[ $k ][ 'is_select' ] = 1;
  371. $goods_sku[ $k ][ 'discount_price' ] = $val[ 'discount_price' ];
  372. }
  373. }
  374. }
  375. $info[ 'goods_sku' ] = $goods_sku;
  376. $info[ 'discount_goods' ] = $discount_goods;
  377. return $this->success($info);
  378. }
  379. public function getDiscountGoods($discount_id)
  380. {
  381. $list = model('promotion_discount_goods')->getList([ [ 'discount_id', '=', $discount_id ] ], 'id, discount_id, start_time, end_time, goods_id, sku_id, price, discount_price, sku_name, sku_image', 'id desc');
  382. return $this->success($list);
  383. }
  384. /**
  385. * 获取限时折扣信息
  386. * @param $condition
  387. * @param string $field
  388. * @return array
  389. */
  390. public function getDiscountGoodsInfo($condition, $field = '*')
  391. {
  392. $alias = 'pdg';
  393. $join = [
  394. [
  395. 'promotion_discount pd',
  396. 'pd.discount_id = pdg.discount_id',
  397. 'inner'
  398. ],
  399. ];
  400. $info = model('promotion_discount_goods')->getInfo($condition, $field, $alias, $join);
  401. return $this->success($info);
  402. }
  403. /**
  404. * 获取参与限时折扣商品分页列表
  405. * @param array $condition
  406. * @param int $page
  407. * @param int $list_rows
  408. * @param string $field
  409. * @param string $order
  410. * @return array
  411. */
  412. public function getDiscountGoodsPageList($condition = [], $page = 1, $list_rows = PAGE_LIST_ROWS, $field = 'pdg.id,pdg.discount_id,pdg.start_time,pdg.end_time,pdg.goods_id,pdg.sku_id,pdg.discount_price,pdg.sku_name,pdg.sku_image,sku.price', $order = 'pdg.id desc')
  413. {
  414. $alias = 'pdg';
  415. $join = [
  416. [ 'goods_sku sku', 'sku.sku_id=pdg.sku_id', 'inner' ]
  417. ];
  418. $list = model('promotion_discount_goods')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join);
  419. return $this->success($list);
  420. }
  421. /**
  422. * 获取限时折扣商品详情
  423. * @param $discount_id
  424. * @param $goods_id
  425. * @param $sku_id
  426. * @return array
  427. */
  428. public function getDiscountGoodsDetail($discount_id, $goods_id, $sku_id)
  429. {
  430. $alias = 'pd';
  431. $join = [
  432. [ 'promotion_discount_goods pdg', 'pd.discount_id=pdg.discount_id', 'inner' ]
  433. ];
  434. $condition = [
  435. [ 'pd.discount_id', '=', $discount_id ],
  436. [ 'pd.status', '=', 1 ],
  437. [ 'pdg.goods_id', '=', $goods_id ],
  438. [ 'pdg.sku_id', '=', $sku_id ],
  439. ];
  440. $info = model('promotion_discount')->getInfo($condition, 'pd.discount_id,pd.site_id,pd.discount_name,pdg.goods_id,pdg.sku_id,pdg.price,pdg.discount_price', $alias, $join);
  441. return $this->success($info);
  442. }
  443. /**
  444. * 获取限时折扣列表
  445. * @param array $condition
  446. * @param string $field
  447. * @param string $order
  448. * @param string $limit
  449. */
  450. public function getDiscountList($condition = [], $field = '*', $order = '', $limit = null)
  451. {
  452. $list = model('promotion_discount')->getList($condition, $field, $order, '', '', '', $limit);
  453. return $this->success($list);
  454. }
  455. /**
  456. * 获取限时折扣分页列表
  457. * @param array $condition
  458. * @param number $page
  459. * @param string $page_size
  460. * @param string $order
  461. * @param string $field
  462. */
  463. public function getDiscountPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*', $alias = '', $join = [])
  464. {
  465. $list = model('promotion_discount')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
  466. return $this->success($list);
  467. }
  468. /**
  469. * 删除商品营销活动标识
  470. * @param $discount_id
  471. * @param int $sku_id
  472. */
  473. private function deleteGoodsPromotionAddon($discount_id, $sku_id = 0)
  474. {
  475. $goods = new Goods();
  476. $condition = [
  477. [ 'discount_id', '=', $discount_id ]
  478. ];
  479. if (!empty($sku_id)) {
  480. $condition[] = [ 'sku_id', '=', $sku_id ];
  481. }
  482. $goods_list = model('promotion_discount_goods')->getList($condition, 'goods_id');
  483. foreach ($goods_list as $k => $v) {
  484. $goods->modifyPromotionAddon($v[ 'goods_id' ], [ 'discount' => $discount_id ], true);
  485. }
  486. }
  487. /**
  488. * 获取商品列表
  489. * @param $discount_id
  490. * @param $site_id
  491. * @return array
  492. */
  493. public function getDiscountGoodsList($discount_id)
  494. {
  495. $field = 'pdg.*,sku.sku_name,sku.price,sku.sku_image,sku.stock';
  496. $alias = 'pdg';
  497. $join = [
  498. [
  499. 'goods g',
  500. 'g.goods_id = pdg.goods_id',
  501. 'inner'
  502. ],
  503. [
  504. 'goods_sku sku',
  505. 'sku.sku_id = pdg.sku_id',
  506. 'inner'
  507. ]
  508. ];
  509. $condition = [
  510. [ 'pdg.discount_id', '=', $discount_id ],
  511. [ 'g.is_delete', '=', 0 ], [ 'g.goods_state', '=', 1 ]
  512. ];
  513. $list = model('promotion_discount_goods')->getList($condition, $field, '', $alias, $join);
  514. return $this->success($list);
  515. }
  516. }