diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/MegaphoneTopicRequest.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/MegaphoneTopicRequest.java new file mode 100644 index 0000000..8319ed1 --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/mqtt/MegaphoneTopicRequest.java @@ -0,0 +1,83 @@ +package org.dromara.common.sdk.mqtt; + +/** + * Unified topic request format. + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public class MegaphoneTopicRequest { + + /** + * The command is sent and the response is matched by the tid and bid fields in the message, + * and the reply should keep the tid and bid the same. + */ + protected String tid; + + protected String bid; + + protected Long timestamp; + + protected String method; + + protected T data; + + public MegaphoneTopicRequest() { + } + + @Override + public String toString() { + return "CommonTopicRequest{" + + "tid='" + tid + '\'' + + ", bid='" + bid + '\'' + + ", method='" + method + '\'' + + ", timestamp=" + timestamp + + ", data=" + data + + '}'; + } + + public String getTid() { + return tid; + } + + public MegaphoneTopicRequest setTid(String tid) { + this.tid = tid; + return this; + } + + public String getBid() { + return bid; + } + + public MegaphoneTopicRequest setBid(String bid) { + this.bid = bid; + return this; + } + + public String getMethod() { + return method; + } + + public MegaphoneTopicRequest setMethod(String method) { + this.method = method; + return this; + } + + public Long getTimestamp() { + return timestamp; + } + + public MegaphoneTopicRequest setTimestamp(Long timestamp) { + this.timestamp = timestamp; + return this; + } + + public T getData() { + return data; + } + + public MegaphoneTopicRequest setData(T data) { + this.data = data; + return this; + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java new file mode 100644 index 0000000..efe389f --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/MegaphoneController.java @@ -0,0 +1,172 @@ +package org.dromara.sample.manage.controller; + +import com.fasterxml.jackson.databind.JsonNode; +import io.seata.common.util.CollectionUtils; +import io.seata.common.util.StringUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.business.api.RemoteBusinessTaskService; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.exception.CloudSDKErrorEnum; +import org.dromara.common.sdk.mqtt.CommonTopicRequest; +import org.dromara.common.sdk.mqtt.MegaphoneTopicRequest; +import org.dromara.common.sdk.mqtt.MqttGatewayPublish; +import org.dromara.common.sdk.mqtt.TopicConst; +import org.dromara.common.sdk.mqtt.property.PropertySetPublish; +import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum; +import org.dromara.common.sdk.mqtt.property.TopicPropertySetRequest; +import org.dromara.sample.manage.model.dto.*; +import org.dromara.sample.manage.service.IDeviceService; +import org.dromara.system.api.RemoteConfigService; +import org.dromara.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/15 + */ +@RestController +@Slf4j +@RequestMapping("${url.manage.prefix}${url.manage.version}/megaphone") +@Tag(name = "无人机喊话模块") +public class MegaphoneController { + + public static final String TOPIC = TopicConst.THING_MODEL_PRE + TopicConst.PRODUCT; + + @Resource + private MqttGatewayPublish gatewayPublish; + + @Resource + PropertySetPublish propertySetPublish; + + @DubboReference + private RemoteConfigService remoteConfigService; + /** + * 喊话器-开始播放文档(对应遥控器的录音广播模式) + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/playStart") + @Operation(summary = "喊话器-开始播放文档(对应遥控器的录音广播模式)。", description = "喊话器-开始播放文档(对应遥控器的录音广播模式)") + public HttpResultResponse playStart(@PathVariable("workspace_id") String workspaceId, + @RequestParam("gatewaySn") String gatewaySn, + @RequestBody PlayStartDTO param + ) { + String top = TOPIC+"gatewaySn"+"/services"; + //发送mqtt + propertySetPublish.publishPlayText(top,param,"speaker_tts_play_start"); + return HttpResultResponse.success(); + } + + /** + * 喊话器-重新播放文档 + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/replay") + @Operation(summary = "喊话器-重新播放文档。", description = "喊话器-重新播放文档。") + public HttpResultResponse replay(@PathVariable("workspace_id") String workspaceId, + @RequestParam("gatewaySn") String gatewaySn, + @RequestBody RePlayDTO param + ) { + String top = TOPIC+gatewaySn+"/services"; + //发送mqtt + propertySetPublish.publishPlayText(top,param,"speaker_replay"); + return HttpResultResponse.success(); + } + /** + * 喊话器-暂停播放文档 + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/playStop") + @Operation(summary = "喊话器-暂停播放文档。", description = "喊话器-暂停播放文档。") + public HttpResultResponse playStop(@PathVariable("workspace_id") String workspaceId, + @RequestParam("gatewaySn") String gatewaySn, + @RequestBody RePlayDTO param + ) { + String top = TOPIC+gatewaySn+"/services"; + //发送mqtt + propertySetPublish.publishPlayText(top,param,"speaker_play_stop"); + return HttpResultResponse.success(); + } + + /** + * 喊话器-设置播放模式 + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/playModeSet") + @Operation(summary = "喊话器-设置播放模式。", description = "喊话器-设置播放模式。") + public HttpResultResponse playModeSet(@PathVariable("workspace_id") String workspaceId, + @RequestParam("gatewaySn") String gatewaySn, + @RequestBody RePlayDTO param + ) { + String top = TOPIC+gatewaySn+"/services"; + //发送mqtt + propertySetPublish.publishPlayText(top,param,"speaker_play_mode_set"); + return HttpResultResponse.success(); + } + + + + + /** + * 喊话器-设置播放模式 + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/widgetValueSet") + @Operation(summary = "喊话器-设置音量。", description = "喊话器-设置音量。") + public int widgetValueSet(@PathVariable("workspace_id") String workspaceId, + @RequestParam("gatewaySn") String gatewaySn, + @RequestBody PlayVolumeDTO param + ) { + String top = TOPIC+gatewaySn+"/services"; + //发送mqtt + PropertySetReplyResultEnum psdkWidgetValueSet = propertySetPublish.publishPlayText(top,param,"psdk_widget_value_set"); + return psdkWidgetValueSet.getResult(); + } + + + + + + /** + * 获取媒体流ip + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/getStreamIp") + @Operation(summary = "获取媒体流ip。", description = "获取媒体流ip。") + public HttpResultResponse getStreamIp(@PathVariable("workspace_id") String workspaceId, + @RequestBody DisobeyDTO param + ) { + String top = "task/image/disobey/smoke"; + //发送mqtt + String s = remoteConfigService.selectStreamIp(); + if (StringUtils.isNotEmpty(param.getModel())){ + String[] split = param.getModel().split(","); + for (String type : split){ + List list = new ArrayList<>(); + list.add(type); + DisobeyDTO disobeyDTO = new DisobeyDTO(); + disobeyDTO.setUrl(s); + disobeyDTO.setOpen(param.getOpen()); + disobeyDTO.setType(list); + gatewayPublish.publish(top,new CommonTopicRequest<>() + .setData(Objects.requireNonNull(disobeyDTO)),1); + } + } + return HttpResultResponse.success(); + } +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java new file mode 100644 index 0000000..89ef7f8 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/PlayTextController.java @@ -0,0 +1,77 @@ +package org.dromara.sample.manage.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.mqtt.MegaphoneTopicRequest; +import org.dromara.common.sdk.mqtt.MqttGatewayPublish; +import org.dromara.common.sdk.mqtt.TopicConst; +import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.dto.TextDTO; +import org.dromara.sample.manage.model.entity.PlayTextEntity; +import org.dromara.sample.manage.service.IDeviceService; +import org.dromara.sample.manage.service.IPlayTextService; +import org.dromara.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; +import java.util.UUID; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/15 + */ +@RestController +@Slf4j +@RequestMapping("${url.manage.prefix}${url.manage.version}/playText") +@Tag(name = "喊话text模版") +public class PlayTextController { + + + @Autowired + private IPlayTextService playTextService; + + /** + * 获取一个工作区中所有在线设备的列表。 + * Get the topology list of all online devices in one workspace. + * @return + */ + @PostMapping("/{workspace_id}/playText/add") + @Operation(summary = "喊话text模版新增。", description = "喊话text模版新增") + public HttpResultResponse playTextAdd(@RequestBody PlayTextEntity param + ) { + return playTextService.insertPlayText(param); + } + + @PostMapping("/{workspace_id}/playText/update") + @Operation(summary = "喊话text模版修改。", description = "喊话text模版修改") + public HttpResultResponse playTextUpdate(@RequestBody PlayTextEntity param + ) { + return playTextService.updatePlayText(param); + } + + @PutMapping("/{workspace_id}/playText/deleted") + @Operation(summary = "喊话text模版删除", description = "喊话text模版删除") + public HttpResultResponse playTextDeleted(@RequestParam(name = "textSn") String textSn + ) { + return playTextService.deletedPlayText(textSn); + } + + @PostMapping("/{workspace_id}/playText/page") + @Operation(summary = "喊话text模版列表", description = "喊话text模版列表") + public HttpResultResponse> pageText( + @RequestParam(name = "pageNum", defaultValue = "1") Long page, + @RequestParam(name = "pageSize", defaultValue = "10") Long pageSize + ) { + PaginationData pageText = playTextService.pageText(page, pageSize); + return HttpResultResponse.success(pageText); + } + + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IPlayTextMapper.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IPlayTextMapper.java new file mode 100644 index 0000000..4121501 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/mapper/IPlayTextMapper.java @@ -0,0 +1,15 @@ +package org.dromara.sample.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.sample.manage.model.entity.DeviceEntity; +import org.dromara.sample.manage.model.entity.PlayTextEntity; + +/** + * + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public interface IPlayTextMapper extends BaseMapper { + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DisobeyDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DisobeyDTO.java new file mode 100644 index 0000000..a538bd8 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/DisobeyDTO.java @@ -0,0 +1,24 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DisobeyDTO { + //1 开 2 关 + private int open; + + private String url; + + private String model; + + private List type; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/FileDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/FileDTO.java new file mode 100644 index 0000000..44181d3 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/FileDTO.java @@ -0,0 +1,22 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class FileDTO { + + private String format; + + private String md5; + + private String name; + + private String url; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/PlayStartDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/PlayStartDTO.java new file mode 100644 index 0000000..3b906b1 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/PlayStartDTO.java @@ -0,0 +1,18 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PlayStartDTO { + + private int psdkIndex; + + TextDTO tts; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/PlayVolumeDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/PlayVolumeDTO.java new file mode 100644 index 0000000..fdfc021 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/PlayVolumeDTO.java @@ -0,0 +1,19 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PlayVolumeDTO { + + private int psdk_index; + + private int play_volume; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/RePlayDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/RePlayDTO.java new file mode 100644 index 0000000..f86521e --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/RePlayDTO.java @@ -0,0 +1,19 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RePlayDTO { + + private int psdk_index; + + private int play_mode; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/TextDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/TextDTO.java new file mode 100644 index 0000000..5d8ec1b --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/dto/TextDTO.java @@ -0,0 +1,20 @@ +package org.dromara.sample.manage.model.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @author sean.zhou + * @version 0.1 + * @date 2021/11/23 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TextDTO { + + private String md5; + + private String name; + + private String text; +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/PlayTextEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/PlayTextEntity.java new file mode 100644 index 0000000..5df1a6c --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/PlayTextEntity.java @@ -0,0 +1,48 @@ +package org.dromara.sample.manage.model.entity; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * The entity class of the device + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "play_text") +public class PlayTextEntity implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + @TableField(value = "text_sn") + private String textSn; + + @TableField(value = "name") + private String name; + + @TableField(value = "text") + private String text; + + @TableField(value = "md5") + private String md5; + + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java new file mode 100644 index 0000000..97603b2 --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IPlayTextService.java @@ -0,0 +1,37 @@ +package org.dromara.sample.manage.service; + +import com.fasterxml.jackson.databind.JsonNode; +import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum; +import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost; +import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum; +import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum; +import org.dromara.common.sdk.common.HttpResultResponse; +import org.dromara.common.sdk.common.PaginationData; +import org.dromara.common.sdk.config.version.GatewayManager; +import org.dromara.common.websocket.dto.BizCodeEnum; +import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO; +import org.dromara.sample.manage.model.dto.TopologyDeviceDTO; +import org.dromara.sample.manage.model.dto.WorkspaceDTO; +import org.dromara.sample.manage.model.entity.PlayTextEntity; +import org.dromara.sample.manage.model.param.DeviceQueryParam; + +import java.util.List; +import java.util.Optional; + +/** + * @author sean.zhou + * @date 2021/11/10 + * @version 0.1 + */ +public interface IPlayTextService { + + HttpResultResponse insertPlayText(PlayTextEntity param); + + HttpResultResponse updatePlayText(PlayTextEntity param); + + HttpResultResponse deletedPlayText(String textSn); + + PaginationData pageText(Long page, Long pageSize); + +} diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java new file mode 100644 index 0000000..ccf0eba --- /dev/null +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/PlayTextServiceImpl.java @@ -0,0 +1,110 @@ +package org.dromara.sample.manage.service.impl; + +import cn.hutool.crypto.SecureUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.sdk.cloudapi.device.*; +import org.dromara.common.sdk.cloudapi.firmware.*; +import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService; +import org.dromara.common.sdk.cloudapi.property.api.AbstractPropertyService; +import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl; +import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel; +import org.dromara.common.sdk.common.*; +import org.dromara.common.sdk.config.version.GatewayManager; +import org.dromara.common.sdk.exception.CloudSDKException; +import org.dromara.common.sdk.mqtt.IMqttTopicService; +import org.dromara.common.sdk.mqtt.MqttGatewayPublish; +import org.dromara.common.sdk.mqtt.events.EventsSubscribe; +import org.dromara.common.sdk.mqtt.osd.OsdSubscribe; +import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum; +import org.dromara.common.sdk.mqtt.property.PropertySetSubscribe; +import org.dromara.common.sdk.mqtt.requests.RequestsSubscribe; +import org.dromara.common.sdk.mqtt.services.ServicesReplyData; +import org.dromara.common.sdk.mqtt.services.ServicesSubscribe; +import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; +import org.dromara.common.sdk.mqtt.state.StateSubscribe; +import org.dromara.common.sdk.mqtt.status.StatusSubscribe; +import org.dromara.common.websocket.dto.BizCodeEnum; +import org.dromara.sample.common.error.CommonErrorEnum; +import org.dromara.sample.component.mqtt.model.EventsReceiver; +import org.dromara.sample.control.model.enums.DroneAuthorityEnum; +import org.dromara.sample.manage.mapper.IDeviceMapper; +import org.dromara.sample.manage.mapper.IPlayTextMapper; +import org.dromara.sample.manage.model.dto.*; +import org.dromara.sample.manage.model.entity.DeviceEntity; +import org.dromara.sample.manage.model.entity.PlayTextEntity; +import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum; +import org.dromara.sample.manage.model.enums.PropertySetFieldEnum; +import org.dromara.sample.manage.model.enums.UserTypeEnum; +import org.dromara.sample.manage.model.param.DeviceQueryParam; +import org.dromara.sample.manage.model.receiver.BasicDeviceProperty; +import org.dromara.sample.manage.service.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; + +/** + * + * @author sean.zhou + * @version 0.1 + * @date 2021/11/10 + */ +@Service +@Slf4j +@Transactional +public class PlayTextServiceImpl implements IPlayTextService { + @Autowired + private IPlayTextMapper playTextMapper; + + + @Override + public HttpResultResponse insertPlayText(PlayTextEntity param) { + param.setTextSn(String.valueOf(UUID.randomUUID())); + param.setMd5(SecureUtil.md5(param.getText())); + if(playTextMapper.insert(param) > 0){ + return HttpResultResponse.success(); + } + return HttpResultResponse.error("新增失败"); + } + + @Override + public HttpResultResponse updatePlayText(PlayTextEntity param) { + param.setMd5(SecureUtil.md5(param.getText())); + int update = playTextMapper.update(param, + new LambdaUpdateWrapper().eq(PlayTextEntity::getTextSn, param.getTextSn())); + if(update > 0){ + return HttpResultResponse.success(); + } + return HttpResultResponse.error("修改失败"); + } + + @Override + public HttpResultResponse deletedPlayText(String textSn) { + int delete = playTextMapper.delete( + new LambdaUpdateWrapper().eq(PlayTextEntity::getTextSn, textSn)); + if(delete > 0){ + return HttpResultResponse.success(); + } + return HttpResultResponse.error("删除失败"); + } + + @Override + public PaginationData pageText(Long page, Long pageSize) { + Page pagination = playTextMapper.selectPage(new Page<>(page, pageSize), + new LambdaQueryWrapper() + .orderByDesc(true,PlayTextEntity::getId)); + return new PaginationData(pagination.getRecords(), new Pagination(pagination.getCurrent(), pagination.getSize(), pagination.getTotal())); + } +}