/** * 更新用户勋章统计 * * @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); }
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); }