diff --git a/bwie-common/pom.xml b/bwie-common/pom.xml index 6f86910..b3ec386 100644 --- a/bwie-common/pom.xml +++ b/bwie-common/pom.xml @@ -116,5 +116,6 @@ fastjson2 2.0.42 + diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Abc.java b/bwie-common/src/main/java/com/bwie/common/domain/Abc.java deleted file mode 100644 index e720254..0000000 --- a/bwie-common/src/main/java/com/bwie/common/domain/Abc.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.bwie.common.domain; - -public class Abc { -} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Chat.java b/bwie-common/src/main/java/com/bwie/common/domain/Chat.java new file mode 100644 index 0000000..c4d8646 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Chat.java @@ -0,0 +1,28 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Chat { + private Long ChatId; + private Long sendId; + private Long receiveId; + private String chatText; + private Integer isUp; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date craeteTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + private Integer isDelete; + private Integer isRead; +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/House.java b/bwie-common/src/main/java/com/bwie/common/domain/House.java index 6bbe0de..338fdca 100644 --- a/bwie-common/src/main/java/com/bwie/common/domain/House.java +++ b/bwie-common/src/main/java/com/bwie/common/domain/House.java @@ -8,6 +8,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -44,5 +45,5 @@ public class House { private Date createTime; //创建时间 private Date updateTime; //最近更新时间 private Integer isDelete; //逻辑删除字段 - + private Long dictionaryTypeId; } diff --git a/bwie-common/src/main/java/com/bwie/common/domain/HouseImages.java b/bwie-common/src/main/java/com/bwie/common/domain/HouseImages.java index 5ef4c7a..a991225 100644 --- a/bwie-common/src/main/java/com/bwie/common/domain/HouseImages.java +++ b/bwie-common/src/main/java/com/bwie/common/domain/HouseImages.java @@ -19,4 +19,5 @@ public class HouseImages { private Long id; //id private Long houseId; //房型id private String imageAddr; //图片地址 + } diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Info.java b/bwie-common/src/main/java/com/bwie/common/domain/Info.java new file mode 100644 index 0000000..d2a4529 --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Info.java @@ -0,0 +1,46 @@ +package com.bwie.common.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Info { + /* + id + */ + private Long userId; + /* + 姓名 + */ + private String userName; + /* + 手机号 + */ + private String userTel; + + /* + 公司 + */ + private String company; + /* + 积分 + */ + private Integer point; + + /* + 登陆人身份【0-经纪人 1-用户】 + */ + private Integer userRole; + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/domain/Message.java b/bwie-common/src/main/java/com/bwie/common/domain/Message.java new file mode 100644 index 0000000..2e7e2fa --- /dev/null +++ b/bwie-common/src/main/java/com/bwie/common/domain/Message.java @@ -0,0 +1,30 @@ +package com.bwie.common.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Message { + private Long messageId; + private Long userId; + private String messageText; + private Integer isUp; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date craeteTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + private Integer isDelete; + private Integer isRead; + + + +} diff --git a/bwie-common/src/main/java/com/bwie/common/handler/GlobalExceptionHandle.java b/bwie-common/src/main/java/com/bwie/common/handler/GlobalExceptionHandle.java index ac544b4..3e2d7aa 100644 --- a/bwie-common/src/main/java/com/bwie/common/handler/GlobalExceptionHandle.java +++ b/bwie-common/src/main/java/com/bwie/common/handler/GlobalExceptionHandle.java @@ -8,7 +8,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.validation.ObjectError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.stream.Collectors; diff --git a/bwie-common/src/main/java/com/bwie/common/remote/house/RemoteHouseService.java b/bwie-common/src/main/java/com/bwie/common/remote/house/RemoteHouseService.java index 1c46fd7..16b0d18 100644 --- a/bwie-common/src/main/java/com/bwie/common/remote/house/RemoteHouseService.java +++ b/bwie-common/src/main/java/com/bwie/common/remote/house/RemoteHouseService.java @@ -1,11 +1,13 @@ package com.bwie.common.remote.house; +import com.bwie.common.domain.House; import com.bwie.common.domain.request.HouseEsRequest; import com.bwie.common.remote.house.factory.RemoteHouseFactory; import com.bwie.common.result.Result; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @@ -17,4 +19,7 @@ import java.util.List; public interface RemoteHouseService { @GetMapping("/list") public Result> getHouseEsList(); + + @PostMapping("/shouall") + public Result> shouall(); } diff --git a/bwie-common/src/main/java/com/bwie/common/remote/house/factory/RemoteHouseFactory.java b/bwie-common/src/main/java/com/bwie/common/remote/house/factory/RemoteHouseFactory.java index 92df99a..ab991e7 100644 --- a/bwie-common/src/main/java/com/bwie/common/remote/house/factory/RemoteHouseFactory.java +++ b/bwie-common/src/main/java/com/bwie/common/remote/house/factory/RemoteHouseFactory.java @@ -1,5 +1,6 @@ package com.bwie.common.remote.house.factory; +import com.bwie.common.domain.House; import com.bwie.common.domain.request.HouseEsRequest; import com.bwie.common.remote.house.RemoteHouseService; @@ -21,6 +22,12 @@ public class RemoteHouseFactory implements FallbackFactory { log.error("远程调用失败:[{}]",cause.getMessage(),cause); return Result.error(cause.getMessage()); } + + @Override + public Result> shouall(){ + log.error("远程调用失败:[{}]",cause.getMessage(),cause); + return Result.error(cause.getMessage()); + } }; } } diff --git a/bwie-modules/bwie-background/src/main/java/com/bwie/background/BackgroundMapperApp.java b/bwie-modules/bwie-background/src/main/java/com/bwie/background/BackgroundApp.java similarity index 100% rename from bwie-modules/bwie-background/src/main/java/com/bwie/background/BackgroundMapperApp.java rename to bwie-modules/bwie-background/src/main/java/com/bwie/background/BackgroundApp.java diff --git a/bwie-modules/bwie-chat/src/main/java/com/bwie/chat/handle/WebScoketHandle.java b/bwie-modules/bwie-chat/src/main/java/com/bwie/chat/handle/WebScoketHandle.java new file mode 100644 index 0000000..bd77362 --- /dev/null +++ b/bwie-modules/bwie-chat/src/main/java/com/bwie/chat/handle/WebScoketHandle.java @@ -0,0 +1,186 @@ +package com.bwie.chat.handle; + +import com.bwie.chat.entry.CodeEnum; +import com.bwie.common.result.Result; +import com.mysql.cj.protocol.x.Notice; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.socket.*; + +import java.io.IOException; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +@Slf4j +public class WebScoketHandle implements WebSocketHandler { + // 存放 sessionId 与 session + private static Map SESSIONS = new ConcurrentHashMap<>(); + // 在线用户列表 + private static List ONLINE_USERS = new ArrayList<>(); + // 消息列表 + private static List msgList = new ArrayList<>(); + // 公告 + private static Notice notice = new Notice(); + + /** + * WebSocket 连接建立后调用的方法,通常用于处理连接建立后的业务逻辑。 + * @param session + * @throws Exception + */ + @Override + public void afterConnectionEstablished(WebSocketSession session) throws Exception { + log.info("WebSocket 连接已打开:" + session.getId()); + // 获取请求路径 判断是否携带用户名 + String uri = session.getUri().toString(); + // ws://localhost:8080/username=zxwy&id=1 + log.info(uri); + // 获取id 与 用户名 + String id = uri.substring(uri.lastIndexOf('=')+1); + uri = uri.substring(0,uri.lastIndexOf('&')); + String username = uri.substring(uri.lastIndexOf('=')+1); + + if ("".equals(username)){ + session.sendMessage(new TextMessage(JsonUtils.toJson(Result.error(CodeEnum.NOT_USERNAME)))); + return; + } + User user = new User(); + user.setUsername(username); + user.setId(Integer.valueOf(id)); + + // 判断当前用户是否已经连接过 + List onlineUser = ONLINE_USERS.stream() + .filter(tmp -> tmp.getId()==user.getId()) + .collect(Collectors.toList()); + // 如果存在相同用户已经登录 删除之前登录的session并关闭 + if (onlineUser.size() != 0){ + delSessionById(onlineUser.get(0).getId()); + } + + SESSIONS.put(session.getId(),session); + // 将用户添加到在线列表 + ONLINE_USERS.add(user); + + session.getAttributes().put(session.getId(),user); + session.getAttributes().put("sessionId",session.getId()); + + // 将连接id推送给前端 + session.sendMessage(new TextMessage(JsonUtils.toJson(Result.set(CodeEnum.SESSION_ID,session.getId(),null)))); + // 推送在线列表 + pushOnlineUser(); + // 推送公告 + pushNotice(session); + // 首次连接推送所有消息 + session.sendMessage(new TextMessage(JsonUtils.toJson(Result.set(CodeEnum.SERVER_TO,null,msgList)))); + } + + /** + * handleTextMessage: 处理接收到的文本消息。 + * @param session + * @param message 前端发送的消息 + * @throws Exception + */ + @Override + public void handleMessage(WebSocketSession session, WebSocketMessage message) throws Exception { + log.info("收到 WebSocket 消息:" + message.getPayload().toString()); + + Result result = JsonUtils.parse(message.getPayload().toString(),Result.class); + userMsg userMsg = JsonUtils.parse(result.getData().toString(), userMsg.class); + String username = userMsg.getUser().getUsername(); + long id = userMsg.getUser().getId(); + if (username == null || "".equals(username)){ + session.sendMessage(new TextMessage(JsonUtils.toJson(Result.error(CodeEnum.NOT_USERNAME)))); + } + String mtext = userMsg.getMessageInput(); + // 指令 清空消息 + if (mtext.substring(0,1).equals("$")){ + if (mtext.equals("$clear")&&id==1){ + msgList.removeAll(msgList); + broadcast(JsonUtils.toJson(Result.set(CodeEnum.SERVER_TO,null,msgList))); + return; + } + // 指令 发送公告 + if (mtext.substring(0,3).equals("$gg")&&id==1){ + notice.setTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))); + notice.setGg(mtext.substring(3)); + broadcast(JsonUtils.toJson(Result.set(CodeEnum.NOTICE,null,notice))); + return; + } + } + + + // 普通消息 + Message msg = new Message(); + msg.setId(msgList.size()); + msg.setSender(username); + msg.setTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))); + msg.setText(mtext); + // 广播消息给所有连接的客户端 + msgList.add(msg); + if (msgList.size()==60) + msgList.remove(0); + broadcast(JsonUtils.toJson(Result.set(CodeEnum.MESSAGE,session.getId(),msg))); + } + + + + @Override + public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { + log.info("WebSocket 连接错误:" + session.getId() + ", " + exception.getMessage()); + } + + @Override + public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { + log.info("WebSocket 连接已关闭:" + session.getId()); + // 移除session id与websocket连接的映射关系 + User user = (User) session.getAttributes().get(session.getId()); + ONLINE_USERS.remove(user); + String sessionId = (String) session.getAttributes().get("sessionId"); + if (sessionId != null) { + SESSIONS.remove(sessionId); + session.close(); + } + pushOnlineUser(); + } + + @Override + public boolean supportsPartialMessages() { + return false; + } + + private void broadcast(String message) throws IOException { + Set> entries = SESSIONS.entrySet(); + for (Map.Entry sessions : entries) { + if(sessions.getValue().isOpen()){ + sessions.getValue().sendMessage(new TextMessage(message)); + } + } + } + + // 推送在线列表 + private void pushOnlineUser() throws Exception{ + + broadcast(JsonUtils.toJson(Result.set(CodeEnum.ONLINE_USERS,null,ONLINE_USERS))); + } + // 推送公告 + private void pushNotice(WebSocketSession session) throws Exception{ + session.sendMessage(new TextMessage(JsonUtils.toJson + (Result.set(CodeEnum.NOTICE,null,notice)))); + } + private void delSessionById(long id) throws Exception{ + Set> entries = SESSIONS.entrySet(); + for (Map.Entry sessions : entries) { + User user = (User)sessions.getValue().getAttributes().get(sessions.getValue().getId()); + if (user.getId()==id){ + String sessionId = (String) sessions.getValue().getAttributes().get("sessionId"); + if (sessionId != null) { + SESSIONS.remove(sessionId); + sessions.getValue().close(); + } + } + } + } + +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java new file mode 100644 index 0000000..17f2795 --- /dev/null +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/EsApplication.java @@ -0,0 +1,18 @@ +package com.bwie.es; + +import com.bwie.common.handler.GlobalExceptionHandle; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Import; + +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) +@EnableFeignClients("com.bwie.**") +@EnableDiscoveryClient +public class EsApplication { + public static void main(String[] args) { + SpringApplication.run(EsApplication.class); + } +} diff --git a/bwie-modules/bwie-es/src/main/java/com/bwie/es/sync/SyncHouseData.java b/bwie-modules/bwie-es/src/main/java/com/bwie/es/sync/SyncHouseData.java index 3dc997c..c5550ea 100644 --- a/bwie-modules/bwie-es/src/main/java/com/bwie/es/sync/SyncHouseData.java +++ b/bwie-modules/bwie-es/src/main/java/com/bwie/es/sync/SyncHouseData.java @@ -7,6 +7,7 @@ import com.bwie.common.result.Result; import com.bwie.es.service.EsService; import com.xxl.job.core.handler.annotation.XxlJob; + import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; @@ -14,6 +15,7 @@ import java.util.List; @Component @Log4j2 + public class SyncHouseData { private final RemoteHouseService remoteHouseService; diff --git a/bwie-modules/bwie-home/src/main/java/com/bwie/home/controller/HouseController.java b/bwie-modules/bwie-home/src/main/java/com/bwie/home/controller/HouseController.java index 0476da3..92ae02c 100644 --- a/bwie-modules/bwie-home/src/main/java/com/bwie/home/controller/HouseController.java +++ b/bwie-modules/bwie-home/src/main/java/com/bwie/home/controller/HouseController.java @@ -1,14 +1,15 @@ package com.bwie.home.controller; +import com.bwie.common.domain.House; import com.bwie.common.domain.request.HouseEsRequest; import com.bwie.common.result.Result; -import com.bwie.home.job.Reptile; +import com.bwie.home.service.HomeListService; import com.bwie.home.service.HouseService; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.io.IOException; import java.util.List; @RestController @@ -16,11 +17,11 @@ import java.util.List; public class HouseController { private final HouseService houseService; - private final Reptile reptile; - public HouseController(HouseService houseService, Reptile reptile) { + private final HomeListService homeListService; + public HouseController(HouseService houseService, HomeListService homeListService) { this.houseService = houseService; - this.reptile = reptile; + this.homeListService = homeListService; } @GetMapping("/list") @@ -31,10 +32,8 @@ public class HouseController { } - @GetMapping("/addHouse") - private Result getAddHouse() throws IOException { - reptile.reptile(); - return Result.success(); + @PostMapping("/shouall") + public Result> shouall(){ + return homeListService.shouall(); } - } diff --git a/bwie-modules/bwie-home/src/main/java/com/bwie/home/mapper/HomeListMapper.java b/bwie-modules/bwie-home/src/main/java/com/bwie/home/mapper/HomeListMapper.java new file mode 100644 index 0000000..75b5561 --- /dev/null +++ b/bwie-modules/bwie-home/src/main/java/com/bwie/home/mapper/HomeListMapper.java @@ -0,0 +1,10 @@ +package com.bwie.home.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bwie.common.domain.House; + +import java.util.List; + +public interface HomeListMapper extends BaseMapper { + List shouall(); +} diff --git a/bwie-modules/bwie-home/src/main/java/com/bwie/home/service/HomeListService.java b/bwie-modules/bwie-home/src/main/java/com/bwie/home/service/HomeListService.java new file mode 100644 index 0000000..843b05a --- /dev/null +++ b/bwie-modules/bwie-home/src/main/java/com/bwie/home/service/HomeListService.java @@ -0,0 +1,13 @@ +package com.bwie.home.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bwie.common.domain.House; +import com.bwie.common.result.Result; +import org.springframework.stereotype.Service; + +import java.util.List; + + +public interface HomeListService extends IService { + public Result> shouall(); +} diff --git a/bwie-modules/bwie-home/src/main/java/com/bwie/home/service/impl/HomeListServiceImpl.java b/bwie-modules/bwie-home/src/main/java/com/bwie/home/service/impl/HomeListServiceImpl.java new file mode 100644 index 0000000..f2f9eff --- /dev/null +++ b/bwie-modules/bwie-home/src/main/java/com/bwie/home/service/impl/HomeListServiceImpl.java @@ -0,0 +1,30 @@ +package com.bwie.home.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bwie.common.domain.House; +import com.bwie.common.result.Result; +import com.bwie.home.mapper.HomeListMapper; +import com.bwie.home.service.HomeListService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class HomeListServiceImpl extends ServiceImpl implements HomeListService { + private final HomeListMapper listMapper; + public HomeListServiceImpl(HomeListMapper listMapper) { + this.listMapper = listMapper; + } + @Override + public Result> shouall(){ + List list = listMapper.shouall(); + return Result.success(list); + } + + + + + + + +} diff --git a/bwie-modules/bwie-home/src/main/resources/mapper/HomeListMapper.xml b/bwie-modules/bwie-home/src/main/resources/mapper/HomeListMapper.xml new file mode 100644 index 0000000..84628db --- /dev/null +++ b/bwie-modules/bwie-home/src/main/resources/mapper/HomeListMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/bwie-modules/pom.xml b/bwie-modules/pom.xml index 2006bf4..16f91b7 100644 --- a/bwie-modules/pom.xml +++ b/bwie-modules/pom.xml @@ -8,18 +8,15 @@ house_project 1.0.0 - bwie-modules pom bwie-system bwie-group - 8 8 UTF-8 -