스프링

Git-Hub  

 

https://github.com/braverokmc79/spring_boot_demo2

 

import.sql

count_of_answer 추가

INSERT INTO USER (ID, USER_ID, PASSWORD , NAME,  EMAIL) VALUES(1, 'admin', '1111' , '김민수' ,  'kiminsu@gmail.com');
INSERT INTO USER (ID, USER_ID, PASSWORD , NAME,  EMAIL) VALUES(2, 'test', '1111' , '홍길동' ,  'test@gmail.com');
INSERT INTO QUESTION (id, writer_id, title, contents, datetime, count_of_answer) VALUES(1, 1, '국내에서 RuBy on Rails와 paly 가', 'Ruby on Rails(이하 RoR) 는', CURRENT_TIMESTAMP(), 0);
INSERT INTO QUESTION (id, writer_id, title, contents, datetime, count_of_answer) VALUES(2, 2, '순수', '나는 사실 울었어~ 후회 하면서', CURRENT_TIMESTAMP(), 0);

 

class Question

countOfAnswer 추가

@JsonProperty
	private Integer countOfAnswer =0;


	public void addAnswer() {
		this.countOfAnswer +=1;	
	}
	
	public void deleteAnswer(){
		this.countOfAnswer  -=1;
	}

 

index.html

      {{#questions}}
              <li>
                  <div class="wrap">
                      <div class="main">
                          <strong class="subject">
                              <a href="/questions/{{id}}">{{title}}</a>
                          </strong>
                          <div class="auth-info">
                              <i class="icon-add-comment"></i>
                              <span class="time">{{datetime}}</span>
                              <a href="/questions/{{id}}" class="author">{{writer}}</a>
                          </div>
                          <div class="reply" title="댓글">
                              <i class="icon-reply"></i>
                              <span class="point">{{countOfAnswer}}</span>
                          </div>
                      </div>
                  </div>
              </li>
          {{/questions}}

 

class ApiAnswerController

question.addAnswer(); question.deleteAnswer();

package net.slipp.web;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import net.slipp.domain.Answer;
import net.slipp.domain.AnswerRepository;
import net.slipp.domain.Question;
import net.slipp.domain.QuestionRepository;
import net.slipp.domain.Result;
import net.slipp.domain.User;

@RestController
@RequestMapping("/api/questions/{questionId}/answers")
public class ApiAnswerController {
	
	@Autowired
	private QuestionRepository questionRepository;
	
	@Autowired
	private AnswerRepository answerRepository;
	
	@PostMapping("")
	public Answer create(@PathVariable Long questionId, String contents, HttpSession session){
		if(!HttpSessionUtils.isLoginUser(session)){
			return null;
		}
		User loginUser =HttpSessionUtils.getUserFromSession(session);
		Question question =questionRepository.findOne(questionId);
		Answer answer =new Answer(loginUser, question, contents);
		question.addAnswer();
		return answerRepository.save(answer);
	}

	@DeleteMapping("/{id}")
	public Result delete(@PathVariable Long questionId, @PathVariable Long id, HttpSession session){
		if(!HttpSessionUtils.isLoginUser(session)){
			return Result.fail("로그인해야 합니다.");
		}
		
		Answer answer =answerRepository.findOne(id);
		User loginUser =HttpSessionUtils.getUserFromSession(session);
		if(!answer.isSameWriter(loginUser)){
			return Result.fail("자신의 글만 삭제 할 수 있습니다.");
		}
		answerRepository.delete(id);
		Question question =questionRepository.findOne(questionId);
		question.deleteAnswer();
		questionRepository.save(question);
		return Result.ok();
		
	}

	
	
}






 

script.js


function countAnswer(check){
	var count =$(".qna-comment-count strong");
	var countNum =count.text();
	if(check)count.text(parseInt(countNum)+1);
	else count.text(parseInt(countNum)-1);	
}

function onSuccess(data, status){
	console.log(data);
	var answerTemplate =$("#answerTemplate").html();
	var template =answerTemplate.format(data.writer.userId, data.formattedCreateDate, data.contents, data.questionId, data.id);
	$(".qna-comment-slipp-articles").prepend(template);
	$("textarea[name=contents]").val("");
	countAnswer(true);
}

 

function deleteAnswer(e){
	
	e.preventDefault();
	var url =$(this).attr("href");
	console.log("답변 삭제"  + url);
	var thisDelete=$(this);
	
	$.ajax({
		type :'delete',
		url: url,
		dataType : 'json',
		error :function (xhr, status){
			console.log("error");
		},
		success:function(data, status){
			console.log(data);
			if(data.valid){
				thisDelete.closest('article').remove();	
				countAnswer(false);
			}else{
				alert(data.errorMessage);
			}
		}
	});
	
}

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

얼음은 물에서 된 것이나 물보다 더 차다. 제자가 그 스승보다 더 훌륭하게 되었을 쓰는 말. -순자

댓글 ( 4)

댓글 남기기

작성