topicproxy.java
来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 621 行 · 第 1/2 页
JAVA
621 行
model.setUserName(user.getUserName());
model.setUser(user);
u_score = user.getScore();
u_money = user.getMoney();
u_credit = user.getCredit();
u_views = user.getViews();
}
}else{//如果密码为空则为过客取名
String eip = IpUtils.enAddr(model.getUserIp());
eip = eip.substring(eip.length()-6,eip.length());
List<String> iplist = IPSeeker.getInstance().IPParser(model.getUserIp());
if(!Validator.isEmpty(iplist)){
model.setUserName(iplist.get(0)+"网友"+eip);
}else{
model.setUserName("网友"+eip);
}
}
}
/**
* 判断用户操作所需积分等参数
*/
double score = this.getRuleService().getElement(model.getForumId(),RuleService.SCORE,19);
double money = this.getRuleService().getElement(model.getForumId(),RuleService.MONEY,19);
double credit = this.getRuleService().getElement(model.getForumId(),RuleService.CREDIT,19);
int views = (int) this.getRuleService().getElement(model.getForumId(), RuleService.VIEWS,19);
logger.debug("TopicProxy:score="+score+",user_score="+u_score);
if(u_score<score){
throw new ClubException(MessageUtils.getMessage("error_power_score"));
}
if(u_money<money){
throw new ClubException(MessageUtils.getMessage("error_power_money"));
}
if(u_credit<credit){
throw new ClubException(MessageUtils.getMessage("error_power_credit"));
}
if(u_views<views){
throw new ClubException(MessageUtils.getMessage("error_power_views"));
}
}
}
public void create(Topic model) throws ClubException {
this.noAllowed(model);
this.localizeFile(model);
TOPIC_SERVICE.create(model);
//如果主题创建成功AND用户以登录
User user = model.getUser();
user.setTopics(user.getTopics()+1); //回帖次数加1
this.getUserService().ruleUtils(user,model.getForumId(),2); //根据社区制度更新用户参数
try{
this.getUserService().update(user,false);
model.setUser(user);
}catch(ClubException e){
logger.error(e.toString());
}
/*
* 统计相关
*/
Counters counters = new Counters();
counters.setTopics(1);
counters.setForumId(model.getForumId());
try{
this.getCountService().doCount(counters);
}catch(ClubException e){
logger.error(e.toString());
}
ManageLog log = new ManageLog();
log.setTopicId(model.getTopicId());
log.setReplyId(0);
log.setForumId(model.getForumId());
log.setTitle(model.getTitle());
log.setByUserId(model.getUserId());
log.setByUserName(this.getUserService().findById(model.getUserId()).getUserName());
log.setByUserIp("127.0.0.1");
log.setCreateDateTime(model.getCreateDateTime());
this.getUserService().ruleUtils(log,0,2);
log.setUserName(this.getUserService().findById(model.getUserId()).getUserName());
log.setUserId(model.getUserId());
log.setIsList(true);
log.setListByUserName(true);
log.setMemo("发表文章");
log.setContent("");
try{
this.getManageLogService().create(log);
}catch(ClubException e){
logger.error(e.toString());
}
}
public void update(Topic model) throws ClubException {
/*
* 是否具备编辑他人文章的权限
*/
boolean updateadmin = USER_POWER.canAccess(model.getSessionUser()
,model.getForumId()
,UserPower.ADMINPOWER
,0);
/*
* 是否具备编辑被回复过的文章的权限
*/
boolean updatereplyed = USER_POWER.canAccess(model.getSessionUser()
,model.getForumId()
,UserPower.OPERATEPOWER
,4);
/*
* 是否具备编辑自己文章的权限
*
*/
boolean updatemy = USER_POWER.canAccess(model.getSessionUser()
,model.getForumId()
,UserPower.OPERATEPOWER
,3);
if(!updateadmin){
//先检查文章作者和操作者是否为同一人
if(model.getSessionUser()!=null && model.getSessionUser().getUserId()== model.getUserId()){
/*
* 如果用户编辑的是自己的文章
* 这个判断放到了ctroller层
*/
//logger.debug("model.getUser().getUserId(): "+model.getUser().getUserId());
logger.debug("model.getUserId(): "+model.getUserId());
if(!updatemy){
throw new ClubException(MessageUtils.getMessage("error_power"));
}
/*
* 判断是否具备编辑被回复过的文章权限
*/
if(model.getReplys()>0&&!updatereplyed){
throw new ClubException(MessageUtils.getMessage("error_update_replyed"));
}
}else{
throw new ClubException(MessageUtils.getMessage("error_power"));
}
}
this.localizeFile(model);
TOPIC_SERVICE.update(model);
}
public int delete(Topic model) throws ClubException {
return TOPIC_SERVICE.delete(model);
}
public int delete(String[] ids) {
return 0;
}
public Topic move(TopicMoveForm form) throws ClubException {
User user = form.getUser();
if(!Validator.isEmpty(user)){
form.setMoveUserId(user.getUserId());
form.setMoveUserName(user.getUserName());
}
Topic model = TOPIC_SERVICE.move(form);
if(Validator.isEmpty(model)){
return null;
}else{
User umodel = this.getUserService().findById(model.getUserId());
if(!Validator.isEmpty(umodel)){
this.getUserService().ruleUtils(umodel,model.getForumId(),7);
this.getUserService().update(umodel,false);
ManageLog log = new ManageLog();
log.setTopicId(model.getTopicId());
log.setTitle(model.getTitle());
log.setByUserId(model.getMoveUserId());
log.setByUserName(model.getMoveUserName());
log.setByUserIp(model.getUserIp());
log.setCreateDateTime(FormatDateTime.now());
log.setForumId(model.getForumId());
this.getUserService().ruleUtils(log,model.getForumId(),7);
log.setUserName(model.getUserName());
log.setUserId(model.getUserId());
log.setIsList(form.getIsList());
log.setListByUserName(form.getListByUserName());
log.setMemo("文章被移动");
StringBuffer temp = new StringBuffer();
temp.append("文章从 ");
temp.append(this.getForumService(). findById(form.getForumId()).getForumName());
temp.append(" 移动到 ");
temp.append(this.getForumService().findById(form.getToForumId()).getForumName());
temp.append("\r\n");
temp.append(form.getContent());
log.setContent(temp.toString());
log.setIsManaged(true);
log.setIsList(true);
this.getManageLogService().create(log);
if(form.getSendMessage()==1){ //如果需要通知用户
Message message = new Message();
message.setUserIdOfTake(umodel.getUserId());
message.setUserNameOfTake(umodel.getUserName());
message.setUserIdOfSend(form.getUser().getUserId());
message.setUserNameOfSend(form.getUser().getUserName());
message.setIsOpened(false);
message.setCreateDateTime(FormatDateTime.now());
message.setUserIpOfTake(model.getUserIp());
message.setUserIpOfSend(form.getUserIp());
message.setTitle(log.getMemo()+"("+model.getTitle()+")");
StringBuffer sb = new StringBuffer();
if(!Validator.isEmpty(form.getContent())){
sb.append(form.getContent());
sb.append("\r\n");
}
sb.append(log.getContent());
sb.append("\r\n信誉:");
sb.append(ViewCoder.getRuleElement(log.getCredit()));
sb.append("\r\n积分:");
sb.append(ViewCoder.getRuleElement(log.getScore()));
sb.append("\r\n金币:");
sb.append(ViewCoder.getRuleElement(log.getMoney()));
sb.append("\r\n人气:");
sb.append(ViewCoder.getRuleElement(log.getViews()));
sb.append("\r\n[url]");
sb.append(this.getUserService().getBasicInfo().getUrl());
sb.append(UrlUtils.getTopicUrl(model));
sb.append("[/url]");
message.setContent(sb.toString());
this.getMessageService().create(message, true);
}
}
}
return model;
}
public List<Topic> findByParameter(TopicParameter param) {
return TOPIC_SERVICE.findByParameter(param);
}
public long countByParameter(TopicParameter param) {
return TOPIC_SERVICE.countByParameter(param);
}
private ManageLogService getManageLogService() {
return ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
}
private ForumService getForumService() {
return ServiceWrapper.<ForumService>getSingletonInstance(ServiceLocator.FORUM);
}
private UserService getUserService() {
return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
}
/*
public NoAllowedCharService getNoAllowedCharService() {
return ServiceWrapper.<NoAllowedCharService>getSingletonInstance(ServiceLocator.NOALLOWEDCHAR);
}
*/
private CountService getCountService() {
return ServiceWrapper.<CountService>getSingletonInstance(ServiceLocator.COUNT);
}
private MessageService getMessageService(){
return ServiceWrapper.<MessageService>getSingletonInstance(ServiceLocator.MESSAGE);
}
public TopicDAO getTopicDAO() {
return TOPIC_SERVICE.getTopicDAO();
}
public Integer getLastReplyId() {
return TOPIC_SERVICE.getLastReplyId();
}
public void setLastReplyId(Integer i) {
TOPIC_SERVICE.setLastReplyId(i);
}
/*
public UserPower getUserPower() {
if(Validator.isEmpty(userPower)){
userPower = new UserPower();
}
return userPower;
}
*/
public List<TContent> findContentByParameter(TopicParameter param) {
return TOPIC_SERVICE.findContentByParameter(param);
}
public TContentDAO getTContentDAO(){
return TOPIC_SERVICE.getTContentDAO();
}
public NoAllowedCharService getNoAllowedCharService(){
return ServiceWrapper.<NoAllowedCharService>getSingletonInstance(ServiceLocator.NOALLOWEDCHAR);
}
@Override
public List<Topic> searchTopic(String title, int page, int rows) {
return TOPIC_SERVICE.searchTopic(title, page, rows);
}
@Override
public int deleteByUserId(int userId) throws ClubException {
return TOPIC_SERVICE.deleteByUserId(userId);
}
private RuleService getRuleService() {
return ServiceWrapper.<RuleService>getSingletonInstance(ServiceLocator.RULE);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?