123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.com.cn
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
- * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
- * =========================================================
- */
- namespace addon\manjian\model;
- use app\model\system\Cron;
- use app\model\BaseModel;
- /**
- * 满减
- */
- class Manjian extends BaseModel
- {
- //满减送状态
- private $manjian_status = [
- 0 => '未开始',
- 1 => '进行中',
- 2 => '已结束',
- -1 => '已关闭',
- ];
- public function getManjianStatus()
- {
- return $this->manjian_status;
- }
- /**
- * 添加满减
- * @param unknown $data
- */
- public function addManjian($data)
- {
- //时间检测
- if ($data['end_time'] < time()) {
- return $this->error('', '结束时间不能早于当前时间');
- }
- $manjian_count = model('promotion_manjian')->getCount([
- [ 'status', 'in', "0,1" ],
- [ 'site_id', '=', $data['site_id'] ],
- [ 'start_time|end_time', 'between', [ $data['start_time'], $data['end_time'] ] ]
- ]);
- if ($manjian_count > 0) {
- return $this->error('', '该时间段已存在满减活动');
- }
- $manjian_count = model('promotion_manjian')->getCount([
- [ 'status', 'in', "0,1" ],
- [ 'site_id', '=', $data['site_id'] ],
- [ 'start_time', '<', $data['start_time'] ],
- [ 'end_time', '>', $data['end_time'] ],
- ]);
- if ($manjian_count > 0) {
- return $this->error('', '该时间段已存在满减活动');
- }
- //获取站点名称
- $site_info = model('shop')->getInfo([ [ 'site_id', '=', $data['site_id'] ] ], 'site_name');
- $data['site_name'] = $site_info['site_name'];
- $cron = new Cron();
- if ($data['start_time'] <= time()) {
- $data['status'] = 1;//直接启动
- $manjian_id = model('promotion_manjian')->add($data);
- $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $manjian_id);
- } else {
- $manjian_id = model('promotion_manjian')->add($data);
- $cron->addCron(1, 0, "满减开启", "OpenManjian", $data['start_time'], $manjian_id);
- $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $manjian_id);
- }
- return $this->success($manjian_id);
- }
- /**
- * 修改满减
- * @param unknown $data
- * @return multitype:string
- */
- public function editManjian($data)
- {
- //时间检测
- if ($data['end_time'] < time()) {
- return $this->error('', '结束时间不能早于当前时间');
- }
- $manjian_count = model('promotion_manjian')->getCount([
- [ 'site_id', '=', $data['site_id'] ],
- [ 'start_time|end_time', 'between', [ $data['start_time'], $data['end_time'] ] ],
- [ 'manjian_id', '<>', $data['manjian_id'] ]
- ]);
- if ($manjian_count > 0) {
- return $this->error('', '该时间段已存在满减活动');
- }
- $manjian_count = model('promotion_manjian')->getCount([
- [ 'site_id', '=', $data['site_id'] ],
- [ 'start_time', '<', $data['start_time'] ],
- [ 'end_time', '>', $data['end_time'] ],
- [ 'manjian_id', '<>', $data['manjian_id'] ]
- ]);
- if ($manjian_count > 0) {
- return $this->error('', '该时间段已存在满减活动');
- }
- $cron = new Cron();
- if ($data['start_time'] <= time()) {
- $data['status'] = 1;//直接启动
- $res = model('promotion_manjian')->update($data, [['manjian_id' ,'=', $data['manjian_id']], ['site_id', '=', $data["site_id"]] ]);
- if($res){
- $cron->deleteCron([ [ 'event', '=', 'OpenManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
- $cron->deleteCron([ [ 'event', '=', 'CloseManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
- $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $data['manjian_id']);
- }
- } else {
- $res = model('promotion_manjian')->update($data, [ 'manjian_id' => $data['manjian_id'] ]);
- if($res){
- $cron->deleteCron([ [ 'event', '=', 'OpenManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
- $cron->deleteCron([ [ 'event', '=', 'CloseManjian' ], [ 'relate_id', '=', $data['manjian_id'] ] ]);
- $cron->addCron(1, 0, "满减开启", "OpenManjian", $data['start_time'], $data['manjian_id']);
- $cron->addCron(1, 0, "满减关闭", "CloseManjian", $data['end_time'], $data['manjian_id']);
- }
- }
- return $this->success($res);
- }
- /**
- * 删除满减
- * @param unknown $manjian_id
- */
- public function deleteManjian($manjian_id, $site_id)
- {
- $condition = [
- [ 'manjian_id', '=', $manjian_id ],
- [ 'site_id', '=', $site_id ]
- ];
- $res = model('promotion_manjian')->delete($condition);
- if($res){
- $cron = new Cron();
- $cron->deleteCron([ [ 'event', '=', 'OpenManjian' ], [ 'relate_id', '=', $manjian_id ] ]);
- $cron->deleteCron([ [ 'event', '=', 'CloseManjian' ], [ 'relate_id', '=', $manjian_id ] ]);
- return $this->success($res);
- }else{
- return $this->error();
- }
- }
- /**
- * 获取满减信息
- * @param unknown $condition
- * @param string $field
- */
- public function getManjianInfo($condition, $field = '*')
- {
- $res = model('promotion_manjian')->getInfo($condition, $field);
- return $this->success($res);
- }
- /**
- * 获取满减列表
- * @param array $condition
- * @param string $field
- * @param string $order
- * @param string $limit
- */
- public function getManjianList($condition = [], $field = 'manjian_id,site_id,site_name,manjian_name,status,start_time,end_time', $order = 'create_time desc', $limit = null)
- {
- $list = model('promotion_manjian')->getList($condition, $field, $order, '', '', '', $limit);
- return $this->success($list);
- }
- /**
- * 获取满减分页列表
- * @param array $condition
- * @param number $page
- * @param string $page_size
- * @param string $order
- * @param string $field
- */
- public function getManjianPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
- {
- $list = model('promotion_manjian')->pageList($condition, $field, $order, $page, $page_size);
- return $this->success($list);
- }
- /**
- * 启动满减
- * @param unknown $manjian_id
- */
- public function cronOpenManjian($manjian_id)
- {
- $manjian_info = model('promotion_manjian')->getInfo([ [ 'manjian_id', '=', $manjian_id ] ], 'start_time,status');
- if (!empty($manjian_info)) {
- if ($manjian_info['start_time'] <= time() && $manjian_info['status'] == 0) {
- $res = model('promotion_manjian')->update([ 'status' => 1 ], [ [ 'manjian_id', '=', $manjian_id ] ]);
- return $this->success($res);
- } else {
- return $this->error("", "满减活动已开启或者关闭");
- }
- } else {
- return $this->error("", "满减活动不存在");
- }
- }
- /**
- * 结束满减 自动事件
- * @param unknown $manjian_id
- */
- public function cronCloseManjian($manjian_id)
- {
- $manjian_info = model('promotion_manjian')->getInfo([ [ 'manjian_id', '=', $manjian_id ] ], 'start_time,end_time,status');
- if (!empty($manjian_info)) {
- if ($manjian_info['status'] == 1) {
- $res = model('promotion_manjian')->update([ 'status' => 2 ], [ [ 'manjian_id', '=', $manjian_id ] ]);
- return $this->success($res);
- } else {
- return $this->error("", "满减活动已关闭");
- }
- } else {
- return $this->error("", "满减活动不存在");
- }
- }
- /**
- * 关闭满减 手动关闭
- * @param unknown $manjian_id
- */
- public function closeManjian($manjian_id, $site_id)
- {
- $condition = array(
- ['manjian_id', '=', $manjian_id ],
- ['site_id', "=", $site_id]
- );
- $manjian_info = model('promotion_manjian')->getInfo($condition, 'start_time,end_time,status');
- if (!empty($manjian_info)) {
- if ($manjian_info['status'] == 1) {
- $res = model('promotion_manjian')->update([ 'status' => -1 ], [ [ 'manjian_id', '=', $manjian_id ] ]);
- return $this->success($res);
- } else {
- return $this->error("", "满减活动已关闭");
- }
- } else {
- return $this->error("", "满减活动不存在");
- }
- }
- }
|