helinz的gravatar头像
helinz 2014-07-24 09:51:09

这个问答的功能应该如何实现?

我想知道该网站问答功能如何实现,最好有源码!谢谢!

所有回答列表(1)
最代码官方的gravatar头像
最代码官方  LV167 2014年7月26日

整个源码限于时间,等有空分享吧,先只说下db设计吧。

提问表已经解答过,请参考这个:最代码数据库设计,期待牛哥分析~大家快来学习啦~!

回答表结构如下:

CREATE TABLE `zuidaima_answer` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `create_time` datetime NOT NULL,
  `update_time` datetime default NULL,
  `user_id` bigint(20) NOT NULL,
  `content` longtext NOT NULL,
  `extend_json` varchar(10000) default '',
  `target_id` bigint(20) NOT NULL COMMENT '项目id,或分享,或寻求',
  `is_perfect` int(2) NOT NULL default '0' COMMENT '是否是最完美回答,0否1是',
  `status` int(2) NOT NULL COMMENT '-1删除0待审核2正常',
  `publish_time` datetime default NULL,
  `first_sort` int(11) NOT NULL default '0',
  `second_sort` int(11) NOT NULL default '0',
  `third_sort` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

提问可以有多个回答。

java bean类如下:

Project.java

package com.zuidaima.core.module;

/**
 **@author www.zuidaima.com
 2013-06-13 23:23:35
 */
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import net.sf.json.JSONObject;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.log4j.Logger;
import org.springframework.data.domain.Page;

import com.javaniu.core.constants.ModuleConstants;
import com.javaniu.core.util.StringUtil;

@Entity
@Table(name = "zuidaima_project")
public class Project extends BaseEntity {
	private static final Logger logger = Logger.getLogger(Project.class);
	private long userId = 0;
	private User user;
	private int type;
	private String title;
	private String content;
	private int status = ModuleConstants.MODULE_STATUS_VERIFING;
	private String extendJson;
	private JSONObject extend;
	private String topics;
	private long sourceId = 0;
	private BaseEntity source;
	private int firstSort;// view count sort
	private int secondSort;// download count sort
	private int thirdSort;// comment count sort
	private Page<Comment> comments;
	private Date publishTime;
	private String contentExt;
	private String contentExt2;
	private String contentExt3;
	private String fromUrl;
	private long uuid;
	private String tags;

	public Project() {
		this.createTime = new Date();
		this.updateTime = createTime;
	}

	@Column(name = "user_id")
	public long getUserId() {
		return this.userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	public int getType() {
		return this.type;
	}

	public void setType(int type) {
		this.type = type;
	}

	public String getTitle() {
		return this.title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return this.content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public int getStatus() {
		return this.status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	@Column(name = "extend_json")
	public String getExtendJson() {
		return this.extendJson;
	}

	public void setExtendJson(String extendJson) {
		this.extendJson = extendJson;
	}

	@Transient
	public JSONObject getExtend() {
		if (extendJson == null || extendJson.trim().equals("")) {
			extend = new JSONObject();
		} else {
			try {
				extend = JSONObject.fromObject(extendJson);
			} catch (Exception e) {
				logger.error("JSONObject.fromObject():" + e.getMessage()
						+ ",extendJson:" + extendJson);
				extend = new JSONObject();
			}
		}
		if (!extend
				.containsKey(ModuleConstants.PROJECT_EXTEND_JSON_ANSWER_COUNT)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_JSON_ANSWER_COUNT, 0);
		}
		if (!extend.containsKey(ModuleConstants.PROJECT_EXTEND_JSON_NIUBI)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_JSON_NIUBI,
					ModuleConstants.PROJECT_DEFAULT_NIUBI);
		}
		if (!extend
				.containsKey(ModuleConstants.PROJECT_EXTEND_JSON_COLLECT_COUNT)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_JSON_COLLECT_COUNT, 0);
		}
		if (!extend.containsKey(ModuleConstants.PROJECT_EXTEND_IS_VALIDATED)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_IS_VALIDATED, 0);
		}
		if (!extend.containsKey(ModuleConstants.PROJECT_EXTEND_IS_PERFECT)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_IS_PERFECT, 0);
		}
		if (!extend.containsKey(ModuleConstants.PROJECT_EXTEND_IS_ORGINAL)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_IS_ORGINAL, 0);
		}
		if (!extend.containsKey(ModuleConstants.PROJECT_EXTEND_IS_REORGANIZE)) {
			extend.put(ModuleConstants.PROJECT_EXTEND_IS_REORGANIZE, 1);
		}
		return extend;
	}

	public void setExtend(JSONObject extend) {
		this.extend = extend;
	}

	public String getTopics() {
		return this.topics;
	}

	public void setTopics(String topics) {
		this.topics = topics;
	}

	@Column(name = "source_id")
	public long getSourceId() {
		return this.sourceId;
	}

	public void setSourceId(long sourceId) {
		this.sourceId = sourceId;
	}

	@Transient
	public BaseEntity getSource() {
		return source;
	}

	public void setSource(BaseEntity source) {
		this.source = source;
	}

	@Column(name = "first_sort")
	public int getFirstSort() {
		return firstSort;
	}

	public void setFirstSort(int firstSort) {
		this.firstSort = firstSort;
	}

	@Column(name = "second_sort")
	public int getSecondSort() {
		return secondSort;
	}

	public void setSecondSort(int secondSort) {
		this.secondSort = secondSort;
	}

	@Column(name = "third_sort")
	public int getThirdSort() {
		return thirdSort;
	}

	public void setThirdSort(int thirdSort) {
		this.thirdSort = thirdSort;
	}

	@Transient
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Transient
	public Page<Comment> getComments() {
		return comments;
	}

	public void setComments(Page<Comment> comments) {
		this.comments = comments;
	}

	@Column(name = "publish_time")
	public Date getPublishTime() {
		return publishTime;
	}

	public void setPublishTime(Date publishTime) {
		this.publishTime = publishTime;
	}

	@Transient
	public String getContentExt() {
		contentExt = StringUtil.formatContent(content);
		return contentExt;
	}

	public void setContentExt(String contentExt) {
		this.contentExt = contentExt;
	}

	@Transient
	public String getContentExt2() {
		contentExt2 = StringUtil.formatContentImgs(content);
		return contentExt2;
	}

	public void setContentExt2(String contentExt2) {
		this.contentExt2 = contentExt2;
	}

	@Transient
	public String getContentExt3() {
		contentExt3 = StringUtil.formatContentImgs2(content);
		return contentExt3;
	}

	public void setContentExt3(String contentExt3) {
		this.contentExt3 = contentExt3;
	}

	@Column(name = "from_url")
	public String getFromUrl() {
		return fromUrl;
	}

	public void setFromUrl(String fromUrl) {
		this.fromUrl = fromUrl;
	}

	public long getUuid() {
		return uuid;
	}

	public void setUuid(long uuid) {
		this.uuid = uuid;
	}

	public String getTags() {
		return tags;
	}

	public void setTags(String tags) {
		this.tags = tags;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}

