123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657 |
- <?php
- /**
- * Created by PhpStorm.
- * User: songlintao
- * Date: 2017/9/25
- * Time: 下午3:30
- */
- defined( 'InShopNC' ) or exit( 'Access Invalid!' );
- require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
- require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
- require_once(BASE_ROOT_PATH . '/helper/fcode/operator.php');
- require_once(BASE_ROOT_PATH . '/helper/room/util.php');
- use bonus\account;
- use user_session\storage;
- class festvalControl extends mobileControl
- {
- const RELATIVE_UPLOAD = "/upfile";
- const UPFILE_PATH = BASE_UPLOAD_PATH . self::RELATIVE_UPLOAD;
- private $mod_activity_image;
- public function __construct() {
- parent::__construct();
- $this->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'] ]);
- }
- }
|