userproxy.java
来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 408 行
JAVA
408 行
/*
* Created on 2007-1-16
* Last modified on 2007-12-20
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.service.user;
import java.util.List;
import org.apache.log4j.Logger;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.param.UserParameter;
import com.yeqiangwei.club.passport.service.PUserService;
import com.yeqiangwei.club.passport.service.PUserServiceImpl;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.model.BasicInfo;
import com.yeqiangwei.club.model.ManageLog;
import com.yeqiangwei.club.model.Message;
import com.yeqiangwei.club.model.Reply;
import com.yeqiangwei.club.model.Topic;
import com.yeqiangwei.club.model.User;
import com.yeqiangwei.club.service.message.MessageService;
import com.yeqiangwei.club.service.topic.ReplyService;
import com.yeqiangwei.club.service.topic.TopicService;
import com.yeqiangwei.club.service.util.BasicInfoService;
import com.yeqiangwei.club.service.util.ManageLogService;
import com.yeqiangwei.club.service.util.NoAllowedCharService;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.view.util.UrlUtils;
import com.yeqiangwei.club.view.util.ViewCoder;
import com.yeqiangwei.cache.Cache;
import com.yeqiangwei.club.controller.form.AProfileForm;
import com.yeqiangwei.club.controller.form.UpdateUserParamterForm;
import com.yeqiangwei.util.FormatDateTime;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.util.StringHelper;
/**
* 禁止单例
* 拦截系统限制的敏感字符
*/
public class UserProxy implements UserService{
private static final Logger logger = Logger.getLogger(UserProxy.class);
private static UserService USER_SERVICE ;
private static PUserService PUSER_SERVICE;
static{
if(Validator.isEmpty(USER_SERVICE))USER_SERVICE = new UserServiceImpl();
if(Validator.isEmpty(PUSER_SERVICE))PUSER_SERVICE = new PUserServiceImpl();
}
public int updateIsIndexedByUserId(int userId, boolean isIndexed){
return USER_SERVICE.updateIsIndexedByUserId(userId,isIndexed);
}
public void createOrUpdate(User model) throws ClubException {
USER_SERVICE.createOrUpdate(model);
}
public User update(AProfileForm form) throws ClubException {
return USER_SERVICE.update(form);
}
private String noAllowed(User model){
if(Validator.isEmpty(model.getUserName()) || Validator.isEmpty(model.getPassword())
|| Validator.isEmpty(model.getEmailAddress())
)
{
return (MessageUtils.getMessage("error_reg_empty"));
}
else if(StringHelper.Glength(model.getUserName())>20){
return MessageUtils.getMessage("error_reg_userName_length");
}
else if(StringHelper.Glength(model.getPenName())>50){
return MessageUtils.getMessage("error_reg_penName_length");
}
else if(StringHelper.Glength(model.getEmailAddress())>100){
return MessageUtils.getMessage("error_reg_emailAddress_length");
}
else if(StringHelper.Glength(model.getSignatures())>500){
return MessageUtils.getMessage("error_reg_signatures_length");
}
else if(StringHelper.Glength(model.getIntro())>2000){
return MessageUtils.getMessage("error_reg_intro_length");
}
else if(StringHelper.Glength(model.getArea())>30
|| StringHelper.Glength(model.getCity())>30)
{
return MessageUtils.getMessage("error_reg_area_length");
}
else if(StringHelper.Glength(model.getWork())>30)
{
return MessageUtils.getMessage("error_reg_work_length");
}
else{
if(StringHelper.Glength(model.getPhoto())>500){
model.setPhoto(StringHelper.substring(model.getPhoto(),0,200,""));
}
}
return null;
}
@Override
public int updateSignaturesByUserId(int userId, String sig)
throws ClubException {
return USER_SERVICE.updateSignaturesByUserId(userId, sig);
}
@Override
public User updateUserParameter(UpdateUserParamterForm form)
throws ClubException {
int forumId = 0;
String title = null;
String url = "";
int topicId = form.getTopicId();
if(form.getReplyId()>0){
Reply reply = this.getReplyService().findById(form.getReplyId());
if(Validator.isEmpty(reply)){
throw new ClubException(MessageUtils.getMessage("error_notfind_topic"));
}else{
forumId = reply.getForumId();
topicId = reply.getTopicId();
title = reply.getTitle();
reply.setIsManaged(true); ////标记被管理
this.getReplyService().updateIsManaged(reply);
url = UrlUtils.getReplyUrl(reply);
}
}else{
Topic topic = this.getTopicService().findById(topicId);
if(Validator.isEmpty(topic)){
throw new ClubException(MessageUtils.getMessage("error_notfind_topic"));
}else{
forumId = topic.getForumId();
topicId = topic.getTopicId();
title = topic.getTitle();
topic.setIsManaged(true); //标记被管理
this.getTopicService().updateIsManaged(topic);
url = UrlUtils.getTopicUrl(topic);
}
}
User user = USER_SERVICE.updateUserParameter(form);
ManageLog log = new ManageLog();
log.setTopicId(topicId);
log.setReplyId(form.getReplyId());
log.setIsManaged(true);
log.setTitle(title);
log.setByUserId(form.getByUser().getUserId());
log.setByUserName(form.getByUser().getUserName());
log.setByUserIp(form.getByUserIp());
log.setCreateDateTime(FormatDateTime.now());
log.setForumId(forumId);
log.setMoney(form.getMoney());
log.setCredit(form.getCredit());
log.setScore(form.getScore());
log.setViews(form.getViews());
log.setUserName(user.getUserName());
log.setUserId(user.getUserId());
log.setIsList(true);
log.setListByUserName(true);
log.setMemo("文章评分");
log.setContent(form.getContent());
this.getManageLogService().create(log);
if(form.getSendMessage()==1){ //如果需要通知用户
Message message = new Message();
message.setUserIdOfTake(user.getUserId());
message.setUserNameOfTake(user.getUserName());
message.setUserIdOfSend(form.getByUser().getUserId());
message.setUserNameOfSend(form.getByUser().getUserName());
message.setIsOpened(false);
message.setCreateDateTime(FormatDateTime.now());
message.setUserIpOfTake(user.getLastLoginIp());
message.setUserIpOfSend(form.getByUserIp());
message.setTitle("文章被评分("+title+")");
StringBuffer sb = new StringBuffer();
if(!Validator.isEmpty(form.getContent())){
sb.append(form.getContent());
sb.append("\r\n");
}
sb.append("信誉:");
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.getBasicInfo().getUrl());
sb.append(url);
sb.append("[/url]");
message.setContent(sb.toString());
this.getMessageService().create(message, true);
}
return user;
}
public void create(User model) throws ClubException {
if(Validator.isEmpty(model)||Validator.isEmpty(model.getUserName())){
logger.error("User is null or userName is empty");
throw new ClubException(MessageUtils.getMessage("error_system"));
}
if(!getNoAllowedCharService().permissionUser(model)){
throw new ClubException(MessageUtils.getMessage("error_reg_noAllowed"));
}
else{
String exp = this.noAllowed(model);
if(exp!=null){
throw new ClubException(exp);
}else{
if(!Validator.isEmpty(this.findByUserName(model.getUserName()))||!Validator.isEmpty(this.findByEmailAddress(model.getEmailAddress()))) {
throw new ClubException(MessageUtils.getMessage("error_reg_duplicate"));
}else{
/*
* 通行证关联操作
if(getBasicInfoService().findOnly().getPassport()){
PUSER_SERVICE.create(model);
}*/
USER_SERVICE.create(model);
ManageLog log = new ManageLog();
log.setTopicId(0);
log.setTitle("");
log.setByUserId(model.getUserId());
log.setByUserName(model.getUserName());
log.setByUserIp(model.getRegIp());
log.setCreateDateTime(model.getRegDateTime());
log.setForumId(0);
USER_SERVICE.ruleUtils(log,0,0);
log.setUserName(model.getUserName());
log.setUserId(model.getUserId());
log.setIsList(true);
log.setListByUserName(true);
log.setMemo("注册会员");
StringBuffer temp = new StringBuffer();
temp.append(model.getUserName());
temp.append("小心翼翼的注册成为了《");
temp.append(this.getBasicInfo().getName());
temp.append("》永久会员");
log.setContent(temp.toString());
this.getManageLogService().create(log);
}
}
}
}
public void update(User model, boolean passwordEncrypt) throws ClubException {
if(model!=null){
if(!getNoAllowedCharService().permissionUser(model)){
throw new ClubException(MessageUtils.getMessage("error_reg_noAllowed"));
}else{
String exp = this.noAllowed(model);
if(exp!=null){
throw new ClubException(exp);
}else{
USER_SERVICE.update(model,passwordEncrypt);
}
}
}else{
logger.error("User is null!");
throw new ClubException(MessageUtils.getMessage("error_system"));
}
}
public void update(User model) throws ClubException {
this.update(model,false);
}
public int delete(User model) throws ClubException {
return USER_SERVICE.delete(model);
}
public User findByUserName(String userName) {
return USER_SERVICE.findByUserName(userName);
}
/**
* 用户登录模块判读是否开启了通行证
* 如果开启还需要向关联用户库发送判断
* @throws ClubException
*/
public User findByUserNameAndPassword(User model) throws ClubException {
String userName = model.getUserName();
String password = StringHelper.encodeString(this.getBasicInfoService().findOnly().getPasswordEncrypt(),model.getPassword());
model = USER_SERVICE.findByUserNameAndPassword(model);
logger.debug("passport: "+this.getBasicInfoService().findOnly().getPassport());
if(Validator.isEmpty(model)&&this.getBasicInfoService().findOnly().getPassport()){//如果CLUB数据库没有该用户而且通行证开启
try {
return PUSER_SERVICE.login(userName,password);
} catch (ClubException e) {
logger.error(e.toString());
return null;
}
}else{
return model;
}
}
public User findByUserNameAndPassword(User model, boolean passwordEncrypt) throws ClubException {
String userName = model.getUserName();
String password = model.getPassword();
model = USER_SERVICE.findByUserNameAndPassword(model,passwordEncrypt);
logger.debug("passport: "+this.getBasicInfoService().findOnly().getPassport());
if(Validator.isEmpty(model)&&this.getBasicInfoService().findOnly().getPassport()){//如果CLUB数据库没有该用户而且通行证开启
if(passwordEncrypt){
password=StringHelper.encodeString(this.getBasicInfoService().findOnly().getPasswordEncrypt(),password);
}
try {
return PUSER_SERVICE.login(userName,password);
} catch (ClubException e) {
logger.error(e.toString());
return null;
}
}else{
return model;
}
}
public User findByUserIdAndPassword(int userId, String password) {
return USER_SERVICE.findByUserIdAndPassword(userId,password);
}
public User findByEmailAddress(String emailAddress) {
return USER_SERVICE.findByEmailAddress(emailAddress);
}
public User findById(int id) {
return USER_SERVICE.findById(id);
}
public List<User> findByParameter(UserParameter param) {
return USER_SERVICE.findByParameter(param);
}
public long countByParameter(UserParameter param) {
return USER_SERVICE.countByParameter(param);
}
public int updateGroupIdByUserIds(int groupId, String[] userIds) throws ClubException {
return USER_SERVICE.updateGroupIdByUserIds(groupId,userIds);
}
public BasicInfo getBasicInfo(){
return USER_SERVICE.getBasicInfo();
}
public User ruleUtils(User model, int forumId, int locator) {
return USER_SERVICE.ruleUtils(model,forumId,locator);
}
public ManageLog ruleUtils(ManageLog model, int forumId, int locator) {
return USER_SERVICE.ruleUtils(model,forumId,locator);
}
public User findByUserIdAndPassword(int userId, String password, boolean passwordEncrypt) {
return USER_SERVICE.findByUserIdAndPassword(userId,password,passwordEncrypt);
}
public NoAllowedCharService getNoAllowedCharService(){
return ServiceWrapper.<NoAllowedCharService>getSingletonInstance(ServiceLocator.NOALLOWEDCHAR);
}
@Override
public Cache<User> getCache() {
return USER_SERVICE.getCache();
}
@Override
public void setViews(int userId, int views) {
USER_SERVICE.setViews(userId, views);
}
@Override
public void setViewsToDB() {
USER_SERVICE.setViewsToDB();
}
public BasicInfoService getBasicInfoService() {
return USER_SERVICE.getBasicInfoService();
}
private ManageLogService getManageLogService() {
return ServiceWrapper.<ManageLogService>getSingletonInstance(ServiceLocator.MANAGELOG);
}
private TopicService getTopicService() {
return ServiceWrapper.<TopicService>getSingletonInstance(ServiceLocator.TOPIC);
}
private ReplyService getReplyService() {
return ServiceWrapper.<ReplyService>getSingletonInstance(ServiceLocator.REPLY);
}
private MessageService getMessageService(){
return ServiceWrapper.<MessageService>getSingletonInstance(ServiceLocator.MESSAGE);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?