多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 用参与门店、会员级别和会员优先等信息过滤活动 **位置:** Common\Lib\EventLib.class.php **参数:** * @param $types int 活动类型 1为限时折扣,2为满减,3为满折 * @param $use int 获取价格的用途,1为展示用, 2为POS结算,3为小程序结算 * @param $vip_type int 会员类别ID * @return $event_result mixed 符合条件的活动 **调用:** //组件内部调用 $event_result = $this->getTimeEvent($types, $use, $vip_type); **完整代码:** ~~~ /** * * 用参与门店、会员级别和会员优先等信息过滤活动 * @param $types int 活动类型 1为限时折扣,2为满减,3为满折 * @param $vip_type int 会员类别ID * @param $use int 获取价格的用途,1为展示用, 2为POS结算,3为小程序结算 * @return $event_result mixed 符合条件的活动 */ public function getTimeEvent($types, $use, $vip_type) { $time = time(); // 展示用 if ($use == 1) { // 查询所有正在进行的限时折扣活动 $map['start_time'] = array('elt', $time); // 活动开始时间 $map['end_time'] = array('egt', $time); // 活动结束时间 $map['types'] = array('eq', $types); // 活动类型 1为限时折扣,2为满减,3为满折 $map['status'] = 1; // 审批状态(0为未审批;1为审批通过;2为终止或审批不通过) $event_result = M('event_basic')->where($map)->select(); return $event_result; } // POS结算 if ($use == 2) { // 调用获取操作门店方法 $max_shop_id = $this->getShopsId(); // POS结算需要考虑门店查询本门店的活动 $event_result = M('event_basic as b') ->field("b.*,s.shops_id") ->join("coscia_event_shop as s on s.event_id = b.id", "left") ->where("b.status = '1' AND b.types = '{$types}' AND (s.shops_id = '1' OR s.shops_id = '{$max_shop_id}') AND b.end_time >= '{$time}' AND b.start_time <= {$time}") ->select(); // 小程序结算 } elseif ($use == 3) { // 小程序结算不用考虑门店,查询所有正在进行的限时折扣活动 $map['start_time'] = array('elt', $time); // 活动开始时间 $map['end_time'] = array('egt', $time); // 活动结束时间 $map['types'] = array('eq', $types); // 活动类型 1为限时折扣,2为满减,3为满折 $map['status'] = 1; // 审批状态(0为未审批;1为审批通过;2为终止或审批不通过) $event_result = M('event_basic')->where($map)->select(); } // 顾客身份判断是否符合条件 foreach ($event_result as $key => $value) { if (!empty($value['actor'])) { $actor = explode(',', $value['actor']); if (!in_array($vip_type, $actor)) { unset($event_result[$key]); continue; } } } // 判断是否有会员优先,1代表会员优先 foreach ($event_result as $k => $v) { if ($v['prior'] == 1) { if (empty($vip_type)) { $nvip_start = $v['start_time'] + $v['prior_days'] * 86400; // 非会员活动开始时间 // 如果非会员活动时间还没到,则删除活动 if ($time < $nvip_start) { unset($event_result[$k]); } } } } return $event_result; } ~~~