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']}

现价¥{$cur_price} 可砍至{$lowest}元

该砍价已结束

:: 结束

"; echo $str; } private function user_msg() { static $msgs = ['绑架老板打劫福利', '专治各种买不起', '撸起袖子助你一臂之力', '斧头帮伙计来也', '拔刀相助,在所不辞', '砍得多,全靠俺的一声吼', '看我的青龙偃月刀', '花钱买,不如砍价免费拿', '感情深,刀法稳', '关系好不好,一刀见分晓', '放开那价,让我来', '一刀出手往死里砍']; $count = count($msgs); $pos = mt_rand(0,$count - 1); return $msgs[$pos]; } public function show_friends() { $result = $this->records(); if(empty($result)) return; $records = $result['records']; $users = $result['users']; foreach ($records as $uid => $value) { $user =$users[$uid]; $msg = $this->user_msg(); $str = "
  • \"\"
    {$user['nickname']}
    {$msg}
    砍掉{$value}元
  • "; echo $str; } } private function records() { $roomid = $this->mBargain->room(); $mod_room = Model('room'); $items = $mod_room->getRoomMsg($roomid,room\proto_type::msg_type_bargain); if(empty($items)) return []; $uids = []; $records = []; foreach ($items as $record) { $uid = intval($record['member_id']); $data = json_decode($record['msg'],true); $value = $data['value']; $uids[] = $uid; $records[$uid] = $value; } $mod_member = Model('member'); $mInfos = $mod_member->getMemberList(['member_id' => ['in',$uids]]); $users = []; foreach ($mInfos as $info) { try { $minfo = new member_info($info); $uid = $minfo->member_id(); $avatar = $minfo->avatar(); $users[$uid]['avatar'] = $avatar; $users[$uid]['nickname'] = $minfo->nickname(); } catch (Exception $ex) { Log::record(__METHOD__,Log::ERR); } } return ['records' => $records,'users' => $users]; } public function bargained() { $mod_room = Model('room'); $items = $mod_room->getUserRoomMsg($this->mBargain->room(),session_helper::memberid(),room\proto_type::msg_type_bargain); return !empty($items); } public function left_time() { if($this->mBargain->closed()) { return -1; } else { return $this->mBargain->over_time() - time(); } } public function show_creator() { try { $minfo = new member_info($this->mBargain->creator()); $avatar = $minfo->avatar(); $name = $minfo->nickname(); $str = "
    {$name}
    "; return $str; } catch (Exception $ex) { Log::record(__METHOD__,Log::ERR); return ""; } } public function show_button() { if($this->mBargain->closed()) { return ""; } if(session_helper::memberid() == $this->mBargain->creator()) { if($this->bargained()) { $str = ' '; } else { $str = ' '; } } else { if($this->bargained()) { $str = ' '; } else { $str = ' '; } } return $str; } public function show_close_pop() { $str = ""; // if($this->mBargain->closed()) { // $str = '
    //
    // //
    '; // } // else { // $str = '
    //
    // //
    ';; // } return $str; } public function share_url() { return url_helper::bargain_open_url($this->mBargain->bargain_id()); } public function share_title() { return $this->mSummary['goods_mobile_name']; } public function share_image() { return $this->mSummary['goods_image_url']; } public function share_subtitle() { $price = $this->mBargain->lowest_price(); return "帮我砍个价,{$price}元得商品~"; } }