From 4941d32b890cc644e92a3294cfb9b987cf55b284 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Fri, 7 Jan 2022 17:59:40 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=90=AD=E5=BB=BA=E7=95=99=E8=A8=80?= =?UTF-8?q?=E6=9D=BF=E6=9C=8D=E5=8A=A1=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xhpc-modules/pom.xml | 1 + xhpc-modules/xhpc-message-board/pom.xml | 143 ++++++++++++++++++ .../board/XhpcMessageBoardApplication.java | 37 +++++ .../api/XhpcMessageBoardApiController.java | 41 +++++ .../domain/SendMessageToPlatformRequest.java | 31 ++++ .../service/XhpcMessageBoardService.java | 12 ++ .../impl/XhpcMessageBoardServiceImpl.java | 5 + .../src/main/resources/banner.txt | 10 ++ .../src/main/resources/bootstrap.yml | 25 +++ .../src/main/resources/logback.xml | 75 +++++++++ 10 files changed, 380 insertions(+) create mode 100644 xhpc-modules/xhpc-message-board/pom.xml create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/resources/banner.txt create mode 100644 xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml create mode 100644 xhpc-modules/xhpc-message-board/src/main/resources/logback.xml diff --git a/xhpc-modules/pom.xml b/xhpc-modules/pom.xml index 561957dd..e5a4a82c 100644 --- a/xhpc-modules/pom.xml +++ b/xhpc-modules/pom.xml @@ -19,6 +19,7 @@ xhpc-wxma xhpc-invoice xhpc-tradebill + xhpc-message-board xhpc-modules diff --git a/xhpc-modules/xhpc-message-board/pom.xml b/xhpc-modules/xhpc-message-board/pom.xml new file mode 100644 index 00000000..efffedac --- /dev/null +++ b/xhpc-modules/xhpc-message-board/pom.xml @@ -0,0 +1,143 @@ + + + + xhpc-modules + com.ruoyi + 3.0.0 + + 4.0.0 + + xhpc-message-board + + + 留言板服务 + + + + 8 + 8 + + + + + + + junit + junit + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + mysql + mysql-connector-java + + + + + com.ruoyi + ruoyi-common-datasource + + + + + com.ruoyi + ruoyi-common-datascope + + + + + com.ruoyi + ruoyi-common-log + + + + + com.ruoyi + ruoyi-common-swagger + + + com.ruoyi + ruoyi-common-core + + + com.squareup.okhttp3 + okhttp + + + com.ruoyi + xhpc-common + 3.0.0 + compile + + + com.aliyun.oss + aliyun-sdk-oss + 3.10.2 + compile + + + + + + ${project.artifactId} + + + src/main/resources + + + src/main/java + + **/*.xml + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.4.0 + + + + repackage + + + + + + + + \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java new file mode 100644 index 00000000..27a76f51 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java @@ -0,0 +1,37 @@ +package com.xhpc.board; + +import com.xhpc.common.security.annotation.EnableCustomConfig; +import com.xhpc.common.security.annotation.EnableRyFeignClients; +import com.xhpc.common.swagger.annotation.EnableCustomSwagger2; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author WH + * @date 2021/12/7 14:55 + * @since version-1.0 + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableRyFeignClients +@SpringBootApplication +@MapperScan("com.xhpc.board.mapper") +public class XhpcMessageBoardApplication { + + public static void main(String[] args) { + + SpringApplication.run(XhpcMessageBoardApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ 留言板模块启动成功 ლ(´ڡ`ლ)゙ \n" + + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + + " ''-' `'-' `-..-' "); + } + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java new file mode 100644 index 00000000..eed7651e --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java @@ -0,0 +1,41 @@ +package com.xhpc.board.api; + +import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.service.XhpcMessageBoardService; +import com.xhpc.common.core.web.controller.BaseController; +import com.xhpc.common.core.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 小程序的InvoiceController + * + * @author WH + * @date 2021/12/23 13:49 + * @since version-1.0 + */ +@RestController +@RequestMapping("/api/message-board/") +public class XhpcMessageBoardApiController extends BaseController { + + @Resource + XhpcMessageBoardService xhpcMessageBoardService; + + /** + * 用户发起聊天,发送聊天记录给平台客服 + * + * @author WH + * @date 2021/12/28 18:51 + * @since version-1.0 + */ + @PostMapping("/user/message") + public AjaxResult sendMessageToPlatform(@RequestBody SendMessageToPlatformRequest userMessage) { + + return AjaxResult.success(); + } + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java new file mode 100644 index 00000000..1a7a2aa4 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java @@ -0,0 +1,31 @@ +package com.xhpc.board.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户所发送的信息的包装类 + * + * @author WH + * @date 2022/1/7 17:19 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class SendMessageToPlatformRequest { + + @JsonProperty("sendMessageTime") + private String sendMessageTime; + @JsonProperty("senderAccount") + private String senderAccount; + @JsonProperty("senderType") + private Integer senderType; + @JsonProperty("senderContent") + private String senderContent; + @JsonProperty("receiveId") + private String receiveId; + @JsonProperty("receiverType") + private Integer receiverType; + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java new file mode 100644 index 00000000..cae8b8ce --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java @@ -0,0 +1,12 @@ +package com.xhpc.board.service; + +/** + * 留言板服务的Service + * + * @author WH + * @date 2022/1/7 17:57 + * @since version-1.0 + */ +public class XhpcMessageBoardService { + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java new file mode 100644 index 00000000..9fee818f --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java @@ -0,0 +1,5 @@ +package com.xhpc.board.service.impl; + +public class XhpcMessageBoardServiceImpl { + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/banner.txt b/xhpc-modules/xhpc-message-board/src/main/resources/banner.txt new file mode 100644 index 00000000..27cacb9c --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/resources/banner.txt @@ -0,0 +1,10 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} + _ __ _ _ + (_) / _|(_)| | + _ __ _ _ ___ _ _ _ ______ | |_ _ | | ___ +| '__|| | | | / _ \ | | | || ||______|| _|| || | / _ \ +| | | |_| || (_) || |_| || | | | | || || __/ +|_| \__,_| \___/ \__, ||_| |_| |_||_| \___| + __/ | + |___/ \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml new file mode 100644 index 00000000..b4365277 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml @@ -0,0 +1,25 @@ +# Tomcat +server: + port: 9805 + +# Spring +spring: + application: + # 应用名称 + name: xhpc-message-board + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 127.0.0.1:8848 + config: + # 配置中心地址 + server-addr: 127.0.0.1:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/logback.xml b/xhpc-modules/xhpc-message-board/src/main/resources/logback.xml new file mode 100644 index 00000000..66683df0 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/resources/logback.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + From 4184b9dc0f69b28fb0e8f330e1cdb633d6f3ebd4 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Mon, 10 Jan 2022 13:16:35 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8DtokenService.getLoginUser?= =?UTF-8?q?()=E8=BF=94=E5=9B=9ELoginUser=E4=B8=AD=E7=9A=84userType?= =?UTF-8?q?=E4=B8=BAnull=E7=9A=84=E9=97=AE=E9=A2=98=20by=20yy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xhpc/system/controller/SysUserController.java | 5 +++++ .../src/main/resources/mapper/system/SysUserMapper.xml | 1 + 2 files changed, 6 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/controller/SysUserController.java index b001f44c..6430a50e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/xhpc/system/controller/SysUserController.java @@ -11,6 +11,7 @@ import com.xhpc.common.core.web.page.TableDataInfo; import com.xhpc.common.log.annotation.Log; import com.xhpc.common.log.enums.BusinessType; import com.xhpc.common.security.annotation.PreAuthorize; +import com.xhpc.common.util.UserTypeUtil; import com.xhpc.system.api.domain.SysRole; import com.xhpc.system.api.domain.SysUser; import com.xhpc.system.api.model.LoginUser; @@ -107,6 +108,10 @@ public class SysUserController extends BaseController { sysUserVo.setTenantId(sysUser.getTenantId()); sysUserVo.setRoles(roles); sysUserVo.setPermissions(permissions); + sysUserVo.setUsername(username); + sysUserVo.setUserType(UserTypeUtil.USER_TYPE); + sysUserVo.setUserTypeUtil(UserTypeUtil.USER); + sysUserVo.setUserid(sysUser.getUserId()); return R.ok(sysUserVo); } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 8e553c57..679b6328 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -27,6 +27,7 @@ + From 690627c017732b2db3c8d6d019160f813660ad1d Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Thu, 13 Jan 2022 18:03:24 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BC=98=E5=8C=96invoice=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=BB=99=E5=89=8D=E7=AB=AF=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E8=AF=AD=E5=8F=A5=20=E7=BB=99=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=A5=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=90=8E=E5=8F=B0=E7=94=9F=E6=88=90=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E6=97=B6=E9=97=B4=20=E4=BF=AE=E5=A4=8D=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84=E6=B2=A1=E6=9C=89=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8A=A5404=E9=97=AE=E9=A2=98=EF=BC=8C=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AE=A9=E5=85=B6=E8=BF=94=E5=9B=9Enull?= =?UTF-8?q?=E5=80=BC=20=E4=BF=AE=E6=94=B9bootrap.yml=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=8F=91=E7=A5=A8=E4=B8=8B=E8=BD=BD=E9=99=84=E4=BB=B6=E5=AD=98?= =?UTF-8?q?=E6=94=BE=E8=B7=AF=E5=BE=84=EF=BC=8C=E8=AE=A9=E5=85=B6=E4=B8=BA?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=EF=BC=8C=E5=90=88=E5=B9=B6=E6=98=AF=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=9B=B4=E6=94=B9=E4=B8=BA=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E5=AD=98=E6=94=BE=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xhpc/system/api/model/LoginUser.java | 2 +- .../com/xhpc/common/api/UserTypeService.java | 4 +- .../{invoice => }/XhpcInvoiceApplication.java | 2 +- .../controller/XhpcInvoiceController.java | 2 +- .../service/impl/XhpcInvoiceServiceImpl.java | 60 +++++++++++-------- .../src/main/resources/bootstrap.yml | 3 +- .../XhpcInvoiceMapHistoryOrderMapper.xml | 1 + 7 files changed, 43 insertions(+), 31 deletions(-) rename xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/{invoice => }/XhpcInvoiceApplication.java (98%) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/model/LoginUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/model/LoginUser.java index cae15e70..49878ee4 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/model/LoginUser.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xhpc/system/api/model/LoginUser.java @@ -25,7 +25,7 @@ public class LoginUser implements Serializable private Long userid; /** - * 用户名 + * 用户账号(手机号、账号) */ private String username; diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/UserTypeService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/UserTypeService.java index 4508fe61..48058043 100644 --- a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/UserTypeService.java +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/UserTypeService.java @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; +import java.util.Map; /** * @author yuyang @@ -18,11 +19,12 @@ public interface UserTypeService { /** * 根据手机号(账号),用户id和类型 获取用户信息 + * * @param * @return */ @GetMapping("/common/getUser") - R getUser(@RequestParam(value = "phone")String phone,@RequestParam(value = "userId")Long userId,@RequestParam(value = "userType")Integer userType,@RequestParam(value = "serialNumber")String serialNumber,@RequestParam(value = "tenantId")String tenantId); + R> getUser(@RequestParam(value = "phone") String phone, @RequestParam(value = "userId") Long userId, @RequestParam(value = "userType") Integer userType, @RequestParam(value = "serialNumber") String serialNumber, @RequestParam(value = "tenantId") String tenantId); diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/XhpcInvoiceApplication.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/XhpcInvoiceApplication.java similarity index 98% rename from xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/XhpcInvoiceApplication.java rename to xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/XhpcInvoiceApplication.java index 51a0ad3d..f88706bd 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/XhpcInvoiceApplication.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/XhpcInvoiceApplication.java @@ -1,4 +1,4 @@ -package com.xhpc.invoice; +package com.xhpc; import com.xhpc.common.security.annotation.EnableCustomConfig; import com.xhpc.common.security.annotation.EnableRyFeignClients; diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/controller/XhpcInvoiceController.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/controller/XhpcInvoiceController.java index efd09327..ed1b7f29 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/controller/XhpcInvoiceController.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/controller/XhpcInvoiceController.java @@ -95,7 +95,7 @@ public class XhpcInvoiceController extends BaseController { public AjaxResult invoiceToUser(@RequestBody InvoiceToUserRequest requestData) { //前置条件 if (requestData.getInvoiceId() == null) { - return AjaxResult.error("必须传递未开发票id"); + return AjaxResult.error("必须上传发票id"); } if (requestData.getStatus() == null || requestData.getStatus().equals(InvoiceStatusConst.INVOICING)) { return AjaxResult.error("必须传递发票状态或发票状态不能为0"); diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java index e2d32a27..2528d3e7 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java @@ -128,6 +128,8 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { @Override @Transactional(rollbackFor = Exception.class) public Boolean invoiceToUser(InvoiceToUserRequest requestData) { + //获取当前时间 + requestData.setInvoicingTime(DateUtil.getYyyyMmDdHhMmSs()); //根据操作人的id,查询操作人的名字 SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(requestData.getDrawer())); requestData.setDrawer(sysUser.getNickName()); @@ -137,7 +139,14 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { //从阿里云上下载下来电子发票 String fileUrl = requestData.getEletricInvoiceUrl(); File electricInvoiceFile = new File(environment.getProperty("file.serverStoreDisposableFileLocation") + "ElectricInvoice.pdf"); - HttpUtil.downloadFile(fileUrl, electricInvoiceFile); + try { + //参数1 文件下载路径 + //参数2 文件存放位置 + //服务器响应404 表示服务器找不到客户端所请求的资源 + HttpUtil.downloadFile(fileUrl, electricInvoiceFile); + } catch (Exception e) { + throw new RuntimeException("在阿里云上无法找到该文件,请检查上传的图片路径是否完整或有误"); + } try { MailUtil.send(receiveEmail, "【小华充电】电子发票", "邮件来自小华充电", false, electricInvoiceFile); } catch (Exception e) { @@ -161,6 +170,8 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { @Override @Transactional(rollbackFor = Exception.class) public void failInvoiceToUser(InvoiceToUserRequest requestData) { + //获取当前时间 + requestData.setInvoicingTime(DateUtil.getYyyyMmDdHhMmSs()); //根据操作人的id,查询操作人的名字 SysUser sysUser = sysUserMapper.selectUserById(Long.valueOf(requestData.getDrawer())); requestData.setDrawer(sysUser.getNickName()); @@ -196,6 +207,11 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { public InvoiceTitleResponse findTitleInfo(String firmName) { List xhpcInvoiceList = xhpcInvoiceMapper.selectInvoiceTitleInfo(firmName); + InvoiceTitleResponse invoiceTitleResponse = new InvoiceTitleResponse(); + //如果没有记录,则返回空包装类 + if (xhpcInvoiceList.size() == 0) { + return invoiceTitleResponse; + } ArrayList dataDTOList = new ArrayList<>(); for (XhpcInvoice xhpcInvoice : xhpcInvoiceList) { InvoiceTitleResponse.DataDTO dataDTO = new InvoiceTitleResponse.DataDTO(); @@ -203,7 +219,6 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { dataDTO.setDutyNumber(xhpcInvoice.getDutyNumber()); dataDTOList.add(dataDTO); } - InvoiceTitleResponse invoiceTitleResponse = new InvoiceTitleResponse(); invoiceTitleResponse.setData(dataDTOList); return invoiceTitleResponse; } @@ -223,6 +238,10 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { XhpcInvoice xhpcInvoice = xhpcInvoiceMapper.selectUserLastInputInvoiceInfo(creatorId, creatorType); TitleResponse titleResponse = new TitleResponse(); + //如果数据库本身就没有数据,那么就返回空实体类对象 + if (xhpcInvoice == null) { + return titleResponse; + } BeanUtils.copyProperties(xhpcInvoice, titleResponse); return titleResponse; @@ -251,6 +270,10 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { //查询该用户3个月内可以开发票的历史订单 List> xhpcHistoryOrderList = xhpcHistoryOrderMapper.findByCondition(invoicedOrdersRequest, lockOrderNumberList); InvoicedOrderResponse invoicedOrderResponse = new InvoicedOrderResponse(); + //没有则直接返回空对象出去 + if (xhpcHistoryOrderList.size() == 0) { + return invoicedOrderResponse; + } //设置该用户3个月内可以开发票的历史订单数量 invoicedOrderResponse.setTotalItems(xhpcHistoryOrderList.size()); //查询该用户所有可以开的发票的历史订单数量 @@ -312,29 +335,6 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { invoicedOrderResponse.setItems(itemsDTOS); return invoicedOrderResponse; -// //计算分页索引,放置到currentPage属性中 -// int startIndex = (invoicedOrdersRequest.getCurrentPage() - 1) * invoicedOrdersRequest.getItems(); -// invoicedOrdersRequest.setCurrentPage(startIndex); -// //先查询该用户被锁定了的订单,过滤掉它 -// List lockOrderNumberList = xhpcInvoiceMapHistoryOrderMapper.findLockOrdersByUserIdAndUserType(invoicedOrdersRequest); -// //查询该用户3个月内可以开发票的历史订单 -// List xhpcHistoryOrderList = xhpcHistoryOrderMapper.findByCondition(invoicedOrdersRequest, lockOrderNumberList); -// ArrayList itemsDTOList = new ArrayList<>(); -// for (XhpcHistoryOrder xhpcHistoryOrder : xhpcHistoryOrderList) { -// InvoiceOrdersResponse.ItemsDTO itemsDTO = new InvoiceOrdersResponse.ItemsDTO(); -// itemsDTO.setOrderId(xhpcHistoryOrder.getHistoryOrderId()); -// itemsDTO.setOrderNumber(xhpcHistoryOrder.getSerialNumber()); -// itemsDTO.setOrderMoney(xhpcHistoryOrder.getActPrice()); -// itemsDTO.setOrderTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, xhpcHistoryOrder.getCreateTime())); -// itemsDTOList.add(itemsDTO); -// } -// InvoiceOrdersResponse invoiceOrdersResponse = new InvoiceOrdersResponse(); -// invoiceOrdersResponse.setItems(itemsDTOList); -// //查询该用户所有可以开发票的历史订单的数量 -// Long allOrdersCount = xhpcHistoryOrderMapper.findAllOrdersByCondition(invoicedOrdersRequest, lockOrderNumberList); -// invoiceOrdersResponse.setTotalItems(allOrdersCount); -// return invoiceOrdersResponse; - } /** @@ -353,6 +353,10 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { //对拷发票部分数据 XhpcInvoice xhpcInvoice = xhpcInvoiceMapper.selectByPrimaryKey(invoiceId); SpecificInvoicedResponse specificInvoicedResponse = new SpecificInvoicedResponse(); + //查不出来返回空包装类 + if (xhpcInvoice == null) { + return specificInvoicedResponse; + } specificInvoicedResponse.setCreatorTime(DateUtils.parseDateToStr(xhpcInvoice.getCreateTime())); specificInvoicedResponse.setReceiveEmail(xhpcInvoice.getReceiveEmail()); specificInvoicedResponse.setTitleType(xhpcInvoice.getTitleType()); @@ -462,6 +466,11 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { invoiceHistoryRecordsRequest.setCurrentPage(startIndex); //获取该用户所提交的每个发票信息 List invoicesList = xhpcInvoiceMapper.findInvoicesByCreatorIdAndCreatorType(invoiceHistoryRecordsRequest); + //如果为0,那么则返回空的实体类出去 + InvoiceHistoryRecordsResponse invoiceHistoryRecordsResponse = new InvoiceHistoryRecordsResponse(); + if (invoicesList.size() == 0) { + return invoiceHistoryRecordsResponse; + } //实体类对拷 ArrayList itemsDTOS = new ArrayList<>(); for (XhpcInvoice xhpcInvoice : invoicesList) { @@ -473,7 +482,6 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { itemsDTO.setIsRead(xhpcInvoice.getIsRead()); itemsDTOS.add(itemsDTO); } - InvoiceHistoryRecordsResponse invoiceHistoryRecordsResponse = new InvoiceHistoryRecordsResponse(); invoiceHistoryRecordsResponse.setItems(itemsDTOS); Long userInvoiceItems = xhpcInvoiceMapper.getUserInvoiceItemsByCreatorIdAndCreatorType(invoiceHistoryRecordsRequest.getCreatorId(), invoiceHistoryRecordsRequest.getCreatorType()); invoiceHistoryRecordsResponse.setTotalItems(userInvoiceItems); diff --git a/xhpc-modules/xhpc-invoice/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-invoice/src/main/resources/bootstrap.yml index 9f962452..adcb25c9 100644 --- a/xhpc-modules/xhpc-invoice/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-invoice/src/main/resources/bootstrap.yml @@ -37,4 +37,5 @@ oss: #文件路径 file: aliyunPath: invoicePdf/ - serverStoreDisposableFileLocation: /www/wwwroot/xhpc.scxhua.com/disposableFiles/ \ No newline at end of file + # serverStoreDisposableFileLocation: /www/wwwroot/xhpc.scxhua.com/disposableFiles/ + serverStoreDisposableFileLocation: C:\\www\\wwwroot\\xhpc.scxhua.com\\disposableFiles\\ \ No newline at end of file diff --git a/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml b/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml index 08622bd6..783c6d8d 100644 --- a/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml @@ -1,5 +1,6 @@ + From df97402324945f426d068702d3050e13af6c0143 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Thu, 13 Jan 2022 18:09:53 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=AB=AF=EF=BC=8C=E7=94=A8=E6=88=B7=E7=BB=99=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=8F=91=E9=80=81=E8=81=8A=E5=A4=A9=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E5=AE=8C=E6=88=90=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=AB=AF=EF=BC=8C=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8E=E5=B9=B3=E5=8F=B0=E6=89=80=E5=8F=91=E9=80=81=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3=EF=BC=8C=20=E5=A4=A7?= =?UTF-8?q?=E8=87=B4=E5=AE=8C=E6=88=90=E5=B9=B3=E5=8F=B0=E7=AB=AF=EF=BC=8C?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E7=BB=99=E7=94=A8=E6=88=B7=E5=8F=91=E9=80=81?= =?UTF-8?q?=E7=95=99=E8=A8=80=E6=8E=A5=E5=8F=A3=EF=BC=8C=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=97=A5=E5=BF=97=EF=BC=8C=E6=89=93=E5=8D=B0Mybatis?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E4=BF=A1=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XhpcMessageBoardApplication.java | 2 +- .../api/XhpcMessageBoardApiController.java | 22 +- .../XhpcMessageBoardController.java | 35 +++ .../board/domain/PlatformQueryCondition.java | 29 ++ .../PlatformSendMessageToUserRequest.java | 31 ++ .../domain/QueryUserMassageResponse.java | 48 +++ .../domain/SendMessageToPlatformRequest.java | 12 +- .../xhpc/board/domain/UserQueryCondition.java | 29 ++ .../board/mapper/XhpcMessageBoardMapper.java | 97 ++++++ .../XhpcMessageBoardReceiveUserMapper.java | 40 +++ .../com/xhpc/board/pojo/XhpcMessageBoard.java | 68 ++++ .../pojo/XhpcMessageBoardReceiveUser.java | 52 ++++ .../service/XhpcMessageBoardService.java | 39 ++- .../impl/XhpcMessageBoardServiceImpl.java | 225 +++++++++++++- .../src/main/resources/bootstrap.yml | 5 +- .../mapper/XhpcMessageBoardMapper.xml | 292 ++++++++++++++++++ .../XhpcMessageBoardReceiveUserMapper.xml | 102 ++++++ 17 files changed, 1112 insertions(+), 16 deletions(-) rename xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/{board => }/XhpcMessageBoardApplication.java (98%) create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformQueryCondition.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformSendMessageToUserRequest.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserMassageResponse.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/UserQueryCondition.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardMapper.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoard.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoardReceiveUser.java create mode 100644 xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml create mode 100644 xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/XhpcMessageBoardApplication.java similarity index 98% rename from xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java rename to xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/XhpcMessageBoardApplication.java index 27a76f51..36f0e453 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/XhpcMessageBoardApplication.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/XhpcMessageBoardApplication.java @@ -1,4 +1,4 @@ -package com.xhpc.board; +package com.xhpc; import com.xhpc.common.security.annotation.EnableCustomConfig; import com.xhpc.common.security.annotation.EnableRyFeignClients; diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java index eed7651e..5ff82e64 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java @@ -1,13 +1,14 @@ package com.xhpc.board.api; +import com.xhpc.board.domain.QueryUserMassageResponse; import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.domain.UserQueryCondition; import com.xhpc.board.service.XhpcMessageBoardService; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.domain.AjaxResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.xhpc.common.log.annotation.Log; +import com.xhpc.common.log.enums.BusinessType; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -19,7 +20,7 @@ import javax.annotation.Resource; * @since version-1.0 */ @RestController -@RequestMapping("/api/message-board/") +@RequestMapping("/api/message-board") public class XhpcMessageBoardApiController extends BaseController { @Resource @@ -33,9 +34,18 @@ public class XhpcMessageBoardApiController extends BaseController { * @since version-1.0 */ @PostMapping("/user/message") + @Log(title = "留言板-用户发送聊天信息", businessType = BusinessType.INSERT) public AjaxResult sendMessageToPlatform(@RequestBody SendMessageToPlatformRequest userMessage) { + xhpcMessageBoardService.writeUserMessageToDb(userMessage); return AjaxResult.success(); } -} + @GetMapping("/user/message") + public AjaxResult queryUserMessage(UserQueryCondition userQueryCondition) { + + QueryUserMassageResponse queryUserMassageResponse = xhpcMessageBoardService.queryUserMessage(userQueryCondition); + return AjaxResult.success(queryUserMassageResponse); + } + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java new file mode 100644 index 00000000..24c2b409 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java @@ -0,0 +1,35 @@ +package com.xhpc.board.controller; + +import com.xhpc.board.domain.PlatformSendMessageToUserRequest; +import com.xhpc.board.service.XhpcMessageBoardService; +import com.xhpc.common.core.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 留言板服务Controller + * + * @author WH + * @date 2022/1/10 10:02 + * @since version-1.0 + */ +@RestController +@RequestMapping("/board") +public class XhpcMessageBoardController { + + @Resource + XhpcMessageBoardService xhpcMessageBoardService; + + @PostMapping("/platform/message") + public AjaxResult platformSendMessageToUser(@RequestBody PlatformSendMessageToUserRequest platformRequest) { + + xhpcMessageBoardService.platformSendMessageToUser(platformRequest); + + return AjaxResult.success(); + } + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformQueryCondition.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformQueryCondition.java new file mode 100644 index 00000000..2d36a24c --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformQueryCondition.java @@ -0,0 +1,29 @@ +package com.xhpc.board.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 平台查询条件 + * + * @author WH + * @date 2022/1/12 15:23 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class PlatformQueryCondition { + + @JsonProperty("senderAccount") + private String senderAccount; + @JsonProperty("senderType") + private Integer senderType; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("tenantType") + private Integer tenantType; + @JsonProperty("sendMessageTime") + private String sendMessageTime; + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformSendMessageToUserRequest.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformSendMessageToUserRequest.java new file mode 100644 index 00000000..943e408a --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/PlatformSendMessageToUserRequest.java @@ -0,0 +1,31 @@ +package com.xhpc.board.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 平台向用户发送的信息包装类 + * + * @author WH + * @date 2022/1/11 13:47 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class PlatformSendMessageToUserRequest { + + @JsonProperty("sendMessageTime") + private String sendMessageTime; + @JsonProperty("senderAccount") + private String senderAccount; + @JsonProperty("senderType") + private Integer senderType; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("tenantType") + private Integer tenantType; + @JsonProperty("messageContent") + private String messageContent; + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserMassageResponse.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserMassageResponse.java new file mode 100644 index 00000000..7bf9fb9e --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/QueryUserMassageResponse.java @@ -0,0 +1,48 @@ +package com.xhpc.board.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 查询用户信息的返回封装数据类 + * + * @author WH + * @date 2022/1/13 10:23 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class QueryUserMassageResponse { + + @JsonProperty("nextQueryTime") + private String nextQueryTime; + @JsonProperty("data") + private List data; + + @NoArgsConstructor + @Data + public static class DataDTO { + + @JsonProperty("senderType") + private Integer senderType; + @JsonProperty("senderAccount") + private String senderAccount; + @JsonProperty("sendMessageTime") + private String sendMessageTime; + @JsonProperty("messageContent") + private String messageContent; + @JsonProperty("tenantType") + private Integer tenantType; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("have_new_info") + private Integer haveNewInfo; + @JsonProperty("sender") + private Integer sender; + + } + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java index 1a7a2aa4..6b950fa3 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/SendMessageToPlatformRequest.java @@ -21,11 +21,11 @@ public class SendMessageToPlatformRequest { private String senderAccount; @JsonProperty("senderType") private Integer senderType; - @JsonProperty("senderContent") - private String senderContent; - @JsonProperty("receiveId") - private String receiveId; - @JsonProperty("receiverType") - private Integer receiverType; + @JsonProperty("messageContent") + private String messageContent; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("tenantType") + private Integer tenantType; } diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/UserQueryCondition.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/UserQueryCondition.java new file mode 100644 index 00000000..cc8a35b3 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/domain/UserQueryCondition.java @@ -0,0 +1,29 @@ +package com.xhpc.board.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户查询条件 + * + * @author WH + * @date 2022/1/12 15:23 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class UserQueryCondition { + + @JsonProperty("senderAccount") + private String senderAccount; + @JsonProperty("senderType") + private Integer senderType; + @JsonProperty("tenantId") + private String tenantId; + @JsonProperty("tenantType") + private Integer tenantType; + @JsonProperty("sendMessageTime") + private String sendMessageTime; + +} diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardMapper.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardMapper.java new file mode 100644 index 00000000..2bd03c28 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardMapper.java @@ -0,0 +1,97 @@ +package com.xhpc.board.mapper; + +import com.xhpc.board.domain.PlatformSendMessageToUserRequest; +import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.domain.UserQueryCondition; +import com.xhpc.board.pojo.XhpcMessageBoard; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface XhpcMessageBoardMapper { + + int deleteByPrimaryKey(Long messageId); + + int insert(XhpcMessageBoard record); + + int insertSelective(XhpcMessageBoard record); + + XhpcMessageBoard selectByPrimaryKey(Long messageId); + + int updateByPrimaryKeySelective(XhpcMessageBoard record); + + int updateByPrimaryKey(XhpcMessageBoard record); + + /** + * 用户端存入时间记录 + * + * @param userMessage 用户时间记录信息 + * @author WH + * @date 2022/1/11 17:46 + * @since version-1.0 + */ + void insertUserTimeMessageRecord(SendMessageToPlatformRequest userMessage); + + /** + * 用户端存入发送的消息 + * + * @param userMessage 用户发送的消息 + * @author WH + * @date 2022/1/11 18:16 + * @since version-1.0 + */ + void insertUserMessage(SendMessageToPlatformRequest userMessage); + + /** + * 平台端存入发送的信息 + * + * @param platformRequest 平台所要发送给用户的信息 + * @author WH + * @date 2022/1/12 11:30 + * @since version-1.0 + */ + void insertPlatformMessage(PlatformSendMessageToUserRequest platformRequest); + + /** + * 平台端存入时间记录 + * + * @param platformRequest 平台时间记录信息 + * @author WH + * @date 2022/1/12 11:49 + * @since version-1.0 + */ + void insertPlatformTimeMessageRecord(PlatformSendMessageToUserRequest platformRequest); + + /** + * 查询用户一个月的记录 + * + * @param userQueryCondition 用户查询条件 + * @param nextTimeStr 上一个月的时间 + * @return 返回一个装有一个月的数据的集合 + * @author WH + * @date 2022/1/12 16:03 + * @since version-1.0 + */ + List selectBy(@Param("userQueryCondition") UserQueryCondition userQueryCondition, @Param("nextTimeStr") String nextTimeStr); + + /** + * 给查询出来的记录,添加用户已读状态 + * + * @param messageIdList 查询出来的记录的id集合 + * @author WH + * @date 2022/1/13 10:16 + * @since version-1.0 + */ + void setUserReadedStatus(List messageIdList); + + /** + * 查询用户所有时间记录 + * + * @param userQueryCondition 用户信息 + * @author WH + * @date 2022/1/13 10:56 + * @since version-1.0 + */ + List selectTimeRecords(UserQueryCondition userQueryCondition); + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java new file mode 100644 index 00000000..54ae11b7 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/mapper/XhpcMessageBoardReceiveUserMapper.java @@ -0,0 +1,40 @@ +package com.xhpc.board.mapper; + +import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.pojo.XhpcMessageBoardReceiveUser; + +/** + * the mapper of the xhpc_message_board_receive_user + * + * @author WH + * @date 2022/1/11 10:26 + * @since version-1.0 + */ +public interface XhpcMessageBoardReceiveUserMapper { + + int insert(XhpcMessageBoardReceiveUser record); + + int insertSelective(XhpcMessageBoardReceiveUser record); + + /** + * 通过用户id,用户类型,租户id,租户类型,查询指定记录 + * + * @param userMessage 储存条件的包装类 + * @return 指定记录 + * @author WH + * @date 2022/1/10 18:03 + * @since version-1.0 + */ + XhpcMessageBoardReceiveUser findOneByCondition(SendMessageToPlatformRequest userMessage); + + /** + * 将指定用户记录have_new_info字段的值,将其设置为0,即该用户发送了新消息 + * + * @param userMessage 指定要更新哪个记录的条件 + * @author WH + * @date 2022/1/11 10:31 + * @since version-1.0 + */ + void updateHaveNewInfoFiledByUserCondition(SendMessageToPlatformRequest userMessage); + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoard.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoard.java new file mode 100644 index 00000000..2c41e605 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoard.java @@ -0,0 +1,68 @@ +package com.xhpc.board.pojo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * xhpc_message_board + * + * @author WH + */ +@Data +public class XhpcMessageBoard implements Serializable { + + /** + * 消息id + */ + private Long messageId; + + /** + * 用户类型 + */ + private Integer senderType; + + /** + * 用户账号 + */ + private String senderAccount; + + /** + * 发送消息的时间 + */ + private Date sendMessageTime; + + /** + * 消息内容 + */ + private String messageContent; + + /** + * 租户类型 + */ + private Integer tenantType; + + /** + * 租户id(平台id) + */ + private String tenantId; + + /** + * 租户发送的消息,用户是否已读,默认为null,表示未读,0表示已读 + */ + private Integer haveNewInfo; + + /** + * 逻辑删除字段 + */ + private Integer delFlag; + + /** + * 发送者(0,用户,1,时间,2,平台(租户)) + */ + private Integer sender; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoardReceiveUser.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoardReceiveUser.java new file mode 100644 index 00000000..f71d6430 --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/pojo/XhpcMessageBoardReceiveUser.java @@ -0,0 +1,52 @@ +package com.xhpc.board.pojo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * xhpc_message_board_receive_user + * + * @author WH + */ +@Data +public class XhpcMessageBoardReceiveUser implements Serializable { + + /** + * 接收者id(租户id) + */ + private String tenantId; + + /** + * 接收者类型(租户类型) + */ + private Integer tenantType; + + /** + * 发送者账号 + */ + private String senderAccount; + + /** + * 发送者类型(0 C端用户 1 流量方用户 2社区用户 3B端用户) + */ + private Integer senderType; + + /** + * 用户头像地址 + */ + private String userIcon; + + /** + * 是否有新消息(null表示有新消息,0表示没有) + */ + private Integer haveNewInfo; + + /** + * 逻辑删除(0为删除) + */ + private Integer delFlag; + + private static final long serialVersionUID = 1L; + +} \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java index cae8b8ce..d03e5152 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java @@ -1,5 +1,10 @@ package com.xhpc.board.service; +import com.xhpc.board.domain.PlatformSendMessageToUserRequest; +import com.xhpc.board.domain.QueryUserMassageResponse; +import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.domain.UserQueryCondition; + /** * 留言板服务的Service * @@ -7,6 +12,38 @@ package com.xhpc.board.service; * @date 2022/1/7 17:57 * @since version-1.0 */ -public class XhpcMessageBoardService { +public interface XhpcMessageBoardService { + + /** + * 将用户发送的信息保存到数据库中 + * + * @param userMessage 用户发送的信息 + * @author WH + * @date 2022/1/10 14:17 + * @since version-1.0 + */ + void writeUserMessageToDb(SendMessageToPlatformRequest userMessage); + + /** + * 将平台(租户)发送的信息保存到数据库中 + * + * @param platformRequest 平台消息 + * @author WH + * @date 2022/1/11 13:58 + * @since version-1.0 + */ + void platformSendMessageToUser(PlatformSendMessageToUserRequest platformRequest); + + /** + * 根据用户条件,查询指定的数据库中的记录 + * + * @param userQueryCondition 用户传入的条件 + * @return 用户在数据库中发送的记录 + * @author WH + * @date 2022/1/12 15:30 + * @since version-1.0 + */ + QueryUserMassageResponse queryUserMessage(UserQueryCondition userQueryCondition); + } diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java index 9fee818f..57d1f8c0 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java @@ -1,5 +1,228 @@ package com.xhpc.board.service.impl; -public class XhpcMessageBoardServiceImpl { +import com.xhpc.board.domain.PlatformSendMessageToUserRequest; +import com.xhpc.board.domain.QueryUserMassageResponse; +import com.xhpc.board.domain.SendMessageToPlatformRequest; +import com.xhpc.board.domain.UserQueryCondition; +import com.xhpc.board.mapper.XhpcMessageBoardMapper; +import com.xhpc.board.mapper.XhpcMessageBoardReceiveUserMapper; +import com.xhpc.board.pojo.XhpcMessageBoard; +import com.xhpc.board.pojo.XhpcMessageBoardReceiveUser; +import com.xhpc.board.service.XhpcMessageBoardService; +import com.xhpc.common.api.UserTypeService; +import com.xhpc.common.core.domain.R; +import com.xhpc.common.core.utils.DateUtils; +import com.xhpc.common.core.utils.bean.BeanUtils; +import com.xhpc.common.redis.service.RedisService; +import com.xhpc.common.security.service.TokenService; +import com.xhpc.common.util.DateUtil; +import com.xhpc.system.api.domain.SysUser; +import com.xhpc.system.api.model.LoginUser; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; + +/** + * 留言板实现类 + * + * @author WH + */ +@Service +public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { + + @Resource + TokenService tokenService; + @Resource + XhpcMessageBoardMapper messageBoardMapper; + @Resource + XhpcMessageBoardReceiveUserMapper xhpcMessageBoardReceiveUserMapper; + @Resource + RedisService redisService; + @Resource + UserTypeService userTypeService; + + + /** + * 将用户发送的信息保存到数据库中 + * + * @param userMessage 用户发送的信息 + * @author WH + * @date 2022/1/10 14:17 + * @since version-1.0 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void writeUserMessageToDb(SendMessageToPlatformRequest userMessage) { + //解析Token,获取用户与平台用户信息 + LoginUser loginUser = tokenService.getLoginUser(); + String userRedisKey = "userMessageValidTime:" + loginUser.getUserType() + ":" + loginUser.getUserid() + ":" + userMessage.getTenantType() + ":" + userMessage.getTenantId(); + //使用Redis判断消息发送是否大于5分钟: + Object cacheObject = redisService.getCacheObject(userRedisKey); + String currentTime; + if (cacheObject == null) { + //设置当前时间 + currentTime = DateUtil.getYyyyMmDdHhMmSs(); + redisService.setCacheObject(userRedisKey, currentTime); + redisService.expire(userRedisKey, 60 * 5); + //设置平台RedisKey的有效时间,保证双方时间数据同步 + String platformRedisKey = "PlatformMessageValidTime:" + userMessage.getTenantType() + ":" + userMessage.getTenantId() + ":" + loginUser.getUserType() + ":" + loginUser.getUsername(); + redisService.setCacheObject(platformRedisKey, currentTime); + redisService.expire(platformRedisKey, 60 * 5); + userMessage.setSendMessageTime(currentTime); + userMessage.setSenderAccount(loginUser.getUsername()); + userMessage.setSenderType(loginUser.getUserType()); + messageBoardMapper.insertUserTimeMessageRecord(userMessage); + messageBoardMapper.insertUserMessage(userMessage); + XhpcMessageBoardReceiveUser receiverUser = xhpcMessageBoardReceiveUserMapper.findOneByCondition(userMessage); + if (receiverUser == null) { + XhpcMessageBoardReceiveUser xhpcMessageBoardReceiveUser = new XhpcMessageBoardReceiveUser(); + BeanUtils.copyProperties(userMessage, xhpcMessageBoardReceiveUser); + //发送请求所返回的响应信息 + R> result = userTypeService.getUser(null, loginUser.getUserid(), loginUser.getUserType(), null, userMessage.getTenantId()); + Map userInfo = result.getData(); + String avatar = (String) userInfo.get("avatar"); + xhpcMessageBoardReceiveUser.setUserIcon(avatar); + xhpcMessageBoardReceiveUser.setHaveNewInfo(0); + xhpcMessageBoardReceiveUserMapper.insertSelective(xhpcMessageBoardReceiveUser); + } else { + xhpcMessageBoardReceiveUserMapper.updateHaveNewInfoFiledByUserCondition(userMessage); + } + } else { + //reset redis key valid time + redisService.expire(userRedisKey, 60 * 5); + currentTime = (String) cacheObject; + userMessage.setSendMessageTime(currentTime); + //设置用户账号,用户类型 + userMessage.setSenderAccount(loginUser.getUsername()); + userMessage.setSenderType(loginUser.getUserType()); + messageBoardMapper.insertUserMessage(userMessage); + //向租户显示的列表中添加该用户信息,表示该用户来新消息了,如果列表中已经有该用户了,则只更新状态即可。 + XhpcMessageBoardReceiveUser receiverUser = xhpcMessageBoardReceiveUserMapper.findOneByCondition(userMessage); + if (receiverUser == null) { + XhpcMessageBoardReceiveUser xhpcMessageBoardReceiveUser = new XhpcMessageBoardReceiveUser(); + BeanUtils.copyProperties(userMessage, xhpcMessageBoardReceiveUser); + //发送请求所返回的响应信息 + R> result = userTypeService.getUser(null, loginUser.getUserid(), loginUser.getUserType(), null, userMessage.getTenantId()); + Map userInfo = result.getData(); + String avatar = (String) userInfo.get("avatar"); + xhpcMessageBoardReceiveUser.setUserIcon(avatar); + xhpcMessageBoardReceiveUser.setHaveNewInfo(0); + xhpcMessageBoardReceiveUserMapper.insertSelective(xhpcMessageBoardReceiveUser); + } else { + xhpcMessageBoardReceiveUserMapper.updateHaveNewInfoFiledByUserCondition(userMessage); + } + } + } + + /** + * 将平台(租户)发送的信息保存到数据库中 + * + * @param platformRequest 平台消息 + * @author WH + * @date 2022/1/11 13:58 + * @since version-1.0 + */ + @Override + public void platformSendMessageToUser(PlatformSendMessageToUserRequest platformRequest) { + + //获取平台用户信息 + SysUser sysUser = tokenService.getLoginUser().getSysUser(); + //使用redis控制发送时间 + String platformRedisKey = "PlatformMessageValidTime:" + "0:" + sysUser.getTenantId() + ":" + platformRequest.getSenderType() + ":" + platformRequest.getSenderAccount(); + Object cacheObject = redisService.getCacheObject(platformRedisKey); + String currentTime; + if (cacheObject == null) { + //设置当前时间 + currentTime = DateUtil.getYyyyMmDdHhMmSs(); + redisService.setCacheObject(platformRedisKey, currentTime); + redisService.expire(platformRedisKey, 60 * 5); + //设置用户RedisKey的有效时间,保证双方时间数据同步 + String userRedisKey = "userMessageValidTime:" + platformRequest.getSenderType() + ":" + platformRequest.getSenderAccount() + ":" + "0:" + sysUser.getTenantId(); + redisService.setCacheObject(userRedisKey, currentTime); + redisService.expire(userRedisKey, 60 * 5); + platformRequest.setSendMessageTime(currentTime); + platformRequest.setTenantId(sysUser.getTenantId()); + platformRequest.setTenantType(0); + messageBoardMapper.insertPlatformTimeMessageRecord(platformRequest); + messageBoardMapper.insertPlatformMessage(platformRequest); + } + //reset redis key valid time + redisService.expire(platformRedisKey, 60 * 5); + platformRequest.setSendMessageTime((String) cacheObject); + platformRequest.setTenantId(sysUser.getTenantId()); + platformRequest.setTenantType(0); + messageBoardMapper.insertPlatformMessage(platformRequest); + } + + /** + * 根据用户条件,查询指定的数据库中的记录 + * + * @param userQueryCondition 用户传入的条件 + * @author WH + * @date 2022/1/12 15:30 + * @since version-1.0 + */ + @Override + public QueryUserMassageResponse queryUserMessage(UserQueryCondition userQueryCondition) { + //完善条件集合 + LoginUser loginUser = tokenService.getLoginUser(); + userQueryCondition.setSenderAccount(loginUser.getUsername()); + userQueryCondition.setSenderType(loginUser.getUserType()); + String nextTimeStr = null; + if ("".equals(userQueryCondition.getSendMessageTime()) || userQueryCondition.getSendMessageTime() == null || "null".equals(userQueryCondition.getSendMessageTime())) { + userQueryCondition.setSendMessageTime(DateUtil.getYyyyMmDdHhMmSs()); + //查询用户是否有数据,即查询该用户的所有时间记录(有时间记录表示该用户发送过信息) + List allTimeRecords = messageBoardMapper.selectTimeRecords(userQueryCondition); + QueryUserMassageResponse queryUserMassageResponse = new QueryUserMassageResponse(); + if (allTimeRecords.size() == 0) { + return queryUserMassageResponse; + } + //获取最后一个时间记录,将其减去一个月,放入查询条件中 + XhpcMessageBoard xhpcMessageBoard = allTimeRecords.get(allTimeRecords.size() - 1); + Date finalTime = xhpcMessageBoard.getSendMessageTime(); + userQueryCondition.setSendMessageTime(DateUtils.parseDateToStr(finalTime)); + Calendar finalTimeCalendar = DateUtil.getCalendar(finalTime); + finalTimeCalendar.add(Calendar.MONTH, -1); + Date nextTime = finalTimeCalendar.getTime(); + nextTimeStr = DateUtils.parseDateToStr(nextTime); + } else { + //如果有值过来,说明有之前的记录,计算上一个月的值,作为查询条件,并返回 + String sendMessageTimeStr = userQueryCondition.getSendMessageTime(); + Date sendMessageTimeDate = DateUtils.parseDate(sendMessageTimeStr); + Calendar nextTimeCalendar = DateUtil.getCalendar(sendMessageTimeDate); + nextTimeCalendar.add(Calendar.MONTH, -1); + Date nextTime = nextTimeCalendar.getTime(); + nextTimeStr = DateUtils.parseDateToStr(nextTime); + } + //根据用户信息中所保存的时间,与上个月时间进行区间查询 + List aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr); + //如果没有数据,则返回空实体类对象 + QueryUserMassageResponse response = new QueryUserMassageResponse(); + if (aMonthRecords.size() == 0) { + return response; + } + List messageIdList = new ArrayList<>(); + for (int index = 0; index <= aMonthRecords.size() - 1; index++) { + Long messageId = aMonthRecords.get(index).getMessageId(); + messageIdList.add(messageId); + } + //设置查询出来的记录为已读状态 + messageBoardMapper.setUserReadedStatus(messageIdList); + //封装数据 + ArrayList dataDTOS = new ArrayList<>(); + for (XhpcMessageBoard aMonthRecord : aMonthRecords) { + QueryUserMassageResponse.DataDTO dataDTO = new QueryUserMassageResponse.DataDTO(); + BeanUtils.copyProperties(aMonthRecord, dataDTO); + dataDTO.setSendMessageTime(DateUtils.parseDateToStr(aMonthRecord.getSendMessageTime())); + dataDTOS.add(dataDTO); + } + //处理下次查询时间 + //todo 截取时间 + response.setNextQueryTime(nextTimeStr); + response.setData(dataDTOS); + return response; + } } diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml b/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml index b4365277..c0bbf680 100644 --- a/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml +++ b/xhpc-modules/xhpc-message-board/src/main/resources/bootstrap.yml @@ -22,4 +22,7 @@ spring: file-extension: yml # 共享配置 shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} \ No newline at end of file + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.xhpc.board.mapper: debug \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml new file mode 100644 index 00000000..0f2c01bf --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardMapper.xml @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + message_id + , sender_type, sender_account, send_message_time, message_content, tenant_type, + tenant_id, have_new_info, del_flag, sender + + + + + + delete + from xhpc_message_board + where message_id = #{messageId,jdbcType=BIGINT} + + + insert into xhpc_message_board (sender_type, sender_account, send_message_time, + message_content, tenant_type, tenant_id, + have_new_info, del_flag, sender) + values (#{senderType,jdbcType=TINYINT}, #{senderAccount,jdbcType=VARCHAR}, + #{sendMessageTime,jdbcType=TIMESTAMP}, + #{messageContent,jdbcType=VARCHAR}, #{tenantType,jdbcType=TINYINT}, #{tenantId,jdbcType=VARCHAR}, + #{haveNewInfo,jdbcType=BOOLEAN}, #{delFlag,jdbcType=BOOLEAN}, #{sender,jdbcType=BOOLEAN}) + + + insert into xhpc_message_board + + + sender_type, + + + sender_account, + + + send_message_time, + + + message_content, + + + tenant_type, + + + tenant_id, + + + have_new_info, + + + del_flag, + + + sender, + + + + + #{senderType,jdbcType=TINYINT}, + + + #{senderAccount,jdbcType=VARCHAR}, + + + #{sendMessageTime,jdbcType=TIMESTAMP}, + + + #{messageContent,jdbcType=VARCHAR}, + + + #{tenantType,jdbcType=TINYINT}, + + + #{tenantId,jdbcType=VARCHAR}, + + + #{haveNewInfo,jdbcType=BOOLEAN}, + + + #{delFlag,jdbcType=BOOLEAN}, + + + #{sender,jdbcType=BOOLEAN}, + + + + + insert into xhpc_message_board + (sender_type, sender_account, send_message_time, tenant_type, tenant_id, sender) + values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 1) + + + insert into xhpc_message_board + + + sender_type, + + + sender_account, + + + send_message_time, + + + message_content, + + + tenant_type, + + + tenant_id, + + have_new_info, + sender, + + + + #{senderType,jdbcType=TINYINT}, + + + #{senderAccount,jdbcType=VARCHAR}, + + + #{sendMessageTime,jdbcType=TIMESTAMP}, + + + #{messageContent,jdbcType=VARCHAR}, + + + #{tenantType,jdbcType=TINYINT}, + + + #{tenantId,jdbcType=VARCHAR}, + + 0, + 0, + + + + insert into xhpc_message_board + + + sender_type, + + + sender_account, + + + send_message_time, + + + message_content, + + + tenant_type, + + + tenant_id, + + have_new_info, + sender, + + + + #{senderType,jdbcType=TINYINT}, + + + #{senderAccount,jdbcType=VARCHAR}, + + + #{sendMessageTime,jdbcType=TIMESTAMP}, + + + #{messageContent,jdbcType=VARCHAR}, + + + #{tenantType,jdbcType=TINYINT}, + + + #{tenantId,jdbcType=VARCHAR}, + + 0, + 2, + + + + insert into xhpc_message_board + (sender_type, sender_account, send_message_time, tenant_type, tenant_id, sender) + values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 1) + + + update xhpc_message_board + + + sender_type = #{senderType,jdbcType=TINYINT}, + + + sender_account = #{senderAccount,jdbcType=VARCHAR}, + + + send_message_time = #{sendMessageTime,jdbcType=TIMESTAMP}, + + + message_content = #{messageContent,jdbcType=VARCHAR}, + + + tenant_type = #{tenantType,jdbcType=TINYINT}, + + + tenant_id = #{tenantId,jdbcType=VARCHAR}, + + + have_new_info = #{haveNewInfo,jdbcType=BOOLEAN}, + + + del_flag = #{delFlag,jdbcType=BOOLEAN}, + + + sender = #{sender,jdbcType=BOOLEAN}, + + + where message_id = #{messageId,jdbcType=BIGINT} + + + update xhpc_message_board + set sender_type = #{senderType,jdbcType=TINYINT}, + sender_account = #{senderAccount,jdbcType=VARCHAR}, + send_message_time = #{sendMessageTime,jdbcType=TIMESTAMP}, + message_content = #{messageContent,jdbcType=VARCHAR}, + tenant_type = #{tenantType,jdbcType=TINYINT}, + tenant_id = #{tenantId,jdbcType=VARCHAR}, + have_new_info = #{haveNewInfo,jdbcType=BOOLEAN}, + del_flag = #{delFlag,jdbcType=BOOLEAN}, + sender = #{sender,jdbcType=BOOLEAN} + where message_id = #{messageId,jdbcType=BIGINT} + + + UPDATE `xhpc_message_board` + SET have_new_info = 1 + WHERE + message_id IN + + #{messageId} + + AND del_flag IS NULL + + \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml new file mode 100644 index 00000000..4a24934c --- /dev/null +++ b/xhpc-modules/xhpc-message-board/src/main/resources/mapper/XhpcMessageBoardReceiveUserMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + tenant_id + , + tenant_type, + sender_account, + sender_type, + user_icon, + have_new_info, + del_flag + + + insert into xhpc_message_board_receive_user (tenant_id, tenant_type, sender_account, + sender_type, user_icon, have_new_info, + del_flag) + values (#{tenantId,jdbcType=VARCHAR}, #{tenantType,jdbcType=INTEGER}, #{senderAccount,jdbcType=VARCHAR}, + #{senderType,jdbcType=INTEGER}, #{userIcon,jdbcType=VARCHAR}, #{haveNewInfo,jdbcType=BOOLEAN}, + #{delFlag,jdbcType=BOOLEAN}) + + + insert into xhpc_message_board_receive_user + + + tenant_id, + + + tenant_type, + + + sender_account, + + + sender_type, + + + user_icon, + + + have_new_info, + + + del_flag, + + + + + #{tenantId,jdbcType=VARCHAR}, + + + #{tenantType,jdbcType=INTEGER}, + + + #{senderAccount,jdbcType=VARCHAR}, + + + #{senderType,jdbcType=INTEGER}, + + + #{userIcon,jdbcType=VARCHAR}, + + + #{haveNewInfo,jdbcType=BOOLEAN}, + + + #{delFlag,jdbcType=BOOLEAN}, + + + + + UPDATE xhpc_message_board_receive_user + SET have_new_info = 0 + WHERE tenant_type = #{tenantType} + AND tenant_id = #{tenantId} + AND sender_account = #{senderAccount} + AND sender_type = #{senderType} + AND del_flag IS NULL; + + + \ No newline at end of file From 52330aa54f4e732b9d17a2ca1985b3d2717ebfa8 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Thu, 13 Jan 2022 18:42:04 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=A4=A7=E8=87=B4=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E8=BF=94=E5=9B=9E=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/XhpcMessageBoardApiController.java | 22 +++++++++++++++++++ .../service/XhpcMessageBoardService.java | 11 ++++++++++ .../impl/XhpcMessageBoardServiceImpl.java | 16 ++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java index 5ff82e64..f8fe9a4b 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/api/XhpcMessageBoardApiController.java @@ -8,6 +8,7 @@ import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.log.annotation.Log; import com.xhpc.common.log.enums.BusinessType; +import org.apache.ibatis.annotations.Param; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -41,6 +42,13 @@ public class XhpcMessageBoardApiController extends BaseController { return AjaxResult.success(); } + /** + * 用户查看所发送的聊天记录 + * + * @author WH + * @date 2022/1/13 18:15 + * @since version-1.0 + */ @GetMapping("/user/message") public AjaxResult queryUserMessage(UserQueryCondition userQueryCondition) { @@ -48,4 +56,18 @@ public class XhpcMessageBoardApiController extends BaseController { return AjaxResult.success(queryUserMassageResponse); } + /** + * 获取用户对应的租户的头像 + * + * @author WH + * @date 2022/1/13 18:19 + * @since version-1.0 + */ + @GetMapping("/platform-icon") + public AjaxResult returnPlatformAvatar(@Param("tenantId") String tenantId, @Param("tenantType") Integer tenantType) { + + String avatarAddress = xhpcMessageBoardService.returnPlatformAvatar(tenantId, tenantType); + return AjaxResult.success(avatarAddress); + } + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java index d03e5152..73aae832 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/XhpcMessageBoardService.java @@ -45,5 +45,16 @@ public interface XhpcMessageBoardService { */ QueryUserMassageResponse queryUserMessage(UserQueryCondition userQueryCondition); + /** + * 根据租户id和租户类型查询指定的租户头像 + * + * @param tenantId 租户id + * @param tenantType 租户类型 + * @return 头像地址 + * @author WH + * @date 2022/1/13 18:30 + * @since version-1.0 + */ + String returnPlatformAvatar(String tenantId, Integer tenantType); } diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java index 57d1f8c0..51a78d6c 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java @@ -225,4 +225,20 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { return response; } + /** + * 根据租户id和租户类型查询指定的租户头像 + * + * @param tenantId 租户id + * @param tenantType 租户类型 + * @return 头像地址 + * @author WH + * @date 2022/1/13 18:30 + * @since version-1.0 + */ + @Override + public String returnPlatformAvatar(String tenantId, Integer tenantType) { + + return "https://xhpc-bucket1.oss-cn-hangzhou.aliyuncs.com/avatar/logo.png"; + } + } From 253667aece4c93474e56c3fe4e722b0bc6658b2b Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Thu, 13 Jan 2022 18:59:55 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E7=BB=99=E7=94=A8=E6=88=B7=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=8D=E5=90=8C=E6=AD=A5=E7=9A=84Bug?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E5=B7=B2=E4=BD=BF=E5=8F=8C=E6=96=B9=E4=BB=BB?= =?UTF-8?q?=E6=84=8F=E4=B8=80=E6=96=B9=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E9=83=BD=E4=BC=9A=E4=BD=BF=E5=BE=97Redis=E4=B8=AD?= =?UTF-8?q?=E7=9A=84key=E7=9A=84=E6=9C=89=E6=95=88=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xhpc/board/controller/XhpcMessageBoardController.java | 7 +++++++ .../board/service/impl/XhpcMessageBoardServiceImpl.java | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java index 24c2b409..51afa483 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/controller/XhpcMessageBoardController.java @@ -24,6 +24,13 @@ public class XhpcMessageBoardController { @Resource XhpcMessageBoardService xhpcMessageBoardService; + /** + * 平台给用户发送消息 + * + * @author WH + * @date 2022/1/13 18:43 + * @since version-1.0 + */ @PostMapping("/platform/message") public AjaxResult platformSendMessageToUser(@RequestBody PlatformSendMessageToUserRequest platformRequest) { diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java index 51a78d6c..88e0d033 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java @@ -133,13 +133,13 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { String platformRedisKey = "PlatformMessageValidTime:" + "0:" + sysUser.getTenantId() + ":" + platformRequest.getSenderType() + ":" + platformRequest.getSenderAccount(); Object cacheObject = redisService.getCacheObject(platformRedisKey); String currentTime; + String userRedisKey = "userMessageValidTime:" + platformRequest.getSenderType() + ":" + platformRequest.getSenderAccount() + ":" + "0:" + sysUser.getTenantId(); if (cacheObject == null) { //设置当前时间 currentTime = DateUtil.getYyyyMmDdHhMmSs(); redisService.setCacheObject(platformRedisKey, currentTime); redisService.expire(platformRedisKey, 60 * 5); //设置用户RedisKey的有效时间,保证双方时间数据同步 - String userRedisKey = "userMessageValidTime:" + platformRequest.getSenderType() + ":" + platformRequest.getSenderAccount() + ":" + "0:" + sysUser.getTenantId(); redisService.setCacheObject(userRedisKey, currentTime); redisService.expire(userRedisKey, 60 * 5); platformRequest.setSendMessageTime(currentTime); @@ -150,10 +150,12 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { } //reset redis key valid time redisService.expire(platformRedisKey, 60 * 5); + redisService.expire(userRedisKey, 60 * 5); platformRequest.setSendMessageTime((String) cacheObject); platformRequest.setTenantId(sysUser.getTenantId()); platformRequest.setTenantType(0); messageBoardMapper.insertPlatformMessage(platformRequest); + } /** @@ -237,7 +239,7 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { */ @Override public String returnPlatformAvatar(String tenantId, Integer tenantType) { - + //todo 查询数据库 return "https://xhpc-bucket1.oss-cn-hangzhou.aliyuncs.com/avatar/logo.png"; } From 091a91c4959b0a3e3f40903e29db2b46c9339e87 Mon Sep 17 00:00:00 2001 From: wen <1455474577@qq.com> Date: Thu, 13 Jan 2022 19:21:17 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=AB=AFredisKey=E6=9C=89=E6=95=88=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E6=AD=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java index 88e0d033..91d0686d 100644 --- a/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java +++ b/xhpc-modules/xhpc-message-board/src/main/java/com/xhpc/board/service/impl/XhpcMessageBoardServiceImpl.java @@ -61,13 +61,13 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { //使用Redis判断消息发送是否大于5分钟: Object cacheObject = redisService.getCacheObject(userRedisKey); String currentTime; + String platformRedisKey = "PlatformMessageValidTime:" + userMessage.getTenantType() + ":" + userMessage.getTenantId() + ":" + loginUser.getUserType() + ":" + loginUser.getUsername(); if (cacheObject == null) { //设置当前时间 currentTime = DateUtil.getYyyyMmDdHhMmSs(); redisService.setCacheObject(userRedisKey, currentTime); redisService.expire(userRedisKey, 60 * 5); //设置平台RedisKey的有效时间,保证双方时间数据同步 - String platformRedisKey = "PlatformMessageValidTime:" + userMessage.getTenantType() + ":" + userMessage.getTenantId() + ":" + loginUser.getUserType() + ":" + loginUser.getUsername(); redisService.setCacheObject(platformRedisKey, currentTime); redisService.expire(platformRedisKey, 60 * 5); userMessage.setSendMessageTime(currentTime); @@ -92,6 +92,7 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService { } else { //reset redis key valid time redisService.expire(userRedisKey, 60 * 5); + redisService.expire(platformRedisKey, 60 * 5); currentTime = (String) cacheObject; userMessage.setSendMessageTime(currentTime); //设置用户账号,用户类型