diff --git a/admin/src/main/java/com/baiye/modules/auth/SendClueResponse.java b/admin/src/main/java/com/baiye/modules/auth/SendClueResponse.java new file mode 100644 index 0000000..da13370 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/auth/SendClueResponse.java @@ -0,0 +1,25 @@ +package com.baiye.modules.auth; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +/** + * @author Enzo + * @date : 2024/3/4 + */ +@Data +public class SendClueResponse { + + @SerializedName("code") + @JsonProperty("code") + private int code; + + @SerializedName("is_exist") + @JsonProperty("is_exist") + private Boolean isExist; + + @SerializedName("message") + @JsonProperty("message") + private String message; +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java index 6a103eb..4b93d17 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java +++ b/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java @@ -2,6 +2,7 @@ package com.baiye.modules.distribute.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.json.JSONUtil; +import com.baiye.modules.auth.SendClueResponse; import com.baiye.modules.distribute.dto.PushClueDTO; import com.baiye.modules.distribute.service.BuildModelService; import com.baiye.modules.distribute.service.TripartiteService; @@ -26,10 +27,16 @@ public class ModelCallbackController { * 推送资源 */ @PostMapping("/model/callback") - public R pushClue( @RequestBody String body) { + public SendClueResponse pushClue( @RequestBody String body) { + + SendClueResponse response = new SendClueResponse(); + // PushClueDTO clueDTO = BeanUtil.toBean(body, PushClueDTO.class); + // return Boolean.TRUE.equals(buildModelService.callbackByNid(clueDTO)) ? R.ok("success") : R.failed("message callback failed"); log.info("=============== the body {} ==============", JSONUtil.toJsonStr(body)); - PushClueDTO clueDTO = BeanUtil.toBean(body, PushClueDTO.class); - return Boolean.TRUE.equals(buildModelService.callbackByNid(clueDTO)) ? R.ok("success") : R.failed("message callback failed"); + response.setIsExist(Boolean.FALSE); + response.setCode(200); + + return response; } } diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/PushClueController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/PushClueController.java new file mode 100644 index 0000000..0154f91 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/controller/PushClueController.java @@ -0,0 +1,62 @@ +package com.baiye.modules.distribute.controller; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.modules.distribute.entity.PushConfigEntity; +import com.baiye.modules.distribute.qo.SendClueQo; +import com.baiye.modules.distribute.service.PushClueService; +import com.baiye.modules.distribute.service.PushConfigService; +import com.baiye.modules.distribute.vo.PushClueInfoVo; +import com.baiye.result.R; +import com.baiye.security.util.SecurityUtils; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * @author Enzo + * @date 2023-12-6 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/push/clue") +public class PushClueController { + + private final PushConfigService pushConfigService; + + + private final PushClueService pushClueService; + + @PostMapping("/config/add") + @Operation(summary = "新增配置") + public R addConfig(@RequestBody PushConfigEntity pushConfigEntity) { + pushConfigService.addConfig(pushConfigEntity); + return R.ok(); + } + + @GetMapping("/config/query") + @Operation(summary = "新增配置") + public R queryConfig() { + return R.ok(pushConfigService.queryByUserId(SecurityUtils.getCurrentUserId())); + } + + @PostMapping("/config/update") + @Operation(summary = "修改配置信息") + public R updateConfig(@RequestBody PushConfigEntity pushConfigEntity) { + pushConfigService.updateConfig(pushConfigEntity); + return R.ok(); + } + + + @GetMapping("/page") + @Operation(summary = "分页查询资源") + public R> getClueRecordPage(@Validated PageParam pageParam, SendClueQo qo) { + qo.setAssignedBy(SecurityUtils.getCurrentUserId()); + + return R.ok(pushClueService.queryPage(pageParam, qo)); + } + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/converter/PushClueConverter.java b/admin/src/main/java/com/baiye/modules/distribute/converter/PushClueConverter.java new file mode 100644 index 0000000..1d514fb --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/converter/PushClueConverter.java @@ -0,0 +1,20 @@ +package com.baiye.modules.distribute.converter; + +import com.baiye.modules.distribute.entity.PushClueInfoEntity; +import com.baiye.modules.distribute.vo.PushClueInfoVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface PushClueConverter { + + PushClueConverter INSTANCE = Mappers.getMapper(PushClueConverter.class); + + /** + * + * @param clueInfo + * @return + */ + PushClueInfoVo poToPageVo(PushClueInfoEntity clueInfo); + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/TripartiteDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/TripartiteDTO.java new file mode 100644 index 0000000..d37005f --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/TripartiteDTO.java @@ -0,0 +1,27 @@ +package com.baiye.modules.distribute.dto; + +import com.google.gson.annotations.SerializedName; +import lombok.Builder; +import lombok.Data; + +/** + * @author Enzo + * @date : 2024/3/4 + */ +@Data +@Builder +public class TripartiteDTO { + + @SerializedName("timestamp") + private Long timestamp; + + @SerializedName("request_id") + private String requestId; + + @SerializedName("nid") + private String nid; + + @SerializedName("other_info") + private String otherInfo; + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/DistributeTaskUserEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/DistributeTaskUserEntity.java index 3719ffc..ba67d52 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/entity/DistributeTaskUserEntity.java +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/DistributeTaskUserEntity.java @@ -8,8 +8,6 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -import java.time.LocalDateTime; - /** * @Author YQY * @Date 2023/8/11 diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/PushClueInfoEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/PushClueInfoEntity.java new file mode 100644 index 0000000..8f967d5 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/PushClueInfoEntity.java @@ -0,0 +1,49 @@ +package com.baiye.modules.distribute.entity; + +import com.baiye.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * @author Enzo + * @date : 2024/3/1 + */ + +@Getter +@Setter +@ToString +@TableName("tb_push_task_user") +@Schema(title = "推送线索表") +public class PushClueInfoEntity extends BaseEntity { + + private static final long serialVersionUID = 1087915923814826863L; + + @TableId + @Schema(title = "ID") + private Long id; + + @Schema(title = "用户id") + private Long userId; + + @Schema(title = "线索id") + private Long clueId; + + @Schema(title = "请求id") + private String requestId; + + @Schema(title = "推送内容") + private String pushInfo; + + @Schema(title = "推送状态") + private Integer pushStatus; + + @Schema(title = "返回消息") + private String pushResult; + + @Schema(title = "推送次数") + private Integer sendNum; +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/PushConfigEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/PushConfigEntity.java new file mode 100644 index 0000000..573e808 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/PushConfigEntity.java @@ -0,0 +1,37 @@ +package com.baiye.modules.distribute.entity; + +import com.baiye.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * @author Enzo + * @date : 2024/3/1 + */ + +@Getter +@Setter +@ToString +@TableName("tb_push_config") +@Schema(title = "推送配置表") +public class PushConfigEntity extends BaseEntity { + + private static final long serialVersionUID = -6950203949409966313L; + + @TableId + @Schema(title = "id") + private Long id; + + @Schema(title = "用户id") + private Long userId; + + @Schema(title = "是否启用") + private Integer status; + + @Schema(title = "推送链接") + private String pushUrl; +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/mapper/PlushClueMapper.java b/admin/src/main/java/com/baiye/modules/distribute/mapper/PlushClueMapper.java new file mode 100644 index 0000000..0931479 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/mapper/PlushClueMapper.java @@ -0,0 +1,34 @@ +package com.baiye.modules.distribute.mapper; + +import cn.hutool.core.text.CharSequenceUtil; +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.extend.mybatis.plus.toolkit.WrappersX; +import com.baiye.modules.distribute.converter.PushClueConverter; +import com.baiye.modules.distribute.entity.PushClueInfoEntity; +import com.baiye.modules.distribute.qo.SendClueQo; +import com.baiye.modules.distribute.vo.PushClueInfoVo; +import com.baomidou.mybatisplus.core.metadata.IPage; + +/** + * @author Enzo + * @date : 2024/3/1 + */ +public interface PlushClueMapper extends ExtendMapper { + default PageResult queryPage(PageParam pageParam, SendClueQo qo) { + IPage page = this.prodPage(pageParam); + + LambdaQueryWrapperX wrapper = WrappersX.lambdaQueryX(PushClueInfoEntity.class) + .between(CharSequenceUtil.isNotBlank(qo.getStartTime()) && CharSequenceUtil.isNotBlank(qo.getEndTime()), + PushClueInfoEntity::getCreateTime, qo.getStartTime(), qo.getEndTime()).eqIfPresent(PushClueInfoEntity::getClueId, qo.getClueId()).likeIfPresent + (PushClueInfoEntity::getRequestId, qo.getRequestId()).orderByDesc(PushClueInfoEntity::getId); + + this.selectPage(page, wrapper); + IPage voPage = page.convert(PushClueConverter.INSTANCE::poToPageVo); + return new PageResult<>(voPage.getRecords(), voPage.getTotal()); + } + + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/mapper/PlushConfigMapper.java b/admin/src/main/java/com/baiye/modules/distribute/mapper/PlushConfigMapper.java new file mode 100644 index 0000000..4a7333f --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/mapper/PlushConfigMapper.java @@ -0,0 +1,13 @@ +package com.baiye.modules.distribute.mapper; + +import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; +import com.baiye.modules.distribute.entity.ClueStageEntity; +import com.baiye.modules.distribute.entity.PushConfigEntity; + +/** + * @author Enzo + * @date : 2024/3/1 + */ +public interface PlushConfigMapper extends ExtendMapper { + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/qo/SendClueQo.java b/admin/src/main/java/com/baiye/modules/distribute/qo/SendClueQo.java new file mode 100644 index 0000000..07461ef --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/qo/SendClueQo.java @@ -0,0 +1,26 @@ +package com.baiye.modules.distribute.qo; + +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class SendClueQo { + + @Schema(title = "线索id") + private String clueId; + + @Schema(title = "线索id") + private String requestId; + + @Parameter(description = "开始时间") + private String startTime; + + @Parameter(description = "结束时间") + private String endTime; + + + @Schema(title = "分配人用户ID") + private Long assignedBy; + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/PushClueService.java b/admin/src/main/java/com/baiye/modules/distribute/service/PushClueService.java new file mode 100644 index 0000000..54ca2b7 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/service/PushClueService.java @@ -0,0 +1,35 @@ +package com.baiye.modules.distribute.service; + +import com.baiye.domain.PageParam; +import com.baiye.domain.PageResult; +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.distribute.entity.PushClueInfoEntity; +import com.baiye.modules.distribute.qo.SendClueQo; +import com.baiye.modules.distribute.vo.PushClueInfoVo; + +/** + * @author Enzo + * @date : 2024/3/1 + */ +public interface PushClueService extends ExtendService { + + + /** + * 发送任务 + * + * @param assignedBy + * @param clueId + * @param nid + * @param remark + * @return + */ + Boolean sendClueByUserId(Long assignedBy, Long clueId, String nid, String remark); + + /** + * 查询记录 + * @param pageParam + * @param qo + * @return + */ + PageResult queryPage(PageParam pageParam, SendClueQo qo); +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/PushConfigService.java b/admin/src/main/java/com/baiye/modules/distribute/service/PushConfigService.java new file mode 100644 index 0000000..9d68b67 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/service/PushConfigService.java @@ -0,0 +1,40 @@ +package com.baiye.modules.distribute.service; + +import com.baiye.extend.mybatis.plus.service.ExtendService; +import com.baiye.modules.distribute.entity.PushClueInfoEntity; +import com.baiye.modules.distribute.entity.PushConfigEntity; + +/** + * @author Enzo + * @date : 2024/3/1 + */ +public interface PushConfigService extends ExtendService { + + /** + * 添加配置 + * @param pushConfigEntity + * @return + */ + Boolean addConfig(PushConfigEntity pushConfigEntity); + + /** + * 修改配置 + * @param pushConfigEntity + * @return + */ + Boolean updateConfig(PushConfigEntity pushConfigEntity); + + /** + * 用户id查找 + * @param assignedBy + * @return + */ + PushConfigEntity queryConfigByUserId(Long assignedBy); + + /** + * 用户id查找 + * @param currentUserId + * @return + */ + PushConfigEntity queryByUserId(Long currentUserId); +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java index 8c9586a..0ed349f 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java @@ -20,6 +20,7 @@ import com.baiye.modules.distribute.qo.ClueQo; import com.baiye.modules.distribute.service.ClueService; import com.baiye.modules.distribute.service.ClueStageService; import com.baiye.modules.distribute.service.LabelOrganizeService; +import com.baiye.modules.distribute.service.PushClueService; import com.baiye.modules.distribute.vo.ClueVO; import com.baiye.notify.event.StationNotifyPushEvent; import com.baiye.notify.model.domain.AnnouncementNotifyInfo; @@ -43,6 +44,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @Slf4j @@ -50,6 +52,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class ClueServiceImpl extends ExtendServiceImpl implements ClueService { + private final PushClueService pushClueService; + private final ClueRecordMapper clueRecordMapper; private final LabelOrganizeService labelOrganizeService; @@ -61,6 +65,10 @@ public class ClueServiceImpl extends ExtendServiceImpl i private final ApplicationContext publisher; + + + + @Value("${snowflake.workerId}") private int workerId; @@ -209,6 +217,8 @@ public class ClueServiceImpl extends ExtendServiceImpl i notifyInfo.setCreateTime(LocalDateTime.now()); notifyInfo.setState(DefaultNumberConstants.ZERO_NUMBER); notifyInfo.setMessageType(DefaultNumberConstants.ONE_NUMBER); + // 异步发送线索 + CompletableFuture.runAsync(() -> pushClueService.sendClueByUserId(dto.getClueId(), dto.getAssignedBy(), dto.getNid(), dto.getRemark())); publisher.publishEvent(new StationNotifyPushEvent(notifyInfo, Collections.singletonList(dto.getAssignedBy()))); } return SqlHelper.retBool(baseMapper.insertBatchSomeColumn(entityList)); diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java index fb03b2b..156ff62 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java @@ -241,6 +241,7 @@ public class CustomServiceImpl extends ExtendServiceImpl implements PushClueService { + + + @Value("${snowflake.workerId}") + private int workerId; + + @Value("${snowflake.datacenterId}") + private int datacenterId; + + private final PushConfigService pushConfigService; + + private final SecurityProperties securityProperties; + + + @Override + public Boolean sendClueByUserId(Long clueId, Long assignedBy, String nid, String remark) { + log.info("============ the assigned id as {} ============", assignedBy); + PushConfigEntity entity = pushConfigService.queryConfigByUserId(assignedBy); + if (ObjectUtil.isNotNull(entity) && ObjectUtil.isNotNull(entity.getStatus()) && + entity.getStatus() == DefaultNumberConstants.ONE_NUMBER) { + SendClueResponse firstResponse = new SendClueResponse(); + String pushUrl = entity.getPushUrl(); + Gson gson = new Gson(); + Long requestId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + String decrypt = AESUtils.decrypt(nid, securityProperties.getPasswordSecretKey()); + TripartiteDTO tripartiteDTO = + TripartiteDTO.builder().nid(Base64.encode(decrypt)).timestamp + (DateUtil.currentSeconds()).requestId(String.valueOf(requestId)).build(); + String sendInfo = gson.toJson(tripartiteDTO); + String result = HttpUtil.post(pushUrl, sendInfo); + log.info("============ the first response as {} ============", result); + + if (JSONUtil.isTypeJSON(result)) { + firstResponse = gson.fromJson(result, SendClueResponse.class); + } + // 插入请求 + saveSendInfo(assignedBy, clueId, requestId, sendInfo, DefaultNumberConstants.ONE_NUMBER, + ObjectUtil.isNotNull(firstResponse.getMessage()) ? firstResponse.getMessage() : CharSequenceUtil.EMPTY, firstResponse.getCode()); + if (ObjectUtil.isNotNull(firstResponse.getIsExist()) && + firstResponse.getIsExist().equals(Boolean.FALSE)) { + tripartiteDTO.setOtherInfo(remark); + SendClueResponse secondResponse = new SendClueResponse(); + tripartiteDTO.setRequestId(String.valueOf(requestId)); + tripartiteDTO.setTimestamp(DateUtil.currentSeconds()); + String json = gson.toJson(tripartiteDTO); + String post = HttpUtil.post(pushUrl, gson.toJson(tripartiteDTO)); + log.info("============ the second response as {} ============", result); + if (JSONUtil.isTypeJSON(result)) { + secondResponse = gson.fromJson(post, SendClueResponse.class); + } + // 插入二次请求 + saveSendInfo(assignedBy, clueId, requestId, json, DefaultNumberConstants.TWO_NUMBER, + ObjectUtil.isNotNull(secondResponse.getMessage()) ? + secondResponse.getMessage() : CharSequenceUtil.EMPTY, secondResponse.getCode()); + } + } + return Boolean.TRUE; + } + + @Override + public PageResult queryPage(PageParam pageParam, SendClueQo qo) { + return baseMapper.queryPage(pageParam, qo); + } + + private void saveSendInfo(Long assignedBy, Long clueId, Long requestId, String sendInfo, Integer num, String message, Integer code) { + PushClueInfoEntity clueInfo = new PushClueInfoEntity(); + clueInfo.setSendNum(num); + clueInfo.setClueId(clueId); + clueInfo.setPushResult(message); + clueInfo.setPushInfo(sendInfo); + clueInfo.setUserId(assignedBy); + clueInfo.setRequestId(String.valueOf(requestId)); + clueInfo.setPushStatus(code.equals(DefaultNumberConstants.TWO_HUNDRED) ? DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.ZERO_NUMBER); + this.save(clueInfo); + } +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushConfigServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushConfigServiceImpl.java new file mode 100644 index 0000000..ed6ac5c --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushConfigServiceImpl.java @@ -0,0 +1,58 @@ +package com.baiye.modules.distribute.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import com.baiye.modules.distribute.entity.PushConfigEntity; +import com.baiye.modules.distribute.mapper.PlushConfigMapper; +import com.baiye.modules.distribute.service.PushConfigService; +import com.baiye.security.util.SecurityUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author Enzo + * @date : 2023/12/6 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class PushConfigServiceImpl extends ExtendServiceImpl implements PushConfigService { + + + @Override + public Boolean addConfig(PushConfigEntity pushConfigEntity) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + PushConfigEntity config = baseMapper.selectOne + (new LambdaQueryWrapper().eq(PushConfigEntity::getCreateBy, currentUserId)); + // 存在进行修改 + if (ObjectUtil.isNotNull(config)) { + pushConfigEntity.setId(config.getId()); + return this.updateById(pushConfigEntity); + } + return this.save(pushConfigEntity); + } + + @Override + public Boolean updateConfig(PushConfigEntity pushConfigEntity) { + return this.updateById(pushConfigEntity); + } + + @Override + public PushConfigEntity queryConfigByUserId(Long assignedBy) { + return baseMapper.selectOne + (new LambdaQueryWrapper().eq(PushConfigEntity::getUserId, assignedBy)); + } + + @Override + public PushConfigEntity queryByUserId(Long currentUserId) { + List selectList = baseMapper.selectList( + (new LambdaQueryWrapper().eq(PushConfigEntity::getUserId, currentUserId)).orderByDesc(PushConfigEntity::getId)); + return CollUtil.isNotEmpty(selectList) ? selectList.get(DefaultNumberConstants.ZERO_NUMBER) : new PushConfigEntity(); + } +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/PushClueInfoVo.java b/admin/src/main/java/com/baiye/modules/distribute/vo/PushClueInfoVo.java new file mode 100644 index 0000000..c72b1ee --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/vo/PushClueInfoVo.java @@ -0,0 +1,41 @@ +package com.baiye.modules.distribute.vo; + +import com.baiye.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * @author Enzo + * @date : 2024/3/1 + */ + +@Getter +@Setter +@ToString +@Schema(title = "推送线索表") +public class PushClueInfoVo extends BaseEntity { + + private static final long serialVersionUID = 1087915923814826863L; + + @Schema(title = "用户id") + private Long userId; + + @Schema(title = "线索id") + private Long clueId; + + @Schema(title = "请求id") + private String requestId; + + @Schema(title = "推送内容") + private String pushInfo; + + @Schema(title = "推送状态") + private Integer pushStatus; + + @Schema(title = "第几次推送") + private Integer sendNum; +} diff --git a/admin/src/test/java/OceanEngineTest.java b/admin/src/test/java/OceanEngineTest.java new file mode 100644 index 0000000..cef444e --- /dev/null +++ b/admin/src/test/java/OceanEngineTest.java @@ -0,0 +1,62 @@ +import cn.hutool.http.HttpUtil; +import com.baiye.AdminApplication; +import com.baiye.modules.auth.RefreshTokenRequest; +import com.baiye.modules.distribute.service.OceanEngineService; +import com.baiye.polling.QueueBalance; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Enzo + * @date : 2022/9/16 + */ +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = AdminApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class OceanEngineTest { + + @Autowired + private OceanEngineService oceanEngineService; + + + @Test + public void getSetting() { + String s = oceanEngineService.buildAuthorizationUrl(188L, "飞鱼"); + + System.out.println(); + // String accessToken = getClueList(); + // log.info("========= the accessToken as {} ==============", accessToken); + + } + + + @Test + public void getAdIds() { + + RefreshTokenRequest request = new RefreshTokenRequest(); + request.setRefreshToken("4609cd758f9df2980fea3b803006eecb3e79c2ce"); + request.setSecret("f1bef553cd635b7cd8057052654ebaaa30fa92a5"); + request.setAppId("1744002574259247"); + request.setGrantType("refresh_token"); + String requestBody = request.toString(); + String result = HttpUtil.post("https://ad.oceanengine.com/open_api/oauth2/refresh_token/", requestBody); + System.out.println(); + } + + @Test + public void userIdPolling() { + + + } + + +} diff --git a/admin/src/test/java/PushMessageTest.java b/admin/src/test/java/PushMessageTest.java index f3f7a88..ec9ed86 100644 --- a/admin/src/test/java/PushMessageTest.java +++ b/admin/src/test/java/PushMessageTest.java @@ -33,7 +33,7 @@ public class PushMessageTest { notifyInfo.setMessageKey("783"); notifyInfo.setContent("《变形金刚》是美国科幻动作系列电影,改编自起源于20世纪80年代的变形金刚品牌系列。该电影系列由派拉蒙影业公司和梦工厂发行。"); notifyInfo.setCreateTime(LocalDateTime.now()); - notifyInfo.setType(1); + notifyInfo.setMessageType(1); notifyInfo.setState(0); publisher.publishEvent( new StationNotifyPushEvent(notifyInfo, Collections.singletonList(137L))); } diff --git a/admin/src/test/java/RefreshTokenTest.java b/admin/src/test/java/RefreshTokenTest.java new file mode 100644 index 0000000..f413d09 --- /dev/null +++ b/admin/src/test/java/RefreshTokenTest.java @@ -0,0 +1,35 @@ +import com.baiye.AdminApplication; +import com.baiye.modules.distribute.service.OceanEngineService; +import com.baiye.notify.event.StationNotifyPushEvent; +import com.baiye.notify.model.domain.AnnouncementNotifyInfo; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.time.LocalDateTime; +import java.util.Collections; + +/** + * @author Enzo + * @date : 2023/11/27 + */ + +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = AdminApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class RefreshTokenTest { + + @Autowired + private OceanEngineService oceanEngineService; + + + @Test + public void pushMessage() { + oceanEngineService.refreshToken("1fcf974a1df2bc604c9ad1865bc80b94bbfb3348", 1L, 188L); + } + +}