Manjian.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\manjian\model;
  13. use app\model\system\Cron;
  14. use app\model\BaseModel;
  15. /**
  16. * 满减
  17. */
  18. class Manjian extends BaseModel
  19. {
  20. //满减送状态
  21. private $manjian_status = [
  22. 0 => '未开始',
  23. 1 => '进行中',
  24. 2 => '已结束',
  25. -1 => '已关闭',
  26. ];
  27. public function getManjianStatus()
  28. {
  29. return $this->manjian_status;
  30. }
  31. /**
  32. * 添加满减
  33. * @param unknown $data
  34. */
  35. public function addManjian($data)
  36. {
  37. //时间检测
  38. if ($data['end_time'] < time()) {
  39. return $this->error('', '结束时间不能早于当前时间');
  40. }
  41. $manjian_count = model('promotion_manjian')->getCount([
  42. [ 'status', 'in', "0,1" ],
  43. [ 'site_id', '=', $data['site_id'] ],
  44. [ 'start_time|end_time', 'between', [ $data['start_time'], $data['end_time'] ] ]
  45. ]);
  46. if ($manjian_count > 0) {
  47. return $this->error('', '该时间段已存在满减活动');
  48. }
  49. $manjian_count = model('promotion_manjian')->getCount([
  50. [ 'status', 'in', "0,1" ],
  51. [ 'site_id', '=', $data['site_id'] ],
  52. [ 'start_time', '<', $data['start_time'] ],
  53. [ 'end_time', '>', $data['end_time'] ],
  54. ]);
  55. if ($manjian_count > 0) {
  56. return $this->error('', '该时间段已存在满减活动');
  57. }
  58. //获取站点名称
  59. $site_info = model('shop')->getInfo([ [ 'site_id', '=', $data['site_id'] ] ], 'site_name');
  60. $data['site_name'] = $site_info['site_name'];
  61. $cron = new Cron();
  62. if ($data['start_time'] <= time()) {
  63. $data['status'] = 1;//直接启动
  64. $manjian_id = model('promotion_manjian')->add($data);
  65. $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $manjian_id);
  66. } else {
  67. $manjian_id = model('promotion_manjian')->add($data);
  68. $cron->addCron(1, 0, "满减开启", "OpenManjian", $data['start_time'], $manjian_id);
  69. $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $manjian_id);
  70. }
  71. return $this->success($manjian_id);
  72. }
  73. /**
  74. * 修改满减
  75. * @param unknown $data
  76. * @return multitype:string
  77. */
  78. public function editManjian($data)
  79. {
  80. //时间检测
  81. if ($data['end_time'] < time()) {
  82. return $this->error('', '结束时间不能早于当前时间');
  83. }
  84. $manjian_count = model('promotion_manjian')->getCount([
  85. [ 'site_id', '=', $data['site_id'] ],
  86. [ 'start_time|end_time', 'between', [ $data['start_time'], $data['end_time'] ] ],
  87. [ 'manjian_id', '<>', $data['manjian_id'] ]
  88. ]);
  89. if ($manjian_count > 0) {
  90. return $this->error('', '该时间段已存在满减活动');
  91. }
  92. $manjian_count = model('promotion_manjian')->getCount([
  93. [ 'site_id', '=', $data['site_id'] ],
  94. [ 'start_time', '<', $data['start_time'] ],
  95. [ 'end_time', '>', $data['end_time'] ],
  96. [ 'manjian_id', '<>', $data['manjian_id'] ]
  97. ]);
  98. if ($manjian_count > 0) {
  99. return $this->error('', '该时间段已存在满减活动');
  100. }
  101. $cron = new Cron();
  102. if ($data['start_time'] <= time()) {
  103. $data['status'] = 1;//直接启动
  104. $res = model('promotion_manjian')->update($data, [['manjian_id' ,'=', $data['manjian_id']], ['site_id', '=', $data["site_id"]] ]);
  105. if($res){
  106. $cron->deleteCron([ [ 'event', '=', 'OpenManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
  107. $cron->deleteCron([ [ 'event', '=', 'CloseManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
  108. $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $data['manjian_id']);
  109. }
  110. } else {
  111. $res = model('promotion_manjian')->update($data, [ 'manjian_id' => $data['manjian_id'] ]);
  112. if($res){
  113. $cron->deleteCron([ [ 'event', '=', 'OpenManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
  114. $cron->deleteCron([ [ 'event', '=', 'CloseManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
  115. $cron->addCron(1, 0, "满减开启", "OpenManjian", $data['start_time'], $data['manjian_id']);
  116. $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $data['manjian_id']);
  117. }
  118. }
  119. return $this->success($res);
  120. }
  121. /**
  122. * 删除满减
  123. * @param unknown $manjian_id
  124. */
  125. public function deleteManjian($manjian_id, $site_id)
  126. {
  127. $condition = [
  128. [ 'manjian_id', '=', $manjian_id ],
  129. [ 'site_id', '=', $site_id ]
  130. ];
  131. $res = model('promotion_manjian')->delete($condition);
  132. if($res){
  133. $cron = new Cron();
  134. $cron->deleteCron([ [ 'event', '=', 'OpenManjian' ], [ 'relate_id', '=', $manjian_id ] ]);
  135. $cron->deleteCron([ [ 'event', '=', 'CloseManjian' ], [ 'relate_id', '=', $manjian_id ] ]);
  136. return $this->success($res);
  137. }else{
  138. return $this->error();
  139. }
  140. }
  141. /**
  142. * 获取满减信息
  143. * @param unknown $condition
  144. * @param string $field
  145. */
  146. public function getManjianInfo($condition, $field = '*')
  147. {
  148. $res = model('promotion_manjian')->getInfo($condition, $field);
  149. return $this->success($res);
  150. }
  151. /**
  152. * 获取满减列表
  153. * @param array $condition
  154. * @param string $field
  155. * @param string $order
  156. * @param string $limit
  157. */
  158. public function getManjianList($condition = [], $field = 'manjian_id,site_id,site_name,manjian_name,status,start_time,end_time', $order = 'create_time desc', $limit = null)
  159. {
  160. $list = model('promotion_manjian')->getList($condition, $field, $order, '', '', '', $limit);
  161. return $this->success($list);
  162. }
  163. /**
  164. * 获取满减分页列表
  165. * @param array $condition
  166. * @param number $page
  167. * @param string $page_size
  168. * @param string $order
  169. * @param string $field
  170. */
  171. public function getManjianPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
  172. {
  173. $list = model('promotion_manjian')->pageList($condition, $field, $order, $page, $page_size);
  174. return $this->success($list);
  175. }
  176. /**
  177. * 启动满减
  178. * @param unknown $manjian_id
  179. */
  180. public function cronOpenManjian($manjian_id)
  181. {
  182. $manjian_info = model('promotion_manjian')->getInfo([ [ 'manjian_id', '=', $manjian_id ] ], 'start_time,status');
  183. if (!empty($manjian_info)) {
  184. if ($manjian_info['start_time'] <= time() && $manjian_info['status'] == 0) {
  185. $res = model('promotion_manjian')->update([ 'status' => 1 ], [ [ 'manjian_id', '=', $manjian_id ] ]);
  186. return $this->success($res);
  187. } else {
  188. return $this->error("", "满减活动已开启或者关闭");
  189. }
  190. } else {
  191. return $this->error("", "满减活动不存在");
  192. }
  193. }
  194. /**
  195. * 结束满减 自动事件
  196. * @param unknown $manjian_id
  197. */
  198. public function cronCloseManjian($manjian_id)
  199. {
  200. $manjian_info = model('promotion_manjian')->getInfo([ [ 'manjian_id', '=', $manjian_id ] ], 'start_time,end_time,status');
  201. if (!empty($manjian_info)) {
  202. if ($manjian_info['status'] == 1) {
  203. $res = model('promotion_manjian')->update([ 'status' => 2 ], [ [ 'manjian_id', '=', $manjian_id ] ]);
  204. return $this->success($res);
  205. } else {
  206. return $this->error("", "满减活动已关闭");
  207. }
  208. } else {
  209. return $this->error("", "满减活动不存在");
  210. }
  211. }
  212. /**
  213. * 关闭满减 手动关闭
  214. * @param unknown $manjian_id
  215. */
  216. public function closeManjian($manjian_id, $site_id)
  217. {
  218. $condition = array(
  219. ['manjian_id', '=', $manjian_id ],
  220. ['site_id', "=", $site_id]
  221. );
  222. $manjian_info = model('promotion_manjian')->getInfo($condition, 'start_time,end_time,status');
  223. if (!empty($manjian_info)) {
  224. if ($manjian_info['status'] == 1) {
  225. $res = model('promotion_manjian')->update([ 'status' => -1 ], [ [ 'manjian_id', '=', $manjian_id ] ]);
  226. return $this->success($res);
  227. } else {
  228. return $this->error("", "满减活动已关闭");
  229. }
  230. } else {
  231. return $this->error("", "满减活动不存在");
  232. }
  233. }
  234. }