//引入MongoDB依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
//引入Redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
Result类
public class Result {
private boolean flag;//是否成功
private Integer code;// 返回码
private String message;//返回信息
private Object data;// 返回数据
public Result() {
}
public Result(boolean flag, Integer code, String message) {
this.flag = flag;
this.code = code;
this.message = message;
}
public Result(boolean flag, Integer code, String message, Object data) {
this.flag = flag;
this.code = code;
this.message = message;
this.data = data;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
StatusCode类
public class StatusCode {
public static final int OK=20000;//成功
public static final int ERROR =20001;//失败
public static final int LOGINERROR =20002;//用户名或密码错误
public static final int ACCESSERROR =20003;//权限不足
public static final int REMOTEERROR =20004;//远程调用失败
public static final int REPERROR =20005;//重复操作
}
SpitController层
@Autowired
private RedisTemplate redisTemplate;
//回复消息
@RequestMapping(method = RequestMethod.POST)
public Result save(@RequestBody Spit spit){
spitService.save(spit);
return new Result(true,StatusCode.OK,"保存成功");
}
//点赞
@RequestMapping(value = "/thumbup/{spitid}",method = RequestMethod.PUT)
public Result Thumbup(@PathVariable String spitid){
//判斷用户是否已经点赞,用户ID暂且写死
String userid="123";
if (redisTemplate.opsForValue().get("thumbup_"+userid)!=null){
return new Result(false,StatusCode.REPERROR,"不能重复点赞");
}
spitService.thumbup(spitid);
redisTemplate.opsForValue().set("thumbup_"+userid,1);
return new Result(true,StatusCode.OK,"点赞成功");
}
service层
@Autowired
private MongoTemplate mongoTemplate;
public void save(Spit spit){
spit.set_id(idWorker.nextId()+"");
spit.setPublishtime(new Date());//发布日期
spit.setVisits(0);//浏览量
spit.setShare(0);//分享数
spit.setThumbup(0);//点赞数
spit.setComment(0);//回复数
spit.setState("1");//状态
//如果当前添加的吐槽有父节点,那么回复的父节点的回复数+1
if(spit.get_id()!=null && ! "".equals(spit.get_id())){
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(spit.getParentid()));
Update updata = new Update();
updata.inc("comment",1);
mongoTemplate.updateFirst(query,updata,"spit"); //spit mongodb吐槽表名
}
spitDao.save(spit);
}
public void thumbup(String spitid) {
//方式一:效率低,点赞需要经过两次数据库
/* Spit spit = spitDao.findById(spitid).get();
spit.setThumbup((spit.getThumbup() == null ? 0:spit.getThumbup())+1);
spitDao.save(spit);*/
//方式二:
Update update = new Update();
update.inc("thumbup",1);
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(spitid));
mongoTemplate.updateFirst(query,update,"spit");
}