예제 #1
0
 /**
 	 * 获取任务
 	 * @param $params
 	 *  require    u      --  userid
 	 * @return
 	 *   s                --  OK,others fail
 	 *   t   tasks        --        任务
 	 *                    tag       --  任务种类
 	 *                    at        --  任务接受时间
 	 *                    ut        --  更新时间
 	 *                    s         -- 任务状态
                                             accept
                                             finish
 			      others fields
 */
 public function get($params)
 {
     $uid = $params['u'];
     $tu = new TTUser($uid);
     $ret['t'] = $tu->get('to');
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #2
0
파일: Gift.php 프로젝트: uning/mall-back
 /**
 * 查看礼物
 * @param $params
 *  require u  -- user id
 * @return 
 *  s   -- OK ,or other fail
 *  d  -- the man obj
 array(array('id',u,fid,gid,fname,fpic))
 */
 public function view($params)
 {
     $uid = $params['u'];
     $tu = new TTUser($uid);
     $gifts = $tu->get(TT::GIFT_GROUP);
     $ret = array();
     foreach ($gifts as $index => $gift) {
         if ($gift['fid']) {
             $fdata = TTGenid::getbyid($gift['fid']);
             $gifts[$index]['name'] = $fdata['name'];
             $gifts[$index]['icon'] = $fdata['icon'];
         }
     }
     $ret['d'] = $gifts;
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #3
0
파일: Task.php 프로젝트: uning/mall-back
 /**
  * 接受任务
  *   
  * @param $params
  *  require   u       --  uid
  *            tid     --  任务id
  *  option    fid     --  freind id 接受好友分享的任务有此参数,否则不需要此参数
  * @return 
  *            s       --  OK,正常   
  *                        repeat,重复领取任务
  *                        notexsit,该任务不存在
  *                        notowner,是领取到的分享的任务,并非每天产生的3个任务
  *                        notshare,好友未共享该任务
  *                        cantaccept,状态不为0,不能接受
  *                        locked,不能同时进行多项任务
  *                        
  *            at      --  接受任务的时间
  *            id      --  任务id,可能有变(接受好友的)
  *            all,lock--  测试用,稳定后删除
  */
 public function accept($params)
 {
     $uid = $params['u'];
     $fid = $params['fid'];
     $tid = $params['tid'];
     //判断用户是否正在任务中
     $tu = new TTUser($uid);
     $lock = $tu->getf(TT::TASK_STAT);
     $ret['lock_status'] = $lock;
     if ($lock == '0') {
         //任务进行中
         $ret['s'] = "locked";
         return $ret;
     }
     if ($fid) {
         //接受好友的任务
         $ftu = new TTUser($fid);
         $ftask_obj = $ftu->getbyid($tid);
         if (!$ftask_obj) {
             $ret['s'] = 'notexsit';
             return $ret;
         }
         /*		    
         					    $today_start = strtotime (date( 'Y-m-d',time() ) );		
         					    if( $ftask_obj['ct'] < $today_start ){
         					    $ret['s'] = 'needfriendupdate';
         					    return $ret;
         					    }
         */
         if ($ftask_obj['sc'] != '0') {
             //不是好友自己的任务,是分享来的
             $ret['s'] = 'notowner';
             return $ret;
         }
         if ($ftask_obj['s'] != '3') {
             $ret['s'] = 'notshare';
             return $ret;
         }
         //遍历自己的任务列表,以免重复领取任务
         $tasks = $tu->get(TT::TASK_GROUP);
         foreach ($tasks as $task) {
             if ($task['sc'] == $tid) {
                 $ret['s'] = 'repeat';
                 return $ret;
             }
         }
         $task_obj = $ftask_obj;
         $ftask_obj['ac'] += 1;
         $ftu->puto($ftask_obj, TT::TASK_GROUP);
         //新任务需改为从tag生成
         unset($task_obj['id']);
         $task_obj['s'] = '1';
         $task_obj['at'] = time();
         $task_obj['sc'] = $tid;
         $id = $tu->puto($task_obj, TT::TASK_GROUP);
         //返回新的任务id
         $ret['id'] = $id;
         $ret['at'] = $task_obj['at'];
     } else {
         //接受自己的任务
         $task_obj = $tu->getbyid($tid);
         if (!$task_obj) {
             $ret['s'] = 'notexsit';
             return $ret;
         }
         if ($task_obj['sc'] != '0') {
             //不是自己产生的任务
             $ret['s'] = 'notowner';
             return $ret;
         }
         if ($task_obj['s'] != '0') {
             $ret['s'] = 'cantaccept';
             return $ret;
         }
         $task_obj['s'] = '1';
         $task_obj['at'] = time();
         $id = $tu->puto($task_obj, TT::TASK_GROUP);
         $ret['id'] = $id;
         $ret['at'] = $task_obj['at'];
     }
     //上锁
     $tu->putf(TT::TASK_STAT, '0');
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #4
0
 public function checkshop($params)
 {
     $uid = $params['u'];
     $sid = $params['sid'];
     $tu = new TTUser($uid);
     $shop_obj = $tu->getbyid($sid);
     if (!$shop_obj) {
         $ret['s'] = 'notexsit';
         return $ret;
     }
     $goods_list = $shop_obj['goods'];
     $condata = array();
     if (!$goods_list) {
         $ret['s'] = 'nogoods';
         return $ret;
     }
     foreach ($goods_list as $goods_id => $stime) {
         $goods_obj = $tu->getbyid($goods_id);
         $condata[$stime] = $goods_obj;
     }
     $ret['condata'] = $condata;
     $popu = $params[TT::POPU];
     $ret['bpopu'] = $popu;
     $ua = UpgradeConfig::getUpgradeNeed($params['exp']);
     $ret['ua'] = $ua;
     //算人气
     $shops = $tu->get(TT::SHOP_GROUP);
     foreach ($shops as $shop) {
         $ret['shop_num_shop'][] = $shop;
         if ($shop['pos'] != 's') {
             $item = ItemConfig::getItem($shop['tag']);
             $shop_num += $item['gridWidth'];
         }
     }
     $ret['ashopnum'] = $shop_num;
     if (!$shop_num) {
         $ret['s'] = 'noshopexist';
         return $ret;
     }
     $shop_popu = $shop_num * 15;
     //只算店面人气
     $popu += $shop_popu;
     if ($popu > $ua['maxpopu']) {
         $popu = $ua['maxpopu'];
     }
     $ret['apopu'] = $popu;
     $aid = $tu->getoid('advert', TT::OTHER_GROUP);
     $adv = $tu->getbyid($aid);
     $used_advert = $adv['use'];
     //		$ret['bbbbbadvert'] = $adv;
     $computetime = $params[TT::COMPUTE_PONIT];
     //		$ret['now'] = date( TM_FORMAT,$now );
     //		$ret['lastcomputetime'] = date( TM_FORMAT,$computetime );
     $selloutids = array();
     $income = 0;
     $special = 0;
     //特殊商店的收入
     $sale_count = 0;
     //销售份数
     $now = time();
     $sconfig = ItemConfig::getItem($shop_obj['tag']);
     //			$ret['sconfig'][$s] = $sconfig;
     ksort($condata);
     $curtime = 0;
     //可以售卖新商品时间
     $cgoods = array();
     foreach ($condata as $t => $g) {
         $gconfig = ItemConfig::getItem($g['tag']);
         $ctime = $g['ctime'];
         //上次结算时间
         if ($curtime < $t) {
             $curtime = $t;
         }
         //上架时间
         if ($curtime < $ctime) {
             $curtime = $ctime;
         }
         $g['ctime'] = $now;
         $ret['tloop'][$t] = date(TM_FORMAT, $curtime);
         $gaps = array();
         if ($used_advert) {
             $tmp = self::getTimeRates($tu, $gaps, $used_advert, $curtime, $popu, $ua['maxpopu'], $now, $shop_num);
             //			            $ret['advertisement'][$s][$t] = $tmp;
         } else {
             $gaps = array(array($now - $curtime, $popu / ($shop_num * 15)));
         }
         $ret['gaps'][$t] = $gaps;
         //			foreach($gaps as $gr){
         foreach ($gaps as $k => $gr) {
             //测试信息需要该索引值
             $stime = $gr[0];
             if ($sconfig['gridWidth']) {
                 $pertime = $gconfig['selltime'] / ($sconfig['gridWidth'] * $gr[1]);
             }
             if ($pertime) {
                 $snum = floor($stime / $pertime);
             }
             $ret['pertime'][$t][$k] = $pertime;
             if ($snum >= $g['num']) {
                 //卖完了
                 $asnum = $g['num'];
             } else {
                 $asnum = $snum;
             }
             //				$ret['asnum'][$s][$t][$k][$g['tag'] ] = $asnum;
             $ret['sell'][$g['tag']] += $asnum;
             $sale_count += $asnum;
             //记录销售份数,成就用
             $income += $asnum * $gconfig['sellmoney'];
             //sellmoney是单份物品的卖价
             $g['num'] -= $asnum;
             //				$g['scount'] += $asnum;
             if ($g['num'] == 0) {
                 //当前时间段卖光此箱货物,继续卖下一个货物
                 $cgoods[] = $g;
                 $selloutids[] = $g['id'];
                 unset($shop_obj['goods'][$g['id']]);
                 break;
                 //跳出时间段循环,继续卖同一商店下一个上架时间的货物(在同一商店,同一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间)
             }
         }
         $tu->puto($shop_obj, TT::SHOP_GROUP);
         if ($g['num'] != 0) {
             $tu->puto($g, TT::GOODS_GROUP);
             //未卖完的商品需要保存回库,继续卖同一商店下一个上架时间的货物(在同一商店,一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间)
             break;
             //跳出上架时间循环,但是继续店铺循环,终止同一店铺的货物队列中其他货物的结算
         }
     }
     //删除使用过的广告队列
     unset($adv['use']);
     if ($used_advert) {
         //如果是空数组
         $adv['use'] = $used_advert;
     }
     $adv['id'] = $aid;
     $tu->puto($adv, TT::ADVERT_GROUP, false);
     //总销售份数
     $now_sale_count = $tu->numch('total_count', $sale_count);
     //总销售额
     $now_total_sale = $tu->numch('total_sale', $income);
     $ret['s'] = 'OK';
     $ret['income'] = $income;
     $ret['money'] = $tu->numch('money', $income);
     $ret['t'] = $now;
     $tu->remove($selloutids);
     $tu->putf(TT::COMPUTE_PONIT, $now);
     return $ret;
 }
예제 #5
0
파일: Friend.php 프로젝트: uning/mall-back
 public function debug_get($params)
 {
     $now = time();
     $uid = $params['u'];
     $tu = new TTUser($uid);
     $fids = $params['fids'];
     $infos = $tu->get('fr', false);
     if (!$fids) {
         $fids = $tu->getf(TT::FRIEND_STAT);
         if (!$fids) {
             $fids = "quest01,quest02,quest03,quest04,quest05,quest06,quest07,quest08,quest09";
         }
         /*
           if($infos){
           $ret['infos']=TTExtend::processlist($infos);
           $ret['s'] = 'OK';
           return $ret;
           }
         */
     } else {
         $tu->putf(TT::FRIEND_STAT, $fids);
     }
     $fl = explode(',', $fids);
     $rinfos = array();
     $dup = array();
     $now = time();
     $dup['253382225'] = 1;
     //$fl[]='253382225';
     $friend_count = 0;
     //记录好友个数
     foreach ($fl as $pid) {
         if ($dup[$pid]) {
             continue;
         }
         $dup[$pid] = 1;
         $finfos = TTGenid::getbypid($pid);
         //by tingkun
         $id = $finfos['id'];
         if ($id) {
             $fdid = $tu->getdid($id, 'fr');
             $fdata = json_decode($infos[$fdid], true);
             //if(!$fdata ||  $fdata['ut']<$now - 3600){
             if (!$fdata || $fdata['ut'] < $now - 3600) {
                 $ftu = new TTUser($finfos['id']);
                 $acc = $ftu->getdata();
                 $acc['name'] = $finfos['name'];
                 $acc['icon'] = $finfos['icon'];
                 $acc['pid'] = $pid;
                 $acc['ut'] = $now;
                 $acc['id'] = $fdid;
                 $acc['dbid'] = $id;
                 $tu->puto($acc);
                 $rinfos[] = $acc;
             } else {
                 $rinfos[] = $fdata;
             }
             unset($infos[$fdid]);
         } else {
             $ret['notget'][] = $pid;
         }
         //$rids = array_keys($infos);
         //$tu->remove($rids);
         $friend_count++;
     }
     if ($friend_count > $tu->getf('friend_count')) {
         $tu->putf('friend_count', $friend_count);
     }
     //*
     $rinfos[] = array('name' => 'GM', 'icon' => 'http://hdn.xnimg.cn/photos/hdn121/20100807/1345/h_tiny_WtRB_190e0000358b2f75.jpg', 'pid' => '253382225', 'exp' => '10000', 'dbid' => 2, 'ht' => $now, 'help_car' => 1);
     //GM
     //*/
     $ret['infos'] = $rinfos;
     $ret['fids'] = $fids;
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #6
0
파일: Tool.php 프로젝트: uning/mall-back
 public function resetNull()
 {
     //解决上架的货物中num字段为空或零的情况
     $ret = array();
     for ($i = 1; $i < 50000; $i++) {
         $uid = $i;
         $tu = new TTUser($uid);
         $goods = $tu->get(TT::GOODS_GROUP);
         if ($goods) {
             foreach ($goods as $index => $goods_obj) {
                 $ret[$i]['bgoods'][$index] = $goods_obj;
                 // for debug
                 $item = ItemConfig::getItem($goods_obj['tag']);
                 $ret[$i]['item'][$index] = $item;
                 // for debug
                 if (!$goods_obj['num']) {
                     $goods_obj['num'] = $item['unitcout'];
                 }
                 $ret[$i]['agoods'][$index] = $goods_obj;
                 // for debug
                 // save new goods_obj
             }
         }
     }
     return $ret;
 }
예제 #7
0
 public static function dcheckout($params)
 {
     $uid = $params['u'];
     $sids = $params['sids'];
     $now = $params['now'];
     $tu = new TTUser($uid);
     if (!$now) {
         $now = time();
     }
     $debug = true;
     $goods = $tu->get(TT::GOODS_GROUP);
     //$ret['goods']=$goods;
     foreach ($goods as $g) {
         $shopid = $g['pos']['y'];
         if (!$shopid || $shopid == 's') {
             continue;
         }
         if (!isset($condata[$shopid]['shop'])) {
             $shop = $tu->getbyid($shopid);
             if (!$shop) {
                 //error log
                 $ret['goods_no_shop'][] = $g;
                 continue;
             }
             $condata[$shopid]['shop'] = $shop;
             $item = ItemConfig::getItem($shop['tag']);
             $condata[$shopid]['sconfig'] = $item;
             $total_width += $item['gridWidth'];
         }
         $stime = $g['stime'];
         //上架时间
         $condata[$shopid]['goods'][$stime] = $g;
     }
     //$ret['condata'] = $condata;
     if (!$condata || !$total_width) {
         $ret['s'] = 'OK';
         $ret['msg'] = 'nogoods';
         $ret['condata'] = $condata;
         $ret['total_width'] = $total_width;
         return $ret;
     }
     $params = $tu->getf(array(TT::POPU, TT::EXP_STAT));
     $popu = $params[TT::POPU];
     $ua = UpgradeConfig::getUpgradeNeed($params['exp']);
     $maxpopu = $ua['maxpopu'];
     $aid = $tu->getoid('advert', TT::OTHER_GROUP);
     $adv = $tu->getbyid($aid);
     $used_advert = $adv['use'];
     if (!$used_advert) {
         $used_advert = array();
     }
     //处理广告
     foreach ($used_advert as $k => $v) {
         $adv = AdvertConfig::getAdvert($tag);
         if ($start + $adv['allTime'] < $now) {
             continue;
         }
         $savead[$k] = $v;
     }
     if ($savead) {
         $adv['use'] = $savead;
         //	$tu->puto($adv);
     } else {
         if ($used_advert) {
             unset($adv['use']);
             //	$tu->puto($adv);
         }
     }
     $selloutids = array();
     $income = 0;
     $sale_count = 0;
     //销售份数
     $popu += 15 * $total_width;
     foreach ($condata as $s => $vvv) {
         $sconfig =& $vvv['sconfig'];
         $gs =& $vvv['goods'];
         ksort($gs);
         $shop =& $vvv['shop'];
         $curtime = $shop['ctime'];
         //可以售卖新商品时间
         $cgoods = array();
         $shop_changed = false;
         foreach ($gs as $t => $g) {
             $gconfig = ItemConfig::getItem($g['tag']);
             if (!$gconfig) {
                 continue;
             }
             $ctime = $g['ctime'];
             //上次结算时间
             if ($curtime < $t) {
                 $curtime = $t;
             }
             //上架时间
             if ($curtime < $ctime) {
                 $curtime = $ctime;
             }
             if ($curtime < $g['stime']) {
                 $curtime = $g['stime'];
             }
             $gaps = self::getTimeRates($used_advert, $curtime, $now, $popu, $maxpopu, $total_width);
             $ret[$g['id']]['startctime'] = $curtime;
             $ret[$g['id']]['gaps'] = $gaps;
             $ret[$g['id']]['shop'] = $s;
             $ret[$g['id']]['mydata'] = $g;
             foreach ($gaps as $k => $gr) {
                 //测试信息需要该索引值
                 $pertime = $gconfig['selltime'] / $gr[1] / $sconfig['gridWidth'];
                 $snum = floor($gr[0] / $pertime);
                 if ($snum >= $g['num']) {
                     //卖完了
                     $asnum = $g['num'];
                 } else {
                     $asnum = $snum;
                 }
                 $ret['sell'][$g['tag']] += $asnum;
                 $sale_count += $asnum;
                 //记录销售份数,成就用
                 $income += $asnum * $gconfig['sellmoney'];
                 //sellmoney是单份物品的卖价
                 $g['num'] -= $asnum;
                 $curtime += floor($asnum * $pertime);
                 //
                 $g['ctime'] = $curtime;
                 $shop['ctime'] = $curtime;
                 if ($debug) {
                     $ret[$g['id']][$k]['sell_num'] = $asnum;
                     $ret[$g['id']][$k]['endcurtime'] = $curtime;
                     $ret[$g['id']][$k]['gap'] = $gr[0];
                     $ret[$g['id']][$k]['pertime'] = $pertime;
                     $ret[$g['id']][$k]['ratio'] = $gr[1];
                     $ret[$g['id']][$k]['left_num'] = $g['num'];
                     $ret[$g['id']][$k]['basespertime'] = $gconfig['selltime'];
                     $ret[$g['id']][$k]['shopwidth'] = $sconfig['gridWidth'];
                 }
                 if ($g['num'] == 0) {
                     //当前时间段卖光此箱货物,继续卖下一个货物
                     $cgoods[] = $g;
                     $selloutids[] = $g['id'];
                     $shop_changed = true;
                     unset($shop['goods'][$g['id']]);
                     break;
                     //跳出时间段循环,继续卖同一商店下一个上架时间的货物(在同一商店,同一时间上架但售卖顺序不同的货物,已在上架时微调成不同上架时间)
                 }
             }
             if ($g['num'] != 0) {
                 if (!$debug) {
                     $tu->puto($g, TT::GOODS_GROUP);
                 }
                 break;
                 //跳出上架时间循环,但是继续店铺循环,终止同一店铺的货物队列中其他货物的结算
             }
         }
         //foreach goods
         if ($shop_changed) {
             if (!$debug) {
                 $tu->puto($g, TT::GOODS_GROUP);
             }
         }
     }
     //foreach shop
     if ($debug) {
         $ret['total_width'] = $total_width;
         $ret['popu'] = $popu;
         $ret['maxpopu'] = $maxpopu;
         $ret['params'] = $params;
     }
     //总销售份数
     //总销售额
     //记录玩家每一种物品卖出量
     $ret['s'] = 'OK';
     $ret['income'] = $income;
     //$ret['money']  = $tu->numch('money',$income);
     $ret['t'] = $now;
     $ret['rids'] = $selloutids;
     $ret['u'] = $uid;
     return $ret;
 }
예제 #8
0
파일: get_user.php 프로젝트: uning/mallb
foreach ($all['c'] as $car_obj) {
    $x = $car_obj['pos']['x'];
    $y = $car_obj['pos']['y'];
    $car = ItemConfig::getItem($car_obj['tag']);
    for ($i = 0; $i < $car['gridWidth']; $i++) {
        if (!$car_pos[$x + $i][$y]) {
            $car_pos[$x + $i][$y] = 1;
        } else {
            echo "出现重叠车位: \n";
            print_r($car_obj);
            break;
        }
    }
}
//检查店铺相关
$shops = $tu->get(TT::SHOP_GROUP);
$shop_pos = array();
foreach ($shops as $shop_obj) {
    if ($shop_obj['pos'] == 's' && $shop_obj['goods']) {
        echo "出现shop['goods']不为空,但实际货物已经卖完的情况: \n";
        echo "店铺数据: \n";
        print_r($shop_obj);
        echo "货物数据: \n";
        foreach ($shop_obj['goods'] as $id) {
            $goods = $tu->getbyid($id);
            print_r($goods);
            if ($goods['stime']) {
                $time1 = date(TM_FORMAT, $goods['stime']);
                echo "上架时间: {$time1} \n";
            }
            if ($goods['ctime']) {
예제 #9
0
 /**
  * 获取所有或部分goods
  * @param $params
  *  require    u               -- userid
  *  optional   fid             -- 好友的id,获取好友的信息才有此参数,否则不传此参数
  * @return 物品列表,id 为下标
  *             s               --   OK,others fail
  *             g               --   goods
  */
 public function get_goods(&$params)
 {
     $uid = $params['u'];
     $fid = $params['fid'];
     if ($fid) {
         $uid = $fid;
     }
     $tu = new TTUser($uid);
     $gs = $tu->get(TT::GOODS_GROUP);
     /*
     $rgs= array();
     //repair num null
     foreach($gs as $k=>$g){
     	if($g['num']==0 && $g['pos']!='s' ){
     		$conf = ItemConfig::getItem($g['tag']);
     		if(!$conf)
     			error_log($g['tag']." new ");
     		if($conf['unitcout']){
     			$g['num']=$conf['unitcout'];
     			$tu->puto($g);
     			$rgs[]=$g;
     		}
     	}else
     			$rgs[]=$g;
     }
     $ret['g'] = $rgs;
     */
     $ret['g'] = $gs;
     $ret['s'] = 'OK';
     return $ret;
 }
예제 #10
0
 /**
  * 获取所有或部分goods
  * @param $params
  *  require    u               -- userid
  *  optional   fid             -- 好友的id,获取好友的信息才有此参数,否则不传此参数
  * @return 物品列表,id 为下标
  *             s               --   OK,others fail
  *             g               --   goods
  */
 public function get_goods(&$params)
 {
     $uid = $params['u'];
     $fid = $params['fid'];
     if ($fid) {
         $uid = $fid;
     }
     $tu = new TTUser($uid);
     $ret['g'] = $tu->get(TT::GOODS_GROUP);
     $ret['s'] = 'OK';
     return $ret;
 }