package org.springblade.jfpt.chatrecords.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.jfpt.chatrecords.entity.ChatRecords; import org.springblade.jfpt.chatrecords.service.ChatRecordsService; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.*; /** * @author zhongrj * @time 2021-06-18 * 聊天消息控制层 */ @AllArgsConstructor @RestController @RequestMapping("/chat-records") public class ChatRecordsController { private final IUserClient iUserClient; private final ChatRecordsService chatRecordsService; /** * 查询单聊消息记录 * @param chatRecords 消息记录对象 * @param response 响应 * @param query 查询条件,分页 * @return */ @GetMapping("/getSingleMessagePage") public R getSingleMessagePage(@Valid ChatRecords chatRecords, HttpServletResponse response, Query query){ //跨域设置 crossDomain(response); Map map = new HashMap<>(2); //查询单聊人的信息 List user = Arrays.asList(iUserClient.userInfoById(chatRecords.getSenderId()).getData(), iUserClient.userInfoById(chatRecords.getRecipientId()).getData()); //查询单聊记录信息 if (null==query.getCurrent()){ map.put("chatRecordsIPage",chatRecordsService.selectChatlist(chatRecords)); }else { map.put("chatRecordsIPage",chatRecordsService.selectChatRecordsPage(Condition.getPage(query), chatRecords)); } //封装数据 map.put("user",user); //返回数据 return R.data(map); } /** * 查询当前用户的聊天列表 * @param chatRecords 消息记录对象 * @param response 响应 * @param query 查询条件,分页 * @return */ @GetMapping("/getChatListPage") public R getChatListPage(@Valid ChatRecords chatRecords, HttpServletResponse response, Query query){ //跨域设置 crossDomain(response); if(null==query.getCurrent()){ //不分页 return R.data(chatRecordsService.getChatList( chatRecords)); } //查询当前人员的聊天列表,并返回数据 return R.data(chatRecordsService.getChatListPage(Condition.getPage(query), chatRecords)); } /** * 单聊消息插入 * @param chatRecords 消息记录对象 * @param response 响应 * @return */ @PostMapping("/insertSingleChat") public R insertSingleChat(@Valid @RequestBody ChatRecords chatRecords, HttpServletResponse response){ //跨域设置 crossDomain(response); //单聊消息插入 return R.data(chatRecordsService.save(chatRecords)); } /** * 配置跨域设置 * @param response */ private void crossDomain(HttpServletResponse response) { response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Allow-Credentials","true"); } }