mod_activity_image = Model('activity_image'); } private $qixiConfig = [ // 0 => ["common_id"=>2778,"batch_code"=>"HSDX01","goods_name"=>"唇油"],//131 // 0 => ["common_id"=> 1111,"batch_code"=>"QXHD01","goods_name"=>"卸妆水"], // 1 => ["common_id"=>3400,"batch_code"=>"HSDX01","goods_name"=>"唇油"], 0 => ["common_id"=>3725,"batch_code"=>"QXHD03","goods_name"=>"唇油"],//兰芝 水润绚彩染唇油 1 => ["common_id"=>4434,"batch_code"=>"QXHD01","goods_name"=>"卸妆水"],//美宝莲 净澈多效卸妆水 2 => ["common_id"=>4430,"batch_code"=>"QXHD04","goods_name"=>"喷雾"],// Fa清香亚麻喷雾 3 => ["common_id"=>4528,"batch_code"=>"QXHD02","goods_name"=>"香皂"],// 安宝笛 鸢尾花味香皂 ]; public function qixiOp() { if(session_helper::need_wechat_author()) { $author = new thrid_author\wxauthor(); $url = BASE_SITE_URL . "/mobile/index.php?act=festval&op=qixi"; $url = $author->enter($url); return self::outsuccess(['direct_uri' => $url],"redirect"); } $begin = strtotime("2018-08-14"); $end = strtotime("2018-08-18"); if($this->activity_validate($begin,$end)){ return self::outsuccess(null,'festival/TanabataFestival/index'); }else{ return self::outsuccess(null,'festival/end/index'); } } private $freeCollection = [ // "0" => ["common_id"=>819,'goods_id' => 1301, 'need_bonus' => 39.90], //89 // "0" => ["common_id"=>3445,'goods_id' => 6214, 'need_bonus' => 88.00],//153 // "1" => ["common_id"=>3446,'goods_id' => 6215, 'need_bonus' => 88], // "2" => ["common_id"=>3447,'goods_id' => 6216, 'need_bonus' => 88.0], "0" => ["common_id"=>4706,'goods_id' => 8310, 'need_bonus' => 600], "1" => ["common_id"=>4707,'goods_id' => 8311, 'need_bonus' => 600], "2" => ["common_id"=>4708,'goods_id' => 8312, 'need_bonus' => 600], ]; public function freeCollectionOp() { return self::outsuccess(null,'festival/freeCollection/index'); } public function ajax_freeCollectionOp() { $member = session_helper::memberid(); if($member <= 0){ return self::outerr(Errcode::ErrUnLogin,"用户未登录"); } $mod_order = Model('order_goods'); $list = []; $items = $this->freeCollection; foreach ($items as $k => $item) { $common_id = $item['common_id']; $goods_id = $item['goods_id']; $need_bonus = $item['need_bonus']; $goods_storage = 0; //判断查询商品 storeage 状态1 => 不可以点击 $helper = new goods_helper($this->price_calcer(),false); $ret = $helper->get_spu($common_id,$goods_id,$err); if($ret == false) { $list[$k] = ["goods" => $goods_id ,"state" => 1 ,"need_bonus"=>$need_bonus,"storage"=>$goods_storage];//商品已下架或不存在 库存清空 continue; } //判断用户是否可以全额用红包购买(只要可以买一份就算) 状态2 / 状态3 => 都可以点击 $summary = $ret['summary']; foreach ($summary as $val) { if($goods_id == $val['goods_id']){ $goods_storage = $val['goods_storage']; if($goods_storage <= 0){ $list[$k] = ["goods" => $goods_id ,"state" => 1 ,"need_bonus"=>$need_bonus,"storage"=>$goods_storage];//商品已下架或不存在 库存清空 continue; } $gap = $val['discount_gap']; if(intval($gap * 100 + 0.5) == 0) { $list[$k] = ["goods" => $goods_id ,"state" => 2, "need_bonus"=>$need_bonus, "storage"=>$goods_storage];//可以点击 去商品详情 } else { $list[$k] = ["goods" => $goods_id ,"state" => 3, "need_bonus"=>$need_bonus, "storage"=>$goods_storage];//邀请送红包 } } } //判断用户是否已经购买过该商品 状态4 => 不可以点击 $find = $mod_order->table('order_goods')->where(["goods_id"=>$goods_id, "buyer_id"=>$member])->find(); if(!empty($find)){ $list[$k] = ["goods" => $goods_id ,"state" => 4,"need_bonus"=>$need_bonus,"storage"=>$goods_storage]; } } $ret = [ "goods_list" => $list ]; return self::outsuccess($ret); //下单处需要添加补丁: 控制每人每个商品 能且仅能购买一单 (每单不限数量) } private function activity_validate($begin,$end) { $now = time(); return ($now >= $begin && $now < $end); } public function getAwardOp() { $memberid = session_helper::memberid(); if($memberid<=0) { return self::outerr(errcode::ErrUnLogin,"用户需要登陆"); }; $minfo = new member_info($memberid); $moblie = $minfo->mobile(); $sid = session_helper::session_id(); $get = false; $grabed = false; $name = ""; $qixiConf = $this->qixiConfig; foreach ($qixiConf as $key => $item) { $command_id = $item['common_id']; $batch_code = $item['batch_code']; $goods_name = $item['goods_name']; $oper = new fcode\operator($command_id,$batch_code,$moblie,$sid); $fcode = $oper->grabed(); if($fcode) { $grabed = true; $name = $goods_name; $get = true; break; } $fcode = $oper->grab(); if($fcode) { $res = $oper->bind($fcode); if($res){ $name = $goods_name; $get = true; break; } } } if($get) { return self::outsuccess(["grabed"=>$grabed,"goods_name"=>$name]); } else { return self::outerr(errcode::ErrGoodsOutofStock,"七夕活动的奖品已被抽完咯,关注熊猫不要错过下次哦"); } } public function indexOp() { $this->topup(); $url = BASE_SITE_URL . "/hfive/festval/index.html"; if(session_helper::need_wechat_author()) { $author = new thrid_author\wxauthor(); $url = $author->enter($url); } return self::outsuccess(['direct_uri' => $url],"redirect"); } private function from_base64($base_input, &$file_name) { if(empty($base_input)) { return false; } $regx = '/^(data:\s*image\/(\w+);base64,)/'; if (preg_match($regx, $base_input, $result)) { $file_type = $result[2]; $content = str_replace( $result[1], '', $base_input); $file_name = md5($content) .'.'. $file_type; return base64_decode($content); } else { return false; } } function add_imageOp() { $image_content = $this->from_base64($_POST['image_data'],$file_name); $act_id = intval($_POST['act_id']); if ($image_content == false || $act_id <= 0) { return self::outerr( errcode::ErrParamter, "参数错误", "festval/error" ); } $file_path = self::UPFILE_PATH . "/{$file_name}"; if(file_put_contents($file_path,$image_content) == false) { return self::outerr( errcode::ErrParamter, "保存文件失败", "festval/error" ); } $datas = []; { if(session_helper::logined()) { $datas['member_id'] = session_helper::memberid(); } else { $datas['member_id'] = 0; } if(session_helper::unionid() != false) { $datas['unionid'] = session_helper::unionid(); } else { $datas['unionid'] = ""; } $datas['act_id'] = $act_id; $datas['image_path'] = self::RELATIVE_UPLOAD . "/" . $file_name; $datas['add_time'] = time(); $datas['likes'] = 0; } $ret = $this->mod_activity_image->insert($datas); if($ret > 0) { return self::outsuccess(null); } else { return self::outerr( errcode::ErrParamter, "保存文件失败", "festval/error" ); } } function likeOp() { $act_id = $_GET['act_id']; $image_id = $_GET['image_id']; if($act_id < 0 || $image_id < 0) { return self::outerr(errcode::ErrParamter,"参数错误"); } $supporter = new festval_support($act_id,$image_id); if($supporter->supported()) { $supporter->unsupport(); $supported = false; } else { $supporter->support(); $supported = true; } $ret = $this->mod_activity_image->likes($image_id,true); return self::outsuccess(['supported' => $supported,'likes' => intval($ret['likes'])]); } function listOp() { $act_id = intval($_POST['act_id']); if ($act_id <= 0) { return self::outerr( errcode::ErrParamter, "参数错误", "festval/error" ); } $items = $this->mod_activity_image->image_list(['act_id' => $act_id],'*',$this->page_size()); $pages = $this->mod_activity_image->gettotalpage(); $result = []; foreach ($items as $item) { $result[] = $this->format($item); } return self::outsuccess(['blocks' => $result,'mobile_page' => mobile_page($pages)]); } private function format($item) { $result = []; $image_id = intval($item['image_id']); $act_id = intval($item['act_id']); $result['image_id'] = $image_id; $supporter = new festval_support($act_id,$image_id); $result['supported'] = $supporter->supported(); $result['act_id'] = $item['act_id']; $result['member_id'] = $item['member_id']; $result['image'] = $this->img_url($item['image_path']); $result['likes'] = intval($item['likes']); $result['add_time'] = intval($item['add_time']); return $result; } private function img_url($path) { if(util::ishttp($path)) { $url = $path; } else { $url = UPLOAD_SITE_URL . $path; } return $url; } private function topup() { if(session_helper::logined()) { $pred = new account($_SESSION['member_id'],true); $pred->topup_bonus($_SESSION['member_mobile']); } } //不需要登录 点击里面的按钮需要登录 public function double11_stepsOp() { $from = strtotime("2018-12-02");//2018-12-03 $to = strtotime("2019-12-11");//2018-12-10 $userSteps = $this->userSteps_ranking($from,$to); $mine_steps = $this->mine_steps_info($userSteps); $user_first = $user_second = $user_third = $user_list = []; $last_steps = 0; for($i=1;$i<=20;$i++) { if($i == 1) { $user_first = isset($userSteps[$i-1]) ? $userSteps[$i-1] : $this->fake_user($i-1); $last_steps = $user_first["steps"]; }elseif($i == 2) { $user_second = isset($userSteps[$i-1]) ? $userSteps[$i-1] : $this->fake_user($i-1,$last_steps); $last_steps = $user_second["steps"]; }elseif($i == 3) { $user_third = isset($userSteps[$i-1]) ? $userSteps[$i-1] : $this->fake_user($i-1,$last_steps); $last_steps = $user_third["steps"]; }else{ $user_item = isset($userSteps[$i-1]) ? $userSteps[$i-1] : $this->fake_user($i-1,$last_steps); $last_steps = $user_item["steps"]; $user_list[] =$user_item; } } if(session_helper::isapp()) { $url = schema_helper::openurl("我的捐步" ,BASE_SITE_URL."/mobile/index.php?act=member_talk&op=steps_detail"); } else { $url = BASE_SITE_URL."/mobile/index.php?act=member_talk&op=steps_detail"; } return self::outsuccess([ "mine_steps" =>$mine_steps, "user_first" =>$user_first, "user_second"=>$user_second, "user_third" =>$user_third, "user_steps" =>$user_list, "steps_url" =>$url ],'festival/double11/steps'); } public function new_yearOp() { if(session_helper::need_wechat_author()) { $author = new thrid_author\wxauthor(); $url = BASE_SITE_URL . "/mobile/index.php?act=festval&op=new_year"; $url = $author->enter($url); return self::outsuccess(['direct_uri' => $url],"redirect"); } return self::outsuccess(null,'festival/newYear/index'); } public function ajax_new_yearOp() { $member_id = session_helper::memberid(); if($member_id <= 0) { return self::outerr(errcode::ErrUnLogin,"请先登录"); } $act_id = 3; $act_info = Model()->table('activity')->where(["activity_id" => $act_id])->find(); if(empty($act_info)) { return self::outerr(errcode::ErrParamter,"活动未设置"); } $cond = ["activity_id" => $act_id,"item_id" => $member_id]; $detail = Model()->table('activity_detail')->where($cond)->find(); $bestWish = empty($detail) ? 0 : intval($detail["store_name"]); $member_info = new member_info($member_id); return self::outsuccess(["nickname"=>$member_info->nickname(),"bestWish"=>$bestWish]); } public function bestWishOp() { $val = intval($_GET["bestWish"]); if($val <= 0 || $val > 9) { return self::outerr(errcode::ErrParamter,"错误的请求参数"); } $member_id = session_helper::memberid(); if($member_id <= 0) { return self::outerr(errcode::ErrUnLogin,"请先登录"); } $model = Model(); $act_id = 3; $cond = ["activity_id" => $act_id,"item_id" => $member_id]; $detail = $model->table('activity_detail')->where($cond)->find(); if(!empty($detail)) { return self::outsuccess(["bestWish" => $val]); } else { $datas = $cond; $datas["item_name"] = "2019元旦活动-锦鲤神签"; $datas["store_id"] = time(); $datas["store_name"] = $val; $res = $model->table('activity_detail')->insert($datas); if(!$res) return self::outerr(errcode::ErrDB,"网络错误"); } return self::outsuccess(["bestWish" => $val]); } private function mine_steps_info($userSteps) { $member_id = session_helper::memberid(); $is_login = false; $steps = 0; $rank = 0; $name = ""; if($member_id > 0) { $is_login = true; if(!empty($userSteps)) { foreach ($userSteps as $k => $sort_item) { if($member_id == $sort_item['userid']) { $rank = $k + 1; $steps = $sort_item['steps']; $name = $sort_item['nickname']; } } if($rank == 0) $rank = count($userSteps) + 3000; } else { if($rank == 0) $rank = 486; } if(empty($name)) { $uinfo = new member_info($member_id); $name = $uinfo->nickname(); } } return ["is_login" => $is_login,"rank" => $rank ,"steps" => $steps ,"nickname"=> $name]; } private function userSteps_ranking($from,$to) { $mod = Model('room'); $items = $mod->roomSteps(["date_stamp"=>[['gt',$from],['lt',$to]]],"*",false); $uids = []; foreach ($items as $item) { $uids[] = $item['member_id']; } $uids = array_unique($uids,SORT_NUMERIC); if(!empty($uids)) { $members = Model('member')->getMemberList(['member_id' => ['in',$uids]]); } else { $members = []; } $uid_infos = []; foreach ($members as $member) { $uinfo = new member_info($member); $user = $uinfo->member_id(); $nickname = empty($member_nick[$user]) ? $uinfo->nickname() : $member_nick[$user]; $item = ['avatar' => $uinfo->avatar(),'nickname' => $nickname,'userid' => $uinfo->member_id(),"steps"=> 0]; $uid_infos[$user] = $item; } if(!empty($uid_infos)) { foreach ($items as $item) { $uid = $item['member_id']; if(array_key_exists($uid,$uid_infos)) { $uid_infos[$uid]["steps"] = $uid_infos[$uid]["steps"] + $item['steps']; } } usort($uid_infos,['room\sorter','steps_desc']); } return $uid_infos; } private function fake_user($index,$last_steps=1000000) { $man = RESOURCE_SITE_URL . '/mobile/defimg/male.png'; $feman = RESOURCE_SITE_URL . '/mobile/defimg/female.png'; $arr = [ 0 =>['avatar' => $feman,'nickname' => "暴躁的熊猫",'userid' => 0,"steps"=> 52121], 1 =>['avatar' => $feman,'nickname' => "Elaine",'userid' => 0,"steps"=> 46363], 2 =>['avatar' => $man,'nickname' => "辣椒葩葩",'userid' => 0,"steps"=> 33567], 3 =>['avatar' => $man,'nickname' => "我是静静",'userid' => 0,"steps"=> 24511], 4 =>['avatar' => $feman,'nickname' => "戈壁女侠",'userid' => 0,"steps"=> 17764], 5 =>['avatar' => $feman,'nickname' => "Amy_Sun",'userid' => 0,"steps"=> 12678], 6 =>['avatar' => $man,'nickname' => "会飞的胖纸",'userid' => 0,"steps"=> 9689], 7 =>['avatar' => $feman,'nickname' => "睡不着咕噜咕噜",'userid' => 0,"steps"=> 7791], 8 =>['avatar' => $feman,'nickname' => "楼下的喜欢我",'userid' => 0,"steps"=> 5566], 9 =>['avatar' => $feman,'nickname' => "小鱼干",'userid' => 0,"steps"=> 4758], 10 =>['avatar' => $feman,'nickname' => "JinKeLa",'userid' => 0,"steps"=> 3190], 11 =>['avatar' => $feman,'nickname' => "薛定谔的猫",'userid' => 0,"steps"=> 2478], 12 =>['avatar' => $feman,'nickname' => "bulingbuling",'userid' => 0,"steps"=> 1864], 13 =>['avatar' => $feman,'nickname' => "Hay",'userid' => 0,"steps"=> 1275], 14 =>['avatar' => $feman,'nickname' => "卡西莫拉",'userid' => 0,"steps"=> 941], 15 =>['avatar' => $feman,'nickname' => "吃可爱长大的",'userid' => 0,"steps"=> 666], 16 =>['avatar' => $feman,'nickname' => "教主夫人",'userid' => 0,"steps"=> 431], 17 =>['avatar' => $feman,'nickname' => "波波C",'userid' => 0,"steps"=> 259], 18 =>['avatar' => $feman,'nickname' => "老蔡",'userid' => 0,"steps"=> 86], 19 =>['avatar' => $feman,'nickname' => "阿哥吧打卤",'userid' => 0,"steps"=> 15], ]; if($last_steps < $arr[$index]["steps"]) { $arr[$index]["steps"] = intval($last_steps / 4 * 3)+1; } return $arr[$index]; } } class festval_support extends storage { private $act_id; private $image_id; public function __construct($act_id, $image_id) { $this->act_id = intval($act_id); $this->image_id = intval($image_id); parent::__construct(); } public function is_act() { return ($this->act_id > 0 && $this->image_id <= 0); } public function limit_type() { return storage::NORMAL_SUPPORT; } public function storage_tag() { if($this->is_act()) { return "festval_support"; } else { return "festval_image_{$this->act_id}"; } } public function supported() { if($this->is_act()) { return parent::base_supported($this->act_id); } else { return parent::base_supported($this->image_id); } } public function support() { if($this->is_act()) { $ret = parent::base_support($this->act_id); if($ret) { $this->add_act_likes(); } } else { $ret = parent::base_support($this->image_id); if($ret) { $this->add_image_likes(); } } return $ret; } public function unsupport() { if($this->is_act()) { $ret = parent::base_unsupport($this->act_id); if($ret) { $this->sub_act_likes(); } } else { $ret = parent::base_unsupport($this->image_id); if($ret) { $this->sub_image_likes(); } } return $ret; } private function add_act_likes() { } private function sub_act_likes() { } private function add_image_likes() { $mod_image = Model('activity_image'); $mod_image->where(['image_id' => $this->image_id])->update([ 'likes' => ['exp', 'likes + 1'] ]); } private function sub_image_likes() { $mod_image = Model('activity_image'); $mod_image->where(['image_id' => $this->image_id])->update([ 'likes' => ['exp', 'likes - 1'] ]); } }