From bef4c71340bed052d99b1da3cb08a1d312a23a20 Mon Sep 17 00:00:00 2001 From: haungxing <1203316822@qq.com> Date: Thu, 6 Apr 2023 16:17:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?#=20=E6=B6=88=E6=81=AF=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hzims-service-api/message-api/pom.xml | 8 +- .../com/hnac/hzims/message/MessageConstants.java | 11 ++ .../hzims/message/constants/XxlJobConstants.java | 5 +- .../message/entity/MessagePushRecordEntity.java | 69 ++++++++ .../entity/config/MessageTemplateEntity.java | 21 ++- .../hnac/hzims/message/config/MessageFactory.java | 34 ++++ .../controller/MessagePushRecordController.java | 60 +++++++ .../controller/MessageTemplateController.java | 66 ++++++++ .../message/mapper/MessagePushRecordMapper.java | 8 + .../message/schedule/MessagePushSchedule.java | 183 +++++++++------------ .../message/schedule/MessagePushScheduleOld.java | 130 +++++++++++++++ .../message/service/IMessagePushRecordService.java | 35 ++++ .../hzims/message/service/IMessageService.java | 3 + .../message/service/IMessageTemplateService.java | 28 ++++ .../service/impl/MailMessageServiceImpl.java | 6 + .../service/impl/MessagePushRecordServiceImpl.java | 55 +++++++ .../service/impl/MessageTemplateServiceImpl.java | 44 +++++ .../service/impl/PushMessageServiceImpl.java | 44 +++++ .../service/impl/SmsMessageServiceImpl.java | 18 ++ .../message/service/impl/WebsocketServiceImpl.java | 6 + 20 files changed, 717 insertions(+), 117 deletions(-) create mode 100644 hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/MessagePushRecordEntity.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/config/MessageFactory.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessageTemplateController.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/mapper/MessagePushRecordMapper.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushScheduleOld.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessagePushRecordService.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageTemplateService.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessagePushRecordServiceImpl.java create mode 100644 hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessageTemplateServiceImpl.java diff --git a/hzims-service-api/message-api/pom.xml b/hzims-service-api/message-api/pom.xml index 0be6322..c09c119 100644 --- a/hzims-service-api/message-api/pom.xml +++ b/hzims-service-api/message-api/pom.xml @@ -16,9 +16,9 @@ org.springblade blade-resource-api - - com.hnac.hzims - hzims-biz-common - + + + + diff --git a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java index 3a9dcca..b0a2aae 100644 --- a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java +++ b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/MessageConstants.java @@ -62,4 +62,15 @@ public class MessageConstants { } } + /**====================================推送状态====================================**/ + /**未推送**/ + public final static Integer NOT_PUSH = 0; + /**推送成功**/ + public final static Integer PUSH_SUCCESS = 1; + /**推送失败**/ + public final static Integer PUSH_FAILED = 2; + /**已确认**/ + public final static Integer CONFIRM = 3; + /**====================================推送状态====================================**/ + } diff --git a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/constants/XxlJobConstants.java b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/constants/XxlJobConstants.java index a1ef43d..76a8a92 100644 --- a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/constants/XxlJobConstants.java +++ b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/constants/XxlJobConstants.java @@ -6,7 +6,10 @@ package com.hnac.hzims.message.constants; */ public interface XxlJobConstants { - /**消息中心消息按通知人分时段集中推送**/ + /**消息中心短信消息按通知人分时段集中推送**/ String PUSH_SMS_MESSAGE_BY_NOTICE = "pushSmsMessageByNotice"; + /**消息中心消息按通知人分时段集中推送**/ + String PUSH_MESSAGE_BY_NOTICE = "pushMessageByNotice"; + } diff --git a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/MessagePushRecordEntity.java b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/MessagePushRecordEntity.java new file mode 100644 index 0000000..9d871bd --- /dev/null +++ b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/MessagePushRecordEntity.java @@ -0,0 +1,69 @@ +package com.hnac.hzims.message.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.hnac.hzims.message.entity.config.MessageTemplateEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.mp.support.SqlCondition; +import org.springblade.core.tool.utils.DateUtil; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +@ApiModel(value = "消息推送记录",description = "消息推送记录") +@TableName("hzims_message_push_record") +@EqualsAndHashCode +public class MessagePushRecordEntity extends MessageTemplateEntity { + + @ApiModelProperty("业务任务ID") + @QueryField(condition = SqlCondition.EQUAL) + private Long taskId; + + @ApiModelProperty("消息模板ID") + @QueryField(condition = SqlCondition.EQUAL) + private Long templateId; + + @ApiModelProperty("资源编码") + @QueryField(condition = SqlCondition.EQUAL) + private String resourceCode; + + @ApiModelProperty(value = "推送人") + @QueryField(condition = SqlCondition.LIKE) + private String pusher; + + @ApiModelProperty(value = "推送账号:手机号,邮箱") + private String account; + + @ApiModelProperty(value = "推送人名称") + @QueryField(condition = SqlCondition.LIKE) + private String pusherName; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "计划推送时间") + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + private LocalDateTime planTime; + + @ApiModelProperty(value = "实际推送时间") + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + private LocalDateTime pushTime; + + @ApiModelProperty(value = "响应时间") + @JsonFormat(pattern = DateUtil.PATTERN_DATETIME) + @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME) + private LocalDateTime respondTime; + + @ApiModelProperty(value = "响应说明") + private String respondRemark; + +} diff --git a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/config/MessageTemplateEntity.java b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/config/MessageTemplateEntity.java index 6e139bb..3da5a62 100644 --- a/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/config/MessageTemplateEntity.java +++ b/hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/entity/config/MessageTemplateEntity.java @@ -1,20 +1,23 @@ package com.hnac.hzims.message.entity.config; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; import org.springblade.core.mp.support.QueryField; import org.springblade.core.mp.support.SqlCondition; +import org.springblade.core.tenant.mp.TenantEntity; import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +@ApiModel("消息配置") +@TableName("hzims_message_template") +@EqualsAndHashCode(callSuper = false) +public class MessageTemplateEntity extends TenantEntity implements Serializable { -/** - * @ClassName MessageTemplateEntity - * @description: - * @author: hx - * @create: 2023-04-06 14:55 - * @Version 4.0 - **/ -public class MessageTemplateEntity { - @ApiModelProperty(value = "消息类型") @NotNull(message = "消息类型不能为空") @QueryField(condition = SqlCondition.EQUAL) diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/config/MessageFactory.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/config/MessageFactory.java new file mode 100644 index 0000000..898685e --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/config/MessageFactory.java @@ -0,0 +1,34 @@ +package com.hnac.hzims.message.config; + +import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.service.IMessageService; +import org.springblade.core.tool.utils.SpringUtil; + + +public class MessageFactory { + + /** @Author hx + * @Description 获取方法类型 + * @Date 2023/4/4 14:22 + * @Param [messageType] 消息类型 + * @return com.hnac.hzims.message.service.IMessageService + **/ + public static IMessageService getMessageSend(String messageType) { + if(MessageConstants.APP_PUSH.equals(messageType)) { + return SpringUtil.getBean("pushMessageService"); + } + else if(MessageConstants.SMS_PUSH.equals(messageType)) { + return SpringUtil.getBean("smsMessageService"); + } + else if(MessageConstants.MAIL_PUSH.equals(messageType)) { + return SpringUtil.getBean("mailMessageService"); + } + else if(MessageConstants.WS_PUSH.equals(messageType)) { + return SpringUtil.getBean("websocketService"); + } + else { + return null; + } + } + +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java new file mode 100644 index 0000000..ff38d71 --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java @@ -0,0 +1,60 @@ +package com.hnac.hzims.message.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; +import com.hnac.hzims.message.service.IMessagePushRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/message/record") +@Api(value = "消息推送记录",tags = "消息推送记录") +@AllArgsConstructor +public class MessagePushRecordController extends BladeController { + + private final IMessagePushRecordService messagePushRecordService; + + @PostMapping("/save") + @ApiOperation("保存消息推送") + @ApiOperationSupport(order = 1) + public R save(@RequestBody MessagePushRecordEntity request) { + return R.status(messagePushRecordService.save(request)); + } + + @PostMapping("/update") + @ApiOperation("更新消息推送记录") + @ApiOperationSupport(order = 2) + public R update(@RequestBody MessagePushRecordEntity request) { + return R.status(messagePushRecordService.updateById(request)); + } + + @GetMapping("/list") + @ApiOperation("查询消息推送记录列表") + @ApiOperationSupport(order = 3) + public R> list(MessagePushRecordEntity request) { + return R.data(messagePushRecordService.list(request)); + } + + @GetMapping("/listPage") + @ApiOperation("分页查询消息推送记录列表") + @ApiOperationSupport(order = 4) + public R> listPage(MessagePushRecordEntity request, Query query) { + return R.data(messagePushRecordService.listPage(request,query)); + } + + @GetMapping("/send/{id}") + @ApiOperation("推送消息记录") + @ApiOperationSupport(order = 4) + public R send(@PathVariable @ApiParam("消息记录ID") String id) { + return R.data(messagePushRecordService.send(id)); + } +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessageTemplateController.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessageTemplateController.java new file mode 100644 index 0000000..9e22aad --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessageTemplateController.java @@ -0,0 +1,66 @@ +package com.hnac.hzims.message.controller; + +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.hnac.hzims.message.entity.config.MessageTemplateEntity; +import com.hnac.hzims.message.service.IMessageTemplateService; +import groovy.util.logging.Slf4j; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@AllArgsConstructor +@RequestMapping("/message/template") +@Api(value = "消息模板管理",tags = "消息模板管理") +public class MessageTemplateController extends BladeController { + + private final IMessageTemplateService messageTemplateService; + + @PostMapping("/save") + @ApiOperation("保存消息模板") + @ApiOperationSupport(order = 1) + public R save(@RequestBody MessageTemplateEntity request) { + return R.status(messageTemplateService.save(request)); + } + + @GetMapping("/list") + @ApiOperation("查询列表") + @ApiOperationSupport(order = 2) + public R> list(MessageTemplateEntity request) { + return R.data(messageTemplateService.list(request)); + } + + @GetMapping("/listPage") + @ApiOperation("分页查询") + @ApiOperationSupport(order = 3) + public R> listPage(MessageTemplateEntity request, Query query) { + return R.data(messageTemplateService.listPage(request,query)); + } + + @DeleteMapping("/delete/{ids}") + @ApiOperation("删除消息模板") + @ApiOperationSupport(order = 4) + public R delete(@PathVariable String ids) { + return R.status(messageTemplateService.deleteLogic(Func.toLongList(",",ids))); + } + + @PutMapping("/update") + @ApiOperation("修改消息模板") + @ApiOperationSupport(order = 5) + public R update(@RequestBody MessageTemplateEntity request) { + Assert.isTrue(Func.isNotEmpty(request.getId()),() -> { + throw new ServiceException("消息模板编辑时传入ID不能为空"); + }); + return R.status(messageTemplateService.updateById(request)); + } +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/mapper/MessagePushRecordMapper.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/mapper/MessagePushRecordMapper.java new file mode 100644 index 0000000..37b4698 --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/mapper/MessagePushRecordMapper.java @@ -0,0 +1,8 @@ +package com.hnac.hzims.message.mapper; + +import com.hnac.hzims.message.entity.MessagePushRecordEntity; +import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; + +public interface MessagePushRecordMapper extends UserDataScopeBaseMapper { + +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java index a5f0b53..797bec7 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushSchedule.java @@ -1,135 +1,112 @@ package com.hnac.hzims.message.schedule; -import cn.hutool.core.map.MapUtil; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hnac.hzims.common.utils.DateUtil; -import com.hnac.hzims.message.configure.service.ISmsConfigService; -import com.hnac.hzims.message.constants.RedisKeyConstants; -import com.hnac.hzims.message.dto.PushMessageDTO; -import com.hnac.hzims.message.dto.SmsPushDto; -import com.hnac.hzims.message.entity.PushMessageEntity; -import com.hnac.hzims.message.entity.config.SmsConfigEntity; -import com.hnac.hzims.message.push.service.IPushService; -import com.hnac.hzims.message.service.IPushMessageService; +import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.config.MessageFactory; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; +import com.hnac.hzims.message.entity.config.MessageTemplateEntity; +import com.hnac.hzims.message.service.IMessagePushRecordService; +import com.hnac.hzims.message.service.IMessageService; +import com.hnac.hzims.message.service.IMessageTemplateService; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; -import com.xxl.job.core.log.XxlJobLogger; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.core.tool.api.R; -import org.springblade.core.tool.utils.BeanUtil; -import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.Func; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.data.redis.core.RedisTemplate; +import org.springblade.core.tool.utils.ObjectUtil; import org.springframework.stereotype.Component; -import javax.validation.constraints.NotNull; import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; -import static com.hnac.hzims.message.constants.XxlJobConstants.*; +import static com.hnac.hzims.message.constants.XxlJobConstants.PUSH_MESSAGE_BY_NOTICE; +import static com.hnac.hzims.message.constants.XxlJobConstants.PUSH_SMS_MESSAGE_BY_NOTICE; /** - * 消息中心定时推送任务调度 - * @author hx - */ + * @ClassName MessagePushSchedule + * @description: 消息推送 + * @author: hx + * @create: 2023-04-04 14:31 + * @Version 4.0 + **/ @Component +@AllArgsConstructor @Slf4j public class MessagePushSchedule { - @Autowired - private ISmsConfigService smsConfigService; - @Autowired - private IPushMessageService pushMessageService; - @Autowired - @Qualifier("smsPushService") - private IPushService pushService; + private final IMessageTemplateService templateService; + private final IMessagePushRecordService recordService; - public static final String MESSAGE_ID = "messageId"; - - /** - * 消息推送根据推送人分时段推送任务调度 - * @param params 暂不支持参数参入执行调度任务 - * @return - */ - @XxlJob(PUSH_SMS_MESSAGE_BY_NOTICE) + @XxlJob(PUSH_MESSAGE_BY_NOTICE) public ReturnT pushSmsMessageByNotice(String params) { - List list = smsConfigService.list(); - list.stream().filter(e -> Func.isNotEmpty(e.getDuration()) && Func.isNotEmpty(e.getTimeUnit())).forEach(smsConfigEntity -> { - //查询出规定时段内的短信数量统一发送 - // 获取配置的时间范围内的消息 - LocalDateTime endTime = DateUtil.plus(LocalDateTime.now(), smsConfigEntity.getDuration(), smsConfigEntity.getTimeUnit()); - PushMessageDTO pushMessageDTO = new PushMessageDTO(); - pushMessageDTO.setStartTime(LocalDateTime.now()); - pushMessageDTO.setEndTime(endTime); - pushMessageDTO.setBusinessKey(smsConfigEntity.getBusinessKey()); - pushMessageDTO.setIsPush(false); - List pushMessageList = pushMessageService.list(pushMessageDTO); - XxlJobLogger.log("开始推送短信,推送条数为:"+pushMessageList.size()); - // 获取推送消息内容体 根据用户拆分出多条短信推送 - List splitSmsList = this.transform(pushMessageList); - if(CollectionUtil.isEmpty(splitSmsList)) { - return; - } - this.push(splitSmsList,smsConfigEntity); - + // 获取消息模板 + List templateList = templateService.list(); + LocalDateTime now = LocalDateTime.now(); + templateList.forEach(template -> { + LocalDateTime endTime = DateUtil.plus(LocalDateTime.now(), template.getConcentratedDuration(), template.getConcentratedTimeUnit()); + endTime = DateUtil.plus(endTime, template.getAdvanceDuration(), template.getAdvanceTimeUnit()); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery() + .eq(MessagePushRecordEntity::getStatus, MessageConstants.NOT_PUSH) + .ge(MessagePushRecordEntity::getPlanTime, now) + .le(MessagePushRecordEntity::getPlanTime, endTime); + List list = recordService.list(lqw); + this.sendMessage(list); }); return ReturnT.SUCCESS; } - /** - * 推送短信 - * @param splitSmsList 短信内容 - * @param configEntity 短信配置 - */ - private void push(List splitSmsList,SmsConfigEntity configEntity) { - Map> phoneMap = splitSmsList.stream().collect(Collectors.groupingBy(sms -> sms.getString("phones"))); - phoneMap.forEach((phone,messages) -> { - String messageIds = messages.stream().map(message -> message.getString(MESSAGE_ID)).collect(Collectors.joining(",")); - List smsPushDtoList = JSONArray.parseArray(JSON.toJSONString(messages), SmsPushDto.class); - SmsPushDto templatePush = smsPushDtoList.get(0); - Map params = new HashMap<>(); - Arrays.stream(configEntity.getContentVariables().split(",")).forEachOrdered(contentVariable ->{ - String value = smsPushDtoList.stream().map(SmsPushDto::getParams) - .map(pm -> MapUtil.getStr(pm,contentVariable)).collect(Collectors.joining(",")); - params.put(contentVariable,value); - }); - templatePush.setParams(params); - XxlJobLogger.log(">>>>>>>>>>开始推送消息,推送内容为:"+JSONObject.toJSONString(templatePush)+"<<<<<<<<<<"); - LambdaUpdateWrapper pushLU = Wrappers.lambdaUpdate() - .set(PushMessageEntity::getIsPush, true) - .in(PushMessageEntity::getId, messageIds.split(",")); - pushMessageService.update(pushLU); - R pushResult = pushService.send(templatePush); - LambdaUpdateWrapper successLU = Wrappers.lambdaUpdate(); - if(pushResult.isSuccess()) { - successLU.set(PushMessageEntity::getIsSuccess,true); - } - else { - successLU.set(PushMessageEntity::getIsSuccess,false); - } - successLU.in(PushMessageEntity::getId, messageIds.split(",")); - pushMessageService.update(successLU); + /** @Author hx + * @Description 消息集中推送 + * @Date 2023/4/4 15:31 + * @Param [list] 消息推送记录 + * @return void + **/ + private void sendMessage(List list) { + Map> collect = list.stream().collect(Collectors.groupingBy(MessagePushRecordEntity::getAccount)); + String type = list.get(0).getType(); + IMessageService service = MessageFactory.getMessageSend(type); + collect.forEach((account,records) -> { + MessagePushRecordEntity request = records.get(0); + // 完善推送内容 + request.setContent(this.getPushContent(type,records)); + Boolean flag = service.send(request); + List ids = records.stream().map(MessagePushRecordEntity::getId).collect(Collectors.toList()); + // 更新消息推送状态 + LambdaUpdateWrapper lwq = Wrappers.lambdaUpdate() + .set(MessagePushRecordEntity::getStatus, flag ? MessageConstants.PUSH_SUCCESS : MessageConstants.PUSH_FAILED) + .set(MessagePushRecordEntity::getPushTime,LocalDateTime.now()) + .in(MessagePushRecordEntity::getId, ids); + recordService.update(lwq); }); } - /** - * 获取推送消息内容体 根据用户拆分出多条短信推送 - * @param pushMessageList - * @return - */ - private List transform(List pushMessageList) { - return pushMessageList.stream().map(m -> { - JSONObject object = JSONObject.parseObject(m.getMessageContent()); - object.put(MESSAGE_ID,m.getId()); - return object; - }).filter(object -> Func.isNotEmpty(object.getString("phones"))).collect(Collectors.toList()); + /** @Author hx + * @Description 获取群推送内容 + * @Date 2023/4/4 16:06 + * @Param [type, list] + * @return java.lang.String + **/ + private String getPushContent(String type,List list) { + if(MessageConstants.APP_NAME.equals(type)) { + return list.stream().map(MessagePushRecordEntity::getContent).collect(Collectors.joining("\r\n")); + } + else if(MessageConstants.SMS_PUSH.equals(type)) { + Map params = new HashMap<>(); + list.stream().map(MessagePushRecordEntity::getContent).forEachOrdered(record -> { + JSONObject param = JSONObject.parseObject(record); + param.forEach((k,v) -> { + params.put(k, params.containsKey(k) && Func.isNotEmpty(params.get(k)) ? params.get(k) + "," + v : (String) v); + }); + }); + return JSON.toJSONString(params); + } + return null; } - } diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushScheduleOld.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushScheduleOld.java new file mode 100644 index 0000000..00862dc --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/schedule/MessagePushScheduleOld.java @@ -0,0 +1,130 @@ +package com.hnac.hzims.message.schedule; + +import cn.hutool.core.map.MapUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hnac.hzims.common.utils.DateUtil; +import com.hnac.hzims.message.configure.service.ISmsConfigService; +import com.hnac.hzims.message.dto.PushMessageDTO; +import com.hnac.hzims.message.dto.SmsPushDto; +import com.hnac.hzims.message.entity.PushMessageEntity; +import com.hnac.hzims.message.entity.config.SmsConfigEntity; +import com.hnac.hzims.message.push.service.IPushService; +import com.hnac.hzims.message.service.IPushMessageService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.xxl.job.core.log.XxlJobLogger; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.core.tool.utils.Func; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +import static com.hnac.hzims.message.constants.XxlJobConstants.*; + +/** + * 消息中心定时推送任务调度 + * @author hx + */ +@Component +@Slf4j +public class MessagePushScheduleOld { + @Autowired + private ISmsConfigService smsConfigService; + @Autowired + private IPushMessageService pushMessageService; + @Autowired + @Qualifier("smsPushService") + private IPushService pushService; + + public static final String MESSAGE_ID = "messageId"; + + /** + * 消息推送根据推送人分时段推送任务调度 + * @param params 暂不支持参数参入执行调度任务 + * @return + */ + @XxlJob(PUSH_SMS_MESSAGE_BY_NOTICE) + public ReturnT pushSmsMessageByNotice(String params) { + List list = smsConfigService.list(); + list.stream().filter(e -> Func.isNotEmpty(e.getDuration()) && Func.isNotEmpty(e.getTimeUnit())).forEach(smsConfigEntity -> { + //查询出规定时段内的短信数量统一发送 + // 获取配置的时间范围内的消息 + LocalDateTime endTime = DateUtil.plus(LocalDateTime.now(), smsConfigEntity.getDuration(), smsConfigEntity.getTimeUnit()); + PushMessageDTO pushMessageDTO = new PushMessageDTO(); + pushMessageDTO.setStartTime(LocalDateTime.now()); + pushMessageDTO.setEndTime(endTime); + pushMessageDTO.setBusinessKey(smsConfigEntity.getBusinessKey()); + pushMessageDTO.setIsPush(false); + List pushMessageList = pushMessageService.list(pushMessageDTO); + XxlJobLogger.log("开始推送短信,推送条数为:"+pushMessageList.size()); + // 获取推送消息内容体 根据用户拆分出多条短信推送 + List splitSmsList = this.transform(pushMessageList); + if(CollectionUtil.isEmpty(splitSmsList)) { + return; + } + this.push(splitSmsList,smsConfigEntity); + + }); + return ReturnT.SUCCESS; + } + + /** + * 推送短信 + * @param splitSmsList 短信内容 + * @param configEntity 短信配置 + */ + private void push(List splitSmsList,SmsConfigEntity configEntity) { + Map> phoneMap = splitSmsList.stream().collect(Collectors.groupingBy(sms -> sms.getString("phones"))); + phoneMap.forEach((phone,messages) -> { + String messageIds = messages.stream().map(message -> message.getString(MESSAGE_ID)).collect(Collectors.joining(",")); + List smsPushDtoList = JSONArray.parseArray(JSON.toJSONString(messages), SmsPushDto.class); + SmsPushDto templatePush = smsPushDtoList.get(0); + Map params = new HashMap<>(); + Arrays.stream(configEntity.getContentVariables().split(",")).forEachOrdered(contentVariable ->{ + String value = smsPushDtoList.stream().map(SmsPushDto::getParams) + .map(pm -> MapUtil.getStr(pm,contentVariable)).collect(Collectors.joining(",")); + params.put(contentVariable,value); + }); + templatePush.setParams(params); + XxlJobLogger.log(">>>>>>>>>>开始推送消息,推送内容为:"+JSONObject.toJSONString(templatePush)+"<<<<<<<<<<"); + LambdaUpdateWrapper pushLU = Wrappers.lambdaUpdate() + .set(PushMessageEntity::getIsPush, true) + .in(PushMessageEntity::getId, messageIds.split(",")); + pushMessageService.update(pushLU); + R pushResult = pushService.send(templatePush); + LambdaUpdateWrapper successLU = Wrappers.lambdaUpdate(); + if(pushResult.isSuccess()) { + successLU.set(PushMessageEntity::getIsSuccess,true); + } + else { + successLU.set(PushMessageEntity::getIsSuccess,false); + } + successLU.in(PushMessageEntity::getId, messageIds.split(",")); + pushMessageService.update(successLU); + }); + } + + /** + * 获取推送消息内容体 根据用户拆分出多条短信推送 + * @param pushMessageList + * @return + */ + private List transform(List pushMessageList) { + return pushMessageList.stream().map(m -> { + JSONObject object = JSONObject.parseObject(m.getMessageContent()); + object.put(MESSAGE_ID,m.getId()); + return object; + }).filter(object -> Func.isNotEmpty(object.getString("phones"))).collect(Collectors.toList()); + } + +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessagePushRecordService.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessagePushRecordService.java new file mode 100644 index 0000000..4ae863a --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessagePushRecordService.java @@ -0,0 +1,35 @@ +package com.hnac.hzims.message.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.mp.support.Query; + +import java.util.List; + +public interface IMessagePushRecordService extends BaseService { + + /** + * 查询消息推送记录列表 + * @param request 查询条件 + * @return 消息记录列表 + */ + List list(MessagePushRecordEntity request); + + /** + * 分页查询消息推送记录列表 + * @param request 查询条件 + * @param query 分页 + * @return 消息记录列表 + */ + IPage listPage(MessagePushRecordEntity request, Query query); + + /** @Author hx + * @Description 根据ID发送短信 + * @Date 2023/4/4 17:37 + * @Param ids 消息记录ID + * @return + **/ + Boolean send(String id); + +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageService.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageService.java index c0f9574..fbb4ae0 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageService.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageService.java @@ -2,6 +2,7 @@ package com.hnac.hzims.message.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.message.dto.PushDto; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; import org.springblade.core.tool.api.R; /** @@ -16,4 +17,6 @@ public interface IMessageService { */ R send(T pushObject); + Boolean send(MessagePushRecordEntity request); + } diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageTemplateService.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageTemplateService.java new file mode 100644 index 0000000..14fb453 --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessageTemplateService.java @@ -0,0 +1,28 @@ +package com.hnac.hzims.message.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.hnac.hzims.message.entity.config.MessageTemplateEntity; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.mp.support.Query; + +import java.util.List; + +public interface IMessageTemplateService extends BaseService { + + /** + * 查询消息模板列表 + * @param req 查询条件 + * @return 消息模板列表 + */ + List list(MessageTemplateEntity req); + + + /** + * 分页查询消息 + * @param req 查询条件 + * @param query 分页条件 + * @return 消息模板分页查询结果 + */ + IPage listPage(MessageTemplateEntity req, Query query); + +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MailMessageServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MailMessageServiceImpl.java index 1181a69..03051ba 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MailMessageServiceImpl.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MailMessageServiceImpl.java @@ -3,6 +3,7 @@ package com.hnac.hzims.message.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; import com.hnac.hzims.message.log.aspect.SaveLog; import com.hnac.hzims.message.dto.MailPushDto; import com.hnac.hzims.message.dto.PushDto; @@ -75,4 +76,9 @@ public class MailMessageServiceImpl implements IMessageService { return R.success("发送成功!"); } + @Override + public Boolean send(MessagePushRecordEntity request) { + return null; + } + } diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessagePushRecordServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessagePushRecordServiceImpl.java new file mode 100644 index 0000000..7f615b3 --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessagePushRecordServiceImpl.java @@ -0,0 +1,55 @@ +package com.hnac.hzims.message.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hnac.hzims.message.config.MessageFactory; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; +import com.hnac.hzims.message.mapper.MessagePushRecordMapper; +import com.hnac.hzims.message.service.IMessagePushRecordService; +import com.hnac.hzims.message.service.IMessageService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.utils.Func; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@AllArgsConstructor +@Slf4j +public class MessagePushRecordServiceImpl extends BaseServiceImpl implements IMessagePushRecordService { + + @Override + public List list(MessagePushRecordEntity request) { + return this.list(this.getQueryWrapper(request)); + } + + @Override + public IPage listPage(MessagePushRecordEntity request, Query query) { + return this.page(Condition.getPage(query),this.getQueryWrapper(request)); + } + + @Override + public Boolean send(String id) { + MessagePushRecordEntity record = this.getById(id); + IMessageService messageSend = MessageFactory.getMessageSend(record.getType()); + return messageSend.send(record); + } + + /** + * 获取 QueryWrapper + * @param request 查询条件 + * @return QueryWrapper + */ + private LambdaQueryWrapper getQueryWrapper(MessagePushRecordEntity request) { + LambdaQueryWrapper lambda = Condition.getQueryWrapper(request).lambda(); + if(Func.isNotEmpty(request.getStatus())) { + lambda.eq(MessagePushRecordEntity::getStatus,request.getStatus()); + } + return lambda; + } +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessageTemplateServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessageTemplateServiceImpl.java new file mode 100644 index 0000000..a446c39 --- /dev/null +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/MessageTemplateServiceImpl.java @@ -0,0 +1,44 @@ +package com.hnac.hzims.message.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.hnac.hzims.common.utils.Condition; +import com.hnac.hzims.message.entity.config.MessageTemplateEntity; +import com.hnac.hzims.message.mapper.MessageTemplateMapper; +import com.hnac.hzims.message.service.IMessageTemplateService; +import groovy.util.logging.Slf4j; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.utils.Func; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@AllArgsConstructor +@Slf4j +public class MessageTemplateServiceImpl extends BaseServiceImpl implements IMessageTemplateService { + @Override + public List list(MessageTemplateEntity req) { + return this.list(this.getQueryWrapper(req)); + } + + @Override + public IPage listPage(MessageTemplateEntity req, Query query) { + return this.page(Condition.getPage(query) , this.getQueryWrapper(req)); + } + + /** + * 根据查询条件获取消息模板QueryWrapper + * @param req 查询条件 + * @return 消息模板QueryWrapper + */ + private LambdaQueryWrapper getQueryWrapper(MessageTemplateEntity req) { + LambdaQueryWrapper lambda = Condition.getQueryWrapper(req).lambda(); + if(Func.isNotEmpty(req.getStatus())) { + lambda.eq(MessageTemplateEntity::getStatus,req.getStatus()); + } + return lambda; + } +} diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/PushMessageServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/PushMessageServiceImpl.java index 24c6107..6f19844 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/PushMessageServiceImpl.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/PushMessageServiceImpl.java @@ -2,23 +2,32 @@ package com.hnac.hzims.message.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; import com.hnac.hzims.message.log.aspect.SaveLog; import com.hnac.hzims.message.dto.AppPushDto; import com.hnac.hzims.message.dto.PushDto; import com.hnac.hzims.message.service.IMessageService; import com.hnac.hzinfo.core.push.enums.PlatformType; +import com.hnac.hzinfo.core.push.enums.PushAudienceType; import com.hnac.hzinfo.core.push.model.PushAudience; import com.hnac.hzinfo.core.push.model.PushInfo; import com.hnac.hzinfo.core.push.model.PushPlatform; +import com.hnac.hzinfo.core.push.model.PushResponse; import lombok.AllArgsConstructor; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.log.logger.BladeLogger; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.resource.feign.IPushClient; import org.springblade.resource.vo.PushInfoVO; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import java.util.ArrayList; import java.util.Arrays; import java.util.concurrent.atomic.AtomicReference; @@ -30,6 +39,7 @@ import java.util.concurrent.atomic.AtomicReference; public class PushMessageServiceImpl implements IMessageService { private final IPushClient pushClient; + private final BladeLogger logger; @Override @SaveLog(type = MessageConstants.APP_NAME) @@ -73,4 +83,38 @@ public class PushMessageServiceImpl implements IMessageService { }); return R.success("推送成功"); } + + @Override + public Boolean send(MessagePushRecordEntity request) { + PushInfoVO pushInfoVO = new PushInfoVO(); + pushInfoVO.setTenantId(Func.isNotEmpty(AuthUtil.getTenantId()) ? AuthUtil.getTenantId() : request.getTenantId()); + ArrayList platformTypes = Lists.newArrayList(PlatformType.Android, PlatformType.IOS); + platformTypes.forEach(platformType -> { + PushPlatform platform = PushPlatform.newBuilder().addPlatformType(platformType).build(); + R response; + // 安卓推送 + if(PlatformType.Android.equals(platformType)) { + PushAudience pushAudience = PushAudience.newBuilder().addPushAudienceType(PushAudienceType.TAG, Lists.newArrayList(request.getPusher())).build(); + PushInfo pushInfo = new PushInfo("ops-push-android", request.getSubject(), request.getContent(), + "", null, platform, pushAudience); + pushInfoVO.setPushInfo(pushInfo); + response = pushClient.tenantPush(pushInfoVO); + } + // IOS推送 + else if(PlatformType.IOS.equals(platformType)) { + PushAudience pushAudience = PushAudience.newBuilder().addPushAudienceType(PushAudienceType.TAG, Lists.newArrayList(request.getPusher())).build(); + PushInfo pushInfo = new PushInfo("ops-push-ios", request.getSubject(), request.getContent(), + "", null, platform, pushAudience); + pushInfoVO.setPushInfo(pushInfo); + response = pushClient.tenantPush(pushInfoVO); + } else { + response = null; + } + Assert.isTrue(ObjectUtil.isNotEmpty(response) && response.isSuccess(),() -> { + logger.error("hzims-message:PushMessageServiceImpl:send", "请求参数为:"+JSON.toJSONString(pushInfoVO)+"错误信息为:"+response.getMsg()); + throw new ServiceException(response.getMsg()); + }); + }); + return true; + } } diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java index 2f1bc0f..b614eb6 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java @@ -2,7 +2,9 @@ package com.hnac.hzims.message.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.api.client.util.Value; import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; import com.hnac.hzims.message.log.aspect.SaveLog; import com.hnac.hzims.message.dto.PushDto; import com.hnac.hzims.message.dto.SmsPushDto; @@ -10,11 +12,13 @@ import com.hnac.hzims.message.service.IMessageService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.sms.model.SmsResponse; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.resource.feign.ISmsClient; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; /** * @author hx @@ -41,4 +45,18 @@ public class SmsMessageServiceImpl implements IMessageService { } return response; } + + @Override + public Boolean send(MessagePushRecordEntity request) { + R response = smsClient.sendMessage( + Func.isNotEmpty(AuthUtil.getTenantId()) ? AuthUtil.getTenantId() : request.getTenantId(), + request.getResourceCode(), + request.getContent(), + request.getAccount() + ); + Assert.isTrue(response.isSuccess(),() -> { + throw new ServiceException(response.getMsg()); + }); + return response.getData().isSuccess(); + } } diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/WebsocketServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/WebsocketServiceImpl.java index b71b4ce..9b9ddfb 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/WebsocketServiceImpl.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/WebsocketServiceImpl.java @@ -3,6 +3,7 @@ package com.hnac.hzims.message.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hnac.hzims.message.MessageConstants; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; import com.hnac.hzims.message.log.aspect.SaveLog; import com.hnac.hzims.message.dto.PushDto; import com.hnac.hzims.message.dto.WsPushDto; @@ -83,4 +84,9 @@ public class WebsocketServiceImpl implements IMessageService { } return R.success("推送成功"); } + + @Override + public Boolean send(MessagePushRecordEntity request) { + return null; + } } From f7313901449326fc75096b04c323be06f2f2353d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Thu, 6 Apr 2023 16:22:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4middle=20pom=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 9 ++++ hzims-service/hzims-middle/pom.xml | 84 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 .gitignore create mode 100644 hzims-service/hzims-middle/pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..215ebcf --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.idea +/hzims-biz-common/target +/hzims-service/*/target +/hzims-service-api/*/target +log + + + + diff --git a/hzims-service/hzims-middle/pom.xml b/hzims-service/hzims-middle/pom.xml new file mode 100644 index 0000000..606c141 --- /dev/null +++ b/hzims-service/hzims-middle/pom.xml @@ -0,0 +1,84 @@ + + + 4.0.0 + + com.hnac.hzims + hzims-service + 4.0.0-SNAPSHOT + + hzims-middle + middle + middle + + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + + org.springblade + blade-common + ${bladex.projet.common.version} + + + org.springblade + blade-core-boot + + + org.springblade + blade-starter-swagger + + + org.springblade + blade-core-test + test + + + org.springblade + blade-core-auto + provided + + + + + + com.baomidou + mybatis-plus-generator + + + + + org.apache.velocity + velocity-engine-core + 2.2 + + + + + + + ${project.name}-${project.version} + + + com.spotify + dockerfile-maven-plugin + + ${docker.username} + ${docker.password} + ${docker.registry.url}/${docker.namespace}/${project.artifactId} + ${project.version} + true + + target/${project.build.finalName}.jar + + false + + + + + \ No newline at end of file