mAccAddr = $config['access_addr']; } public function indexOp() { return self::outsuccess(['tpl' => null],'bargain/bargain_list'); } public function createOp() { if (!session_helper::logined()) { throw new UnloginException(); } $goods_id = intval($_GET['goods_id']); if($goods_id <= 0 || activity\bargain_goods::instance()->isTakepart($goods_id,$act_id) == false) { return self::outerr(errcode::ErrParamter); } $bargain = activity\bargain_goods::instance()->get_bargain($act_id); if($bargain === false) { return self::outerr(errcode::ErrParamter); } $mod_bargain = Model('room_bargain'); $bargain_params = $mod_bargain->getBargainByUserGoods(session_helper::memberid(),$goods_id); if(empty($bargain_params)) { if(!$bargain->started()) { return self::outerr(errcode::ErrParamter,"活动尚未开始"); } elseif($bargain->processing()) { $ret = room\factory_client::instance()->create_bargain($goods_id,session_helper::memberid(),$bargain->lowest_price(),$bargain->usable_days(),$bargain->random(),$bargain->total_num()); if($ret != false) { $bargain_id = intval($ret['bargain_id']); return self::outsuccess(['bargain_id' => $bargain_id]); } else { return self::outerr(errcode::ErrRoom,"砍价创建活动已经结束"); } } else { return self::outerr(errcode::ErrParamter,"活动已经结束"); } } else { $bargain_id = intval($bargain_params['bargain_id']); return self::outsuccess(['bargain_id' => $bargain_id]); } } public function openOp() { $bargain_id = intval($_GET['bargain_id']); if(session_helper::need_wechat_author()) { $author = new thrid_author\wxauthor(); $url = author_url::bargain_url($bargain_id); $url = $author->enter($url); return self::outsuccess(['direct_uri' => $url],"redirect"); } if(!session_helper::logined()) { throw new UnloginException(); } if(!$this->validate($bargain_id)) { return self::outerr(errcode::ErrParamter); } else { $tpl = new tpl_bargain($bargain_id,$this->price_calcer()); $ret = room\factory_client::instance()->invite($tpl->room(),session_helper::memberid()); if($ret != false) { $ret['addr'] = $this->mAccAddr; } return self::outsuccess(['tpl' => $tpl,'room' => $ret],'bargain/bargain'); } } public function detailOp() { if (!session_helper::logined()) { throw new UnloginException(); } $bargain_id = intval($_GET['bargain_id']); if(!$this->validate($bargain_id)) { return self::outerr(errcode::ErrParamter); } else { $tpl = new tpl_bargain($bargain_id,$this->price_calcer()); $ret = room\factory_client::instance()->invite($tpl->room(),session_helper::memberid()); if($ret != false) { $ret['addr'] = $this->mAccAddr; } return self::outsuccess(['tpl' => new tpl_bargain($bargain_id,$this->price_calcer()),'room' => $ret],'bargain/bargain'); } } public function mine_listOp() { if (!session_helper::logined()) { throw new UnloginException(); } $mod_bargain = Model('room_bargain'); $items = $mod_bargain->getBargainList(['user_id' => session_helper::memberid()], '*', $this->page_size); $page_count = $mod_bargain->gettotalpage(); $gids = []; $bargains = []; $details = []; foreach ($items as $item) { $gid = intval($item['goods_id']); $bid = intval($item['bargain_id']); if($bid > 0 && $gid > 0) { $gids[] = $gid; $bargains[] = $bid; $bargain = new room\bargain($item); $details[] = $bargain->format(); } } if(empty($gids)) { return self::outsuccess(['special_list' => null, 'summary' => null, 'groupbuy' => null, 'limitime' => null, 'bundling' => null, 'bargain_detail' => null, 'mobile_page' => mobile_page($page_count)]); } else { $helper = new goods_helper($this->price_calcer()); $ret = $helper->online_summary($gids,$related_goods); $block = special_formater::format_bargain($bargains,'我的砍价'); $blocks[] = $block; $summarys = $this->summary_map($ret['summary']); foreach ($details as &$detail) { $summary = $summarys[$gid]; $gid = $detail['goods_id']; $detail['storage'] = $summary['goods_storage']; $detail['share_detail'] = $this->share_detail($detail['bargain_id'],$summary); } return self::outsuccess(['special_list' => $blocks, 'summary' => $ret['summary'], 'groupbuy' => $ret['groupbuy'], 'limitime' => $ret['limitime'], 'bundling' => $ret['bundling'], 'bargain' => $ret['bargain'], 'bargain_detail' => $details, 'mobile_page' => mobile_page($page_count)]); } } private function share_detail($bargain_id,$summary) { $result = []; $result['url'] = url_helper::bargain_open_url($bargain_id); $result['title'] = $summary['goods_mobile_name']; $result['sub_title'] = $summary['goods_mobile_name']; $result['img_url'] = $summary['goods_image_url']; return $result; } private function summary_map($summarys) { $ret = []; foreach ($summarys as $summary) { $gid = $summary['goods_id']; $ret[$gid] = $summary; } return $ret; } private function validate($bargain_id) { if($bargain_id <= 0) return false; $mod_bargain = Model('room_bargain'); $ret = $mod_bargain->getBargainById($bargain_id); return !empty($ret); } } class tpl_bargain { private $mBargain; private $mSummary; private $mPriceCalculate; public function __construct($bargain_id,bonus\IPriceCalculate $priceCalculate) { $this->mPriceCalculate = $priceCalculate; $mod_bargain = Model('room_bargain'); $info = $mod_bargain->getBargainById($bargain_id); $this->mBargain = new room\bargain($info); $goods_id = $this->mBargain->goods_id(); $helper = new goods_helper($this->mPriceCalculate); $ret = $helper->summary([$goods_id],$related_goods); $this->mSummary = $ret['summary'][0]; } public function room() { return $this->mBargain->room(); } public function show_goods() { $summary = $this->mSummary; $cur_price = $summary['goods_price'] - $this->mBargain->discount(); $lowest = $this->mBargain->lowest_price(); $str = "
{$summary['goods_mobile_name']}
原价{$summary['goods_price']}
剩 天 :: 结束