Answer.java

package com.zuidaima.core.module;

/**
 **@author www.zuidaima.com
 2013-06-13 23:27:04
 */
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import net.sf.json.JSONObject;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.data.domain.Page;

import com.javaniu.core.constants.ModuleConstants;
import com.javaniu.core.util.StringUtil;

@Entity
@Table(name = "zuidaima_answer")
public class Answer extends BaseEntity {
	private long userId = 0;
	private User user;
	private String content;
	private String extendJson;
	private JSONObject extend;
	private long targetId = 0;
	private BaseEntity target;
	private int isPerfect = ModuleConstants.ANSWER_IS_PERFECT_NO;
	private int status = ModuleConstants.MODULE_STATUS_NORMAL;
	private Page<Comment> comments;
	private Date publishTime;
	private String contentExt;
	private String contentExt2;
	private int firstSort;
	private int secondSort;
	private int thirdSort;// comment count sort

	public Answer() {
		this.createTime = new Date();
		this.updateTime = createTime;
	}

	@Column(name = "user_id")
	public long getUserId() {
		return this.userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	public String getContent() {
		return this.content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	@Column(name = "extend_json")
	public String getExtendJson() {
		return this.extendJson;
	}

	public void setExtendJson(String extendJson) {
		this.extendJson = extendJson;
	}

	@Transient
	public JSONObject getExtend() {
		if (extendJson == null) {
			extend = new JSONObject();
		} else {
			extend = JSONObject.fromObject(extendJson);
		}
		if (!extend
				.containsKey(ModuleConstants.ANSWER_EXTEND_JSON_DOWNLOAD_COUNT)) {
			extend.put(ModuleConstants.ANSWER_EXTEND_JSON_DOWNLOAD_COUNT, 0);
		}
		if (!extend.containsKey(ModuleConstants.ANSWER_EXTEND_JSON_FILE_SIZE)) {
			extend.put(ModuleConstants.ANSWER_EXTEND_JSON_FILE_SIZE, 0);
		}
		return extend;
	}

	public void setExtend(JSONObject extend) {
		this.extend = extend;
	}

	@Column(name = "target_id")
	public long getTargetId() {
		return this.targetId;
	}

	public void setTargetId(long targetId) {
		this.targetId = targetId;
	}

	@Transient
	public BaseEntity getTarget() {
		return target;
	}

	public void setTarget(BaseEntity target) {
		this.target = target;
	}

	@Column(name = "is_perfect")
	public int getIsPerfect() {
		return this.isPerfect;
	}

	public void setIsPerfect(int isPerfect) {
		this.isPerfect = isPerfect;
	}

	public int getStatus() {
		return this.status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	@Transient
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Transient
	public Page<Comment> getComments() {
		return comments;
	}

	public void setComments(Page<Comment> comments) {
		this.comments = comments;
	}

	@Column(name = "publish_time")
	public Date getPublishTime() {
		return publishTime;
	}

	public void setPublishTime(Date publishTime) {
		this.publishTime = publishTime;
	}

	@Transient
	public String getContentExt() {
		contentExt = StringUtil.formatContent(content);
		return contentExt;
	}

	public void setContentExt(String contentExt) {
		this.contentExt = contentExt;
	}

	@Transient
	public String getContentExt2() {
		contentExt2 = StringUtil.formatContentImgs(content);
		return contentExt2;
	}

	public void setContentExt2(String contentExt2) {
		this.contentExt2 = contentExt2;
	}

	@Column(name = "first_sort")
	public int getFirstSort() {
		return firstSort;
	}

	public void setFirstSort(int firstSort) {
		this.firstSort = firstSort;
	}

	@Column(name = "second_sort")
	public int getSecondSort() {
		return secondSort;
	}

	public void setSecondSort(int secondSort) {
		this.secondSort = secondSort;
	}

	@Column(name = "third_sort")
	public int getThirdSort() {
		return thirdSort;
	}

	public void setThirdSort(int thirdSort) {
		this.thirdSort = thirdSort;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}

 

最近浏览
温柔的小白  LV8 2017年10月9日
okasdf168  LV2 2017年4月27日
java先生  LV26 2015年12月15日
yu120123  LV7 2014年12月17日
javait1304  LV1 2014年8月22日
遇见,  LV36 2014年8月7日
岁寒松柏  LV4 2014年8月6日
xinghe27  LV7 2014年8月1日
baotong  LV7 2014年7月29日
lzx00900  LV9 2014年7月28日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友