package com.bosshand.virgo.api.controller; import com.bosshand.virgo.api.model.*; import com.bosshand.virgo.api.service.ProjectItemTargetRoomService; import com.bosshand.virgo.api.service.RoomService; import com.bosshand.virgo.core.response.Response; import com.bosshand.virgo.core.utils.ContextUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("roomOperation") @Api(tags = {"房源用户操作(访客,收藏,评价,预约)"}) public class RoomController { @Autowired RoomService roomService; @Autowired ProjectItemTargetRoomService projectItemTargetRoomService; @ApiOperation("获取访客记录") @RequestMapping(value = "/visitor/{currPage}/{pageSize}", method = RequestMethod.POST) public Response list(@RequestBody RoomVisitor roomVisitor, @PathVariable int currPage, @PathVariable int pageSize) { int totalCount = roomService.getTotalCount(roomVisitor); List dataList = roomService.getLimit(roomVisitor, currPage, pageSize); Map result = new HashMap<>(); result.put("dataList", dataList); result.put("totalCount", totalCount); return Response.ok(result); } @ApiOperation("新增访客") @RequestMapping(value = "/visitor", method = RequestMethod.POST) public Response insert(@RequestBody RoomVisitor roomVisitor) { roomService.insert(roomVisitor); return Response.ok(); } @ApiOperation("当前用户收藏房源") @RequestMapping(value = "/collection/{projectItemTargetRoomId}", method = RequestMethod.GET) public Response insert(@PathVariable long projectItemTargetRoomId) { long userId = ContextUtils.getCurrentUser().getId(); RoomCollection collection = roomService.get(projectItemTargetRoomId, userId); if (collection != null) { return Response.fail(100001, "该用户已收藏此房源"); } RoomCollection roomCollection = new RoomCollection(); roomCollection.setProjectItemTargetRoomId(projectItemTargetRoomId); roomCollection.setUserId(userId); roomService.insert(roomCollection); return Response.ok(); } @ApiOperation("当前用户取消收藏房源") @RequestMapping(value = "/collection/{projectItemTargetRoomId}", method = RequestMethod.DELETE) public Response delete(@PathVariable long projectItemTargetRoomId) { long userId = ContextUtils.getCurrentUser().getId(); roomService.deleteCollection(projectItemTargetRoomId, userId); return Response.ok(); } @ApiOperation("当前用户收藏房源数量(collectionCount:收藏数量)") @RequestMapping(value = "/collection/count", method = RequestMethod.GET) public Response count() { long userId = ContextUtils.getCurrentUser().getId(); int collectionCount = roomService.getTotalCount(userId); Map result = new HashMap<>(); result.put("collectionCount", collectionCount); return Response.ok(result); } @ApiOperation("当前用户收藏房源列表") @RequestMapping(value = "/collection/{currPage}/{pageSize}", method = RequestMethod.GET) public Response list(@PathVariable int currPage, @PathVariable int pageSize, @RequestParam(required = false) String coordinates) { long userId = ContextUtils.getCurrentUser().getId(); int totalCount = roomService.getTotalCount(userId); List list = roomService.getLimit(userId, currPage, pageSize); List ids = new ArrayList<>(); list.forEach(ls -> ids.add(ls.getProjectItemTargetRoomId())); List dataList = projectItemTargetRoomService.getIds(ids); // 返回距离 for(ProjectItemTargetRoom room : dataList){ projectItemTargetRoomService.coordinates(room, coordinates); } Map result = new HashMap<>(); result.put("dataList", dataList); result.put("totalCount", totalCount); return Response.ok(result); } @ApiOperation("获取房源评价") @RequestMapping(value = "/evaluate/{currPage}/{pageSize}", method = RequestMethod.POST) public Response list(@RequestBody RoomEvaluate roomEvaluate, @PathVariable int currPage, @PathVariable int pageSize) { int totalCount = roomService.getTotalCount(roomEvaluate); List dataList = roomService.getLimit(roomEvaluate, currPage, pageSize); Map result = new HashMap<>(); result.put("dataList", dataList); result.put("totalCount", totalCount); return Response.ok(result); } @ApiOperation("新增评价") @RequestMapping(value = "/evaluate", method = RequestMethod.POST) public Response insert(@RequestBody RoomEvaluate roomEvaluate) { roomService.insert(roomEvaluate); return Response.ok(); } @ApiOperation("获取预约看房") @RequestMapping(value = "/reservation/list", method = RequestMethod.POST) public Response list(@RequestBody RoomReservation roomReservation) { List list = roomService.getList(roomReservation); for (RoomReservation r : list) { r.setProjectName(projectItemTargetRoomService.getProject(r.getProjectId()).getName()); } return Response.ok(list); } @ApiOperation("新增预约看房") @RequestMapping(value = "/reservation", method = RequestMethod.POST) public Response insert(@RequestBody RoomReservation roomReservation) { roomService.insert(roomReservation); return Response.ok(); } }