/**
  * 更新用户勋章统计
  * 
  * @param int $uid
  */
 public function updateMedalUser($uid)
 {
     $expireds = $medalids = array();
     $time = Pw::getTime();
     $logs = $this->_getMedalLogDs()->getInfoListByUidStatus($uid, 4);
     foreach ($logs as $log) {
         if ($log['expired_time'] > 0 && $log['expired_time'] < $time) {
             $this->_getMedalLogDs()->deleteInfo($log['log_id']);
             $this->sendNotice($uid, $log['log_id'], $log['medal_id'], 5);
         } else {
             $medalids[] = $log['medal_id'];
             $log['expired_time'] > 0 && ($expireds[] = $log['expired_time']);
             //$expired = $expired < $log['expired_time'] ? $log['expired_time'] : $expired;
         }
     }
     $expireds = array_filter($expireds);
     sort($expireds, SORT_NUMERIC);
     $expired = array_shift($expireds);
     /*user_data冗余*/
     $dm = Wind::import('SRV:user.dm.PwUserInfoDm');
     $dm = new PwUserInfoDm($uid);
     $dm->setMedalIds($medalids);
     Wekit::load('user.PwUser')->editUser($dm, PwUser::FETCH_DATA);
     /*end*/
     $dm = Wind::import('SRV:medal.dm.PwMedalUserDm');
     $dm = new PwMedalUserDm($uid);
     $dm->setMedals($medalids)->setCounts(count($medalids))->setExpiredTime($expired);
     return $this->_getMedalUserDs()->replaceInfo($dm);
 }
Exemple #2
0
 public function replaceInfo(PwMedalUserDm $dm)
 {
     $resource = $dm->beforeAdd();
     if ($resource instanceof PwError) {
         return $resource;
     }
     $data = $dm->getData();
     $data['uid'] = $dm->uid;
     return $this->_getDao()->replaceInfo($data);
 }