'/index.php/Retail/Reward/addReward', 'redSwitch' => '/index.php/Retail/Reward/redSwitch', 'getRewardRecordList' => '/index.php/Retail/Reward/getRewardRecordList', 'redDelete' => '/index.php/Retail/Reward/redDelete', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $this->display(); } // 红包添加 public function add() { $this->display(); } // 红包列表 public function getRewardList() { $type = I('post.type'); // 活动类型 1公众号通知栏 2线下支付 3小程序商城 4商城支付 $status = I('post.status'); //红包状态 1未开始 2进行中 3已结束 $start_time = I('post.start_time'); //开始时间 $end_time = I('post.end_time'); //结束时间 $page = I('post.page'); //页 $limit = I('post.limit'); //每页获取的条数 if (!empty($start_time) && !empty($end_time)) { $start_time = strtotime($start_time); $end_time = strtotime($end_time); $map['add_time'] = array('between', "{$start_time},{$end_time}"); } $map['merchant_id'] = $this->merchant_id; $map['is_del'] = 0; if (!empty($type)) { $map['type'] = $type; } $typeArr = array( '1' => '未开始', '2' => '进行中', '3' => '已结束', ); $this_time = time(); switch ($status) { case '1': //未开始 $map[] = array( 'start_time' => array('gt', $this_time), array( 'start_time' => array('elt', $this_time), 'end_time' => array('gt', $this_time), 'status' => 0, array( array( array( 'less_number' => array('gt', 0), 'is_number' => 1, ), array( 'is_number' => 0, ), '_logic' => 'OR' ), array( array( 'less_money' => array('gt', 0), 'is_money' => 1, ), array( 'is_money' => 0, ), '_logic' => 'OR' ), ), ), '_logic' => 'OR' ); break; case '2': //进行中 $map['status'] = 1; $map[] = array( array( 'less_number' => array('gt', 0), 'is_number' => 1, ), array( 'less_money' => array('gt', 0), 'is_money' => 1, ), 'start_time' => array('elt', $this_time), 'end_time' => array('gt', $this_time), '_logic' => 'OR' ); break; case '3': //已结束 $map[] = array( array( 'less_number' => array('elt', 0), 'is_number' => 1, ), array( 'less_money' => array('elt', 0), 'is_money' => 1, ), 'end_time' => array('lt', time()), '_logic' => 'OR' ); break; } $RewardModel = D('Reward'); // $RewardModel->closeInvalidReward($this->merchant_id);//关闭 $list = $RewardModel->getSelect($map, '*', 'add_time desc', "{$page},{$limit}"); $count = $RewardModel->getCount($map); foreach ($list as &$value) { $value['add_time'] = date('Y-m-d H:i:s', $value['add_time']); $value['range_time'] = date('Y-m-d', $value['start_time']) . ' ~ ' . date('Y-m-d', $value['end_time']); switch ($value['reward_type']) { case '1': $value['reward_type'] = '固定金额'; break; case '2': $value['reward_type'] = '随机金额'; break; case '3': $value['reward_type'] = '梯度金额'; break; } switch ($value['type']) { case '1': $value['type'] = '公众号通知栏'; break; case '2': $value['type'] = '线下支付'; break; case '3': $value['type'] = '小程序商城首页'; break; case '4': $value['type'] = '线上支付'; break; } if (!empty($status)) { $value['status_msg'] = $typeArr[$status]; } else { if ($value['start_time'] > $this_time) { $value['status_msg'] = '未开始'; } else if (intval($value['start_time']) <= $this_time && intval($value['end_time']) > $this_time || intval($value['start_time'] > $this_time)) { $value['this_time'] = $this_time; if (($value['less_number'] <= 0 && $value['is_number'] == 1) || ($value['less_money'] <= 0 && $value['is_money'] == 1)) { $value['status_msg'] = '已结束'; } else { if ($value['status'] == 1) { $value['status_msg'] = '进行中'; } else { $value['status_msg'] = '未开始'; } } } else { $value['status_msg'] = '已结束'; } } unset($value['start_time']); unset($value['end_time']); } $res['code'] = 0; $res['count'] = $count; $res['data'] = $list; $this->ajaxReturn($res); } //添加红包 public function addReward() { if (IS_POST) { $name = I('post.name'); //活动名称 $reward_type = I('post.reward_type'); //红包类型 $start_time = I('post.start_time'); $end_time = I('post.end_time'); if (empty($name)) { $res['status'] = 0; $res['msg'] = '请填写活动名称'; $this->ajaxReturn($res); } //固定金额 if ($reward_type == 1) { $fixed_money = I('post.fixed_money'); $number = I('post.number'); if (empty($fixed_money) || empty($number)) { $res['status'] = 0; $res['msg'] = '固定金额或数量不能为空'; $this->ajaxReturn($res); } $Ad['fixed_money'] = $fixed_money; $Ad['number'] = $number; $Ad['less_number'] = $number; $Ad['is_money'] = 0; } elseif ($reward_type == 2) { //随机金额 $min_money = I('post.min_money'); $max_money = I('post.max_money'); if (empty($min_money) || empty($max_money)) { $res['status'] = 0; $res['msg'] = '最大最小金额不能为空'; $this->ajaxReturn($res); } elseif ($min_money >= $max_money) { $res['status'] = 0; $res['msg'] = '最小金额不能比最大金额大'; $this->ajaxReturn($res); } $money = I('post.money') ? I('post.money') : NULL; $number = I('post.number'); if (!empty($money)) { if ($money < $max_money) { $res['status'] = 0; $res['msg'] = '总金额不能小于最大金额'; $this->ajaxReturn($res); } } if (empty($money)) { $Ad['is_money'] = 0; } if (empty($number)) { $Ad['is_number'] = 0; } $Ad['min_money'] = $min_money; $Ad['max_money'] = $max_money; $Ad['money'] = $money; $Ad['number'] = $number; $Ad['less_number'] = $number; $Ad['less_money'] = $money; } else if ($reward_type == 3) { // 梯度金额 $reward_list = I('post.reward_list'); if (empty($reward_list)) { $res['status'] = 0; $res['msg'] = '梯度金额不能为空'; $this->ajaxReturn($res); } $nub_json = json_decode($reward_list, true); $number = 0; $reward_list = array(); foreach ($nub_json as $val) { $reward_list[] = array( 'max' => $val['max'], //最大金额 'min' => $val['min'], //最小金额 'num' => $val['num'], //总数量 'less_num' => $val['num'], //剩余数量 ); $number += $val['num']; } $money = I('post.money') ? I('post.money') : NULL; if (empty($money)) { $Ad['is_money'] = 0; } $Ad['reward_list'] = json_encode($reward_list); $Ad['number'] = $number; $Ad['less_number'] = $number; $Ad['money'] = $money; $Ad['less_money'] = $money; } if (!$start_time || !$end_time) { $res['status'] = 0; $res['msg'] = '请选择正确的时间'; $this->ajaxReturn($res); } // 活动类型 $type = I('post.type'); // 每日领取限制 $day_restrict_type = I('post.day_restrict_type'); if ($day_restrict_type == 1) { $Ad['day_max_time'] = I('post.day_max_time'); } elseif ($day_restrict_type == 2) { $Ad['day_max_money'] = I('post.day_max_money') ? I('post.day_max_money') : NULL; } //消费金额限制 if ($type == 2 || $type == 4) { $need_money = I('post.need_money'); if (empty($need_money)) { $res['status'] = 0; $res['msg'] = '消费金额不正确'; $this->ajaxReturn($res); } $Ad['need_money'] = $need_money; } if ($type == 2 || $type == 3 || $type == 4) { //活动门店限制 $is_limit_store = I('post.is_limit_store'); $Ad['is_limit_store'] = $is_limit_store; if ($is_limit_store == 1) { $limit_store_id = I('post.limit_store_id'); $Ad['limit_store_id'] = $limit_store_id; } //非会员限制 if ($type == 3 || $type == 4) { $is_vip = I('post.is_vip'); $Ad['is_vip'] = $is_vip; } //会员等级限制 $is_class_limit = I('post.is_class_limit'); $Ad['is_class_limit'] = $is_class_limit; if ($is_class_limit == 1) { $class_type = I('post.class_type'); $Ad['class_type'] = $class_type; } } $Ad['name'] = $name; $Ad['reward_type'] = $reward_type; $Ad['sum_max_time'] = I('post.sum_max_time'); $Ad['type'] = $type; $Ad['start_time'] = strtotime($start_time); $Ad['end_time'] = strtotime($end_time) + 86399; $Ad['merchant_id'] = $this->merchant_id; $Ad['day_restrict_type'] = $day_restrict_type; $map['merchant_id'] = $this->merchant_id; $map['type'] = $type; $RewardModel = D('Reward'); $oldReward = $RewardModel->getFind($map, '*', 'phase desc'); // 查询是否存在数据。 $Ad['add_time'] = time(); if ($oldReward) { $Ad['status'] = 0; $Ad['phase'] = $oldReward['phase'] + 1; // 开启新的红包数据。 $ret = M('reward')->add($Ad); } else { $Ad['phase'] = 1; $Ad['status'] = 0; // 添加红包时为关闭状态; $ret = M('reward')->add($Ad); } if ($ret !== false) { $res['status'] = 1; $res['msg'] = '红包编辑成功'; if ($oldReward) { if ($oldReward['status'] == 0) { $res['msg'] = '红包添加成功,当前为关闭状态'; } else { $res['msg'] = '红包添加成功'; } } if (!$oldReward) { $res['msg'] = '红包添加成功,当前为关闭状态,开启请到红包主页'; } } else { $res['status'] = 0; $res['msg'] = '请检查参数'; } $this->ajaxReturn($res); } } // 参加红包活动的店铺选项接口 public function getStoreList() { $map = array( 'merchantid' => $this->merchant_id, 'state' => 0, 'store_status' => 0, ); $res = D('RetailStore')->getSelect($map, 'id,storetag as store_name'); $this->ajaxReturn($res); } // 参加红包活动的会员等级选项接口 public function vipGrade() { $integral = M('retail_vip_integral')->field('id,cardname,min_integral')->where(['merchantid' => $this->merchant_id])->select(); $this->ajaxReturn($integral); } //删除红包 public function redDelete() { $where['id'] = I('post.id'); $where['merchant_id'] = $this->merchant_id; $res = M('reward')->where($where)->find(); if ($res) { if ($res['status'] == 1) { $data['status'] = 0; $data['msg'] = '请先关闭红包'; $this->ajaxReturn($data); } $rt = M('reward')->where($where)->save(array('is_del' => 1)); if ($rt) { $data['status'] = 1; $data['msg'] = '删除成功'; } else { $data['status'] = 0; $data['msg'] = '删除失败'; } } else { $data['status'] = 0; $data['msg'] = '该红包不存在或已被删除'; } $this->ajaxReturn($data); } //红包开启关闭 public function redSwitch() { if (IS_POST) { $id = I('post.id'); $status = I('post.status'); $RewardModel = D('Reward'); if ($status == 0) { $res = $RewardModel->updateOrder(array('id' => $id), array('status' => 0)); if ($res) { $data['status'] = 1; $data['value'] = 0; $data['msg'] = '关闭成功'; } else { $data['status'] = 0; $data['value'] = 0; $data['msg'] = '关闭失败'; } } else { $times = time(); $reward = $RewardModel->getFind(array('id' => $id)); if ($times > ($reward['end_time'])) { $data['status'] = 0; $data['value'] = 0; $data['msg'] = '开启失败,活动已过期!'; $this->ajaxReturn($data); } // 红包金额数量限制 if ($reward['is_number'] == 1 && $reward['less_number'] <= 0) { $data['status'] = 0; $data['msg'] = '红包数量已用完'; $this->ajaxReturn($data); } // 红包数量限制 if ($reward['is_money'] == 1 && $reward['less_money'] <= 0) { $data['status'] = 0; $data['msg'] = '红包余额不足'; $this->ajaxReturn($data); } //判断是否有正在开启的红包 $startReward = $RewardModel->getStartingReward($this->merchant_id, $reward['type'], $reward['start_time'], $reward['end_time']); if (!empty($startReward)) { $data['status'] = 0; $data['msg'] = '开启失败,请先关闭同时段同类型开启的红包!'; $this->ajaxReturn($data); } $res = M('reward')->where(array('id' => $id))->save(array('status' => 1)); if ($res) { $data['status'] = 1; $data['value'] = 1; $data['msg'] = '开启成功'; } else { $data['status'] = 0; $data['value'] = 0; $data['msg'] = '开启失败'; } } $this->ajaxReturn($data); } } //红包领取详情 public function getRewardRecordList() { $start_time = I('post.start_time'); //开始时间 $end_time = I('post.end_time'); //结束时间 $store_id = I('post.store_id'); //门店id if (!empty($store_id)) { $map['storeid'] = $store_id; } $map['reward_id'] = I('post.id'); //红包id $map['merchantid'] = $this->merchant_id; $map['status'] = 1; if (!empty($start_time) && !empty($end_time)) { $start_time = strtotime($start_time); $end_time = strtotime($end_time) + 86400; $map['addtime'] = array('between', "$start_time,$end_time"); } $count = M('reward_record')->where($map)->count(); $info = M('reward_record')->field('id,vid,money,addtime,storeid')->where($map)->page($_POST['page'], $_POST['limit'])->select(); foreach ($info as &$val) { $val['nickname'] = M('retail_vip')->where(array('id' => $val['vid']))->getField('nickname'); $val['name'] = M('retail_vip')->where(array('id' => $val['vid']))->getField('name'); $val['mobile_phone'] = M('retail_vip')->where(array('id' => $val['vid']))->getField('mobile_phone'); $val['store_name'] = M('retail_store')->where(array('id' => $val['storeid']))->getField('storetag'); $val['addtime'] = date('Y-m-d', $val['addtime']); } $res['code'] = 0; $res['count'] = $count; $res['data'] = $info; $this->ajaxReturn($res); } }