From 1d86ccde59e29463b182d364ba6c158fe39dde87 Mon Sep 17 00:00:00 2001 From: I557385 Date: Sun, 3 Sep 2023 18:06:39 +0800 Subject: [PATCH 1/5] add hana jdbc adapter --- manifest.yml | 7 + pom.xml | 17 +- .../message/controller/TestController.java | 28 ++++ .../java/com/chat/message/dao/Database.java | 36 +++++ .../java/com/chat/message/dao/NativeSQL.java | 146 ++++++++++++++++++ .../message/model/JobExecutionStatus.java | 61 ++++++++ .../chat/message/service/NativeSQLRunner.java | 41 +++++ src/main/resources/application.properties | 9 ++ 8 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 manifest.yml create mode 100644 src/main/java/com/chat/message/controller/TestController.java create mode 100644 src/main/java/com/chat/message/dao/Database.java create mode 100644 src/main/java/com/chat/message/dao/NativeSQL.java create mode 100644 src/main/java/com/chat/message/model/JobExecutionStatus.java create mode 100644 src/main/java/com/chat/message/service/NativeSQLRunner.java create mode 100644 src/main/resources/application.properties diff --git a/manifest.yml b/manifest.yml new file mode 100644 index 0000000..73817ed --- /dev/null +++ b/manifest.yml @@ -0,0 +1,7 @@ +--- +applications: + - name: springboothanademo + host: message + path: target/message-0.0.1-SNAPSHOT.jar + domain: enablement.cn40.apps.platform.sapcloud.cn + memory: 1G \ No newline at end of file diff --git a/pom.xml b/pom.xml index c6948fa..bbf57ae 100644 --- a/pom.xml +++ b/pom.xml @@ -73,10 +73,25 @@ spring-boot-starter-test test - + + + com.sap.cloud.db.jdbc + ngdbc + 2.9.16 + + + javax.persistence + javax.persistence-api + 2.2 + + + javax.activation + javax.activation-api + 1.2.0 org.springframework diff --git a/src/main/java/com/chat/message/controller/TestController.java b/src/main/java/com/chat/message/controller/TestController.java new file mode 100644 index 0000000..1d80da1 --- /dev/null +++ b/src/main/java/com/chat/message/controller/TestController.java @@ -0,0 +1,28 @@ +package com.chat.message.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.chat.message.service.NativeSQLRunner; + +@RestController +public class TestController { + @Autowired + NativeSQLRunner runner_native_sql; + + @RequestMapping("/") + public String hello() { + + return "Hello!"; + } + + @RequestMapping("/test_native_sql") + public String test_native_sql() { + + runner_native_sql.startTest(); + + return "Test Native SQL Started!"; + } + +} diff --git a/src/main/java/com/chat/message/dao/Database.java b/src/main/java/com/chat/message/dao/Database.java new file mode 100644 index 0000000..47c7f31 --- /dev/null +++ b/src/main/java/com/chat/message/dao/Database.java @@ -0,0 +1,36 @@ +package com.chat.message.dao; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "database") +public class Database { + String url; + String username; + String password; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} \ No newline at end of file diff --git a/src/main/java/com/chat/message/dao/NativeSQL.java b/src/main/java/com/chat/message/dao/NativeSQL.java new file mode 100644 index 0000000..4d28351 --- /dev/null +++ b/src/main/java/com/chat/message/dao/NativeSQL.java @@ -0,0 +1,146 @@ +package com.chat.message.dao; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.chat.message.model.JobExecutionStatus; + +@Component +public class NativeSQL { + + Logger logger = LoggerFactory.getLogger(NativeSQL.class); + private Connection connection = null; + @Autowired Database db; + + public void createConnection() { + + long startTime = System.currentTimeMillis(); + + logger.info("Java version: " + com.sap.db.jdbc.Driver.getJavaVersion()); + logger.info("Minimum supported Java version and SAP driver version number: " + + com.sap.db.jdbc.Driver.getVersionInfo()); + + try { + connection = DriverManager.getConnection(db.getUrl(), db.getUsername(), db.getPassword()); + + if (connection != null) { + + logger.info("Connection to HANA successful!"); + } + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + logger.info("HANA Connection Time:" + executeTime); + + } catch (SQLException e) { + logger.error("Connection Failed:"); + logger.error(e.toString()); + return; + } + } + + public void insertJob(JobExecutionStatus job) { + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "INSERT INTO \"ECM_JOB_EXECUTION_STATUS\" (\"JOB_ID\", \"JOB_NAME\", \"RESULT\", \"START_TIME\", \"STATUS\") VALUES (?, ?, ?, ?, ?)"); + pstmt.setNString(1, job.getJobId()); + pstmt.setNString(2, job.getJobName()); + pstmt.setNString(3, job.getResult()); + pstmt.setLong(4, job.getStartTime()); + pstmt.setNString(5, job.getStatus()); + + pstmt.executeUpdate(); + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + logger.info("Insert Job:" + job.getJobId() + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Insert failed!"); + logger.error(e.toString()); + } + } + } + + public void updateJob(JobExecutionStatus job) { + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "UPDATE \"ECM_JOB_EXECUTION_STATUS\" SET \"RESULT\" = ?, \"STATUS\" = ? WHERE (\"JOB_ID\" = ?)"); + pstmt.setNString(1, job.getResult()); + pstmt.setNString(2, job.getStatus()); + pstmt.setNString(3, job.getJobId()); + pstmt.executeUpdate(); + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + logger.info("Update Job:" + job.getJobId() + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Update failed!"); + logger.error(e.toString()); + } + } + } + + public void getJob(String jobId) { + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "SELECT \"JOB_ID\", \"JOB_NAME\", \"RESULT\", \"START_TIME\", \"STATUS\" FROM \"ECM_JOB_EXECUTION_STATUS\" WHERE (\"JOB_ID\" = ?)"); + pstmt.setNString(1, jobId); + + ResultSet rs = pstmt.executeQuery(); + + if (rs != null && rs.next()) { + String job_id = rs.getString("JOB_ID"); + String job_name = rs.getString("JOB_Name"); + long start_time = rs.getLong("START_TIME"); + String status = rs.getString("STATUS"); + String result = rs.getString("RESULT"); + + logger.info(job_id + "-" + job_name + "-" + start_time + "-" + status + "-" + result); + } + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + logger.info("Query Job:" + jobId + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Query failed!"); + logger.error(e.toString()); + } + } + } + + public void closeConnection() { + if (connection != null) { + try { + connection.close(); + connection = null; + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + +} diff --git a/src/main/java/com/chat/message/model/JobExecutionStatus.java b/src/main/java/com/chat/message/model/JobExecutionStatus.java new file mode 100644 index 0000000..f7edb51 --- /dev/null +++ b/src/main/java/com/chat/message/model/JobExecutionStatus.java @@ -0,0 +1,61 @@ +package com.chat.message.model; + +import javax.persistence.*; + +@Entity +@Table(name = "\"ECM_JOB_EXECUTION_STATUS\"") +public class JobExecutionStatus { + + @Id + @Column(name = "\"JOB_ID\"", length = 200) + private String jobId; + @Column(name = "\"JOB_NAME\"", length = 190) + private String jobName; + @Column(name = "\"START_TIME\"") + private long startTime; + @Column(name = "\"STATUS\"", length = 16) + private String status; + @Column(name = "\"RESULT\"", length = 250) + private String result; + + public String getJobId() { + return jobId; + } + + public void setJobId(String jobId) { + this.jobId = jobId; + } + + public String getJobName() { + return jobName; + } + + public void setJobName(String jobName) { + this.jobName = jobName; + } + + public long getStartTime() { + return startTime; + } + + public void setStartTime(long startTime) { + this.startTime = startTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + +} diff --git a/src/main/java/com/chat/message/service/NativeSQLRunner.java b/src/main/java/com/chat/message/service/NativeSQLRunner.java new file mode 100644 index 0000000..80f1f33 --- /dev/null +++ b/src/main/java/com/chat/message/service/NativeSQLRunner.java @@ -0,0 +1,41 @@ +package com.chat.message.service; + +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import com.chat.message.dao.NativeSQL; +import com.chat.message.model.JobExecutionStatus; + +@Service +public class NativeSQLRunner { + private static int MAX_RUM = 100; + + @Autowired + NativeSQL nativeSQL; + + @Async + public void startTest() { + nativeSQL.createConnection(); + for (int i = 0; i < MAX_RUM; i++) { + JobExecutionStatus job = new JobExecutionStatus(); + job.setJobId(UUID.randomUUID().toString()); + job.setJobName("InstanceCreationJob"); + job.setResult(""); + job.setStartTime(System.currentTimeMillis()); + job.setStatus("In Progress"); + + nativeSQL.insertJob(job); + + job.setResult("Instance creation successfully completed"); + job.setStatus("Succeeded"); + + nativeSQL.updateJob(job); + + nativeSQL.getJob(job.getJobId()); + } + nativeSQL.closeConnection(); + } +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..9ff2814 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,9 @@ +database.url=jdbc:sap://2d6b476b-246a-4038-9969-53944eead65b.hana.prod-cn40.hanacloud.sapcloud.cn:443?encrypt=true&validateCertificate=false&traceFile=stdout&traceOptions=CONNECTIONS,API,STATISTICS,CLEANERS,TIMESTAMPS,ELAPSEDTIMES +database.username=DBADMIN +database.password=Welcome1! + +#Spring Boot JPA +spring.datasource.driver-class-name=com.sap.db.jdbc.Driver +spring.datasource.url=jdbc:sap://2d6b476b-246a-4038-9969-53944eead65b.hana.prod-cn40.hanacloud.sapcloud.cn:443?encrypt=true&validateCertificate=false&traceFile=stdout&traceOptions=CONNECTIONS,API,STATISTICS,CLEANERS,TIMESTAMPS,ELAPSEDTIMES +spring.datasource.username=DBADMIN +spring.datasource.password=Welcome1! \ No newline at end of file -- Gitee From 245066a1a7ae73a8309764b9d61c08287751811f Mon Sep 17 00:00:00 2001 From: I557385 Date: Sun, 3 Sep 2023 23:33:20 +0800 Subject: [PATCH 2/5] fix User to use hana --- chat-message-miniprogram/app.js | 4 +- pom.xml | 4 + .../java/com/chat/message/dao/NativeSQL.java | 133 ++++++++++++++++-- .../java/com/chat/message/model/User.java | 21 +-- .../com/chat/message/service/UserService.java | 8 +- .../message/service/impl/UserServiceImpl.java | 52 +++++++ .../chat/message/web/MobileApiController.java | 21 ++- .../web/MobileMediaUploadController.java | 6 +- .../message/web/MobileWxLoginController.java | 6 +- .../web/WebSocketOneToOneController.java | 8 +- src/main/resources/application-dev.yml | 38 +---- 11 files changed, 220 insertions(+), 81 deletions(-) diff --git a/chat-message-miniprogram/app.js b/chat-message-miniprogram/app.js index e89b505..a34039a 100644 --- a/chat-message-miniprogram/app.js +++ b/chat-message-miniprogram/app.js @@ -33,10 +33,10 @@ App({ userInfo: null, navHeight:0, //后端api服务,该地址为作者的线上地址,如果连本地,则修改成本地服务即可 - baseAPI: 'https://www.wmbyte.com/message-server/', + baseAPI: 'https://springboothanademo.enablement.cn40.apps.platform.sapcloud.cn/message-server/', //baseAPI: 'http://192.168.50.131:9999/message-server/', //后端ws服务,该地址为作者的线上地址,如果连本地,则修改成本地服务即可 - wsBaseAPI: 'wss://www.wmbyte.com/message-server/', + wsBaseAPI: 'wss://springboothanademo.enablement.cn40.apps.platform.sapcloud/message-server/', //wsBaseAPI: 'ws://192.168.50.131:9999/message-server/', }, getMediaURL(obj){ diff --git a/pom.xml b/pom.xml index bbf57ae..3abf2f4 100644 --- a/pom.xml +++ b/pom.xml @@ -112,6 +112,10 @@ hutool-all 5.8.3 + + org.springframework.boot + spring-boot-starter-aop + diff --git a/src/main/java/com/chat/message/dao/NativeSQL.java b/src/main/java/com/chat/message/dao/NativeSQL.java index 4d28351..7c6e40f 100644 --- a/src/main/java/com/chat/message/dao/NativeSQL.java +++ b/src/main/java/com/chat/message/dao/NativeSQL.java @@ -12,6 +12,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.chat.message.model.JobExecutionStatus; +import com.chat.message.model.User; + +import java.util.UUID; @Component public class NativeSQL { @@ -24,8 +27,8 @@ public class NativeSQL { long startTime = System.currentTimeMillis(); - logger.info("Java version: " + com.sap.db.jdbc.Driver.getJavaVersion()); - logger.info("Minimum supported Java version and SAP driver version number: " + System.out.println("Java version: " + com.sap.db.jdbc.Driver.getJavaVersion()); + System.out.println("Minimum supported Java version and SAP driver version number: " + com.sap.db.jdbc.Driver.getVersionInfo()); try { @@ -33,13 +36,13 @@ public class NativeSQL { if (connection != null) { - logger.info("Connection to HANA successful!"); + System.out.println("Connection to HANA successful!"); } long endTime = System.currentTimeMillis(); long executeTime = endTime - startTime; - logger.info("HANA Connection Time:" + executeTime); + System.out.println("HANA Connection Time:" + executeTime); } catch (SQLException e) { logger.error("Connection Failed:"); @@ -66,7 +69,7 @@ public class NativeSQL { long endTime = System.currentTimeMillis(); long executeTime = endTime - startTime; - logger.info("Insert Job:" + job.getJobId() + ":" + executeTime); + System.out.println("Insert Job:" + job.getJobId() + ":" + executeTime); } catch (SQLException e) { logger.error("Insert failed!"); @@ -90,7 +93,7 @@ public class NativeSQL { long endTime = System.currentTimeMillis(); long executeTime = endTime - startTime; - logger.info("Update Job:" + job.getJobId() + ":" + executeTime); + System.out.println("Update Job:" + job.getJobId() + ":" + executeTime); } catch (SQLException e) { logger.error("Update failed!"); @@ -117,13 +120,13 @@ public class NativeSQL { String status = rs.getString("STATUS"); String result = rs.getString("RESULT"); - logger.info(job_id + "-" + job_name + "-" + start_time + "-" + status + "-" + result); + System.out.println(job_id + "-" + job_name + "-" + start_time + "-" + status + "-" + result); } long endTime = System.currentTimeMillis(); long executeTime = endTime - startTime; - logger.info("Query Job:" + jobId + ":" + executeTime); + System.out.println("Query Job:" + jobId + ":" + executeTime); } catch (SQLException e) { logger.error("Query failed!"); @@ -132,6 +135,120 @@ public class NativeSQL { } } + public void insertUser(User user) { + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "INSERT INTO \"USER\" (\"ID\", \"NAME\", \"AVATAR\", \"OPENID\") VALUES (?, ?, ?, ?)"); + pstmt.setNString(1, user.getId().toString()); + pstmt.setNString(2, user.getName()); + pstmt.setNString(3, user.getAvatar()); + pstmt.setNString(4, user.getOpenId()); + + pstmt.executeUpdate(); + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + System.out.println("Insert User:" + user.getId() + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Insert User failed!"); + logger.error(e.toString()); + } + } + } + + public void updateUser(User user) { + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "UPDATE \"USER\" SET \"NAME\" = ?, \"OPENID\" = ? WHERE (\"ID\" = ?)"); + pstmt.setNString(1, user.getName()); + pstmt.setNString(2, user.getOpenId()); + pstmt.setNString(3, user.getId().toString()); + pstmt.executeUpdate(); + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + System.out.println("Update User:" + user.getId() + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Update User failed!"); + logger.error(e.toString()); + } + } + } + + public User getUser(UUID userId) { + User user = new User(); + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "SELECT \"ID\", \"NAME\", \"AVATAR\", \"OPENID\" FROM \"USER\" WHERE (\"ID\" = ?)"); + pstmt.setString(1, userId.toString()); + + ResultSet rs = pstmt.executeQuery(); + + if (rs != null && rs.next()) { + user.setId(UUID.fromString(rs.getString("ID"))); + user.setName(rs.getString("NAME")); + user.setAvatar(rs.getString("AVATAR")); + user.setOpenId(rs.getString("OPENID")); + } + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + System.out.println("Query Job:" + userId + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Query User failed!"); + logger.error(e.toString()); + } + } + return user; + } + + public User getUserByOpenId(String openId) { + User user = new User(); + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "SELECT \"ID\", \"NAME\", \"AVATAR\", \"OPENID\" FROM \"USER\" WHERE (\"OPENID\" = ?)"); + pstmt.setString(1, openId); + + ResultSet rs = pstmt.executeQuery(); + + if (rs != null && rs.next()) { + user.setId(UUID.fromString(rs.getString("ID"))); + user.setName(rs.getString("NAME")); + user.setAvatar(rs.getString("AVATAR")); + user.setOpenId(rs.getString("OPENID")); + } + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + System.out.println("Query Job:" + openId + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Query User failed!"); + logger.error(e.toString()); + } + } + return user; + } + public void closeConnection() { if (connection != null) { try { diff --git a/src/main/java/com/chat/message/model/User.java b/src/main/java/com/chat/message/model/User.java index 3e10d7d..90b2231 100644 --- a/src/main/java/com/chat/message/model/User.java +++ b/src/main/java/com/chat/message/model/User.java @@ -1,9 +1,9 @@ package com.chat.message.model; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; +import java.util.UUID; -import java.io.Serializable; +import javax.persistence.*; +import lombok.Data; /** * @author lisw @@ -13,14 +13,17 @@ import java.io.Serializable; * @slogan 长风破浪会有时,直挂云帆济沧海。 **/ @Data -@TableName(value = "user") -public class User implements Serializable { - - private Long id; +@Entity +@Table(name = "\"USER\"") +public class User { + @Id + @Column(name = "\"ID\"", length = 36) + private UUID id; + @Column(name = "\"NAME\"", length = 100) private String name; - + @Column(name = "\"AVATAR\"", length = 120) private String avatar; - + @Column(name = "\"OPENID\"", length = 28) private String openId; } diff --git a/src/main/java/com/chat/message/service/UserService.java b/src/main/java/com/chat/message/service/UserService.java index 54db99e..375aff5 100644 --- a/src/main/java/com/chat/message/service/UserService.java +++ b/src/main/java/com/chat/message/service/UserService.java @@ -1,7 +1,11 @@ package com.chat.message.service; -import com.baomidou.mybatisplus.extension.service.IService; import com.chat.message.model.User; -public interface UserService extends IService { +import java.util.UUID; + +public interface UserService { + public User getOne(UUID userId); + public User getOne(String openId); + public void setOne(User user); } diff --git a/src/main/java/com/chat/message/service/impl/UserServiceImpl.java b/src/main/java/com/chat/message/service/impl/UserServiceImpl.java index d84734c..71c19fd 100644 --- a/src/main/java/com/chat/message/service/impl/UserServiceImpl.java +++ b/src/main/java/com/chat/message/service/impl/UserServiceImpl.java @@ -1,12 +1,20 @@ package com.chat.message.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chat.message.dao.NativeSQL; import com.chat.message.dao.UserDao; import com.chat.message.model.User; import com.chat.message.service.UserService; import lombok.extern.slf4j.Slf4j; + +import org.aspectj.lang.annotation.After; +import org.aspectj.lang.annotation.Before; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; +import java.util.UUID; + /** * @author lisw * @program message @@ -17,4 +25,48 @@ import org.springframework.stereotype.Service; @Service @Slf4j public class UserServiceImpl extends ServiceImpl implements UserService { + @Autowired + NativeSQL nativeSQL; + + // @Before("execution(* com.chat.message.service.UserServiceImpl.*(..))") // TODO + public void beforeEach() { + nativeSQL.createConnection(); + } + + // @After("execution(* com.chat.message.service.UserServiceImpl.*(..))") // TODO + public void afterEach() { + nativeSQL.closeConnection(); + } + + public User getOne(UUID userId) { + beforeEach(); + User user = nativeSQL.getUser(userId); + afterEach(); + if (user.getId() == null) + return null; + else + return user; + } + + public User getOne(String openId) { + beforeEach(); + User user = nativeSQL.getUserByOpenId(openId); + afterEach(); + if (user.getId() == null) + return null; + else + return user; + } + + public void setOne(User user) { + beforeEach(); + if (user.getId() != null && nativeSQL.getUser(user.getId()) != null) + nativeSQL.updateUser(user); + else { + UUID uuid = UUID.randomUUID(); + user.setId(uuid); + nativeSQL.insertUser(user); + } + afterEach(); + } } diff --git a/src/main/java/com/chat/message/web/MobileApiController.java b/src/main/java/com/chat/message/web/MobileApiController.java index db69f8c..38696e9 100644 --- a/src/main/java/com/chat/message/web/MobileApiController.java +++ b/src/main/java/com/chat/message/web/MobileApiController.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; /** @@ -31,19 +32,17 @@ public class MobileApiController { @PostMapping("/updateMember") public R updateMember(@RequestBody User user){ - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("open_id",user.getOpenId()); - updateWrapper.set("name",user.getName()); - userService.update(updateWrapper); + User updateUser = new User(); + updateUser.setOpenId(user.getOpenId()); + updateUser.setName(user.getName()); + userService.setOne(updateUser); return R.ok(); } @GetMapping("/verifyMember/{openId}") public R verifyMember(@PathVariable String openId) { try { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("open_id",openId); - User user = userService.getOne(queryWrapper,false); + User user = userService.getOne(openId); if (user != null) { return R.ok().put("data", user); } @@ -58,10 +57,10 @@ public class MobileApiController { @GetMapping("/getMemberList/{openId}") public R getMemberList(@PathVariable String openId) { try { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.ne("open_id",openId); - List userList = userService.list(queryWrapper); - if (userList != null) { + User user = userService.getOne(openId); + if (user != null) { + List userList = new ArrayList<>(); + userList.add(user); return R.ok().put("data", userList); } return R.error(HttpStatus.NOT_FOUND.value(), "用户不存在!"); diff --git a/src/main/java/com/chat/message/web/MobileMediaUploadController.java b/src/main/java/com/chat/message/web/MobileMediaUploadController.java index cde2b59..8dd0f12 100644 --- a/src/main/java/com/chat/message/web/MobileMediaUploadController.java +++ b/src/main/java/com/chat/message/web/MobileMediaUploadController.java @@ -63,11 +63,7 @@ public class MobileMediaUploadController { url = uuid; } if(source!=null && source == 1){ - //头像,更新用户头像 - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("open_id",openId); - updateWrapper.set("avatar",url); - userService.update(updateWrapper); + //头像,更新用户头像 // TODO } return R.ok().put("url", url); } catch (IOException e) { diff --git a/src/main/java/com/chat/message/web/MobileWxLoginController.java b/src/main/java/com/chat/message/web/MobileWxLoginController.java index 0f33a63..e70fc7c 100644 --- a/src/main/java/com/chat/message/web/MobileWxLoginController.java +++ b/src/main/java/com/chat/message/web/MobileWxLoginController.java @@ -43,16 +43,14 @@ public class MobileWxLoginController { if(jsonObject.containsKey("openid")){ String openid = jsonObject.getString("openid"); //获取是否已经在库中 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(User::getOpenId,openid); - User one = userService.getOne(queryWrapper, false); + User one = userService.getOne(openid); if(one==null){ //插入一个用户 one = new User(); one.setOpenId(openid); one.setAvatar("https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0"); one.setName("微信用户"); - userService.save(one); + userService.setOne(one); } rtnJson.put("memberId",one.getId()); rtnJson.put("avatar",one.getAvatar()); diff --git a/src/main/java/com/chat/message/web/WebSocketOneToOneController.java b/src/main/java/com/chat/message/web/WebSocketOneToOneController.java index 4082dfb..a9a2242 100644 --- a/src/main/java/com/chat/message/web/WebSocketOneToOneController.java +++ b/src/main/java/com/chat/message/web/WebSocketOneToOneController.java @@ -154,10 +154,10 @@ public class WebSocketOneToOneController { if(con!=null){ if(roomId.equals(con.roomId)){ con.session.getBasicRemote().sendText(JSON.toJSONString(message)); - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.set("is_read",1); - updateWrapper.eq("id",message.getId()); - businessMessageService.update(updateWrapper); + // UpdateWrapper updateWrapper = new UpdateWrapper(); //FIXME + // updateWrapper.set("is_read",1); + // updateWrapper.eq("id",message.getId()); + // businessMessageService.update(updateWrapper); } } //通知发送消息的狗逼,消息已经发送成功 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 1716eff..d94d801 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,41 +1,7 @@ -spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - druid: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://xxxxxx:3306/message?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai - username: xxx - password: xxxx - initial-size: 10 - max-active: 100 - min-idle: 10 - max-wait: 60000 - pool-prepared-statements: true - max-pool-prepared-statement-per-connection-size: 20 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 300000 - #Oracle需要打开注释 - #validation-query: SELECT 1 FROM DUAL - test-while-idle: true - test-on-borrow: false - test-on-return: false - stat-view-servlet: - enabled: true - url-pattern: /druid/* - #login-username: admin - #login-password: admin - filter: - stat: - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: false - wall: - config: - multi-statement-allow: true # 小程序配置 miniprogram: - appId: xxxx - appSecret: xxxxxx + appId: wxe84ae13fdb3f09f3 + appSecret: b09be985cff268fa8d47a4eded8a7bd5 oss: aliyunBucketName: aliyunAccessKeySecret: -- Gitee From 988add6117625d60529be81f23f1e7b22dcf3b58 Mon Sep 17 00:00:00 2001 From: I557385 Date: Mon, 4 Sep 2023 10:27:06 +0800 Subject: [PATCH 3/5] fix typo --- chat-message-miniprogram/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chat-message-miniprogram/app.js b/chat-message-miniprogram/app.js index a34039a..22dc2c5 100644 --- a/chat-message-miniprogram/app.js +++ b/chat-message-miniprogram/app.js @@ -36,7 +36,7 @@ App({ baseAPI: 'https://springboothanademo.enablement.cn40.apps.platform.sapcloud.cn/message-server/', //baseAPI: 'http://192.168.50.131:9999/message-server/', //后端ws服务,该地址为作者的线上地址,如果连本地,则修改成本地服务即可 - wsBaseAPI: 'wss://springboothanademo.enablement.cn40.apps.platform.sapcloud/message-server/', + wsBaseAPI: 'wss://springboothanademo.enablement.cn40.apps.platform.sapcloud.cn/message-server/', //wsBaseAPI: 'ws://192.168.50.131:9999/message-server/', }, getMediaURL(obj){ -- Gitee From 22244a02bb5f3ac7b6cedf0167437e0d284d3979 Mon Sep 17 00:00:00 2001 From: Yijun Lin Date: Thu, 7 Sep 2023 14:27:07 +0800 Subject: [PATCH 4/5] update --- message_hana.sql | 105 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 message_hana.sql diff --git a/message_hana.sql b/message_hana.sql new file mode 100644 index 0000000..b3999ed --- /dev/null +++ b/message_hana.sql @@ -0,0 +1,105 @@ +/* + Navicat Premium Data Transfer + + Source Server : 本地 + Source Server Type : MySQL + Source Server Version : 80023 + Source Host : localhost:3306 + Source Schema : message + + Target Server Type : MySQL + Target Server Version : 80023 + File Encoding : 65001 + + Date: 03/11/2021 14:31:44 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for message +-- ---------------------------- +-- 如果表已经存在,则需要先手动删除 +-- DROP TABLE MESSAGE; + +CREATE COLUMN TABLE "message" ( + "id" BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY COMMENT '主键ID', + "created_by" BIGINT COMMENT '创建人', + "created_time" SECONDDATE COMMENT '创建时间', + "updated_by" BIGINT COMMENT '更新人', + "updated_time" SECONDDATE COMMENT '更新时间', + "del_flag" NVARCHAR(32) COMMENT '是否删除', + "status" NVARCHAR(1) COMMENT '状态', + "remarks" NVARCHAR(128) COMMENT '备注', + "type" TINYINT COMMENT '是否显示时间 0:否 1:是', + "content" NTEXT COMMENT '消息内容', + "content_type" TINYINT COMMENT '内容类型 0文字1图片2视频 3:礼物', + "is_read" NVARCHAR(1) COMMENT '是否已读', + "sender" BIGINT COMMENT '发送人', + "receiver" BIGINT COMMENT '接收人', + "request_id" NVARCHAR(64), + "is_last" TINYINT COMMENT '是否是最后一条消息 0:否 1:是' +) COMMENT '业务消息表'; + +-- ---------------------------- +-- Records of message +-- ---------------------------- +BEGIN; +INSERT INTO "message" VALUES (174, NULL, '2021-10-28 11:47:49', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[悠闲]\",\"imageClass\":\"smiley_29\"}]', 0, '0', 0, 2, '4cc04308-bdba-4a30-8e33-7265544d43ca', 0); +INSERT INTO "message" VALUES (175, NULL, '2021-10-28 11:47:52', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[呲牙]\",\"imageClass\":\"smiley_13\"}]', 0, '0', 0, 2, 'ea58d211-9fb8-49e0-9531-412c11ddbcd4', 0); +INSERT INTO "message" VALUES (176, NULL, '2021-10-28 11:47:54', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[害羞]\",\"imageClass\":\"smiley_6\"}]', 0, '0', 0, 2, '36ec9992-fdf3-4eb9-8f6c-9da5373e04ca', 0); +INSERT INTO "message" VALUES (177, NULL, '2021-10-28 11:48:12', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[害羞]\",\"imageClass\":\"smiley_6\"}]', 0, '0', 0, 2, '53a89585-b347-42f3-b422-03cfe23dafa4', 0); +INSERT INTO "message" VALUES (178, NULL, '2021-10-28 11:50:57', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":1,\"content\":\"111111\"}]', 0, '0', 0, 2, '61090e5b-5ff1-4fa8-8f8f-53e268d8144f', 0); +INSERT INTO "message" VALUES (179, NULL, '2021-10-28 16:58:13', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[流泪]\",\"imageClass\":\"smiley_5\"}]', 0, '0', 0, 2, '8d436a48-9f9b-4a46-8ed5-5f55bf84f689', 0); +INSERT INTO "message" VALUES (180, NULL, '2021-10-28 16:59:40', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[害羞]\",\"imageClass\":\"smiley_6\"}]', 0, '0', 0, 2, '7d042ed5-0691-475e-a5d2-fe33806f6e6c', 0); +INSERT INTO "message" VALUES (181, NULL, '2021-10-28 17:01:21', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[调皮]\",\"imageClass\":\"smiley_12\"}]', 0, '0', 0, 2, '07dc47c0-eaa3-4898-8835-be2556d0535d', 0); +INSERT INTO "message" VALUES (182, NULL, '2021-10-28 17:02:47', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[偷笑]\",\"imageClass\":\"smiley_20\"}]', 0, '0', 0, 2, '6deeff05-51f9-4f9b-8c28-35d33c947cca', 0); +INSERT INTO "message" VALUES (183, NULL, '2021-10-28 17:03:41', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[发怒]\",\"imageClass\":\"smiley_11\"}]', 0, '0', 0, 2, '644a691a-6a98-4f62-81aa-73c8a6186937', 0); +INSERT INTO "message" VALUES (184, NULL, '2021-10-28 17:07:28', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[偷笑]\",\"imageClass\":\"smiley_20\"}]', 0, '0', 0, 2, '34fc912c-85f8-4222-8dd6-d0f3f8b5d284', 0); +INSERT INTO "message" VALUES (185, NULL, '2021-10-28 17:08:32', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[撇嘴]\",\"imageClass\":\"smiley_1\"}]', 0, '0', 0, 2, '072ff951-f471-4b9d-8956-6eab74d44f30', 0); +INSERT INTO "message" VALUES (186, NULL, '2021-10-28 17:08:44', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[害羞]\",\"imageClass\":\"smiley_6\"},{\"type\":2,\"content\":\"[悠闲]\",\"imageClass\":\"smiley_29\"}]', 0, '0', 0, 2, '059ad84d-f6bc-4769-8b0d-ef698d24ea3d', 0); +INSERT INTO "message" VALUES (187, NULL, '2021-10-28 17:14:10', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[流泪]\",\"imageClass\":\"smiley_5\"}]', 0, '0', 0, 2, '639e8891-63ef-4791-8044-62507bdd313f', 0); +INSERT INTO "message" VALUES (188, NULL, '2021-10-28 17:15:02', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[悠闲]\",\"imageClass\":\"smiley_29\"}]', 0, '0', 0, 2, '5e7fb5cc-b277-4c33-8125-0b65ccf0db69', 0); +INSERT INTO "message" VALUES (189, NULL, '2021-10-28 17:15:04', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[流泪]\",\"imageClass\":\"smiley_5\"}]', 0, '0', 0, 2, '4c6b49f9-25e4-45c9-9de9-12dca6ffc58d', 0); +INSERT INTO "message" VALUES (190, NULL, '2021-10-28 17:24:53', NULL, NULL, '0', NULL, NULL, 1, '[{\"type\":1,\"content\":\"1\"},{\"type\":2,\"content\":\"[憨笑]\",\"imageClass\":\"smiley_28\"}]', 0, '0', 0, 2, '7e9a99b7-539c-4f01-8c47-1625648bb10b', 0); +INSERT INTO "message" VALUES (191, NULL, '2021-10-28 17:25:03', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[流泪]\",\"imageClass\":\"smiley_5\"}]', 0, '0', 0, 2, 'fbd32e4b-56ca-46cb-942d-4acb1a600e58', 0); +INSERT INTO "message" VALUES (192, NULL, '2021-10-28 17:25:10', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[害羞]\",\"imageClass\":\"smiley_6\"}]', 0, '0', 0, 2, '50fc2741-bc9e-420e-8772-db0832dca3f7', 0); +INSERT INTO "message" VALUES (193, NULL, '2021-11-02 09:46:07', NULL, NULL, '0', NULL, NULL, 1, '[{\"type\":2,\"content\":\"[流泪]\",\"imageClass\":\"smiley_5\"}]', 0, '0', 0, 2, 'c4e871e0-6f9c-4ac7-8a65-df2db324a10b', 0); +INSERT INTO "message" VALUES (194, NULL, '2021-11-02 09:48:14', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[愉快]\",\"imageClass\":\"smiley_21\"}]', 0, '0', 0, 2, '200dfb71-c37d-43a0-881c-afc2bdd27c2e', 1); +INSERT INTO "message" VALUES (195, NULL, '2021-11-03 10:12:14', NULL, NULL, '0', NULL, NULL, 0, 'https://lisw-message.oss-cn-beijing.aliyuncs.com/lisw-message/20211103/cd0cdffb261842fe8d7fb9a5ab9ed1ed.jpg', 1, '0', 0, 4, '9ca5fe30-8cd0-4cda-9fac-ca638452b006', 0); +INSERT INTO "message" VALUES (196, NULL, '2021-11-03 10:12:14', NULL, NULL, '0', NULL, NULL, 0, 'https://t7.baidu.com/it/u=3930750564,2979238085&fm=193&f=GIF', 1, '0', 0, 4, '9ca5fe30-8cd0-4cda-9fac-ca638452b006', 0); +INSERT INTO "message" VALUES (197, NULL, '2021-11-03 10:12:14', NULL, NULL, '0', NULL, NULL, 0, 'https://t7.baidu.com/it/u=3676218341,3686214618&fm=193&f=GIF', 1, '0', 0, 4, '9ca5fe30-8cd0-4cda-9fac-ca638452b006', 0); +INSERT INTO "message" VALUES (198, NULL, '2021-11-03 10:12:14', NULL, NULL, '0', NULL, NULL, 0, 'https://t7.baidu.com/it/u=2878377037,2986969897&fm=193&f=GIF', 1, '0', 0, 4, '9ca5fe30-8cd0-4cda-9fac-ca638452b006', 0); +INSERT INTO "message" VALUES (199, NULL, '2021-11-03 11:41:34', NULL, NULL, '0', NULL, NULL, 1, '[{\"type\":1,\"content\":\"在吗\"},{\"type\":2,\"content\":\"[微笑]\",\"imageClass\":\"smiley_0\"}]', 0, '0', 0, 4, '703178a3-3caa-466c-92e0-65a3d85a0317', 0); +INSERT INTO "message" VALUES (200, NULL, '2021-11-03 11:42:28', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":2,\"content\":\"[得意]\",\"imageClass\":\"smiley_4\"}]', 0, '0', 0, 4, '036fc25e-f97d-4462-8bc9-1a8f5ed7fd72', 0); +INSERT INTO "message" VALUES (201, NULL, '2021-11-03 11:43:04', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":1,\"content\":\"说话啊\"},{\"type\":2,\"content\":\"[害羞]\",\"imageClass\":\"smiley_6\"}]', 0, '0', 0, 4, '38f79b66-a0be-4e2e-97f5-3c429d248d9f', 0); +INSERT INTO "message" VALUES (202, NULL, '2021-11-03 11:43:58', NULL, NULL, '0', NULL, NULL, 0, '[{\"type\":1,\"content\":\"在的在的\"}]', 0, '1', 4, 0, '38f79b66-a0be-4e2e-97f5-3c429d248d9', 0); +INSERT INTO "message" VALUES (203, NULL, '2021-11-03 11:48:59', NULL, NULL, '0', NULL, NULL, 1, '[{\"type\":1,\"content\":\"在的在的\"}]', 0, '1', 4, 0, '38f79b66-a0be-4e2e97f5-3c429d248d9', 0); +INSERT INTO "message" VALUES (204, NULL, '2021-11-03 12:03:41', NULL, NULL, '0', NULL, NULL, 1, '[{\"type\":1,\"content\":\"在的在的\"}]', 0, '1', 4, 0, '38f79b66-a0be-4e2e97f5-3c4248d9', 1); +COMMIT; + +-- ---------------------------- +-- Table structure for user +-- ---------------------------- +DROP TABLE IF EXISTS "user"; +CREATE TABLE "user" ( + "id" bigint NOT NULL AUTO_INCREMENT, + "name" varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, + "avatar" varchar(1000) COLLATE utf8mb4_general_ci DEFAULT NULL, + "open_id" varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL, + PRIMARY KEY ("id") +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- ---------------------------- +-- Records of user +-- ---------------------------- +BEGIN; +INSERT INTO "user" VALUES (1, '狼人', 'https://img1.baidu.com/it/u=3361478826,3674512954&fm=26&fmt=auto', '1111'); +INSERT INTO "user" VALUES (2, '小猴儿', 'https://img1.baidu.com/it/u=1340127580,1407454083&fm=26&fmt=auto', '2222'); +INSERT INTO "user" VALUES (3, '神龙', 'https://img0.baidu.com/it/u=2237039644,3735368368&fm=26&fmt=auto', '3333'); +INSERT INTO "user" VALUES (4, '一个好人', 'https://img0.baidu.com/it/u=208517397,281463383&fm=26&fmt=auto', '4444'); +INSERT INTO "user" VALUES (5, '江湖救急', 'https://img1.baidu.com/it/u=742348601,1159540008&fm=26&fmt=auto', '5555'); +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; -- Gitee From 7e6bec3e9eeedd2a961d1fe5269003df8d473fc0 Mon Sep 17 00:00:00 2001 From: Yijun Lin Date: Thu, 7 Sep 2023 15:39:31 +0800 Subject: [PATCH 5/5] update --- chat-message-miniprogram/app.js | 4 +- .../pages/userinfo/index.js | 2 + chat-message-miniprogram/project.config.json | 2 +- .../project.private.config.json | 2 +- message_hana.sql | 10 +-- .../java/com/chat/message/dao/NativeSQL.java | 73 ++++++++++++++++++- .../message/model/BusinessMessageEntity.java | 63 +++++++++++++--- .../com/chat/message/service/UserService.java | 2 + .../message/service/impl/UserServiceImpl.java | 16 +++- .../chat/message/web/MobileApiController.java | 11 ++- .../message/web/MobileMessageController.java | 2 +- 11 files changed, 157 insertions(+), 30 deletions(-) diff --git a/chat-message-miniprogram/app.js b/chat-message-miniprogram/app.js index 22dc2c5..9824be9 100644 --- a/chat-message-miniprogram/app.js +++ b/chat-message-miniprogram/app.js @@ -33,8 +33,8 @@ App({ userInfo: null, navHeight:0, //后端api服务,该地址为作者的线上地址,如果连本地,则修改成本地服务即可 - baseAPI: 'https://springboothanademo.enablement.cn40.apps.platform.sapcloud.cn/message-server/', - //baseAPI: 'http://192.168.50.131:9999/message-server/', + // baseAPI: 'https://springboothanademo.enablement.cn40.apps.platform.sapcloud.cn/message-server/', + baseAPI: 'http://localhost:9999/message-server/', //后端ws服务,该地址为作者的线上地址,如果连本地,则修改成本地服务即可 wsBaseAPI: 'wss://springboothanademo.enablement.cn40.apps.platform.sapcloud.cn/message-server/', //wsBaseAPI: 'ws://192.168.50.131:9999/message-server/', diff --git a/chat-message-miniprogram/pages/userinfo/index.js b/chat-message-miniprogram/pages/userinfo/index.js index 79e65ae..e6c08e3 100644 --- a/chat-message-miniprogram/pages/userinfo/index.js +++ b/chat-message-miniprogram/pages/userinfo/index.js @@ -91,6 +91,7 @@ Page({ //获取code success: function (res) { var code = res.code; //返回code + console.log('wx.login', res) wx.request({ url: App.globalData.baseAPI+"mobile/wxlogin/getOpenIdByCode?code="+code, data: {}, @@ -98,6 +99,7 @@ Page({ 'content-type': 'json' }, success: function (res) { + console.log('getOpenIdByCode', res) var uopenid = res.data.openid //返回openid var uavatar = res.data.avatar // 返回头像 var unickname = res.data.nickname //返回昵称 diff --git a/chat-message-miniprogram/project.config.json b/chat-message-miniprogram/project.config.json index 294593d..7b5278c 100644 --- a/chat-message-miniprogram/project.config.json +++ b/chat-message-miniprogram/project.config.json @@ -45,7 +45,7 @@ }, "compileType": "miniprogram", "libVersion": "2.18.1", - "appid": "wxbcd4a333d69c7ea6", + "appid": "wxe84ae13fdb3f09f3", "projectname": "chat-message-miniprogram", "condition": {}, "editorSetting": { diff --git a/chat-message-miniprogram/project.private.config.json b/chat-message-miniprogram/project.private.config.json index 832664a..49eb2eb 100644 --- a/chat-message-miniprogram/project.private.config.json +++ b/chat-message-miniprogram/project.private.config.json @@ -3,7 +3,7 @@ "projectname": "chat-message-miniprogram", "setting": { "compileHotReLoad": true, - "urlCheck": true + "urlCheck": false }, "libVersion": "2.31.0" } \ No newline at end of file diff --git a/message_hana.sql b/message_hana.sql index b3999ed..794dde7 100644 --- a/message_hana.sql +++ b/message_hana.sql @@ -95,11 +95,11 @@ CREATE TABLE "user" ( -- Records of user -- ---------------------------- BEGIN; -INSERT INTO "user" VALUES (1, '狼人', 'https://img1.baidu.com/it/u=3361478826,3674512954&fm=26&fmt=auto', '1111'); -INSERT INTO "user" VALUES (2, '小猴儿', 'https://img1.baidu.com/it/u=1340127580,1407454083&fm=26&fmt=auto', '2222'); -INSERT INTO "user" VALUES (3, '神龙', 'https://img0.baidu.com/it/u=2237039644,3735368368&fm=26&fmt=auto', '3333'); -INSERT INTO "user" VALUES (4, '一个好人', 'https://img0.baidu.com/it/u=208517397,281463383&fm=26&fmt=auto', '4444'); -INSERT INTO "user" VALUES (5, '江湖救急', 'https://img1.baidu.com/it/u=742348601,1159540008&fm=26&fmt=auto', '5555'); +INSERT INTO "USER" VALUES ('550e8400-e29b-41d4-a716-446655440001', '狼人', 'https://img1.baidu.com/it/u=3361478826,3674512954&fm=26&fmt=auto', '1111'); +INSERT INTO "USER" VALUES ('550e8400-e29b-41d4-a716-446655440002', '小猴儿', 'https://img1.baidu.com/it/u=1340127580,1407454083&fm=26&fmt=auto', '2222'); +INSERT INTO "USER" VALUES ('550e8400-e29b-41d4-a716-446655440003', '神龙', 'https://img0.baidu.com/it/u=2237039644,3735368368&fm=26&fmt=auto', '3333'); +INSERT INTO "USER" VALUES ('550e8400-e29b-41d4-a716-446655440004', '一个好人', 'https://img0.baidu.com/it/u=208517397,281463383&fm=26&fmt=auto', '4444'); +INSERT INTO "USER" VALUES ('550e8400-e29b-41d4-a716-446655440005', '江湖救急', 'https://img1.baidu.com/it/u=742348601,1159540008&fm=26&fmt=auto', '5555'); COMMIT; SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/java/com/chat/message/dao/NativeSQL.java b/src/main/java/com/chat/message/dao/NativeSQL.java index 7c6e40f..5d07a51 100644 --- a/src/main/java/com/chat/message/dao/NativeSQL.java +++ b/src/main/java/com/chat/message/dao/NativeSQL.java @@ -14,6 +14,8 @@ import org.springframework.stereotype.Component; import com.chat.message.model.JobExecutionStatus; import com.chat.message.model.User; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; @Component @@ -167,10 +169,9 @@ public class NativeSQL { long startTime = System.currentTimeMillis(); PreparedStatement pstmt = connection.prepareStatement( - "UPDATE \"USER\" SET \"NAME\" = ?, \"OPENID\" = ? WHERE (\"ID\" = ?)"); + "UPDATE \"USER\" SET \"NAME\" = ? WHERE (\"OPENID\" = ?)"); pstmt.setNString(1, user.getName()); pstmt.setNString(2, user.getOpenId()); - pstmt.setNString(3, user.getId().toString()); pstmt.executeUpdate(); long endTime = System.currentTimeMillis(); @@ -217,6 +218,74 @@ public class NativeSQL { return user; } + // public List getUserList() { + // User user = new User(); + // List userList = new ArrayList(); + // if (connection != null) { + // try { + // long startTime = System.currentTimeMillis(); + + // PreparedStatement pstmt = connection.prepareStatement( + // "SELECT \"ID\", \"NAME\", \"AVATAR\", \"OPENID\" FROM \"USER\" WHERE (\"ID\" = ?)"); + + // ResultSet rs = pstmt.executeQuery(); + + // if (rs != null && rs.next()) { + // user.setId(UUID.fromString(rs.getString("ID"))); + // user.setName(rs.getString("NAME")); + // user.setAvatar(rs.getString("AVATAR")); + // user.setOpenId(rs.getString("OPENID")); + // } + + // long endTime = System.currentTimeMillis(); + // long executeTime = endTime - startTime; + + // System.out.println("Query Job:" + userId + ":" + executeTime); + + // } catch (SQLException e) { + // logger.error("Query User failed!"); + // logger.error(e.toString()); + // } + // } + // return user; + // } + + public List getUserListWithoutCurrentUser(String openId) { + List userList = new ArrayList(); + if (connection != null) { + try { + long startTime = System.currentTimeMillis(); + + PreparedStatement pstmt = connection.prepareStatement( + "select ID, NAME, AVATAR, OPENID from USER where OPENID != ?"); + pstmt.setString(1, openId.toString()); + + ResultSet rs = pstmt.executeQuery(); + + System.out.println(rs); + + while (rs.next()) { + User user = new User(); + user.setId(UUID.fromString(rs.getString("ID"))); + user.setName(rs.getString("NAME")); + user.setAvatar(rs.getString("AVATAR")); + user.setOpenId(rs.getString("OPENID")); + userList.add(user); + } + + long endTime = System.currentTimeMillis(); + long executeTime = endTime - startTime; + + System.out.println("Query Job:" + openId + ":" + executeTime); + + } catch (SQLException e) { + logger.error("Query User failed!"); + logger.error(e.toString()); + } + } + return userList; + } + public User getUserByOpenId(String openId) { User user = new User(); if (connection != null) { diff --git a/src/main/java/com/chat/message/model/BusinessMessageEntity.java b/src/main/java/com/chat/message/model/BusinessMessageEntity.java index c4b05d6..3a0c495 100644 --- a/src/main/java/com/chat/message/model/BusinessMessageEntity.java +++ b/src/main/java/com/chat/message/model/BusinessMessageEntity.java @@ -1,13 +1,18 @@ package com.chat.message.model; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +// import com.baomidou.mybatisplus.annotation.FieldFill; +// import com.baomidou.mybatisplus.annotation.TableField; +// import com.baomidou.mybatisplus.annotation.TableId; +// import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + /** * @author lisw * @program message @@ -16,78 +21,114 @@ import java.util.Date; * @slogan 长风破浪会有时,直挂云帆济沧海。 **/ @Data -@TableName("message") +// @TableName("message") +@Entity +@Table(name = "\"message\"") public class BusinessMessageEntity { + @Id + @Column(name = "\"serialVersionUID\"", length = 120) private static final long serialVersionUID = 1L; /** * 是否实现时间 * 0:否 1:是 */ + @Id + @Column(name = "\"type\"", length = 120) private Integer type; /** * 消息内容 */ + @Id + @Column(name = "\"content\"", length = 120) private String content; /** * 内容类型 0文字1图片2视频 3礼物 */ + @Id + @Column(name = "\"contentType\"", length = 120) private Integer contentType; /** * 是否已读 */ + @Id + @Column(name = "\"isRead\"", length = 120) private String isRead; /** * 发送人 */ + @Id + @Column(name = "\"sender\"", length = 120) private Long sender; /** * 接收人 */ + @Id + @Column(name = "\"receiver\"", length = 120) private Long receiver; /** * 发送消息请求ID */ + @Id + @Column(name = "\"requestId\"", length = 120) private String requestId; + @Id + @Column(name = "\"isLast\"", length = 120) private Boolean isLast; /** * 主键ID */ - @TableId + // @TableId + @Id + @Column(name = "\"id\"", length = 120) private Long id; /** * 创建人 */ - @TableField(value = "created_by",fill = FieldFill.INSERT) + // @TableField(value = "created_by",fill = FieldFill.INSERT) + @Id + @Column(name = "\"createdBy\"", length = 120) private Long createdBy; /** * 创建时间 */ - @TableField(value = "created_time",fill = FieldFill.INSERT) + // @TableField(value = "created_time",fill = FieldFill.INSERT) + @Id + @Column(name = "\"createdTime\"", length = 120) private Date createdTime; /** * 更新人 */ - @TableField(value = "updated_by",fill = FieldFill.INSERT_UPDATE) + // @TableField(value = "updated_by",fill = FieldFill.INSERT_UPDATE) + @Id + @Column(name = "\"updatedBy\"", length = 120) private Long updatedBy; /** * 更新时间 */ - @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE) + // @TableField(value = "updated_time",fill = FieldFill.INSERT_UPDATE) + @Id + @Column(name = "\"updatedTime\"", length = 120) private Date updatedTime; /** * 是否删除 */ - @TableField(value = "del_flag",fill = FieldFill.INSERT) + // @TableField(value = "del_flag",fill = FieldFill.INSERT) + @Id + @Column(name = "\"delFlag\"", length = 120) private String delFlag; /** * 状态 */ + @Id + @Column(name = "\"status\"", length = 120) private String status; /** * 备注 */ + @Id + @Column(name = "\"remarks\"", length = 120) private String remarks; } diff --git a/src/main/java/com/chat/message/service/UserService.java b/src/main/java/com/chat/message/service/UserService.java index 375aff5..e0c8a00 100644 --- a/src/main/java/com/chat/message/service/UserService.java +++ b/src/main/java/com/chat/message/service/UserService.java @@ -2,10 +2,12 @@ package com.chat.message.service; import com.chat.message.model.User; +import java.util.List; import java.util.UUID; public interface UserService { public User getOne(UUID userId); public User getOne(String openId); public void setOne(User user); + public List listWithoutCurrent(String openId); } diff --git a/src/main/java/com/chat/message/service/impl/UserServiceImpl.java b/src/main/java/com/chat/message/service/impl/UserServiceImpl.java index 71c19fd..7607ed2 100644 --- a/src/main/java/com/chat/message/service/impl/UserServiceImpl.java +++ b/src/main/java/com/chat/message/service/impl/UserServiceImpl.java @@ -13,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; /** @@ -60,7 +62,7 @@ public class UserServiceImpl extends ServiceImpl implements UserS public void setOne(User user) { beforeEach(); - if (user.getId() != null && nativeSQL.getUser(user.getId()) != null) + if (user.getOpenId() != null && nativeSQL.getUserByOpenId(user.getOpenId()) != null) nativeSQL.updateUser(user); else { UUID uuid = UUID.randomUUID(); @@ -69,4 +71,16 @@ public class UserServiceImpl extends ServiceImpl implements UserS } afterEach(); } + + public List listWithoutCurrent(String openId) { + beforeEach(); + // User user = nativeSQL.getUserByOpenId(openId); + List userList = nativeSQL.getUserListWithoutCurrentUser(openId); + // userList.add(user); + afterEach(); + if (openId == null) + return null; + else + return userList; + } } diff --git a/src/main/java/com/chat/message/web/MobileApiController.java b/src/main/java/com/chat/message/web/MobileApiController.java index 38696e9..cecadd7 100644 --- a/src/main/java/com/chat/message/web/MobileApiController.java +++ b/src/main/java/com/chat/message/web/MobileApiController.java @@ -43,6 +43,7 @@ public class MobileApiController { public R verifyMember(@PathVariable String openId) { try { User user = userService.getOne(openId); + System.out.println(user); if (user != null) { return R.ok().put("data", user); } @@ -57,17 +58,15 @@ public class MobileApiController { @GetMapping("/getMemberList/{openId}") public R getMemberList(@PathVariable String openId) { try { - User user = userService.getOne(openId); - if (user != null) { - List userList = new ArrayList<>(); - userList.add(user); + List userList = userService.listWithoutCurrent(openId); + if (userList != null) { return R.ok().put("data", userList); } - return R.error(HttpStatus.NOT_FOUND.value(), "用户不存在!"); + return R.ok().put("data", new ArrayList()); } catch (Exception e) { log.error("Error Message:" + e.getMessage()); e.printStackTrace(); - return R.error("注册失败"); + return R.error("获取用户列表失败"); } } } diff --git a/src/main/java/com/chat/message/web/MobileMessageController.java b/src/main/java/com/chat/message/web/MobileMessageController.java index a9cc654..49544c7 100644 --- a/src/main/java/com/chat/message/web/MobileMessageController.java +++ b/src/main/java/com/chat/message/web/MobileMessageController.java @@ -37,7 +37,7 @@ public class MobileMessageController { public R getMessageHistory(Long myMemberId, Long youMemberId, int pageNo, int pageSize){ Page page = new Page<>(pageNo,pageSize); //查询历史聊天记录 - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("del_flag", 0); queryWrapper.and(wrapper -> wrapper.and(item -> item.eq("sender",myMemberId).eq("receiver",youMemberId)) .or(item -> item.eq("receiver",myMemberId).eq("sender",youMemberId)) -- Gitee