리뷰 작성 로직을 만든다
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lgy.shallweshare.review.dao.ReviewDao">
<insert id="reviewWrite" parameterType="hashmap">
insert into REVIEW(review_id,a_id,p_id, u_id, review_u_id, review_satisfy, review_content, review_created)
values( NVL((select max (review_id)from review),0)+1,#{a_id},#{p_id}, #{u_id}, #{review_u_id}, #{review_satisfy}, #{review_content}, SYSDATE)
</insert>
<select id="getReviewInfo" parameterType="hashmap" resultType="com.lgy.shallweshare.review.dto.ReviewDto">
select
review_id,
u_id,
review_u_id,
p_id,
review_satisfy,
review_content,
review_created from
REVIEW where review_id=#{review_id}
</select>
<update id="reviewModify" parameterType="hashmap">
update review set
review_satisfy = #{review_satisfy},
review_content = #{review_content},
review_created = SYSDATE
where review_id = #{review_id}
</update>
<delete id="reviewDelete" parameterType="hashmap">
delete from review
where review_id=#{review_id}
</delete>
<update id="updateTemperatureUp" parameterType="hashmap">
update users set
u_temperature = u_temperature + 0.5
where
u_id = #{review_u_id,jdbcType=VARCHAR}
</update>
<update id="updateTemperatureDown" parameterType="hashmap">
update users set
u_temperature = u_temperature - 0.5
where
u_id = #{review_u_id,jdbcType=VARCHAR}
</update>
</mapper>
<select id="getWritableApplicationList" resultType="com.lgy.shallweshare.mypage.dto.ApplicationPartyDto">
select
a.a_id
,a.u_id
,a.p_id
,p.p_title
,a.a_price
,a.a_created
,a.a_payment
,a.a_completed
,a.a_review
from application a, party p
where a.u_id= #{u_id, jdbcType=VARCHAR}
and a.p_id=p.p_id
and a_completed = 'T'
and a_review = 'F'
</select>
<update id="updateReviewAvailability" parameterType="hashmap">
update application set
a_review = 'T'
where a_id= #{a_id, jdbcType = VARCHAR}
</update>
getWritableApplicationList(HashMap<String, String> param);
public interface ReviewDao {
public void reviewWrite(HashMap<String, String> param);
public ReviewDto getReviewInfo(String review_id);
public void reviewModify(HashMap<String, String> param);
public void reviewDelete(HashMap<String, String> param);
public ArrayList<ReviewDto> getPersonalReviewList(HashMap<String, String> param);
public void updateTemperatureDown(HashMap<String, String> param);
public void updateTemperatureUp(HashMap<String, String> param);
}
public interface ReviewService {
public void reviewWrite(HashMap<String, String> param);
public ReviewDto getReviewInfo(String review_id);
public void reviewModify(HashMap<String, String> param);
public void reviewDelete(HashMap<String, String> param);
public void updateTemperatureDown(HashMap<String, String> param);
public void updateTemperatureUp(HashMap<String, String> param);
}
public ArrayList<ReviewDto> getWrittenReviewList(HashMap<String, String> param);
public ArrayList<ApplicationPartyDto> getWritableApplicationList(HashMap<String, String> param);
@Slf4j
@Service("ReviewService")
public class ReviewServiceImpl implements ReviewService {
@Autowired
private SqlSession sqlSession;
@Override
public void reviewWrite(HashMap<String, String> param) {
log.info("@# ReviewServiceImpl.write() start");
ReviewDao dao = sqlSession.getMapper(ReviewDao.class);
dao.reviewWrite(param);
log.info("@# ReviewServiceImpl.write() end");
}
@Override
public ReviewDto getReviewInfo(String review_id) {
log.info("@# ReviewServiceImpl.contentView() start");
ReviewDao dao = sqlSession.getMapper(ReviewDao.class);
ReviewDto dto = dao.getReviewInfo(review_id);
log.info("@# ReviewServiceImpl.contentView() end");
return dto;
}
@Override
public void reviewModify(HashMap<String, String> param) {
log.info("@# ReviewServiceImpl.modify() start");
ReviewDao dao = sqlSession.getMapper(ReviewDao.class);
dao.reviewModify(param);
}
@Override
public void reviewDelete(HashMap<String, String> param) {
log.info("@# ReviewServiceImpl.delete() start");
ReviewDao dao = sqlSession.getMapper(ReviewDao.class);
dao.reviewDelete(param);
log.info("@# ReviewServiceImpl.delete() end");
}
@Override
public void updateTemperatureDown(HashMap<String, String> param) {
ReviewDao dao = sqlSession.getMapper(ReviewDao.class);
dao.updateTemperatureDown(param);
}
@Override
public void updateTemperatureUp(HashMap<String, String> param) {
// TODO Auto-generated method stub
ReviewDao dao = sqlSession.getMapper(ReviewDao.class);
dao.updateTemperatureUp(param);
}
}
@Override
public ArrayList<ApplicationPartyDto> getWritableApplicationList(HashMap<String, String> param) {
MyPageDao dao = sqlSession.getMapper(MyPageDao.class);
return dao.getWritableApplicationList(param);
}
@Controller
@Slf4j
public class ReviewController {
@Autowired
private ReviewService reviewService;
@Autowired
private UsersService usersService;
@Autowired
private MyPageService myPageService;
@Autowired
private PartyService partyService;
/** 리뷰 쓰기 페이지 **/
@RequestMapping("review/write")
public String write_view(@RequestParam HashMap<String, String> param,Model model) {
log.info("@# Controller:review/write");
int u_id = partyService.getPartyInfo(param).getU_id();
UsersDto master = usersService.getUserInfo(u_id);
model.addAttribute("master",master);
PartyDto party = partyService.getPartyInfo(param);
model.addAttribute("party",party);
return "review/reviewWrite_view";
}
/** 리뷰 쓰기 로직 **/
@RequestMapping("review/write_process")
public String write(@RequestParam HashMap<String, String> param, HttpServletRequest request) {
HttpSession session = request.getSession();
log.info("@# Controller: reviewWrite");
reviewService.reviewWrite(param);
myPageService.updateReviewAvailability(param);
log.info(param.get("review_satisfy"));
if(param.get("review_satisfy").equals("T")){
reviewService.updateTemperatureUp(param);
}else if(param.get("review_satisfy").equals("F")){
reviewService.updateTemperatureDown(param);
}
return "redirect:../mypage/writable-reviews?u_id="+session.getAttribute("u_id");
}
/******************* 리뷰 수정 페이지 ***************************/
@RequestMapping("review/modify")
public String content_view(@RequestParam HashMap<String, String> param, Model model) {
ReviewDto dto = reviewService.getReviewInfo(param.get("review_id"));
model.addAttribute("review", dto);
UsersDto master = usersService.getUserInfo(Integer.parseInt(dto.getReview_u_id()));
model.addAttribute("master",master);
PartyDto party = partyService.getPartyInfo(dto.getP_id());
model.addAttribute("party",party);
return "review/reviewModifyView";
}
/******************* 리뷰 수정 로직 ***************************/
@RequestMapping("review/modify_process")
public String modify(@RequestParam HashMap<String, String> param,HttpServletRequest request) {
log.info("@@@###modify start");
ReviewDto originalReview = reviewService.getReviewInfo(param.get("review_id"));
log.info(originalReview.getReview_satisfy());
log.info(param.get("review_satisfy"));
HttpSession session = request.getSession();
reviewService.reviewModify(param);
if(!originalReview.getReview_satisfy().equals(param.get("review_satisfy"))){
if(param.get("review_satisfy").equals("T")){
reviewService.updateTemperatureUp(param);
}else if(param.get("review_satisfy").equals("F")){
reviewService.updateTemperatureDown(param);
}
}
return "redirect:../mypage/written-reviews?u_id="+session.getAttribute("u_id");
}
/******************* 리뷰 삭제 페이지 ***************************/
@RequestMapping("review/delete_process")
public String delete(@RequestParam HashMap<String, String> param,HttpServletRequest request) {
log.info("@@@###delete");
HttpSession session = request.getSession();
reviewService.reviewDelete(param);
return "redirect:../mypage/written-reviews?u_id="+session.getAttribute("u_id");
}
/** 개별 리뷰 페이지 **/
@RequestMapping("review/review_list")
public String myReview(@RequestParam HashMap<String, String> param, HttpSession session, Model model) {
UsersDto usersdto = usersService.getUserInfo(Integer.parseInt(param.get("u_id")));
model.addAttribute("users", usersdto);
ArrayList<ReviewDto> list = reviewService.getPersonalReviewList(param);
model.addAttribute("list", list);
return "review/review_list";
}
@RequestMapping("review/party_list")
public String reviewview(@RequestParam HashMap<String, String> param, HttpSession session, Model model) {
UsersDto usersdto = usersService.getUserInfo(Integer.parseInt(param.get("u_id")));
model.addAttribute("users", usersdto);
ArrayList<PartyDto> partyList = new ArrayList<PartyDto>();
partyList= myPageService.getMyPartyList(param);
model.addAttribute("party",partyList);
return "review/party_list";
}
}
// =============== 작성 가능한 리뷰 ===============
@RequestMapping("writable-reviews")
public String writable_reviews(HttpServletRequest request, @RequestParam HashMap<String, String> param,
Model model) {
log.info("@# Controller: writable-reviews");
if (request.getSession().getAttribute("u_id") != null) {
paramPutU_id(request, param);
ArrayList<ApplicationPartyDto> writableList = mService.getWritableApplicationList(param);
model.addAttribute("writableApplicationList", writableList);
}
return "mypage/writable-reviews";
}
// =============== 작성한 리뷰 ===============
@RequestMapping("written-reviews")
public String written_reviews(HttpServletRequest request, @RequestParam HashMap<String, String> param,
Model model) {
log.info("@# Controller: written-reviews");
if (request.getSession().getAttribute("u_id") != null) {
paramPutU_id(request, param);
ArrayList<ReviewDto> writtenReviewList = mService.getWrittenReviewList(param);
model.addAttribute("written", writtenReviewList);
ArrayList<PartyDto> partyInfo = new ArrayList<PartyDto>();
for (int i = 0; i < writtenReviewList.size(); i++) {
partyInfo.add(partyService.getPartyInfo(writtenReviewList.get(i).getP_id()));
}
model.addAttribute("partyInfo", partyInfo);
}
return "mypage/written-reviews";
}