Merge remote-tracking branch 'origin/master'

master
wjt 10 months ago
commit 55d1d8459e

@ -15,6 +15,7 @@ import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.time.LocalTime;
import java.util.List;
/**
@ -56,6 +57,7 @@ public class NotifyWebsocketEventListener {
@Async
@EventListener(StationNotifyPushEvent.class)
public void onAnnouncementPublishEvent(StationNotifyPushEvent event) {
log.info("============ onAnnouncementPublishEvent time {} ============", LocalTime.now());
NotifyInfo notifyInfo = event.getNotifyInfo();
List<Long> userList = event.getUserIdList();
notifyInfoDelegateHandler.handle(userList, notifyInfo);
@ -64,4 +66,21 @@ public class NotifyWebsocketEventListener {
/**
*
*
* @param event the AnnouncementCloseEvent
*/
@Async
@EventListener(AnnouncementCloseEvent.class)
public void read(AnnouncementCloseEvent event) {
// 构建公告关闭的消息体
AnnouncementCloseMessage message = new AnnouncementCloseMessage();
message.setId(event.getId());
String msg = JsonUtils.toJson(message);
// 广播公告关闭信息
MessageDO messageDO = new MessageDO().setMessageText(msg).setNeedBroadcast(true);
messageDistributor.distribute(messageDO);
}
}

@ -0,0 +1,28 @@
package com.baiye.notify.event;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
/**
*
*
* @author Hccake 2021/1/7
* @version 1.0
*/
@Getter
@ToString
@AllArgsConstructor
public class UserAnnouncementReadEvent {
/**
* ID
*/
private final Long id;
/**
* userId
*/
private final Long userId;
}

@ -29,7 +29,7 @@ public class AnnouncementNotifyInfoHandler
// 向指定用户推送
for (Long userId : userIdList) {
UserAnnouncement userAnnouncement = userAnnouncementService.prodUserAnnouncement
(userId, announcementNotifyInfo.getId(), announcementNotifyInfo.getState(), announcementNotifyInfo.getType(),
(userId, announcementNotifyInfo.getId(), announcementNotifyInfo.getState(), announcementNotifyInfo.getMessageType(),
announcementNotifyInfo.getMessageKey(), announcementNotifyInfo.getTitle(), announcementNotifyInfo.getContent());
userAnnouncements.add(userAnnouncement);
}
@ -40,10 +40,14 @@ public class AnnouncementNotifyInfoHandler
protected AnnouncementPushMessage createMessage(AnnouncementNotifyInfo announcementNotifyInfo) {
AnnouncementPushMessage message = new AnnouncementPushMessage();
message.setId(announcementNotifyInfo.getId());
message.setState(announcementNotifyInfo.getState());
message.setTitle(announcementNotifyInfo.getTitle());
message.setContent(announcementNotifyInfo.getContent());
message.setImmortal(announcementNotifyInfo.getImmortal());
message.setDeadline(announcementNotifyInfo.getDeadline());
message.setMessageKey(announcementNotifyInfo.getMessageKey());
message.setCreateTime(announcementNotifyInfo.getCreateTime());
message.setMessageType(announcementNotifyInfo.getMessageType());
return message;
}

@ -35,15 +35,40 @@ public class AnnouncementPushMessage extends JsonWebSocketMessage {
*/
private String content;
/**
*
*/
private Integer state;
/**
*
* @see com.baiye.ballcat.common.core.constant.enums.BooleanEnum
*/
private Integer immortal;
/**
* message
*/
private String messageKey;
/**
*
*/
private Integer messageType;
/**
*
*/
private LocalDateTime deadline;
/**
*
*/
private LocalDateTime createTime;
}

@ -26,8 +26,9 @@ public interface UserAnnouncementMapper extends ExtendMapper<UserAnnouncement> {
/**
*
*
* @param pageParam
* @param qo
* @param qo
* @return PageResult
*/
default PageResult<UserAnnouncementPageVO> queryPage(PageParam pageParam, UserAnnouncementQO qo) {
@ -36,8 +37,8 @@ public interface UserAnnouncementMapper extends ExtendMapper<UserAnnouncement> {
if (StringUtils.isNotBlank(qo.getStartTime()) && StringUtils.isNotBlank(qo.getEndTime())) {
wrapperX.between(UserAnnouncement::getCreateTime, qo.getStartTime(), qo.getEndTime());
}
wrapperX.eqIfPresent(UserAnnouncement::getId, qo.getId()).likeIfPresent(UserAnnouncement::getContent, qo.getContent())
.orderByDesc(UserAnnouncement::getState).orderByAsc(UserAnnouncement::getId);
wrapperX.eqIfPresent(UserAnnouncement::getId, qo.getId()).eqIfPresent(UserAnnouncement::getUserId,qo.getUserId()).likeIfPresent
(UserAnnouncement::getContent, qo.getContent()).orderByAsc(UserAnnouncement::getState).orderByDesc(UserAnnouncement::getId);
this.selectPage(page, wrapperX);
IPage<UserAnnouncementPageVO> voPage = page.convert(UserAnnouncementConverter.INSTANCE::poToPageVo);
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
@ -45,16 +46,31 @@ public interface UserAnnouncementMapper extends ExtendMapper<UserAnnouncement> {
/**
*
* @param userId ID
*
* @param userId ID
* @param announcementId ID
*/
default void updateToReadState(Long userId, Long announcementId) {
LambdaUpdateWrapper<UserAnnouncement> wrapper = Wrappers.<UserAnnouncement>lambdaUpdate()
.set(UserAnnouncement::getState, UserAnnouncementStateEnum.READ.getValue())
.set(UserAnnouncement::getReadTime, LocalDateTime.now())
.eq(UserAnnouncement::getAnnouncementId, announcementId)
.eq(UserAnnouncement::getUserId, userId);
.set(UserAnnouncement::getState, UserAnnouncementStateEnum.READ.getValue())
.set(UserAnnouncement::getReadTime, LocalDateTime.now())
.eq(UserAnnouncement::getId, announcementId)
.eq(UserAnnouncement::getUserId, userId);
this.update(null, wrapper);
}
/**
*
*
* @param userId ID
* @param id ID
*/
default void updateToReadStateByMessageKey(Long userId, Long id) {
LambdaUpdateWrapper<UserAnnouncement> wrapper = Wrappers.<UserAnnouncement>lambdaUpdate()
.set(UserAnnouncement::getState, UserAnnouncementStateEnum.READ.getValue())
.set(UserAnnouncement::getReadTime, LocalDateTime.now())
.eq(UserAnnouncement::getMessageKey, id.toString())
.eq(UserAnnouncement::getUserId, userId);
this.update(null, wrapper);
}
}

@ -44,4 +44,18 @@ public interface UserAnnouncementService extends ExtendService<UserAnnouncement>
*/
void readAnnouncement(Long userId, Long announcementId);
/**
*
* @param currentUserId
* @return
*/
Long queryNotReadNum(Long currentUserId);
/**
*
* @param userId id
* @param id id
*/
void readAnnouncementByMessageKey(Long userId, Long id);
}

@ -0,0 +1,34 @@
package com.baiye.notify.service.impl;
import com.baiye.notify.event.UserAnnouncementReadEvent;
import com.baiye.notify.service.UserAnnouncementService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
/**
* @author Hccake 2021/1/5
* @version 1.0
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class UserAnnouncementEventListener {
private final UserAnnouncementService userAnnouncementService;
/**
*
*
* @param event the AnnouncementCloseEvent
*/
@Async
@EventListener(UserAnnouncementReadEvent.class)
public void read(UserAnnouncementReadEvent event) {
userAnnouncementService.readAnnouncementByMessageKey(event.getUserId(), event.getId());
}
}

@ -10,6 +10,7 @@ import com.baiye.notify.model.entity.UserAnnouncement;
import com.baiye.notify.model.qo.UserAnnouncementQO;
import com.baiye.notify.model.vo.UserAnnouncementPageVO;
import com.baiye.notify.service.UserAnnouncementService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@ -49,11 +50,11 @@ public class UserAnnouncementServiceImpl extends ExtendServiceImpl<UserAnnouncem
@Override
public UserAnnouncement prodUserAnnouncement(Long userId, Long announcementId, Integer state, Integer type, String messageKey, String title, String content) {
UserAnnouncement userAnnouncement = new UserAnnouncement();
userAnnouncement.setType(type);
userAnnouncement.setState(state);
userAnnouncement.setTitle(title);
userAnnouncement.setUserId(userId);
userAnnouncement.setContent(content);
userAnnouncement.setMessageType(type);
userAnnouncement.setMessageKey(messageKey);
userAnnouncement.setAnnouncementId(announcementId);
userAnnouncement.setCreateTime(LocalDateTime.now());
@ -71,4 +72,16 @@ public class UserAnnouncementServiceImpl extends ExtendServiceImpl<UserAnnouncem
baseMapper.updateToReadState(userId, announcementId);
}
@Override
public Long queryNotReadNum(Long currentUserId) {
return baseMapper.selectCount
(Wrappers.lambdaQuery(UserAnnouncement.class).eq
(UserAnnouncement::getUserId, currentUserId).eq(UserAnnouncement::getState, 0));
}
@Override
public void readAnnouncementByMessageKey(Long userId, Long id) {
baseMapper.updateToReadStateByMessageKey(userId, id);
}
}

@ -38,10 +38,24 @@ public class UserAnnouncementController {
@Operation(summary = "分页查询", description = "分页查询")
public R<PageResult<UserAnnouncementPageVO>> getUserAnnouncementPage(@Validated PageParam pageParam,
UserAnnouncementQO userAnnouncementQO) {
userAnnouncementQO.setUserId(SecurityUtils.getCurrentUserId());
return R.ok(userAnnouncementService.queryPage(pageParam, userAnnouncementQO));
}
@PatchMapping("/read/{announcementId}")
/**
*
* @return
*/
@GetMapping("/not/read/count")
@Operation(summary = "查询未读数量", description = "查询未读数量")
public R<Long> queryNotReadNum() {
Long currentUserId = SecurityUtils.getCurrentUserId();
return R.ok(userAnnouncementService.queryNotReadNum(currentUserId));
}
@GetMapping("/read/{announcementId}")
// @PreAuthorize("@per.hasPermission('notify:userannouncement:read')")
@Operation(summary = "用户公告已读上报", description = "用户公告已读上报")
public R<Void> readAnnouncement(@PathVariable("announcementId") Long announcementId) {

@ -2,6 +2,8 @@ package com.baiye.notify.model.domain;
import com.baiye.notify.enums.NotifyChannelEnum;
import com.baiye.notify.enums.NotifyRecipientFilterTypeEnum;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
@ -23,6 +25,7 @@ public class AnnouncementNotifyInfo implements NotifyInfo {
/**
* ID
*/
@TableId(type = IdType.INPUT)
@Schema(title = "公告ID")
private Long id;
@ -37,7 +40,7 @@ public class AnnouncementNotifyInfo implements NotifyInfo {
*
*/
@Schema(title = "公告类型")
private Integer type;
private Integer messageType;
/**

@ -44,7 +44,7 @@ public class UserAnnouncement implements Serializable {
*
*/
@Schema(title = "公告类型")
private Integer type;
private Integer messageType;
/**

@ -23,6 +23,13 @@ public class UserAnnouncementQO {
@Parameter(description = "ID")
private Long id;
/**
* ID
*/
@Parameter(description = "ID")
private Long userId;
@Parameter(description = "创建人")
private String content;

@ -51,8 +51,8 @@ public class UserAnnouncementPageVO implements Serializable {
/**
*
*/
@Schema(title = "公告类型")
private Integer type;
@Schema(title = "消息类型")
private Integer messageType;
/**
*

@ -7,12 +7,15 @@ import com.baiye.modules.distribute.entity.ClueEntity;
import com.baiye.modules.distribute.qo.ClueQo;
import com.baiye.modules.distribute.service.ClueService;
import com.baiye.modules.distribute.vo.ClueVO;
import com.baiye.notify.event.UserAnnouncementReadEvent;
import com.baiye.result.BaseResultCode;
import com.baiye.result.R;
import com.baiye.security.util.SecurityUtils;
import com.baiye.validation.group.UpdateGroup;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationContext;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -24,6 +27,8 @@ public class ClueController {
private final ClueService clueService;
private final ApplicationContext publisher;
@GetMapping("/page")
@Operation(summary = "分页查询资源")
public R<PageResult<ClueVO>> getClueRecordPage(@Validated PageParam pageParam, ClueQo qo) {
@ -33,12 +38,15 @@ public class ClueController {
@PostMapping("/update")
@Operation(summary = "修改资源详细信息", description = "修改资源详细信息")
public R<Object> update(@Validated({ UpdateGroup.class }) @RequestBody ClueDTO clueEntity) {
publisher.publishEvent(new UserAnnouncementReadEvent(clueEntity.getClueId(), SecurityUtils.getCurrentUserId()));
return clueService.update(clueEntity) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改失败");
}
@PostMapping("/updateClue")
@Operation(summary = "修改资源", description = "修改资源")
public R<Object> updateClue(@Validated({ UpdateGroup.class }) @RequestBody ClueEntity clueEntity) {
clueEntity.setIsNewClue(Boolean.FALSE);
publisher.publishEvent(new UserAnnouncementReadEvent(clueEntity.getClueId(), SecurityUtils.getCurrentUserId()));
return clueService.updateById(clueEntity) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改失败");
}

@ -64,6 +64,11 @@ public class ClueDTO {
@Schema(title = "创建者")
private Long createBy;
@Schema(title = "资源线索ID")
private Boolean isNewClue;
@Schema(title = "资源标签集合")
private List<LabelEntity> clueLabelList;

@ -60,4 +60,9 @@ public class DBPushClueDTO {
* , mobile
*/
private String called;
/**
* 线ID
*/
private Long variable;
}

@ -3,6 +3,7 @@ package com.baiye.modules.distribute.entity;
import com.baiye.entity.LogicDeletedBaseEntity;
import com.baiye.extend.mybatis.plus.alias.TableAlias;
import com.baiye.validation.group.UpdateGroup;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
@ -20,7 +21,7 @@ public class ClueEntity extends LogicDeletedBaseEntity {
private static final long serialVersionUID = 1L;
@TableId
@TableId(type = IdType.INPUT)
@Schema(title = "线索ID")
@NotNull(message = "分发ID不能为空", groups = { UpdateGroup.class })
private Long clueId;
@ -57,7 +58,14 @@ public class ClueEntity extends LogicDeletedBaseEntity {
@Schema(title = "资源线索ID")
private Long clueStageId;
@Schema(title = "资源线索ID")
private Boolean isNewClue;
@Schema(title = "资源线索名称")
private String clueStageName;
@Schema(title = "太空猫传递的线索ID")
private Long variable;
}

@ -2,10 +2,13 @@ package com.baiye.modules.distribute.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.modules.distribute.converter.ClueConverter;
import com.baiye.modules.distribute.dto.ClueDTO;
import com.baiye.modules.distribute.entity.*;
@ -16,10 +19,11 @@ 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.vo.ClueVO;
import com.baiye.notify.event.StationNotifyPushEvent;
import com.baiye.notify.model.domain.AnnouncementNotifyInfo;
import com.baiye.security.util.SecurityUtils;
import com.baiye.util.AESUtils;
import com.baiye.util.MobileUtil;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import lombok.RequiredArgsConstructor;
@ -27,10 +31,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.ballcat.security.properties.SecurityProperties;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@ -46,6 +55,15 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
private final SecurityProperties securityProperties;
private final ApplicationContext publisher;
@Value("${snowflake.workerId}")
private int workerId;
@Value("${snowflake.datacenterId}")
private int datacenterId;
@Override
@Transactional(rollbackFor = Exception.class)
public void clueFileUploadSaveAll(List<ClueEntity> clues) {
@ -59,15 +77,16 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
if (!bool) {
failClueList.add(clue);
}
clue.setIsNewClue(Boolean.TRUE);
clue.setNid(AESUtils.encrypt(clue.getNid(), securityProperties.getPasswordSecretKey()));
}
// 去除手机号不符合条件的资源-插入数据
clues = clues.stream()
.filter(item -> !failClueList.stream()
.map(ClueEntity::getNid)
.collect(Collectors.toList())
.contains(item.getNid()))
.collect(Collectors.toList());
.filter(item -> !failClueList.stream()
.map(ClueEntity::getNid)
.collect(Collectors.toList())
.contains(item.getNid()))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(clues))
baseMapper.insertBatchSomeColumn(clues);
@ -103,8 +122,7 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
// StringBuilder stringBuilder = new StringBuilder(decryptNid);
// String nid = stringBuilder.replace(3, 7, "****").toString();
record.setNid(decryptNid);
}
else {
} else {
record.setNid("");
}
// 转换标签
@ -122,19 +140,19 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
@Override
public boolean update(ClueDTO clueDTO) {
ClueEntity clueEntity = ClueConverter.INSTANCE.dtoToPo(clueDTO);
clueEntity.setIsNewClue(Boolean.FALSE);
// 修改标签
List<LabelEntity> clueLabelList = clueDTO.getClueLabelList();
if (CollUtil.isNotEmpty(clueLabelList)) {
String result = clueLabelList.stream()
.map(LabelEntity::getId)
.map(Object::toString)
.collect(Collectors.joining(","));
.map(LabelEntity::getId)
.map(Object::toString)
.collect(Collectors.joining(","));
clueEntity.setClueLabel(result);
List<String> nameList = clueLabelList.stream().map(LabelEntity::getLabelName).collect(Collectors.toList());
clueEntity.setClueLabelName(JSONUtil.toJsonStr(nameList));
}
else {
} else {
// 修改标签为空
LambdaUpdateWrapper<ClueEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ClueEntity::getClueId, clueDTO.getClueId());
@ -154,7 +172,7 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
ClueEntity clueEntity = baseMapper.selectById(clueId);
clueEntity.setNid(AESUtils.decrypt(clueEntity.getNid(), securityProperties.getPasswordSecretKey()));
BeanUtils.copyProperties(clueEntity, clueVO);
clueVO.setClueId(clueEntity.getClueId().toString());
Long whichUserId = SecurityUtils.getWhichUserId();
// 查询上级用户标签
List<LabelOrganizeEntity> organizeEntities = labelOrganizeService.queryUserList(whichUserId);
@ -166,9 +184,25 @@ public class ClueServiceImpl extends ExtendServiceImpl<ClueMapper, ClueEntity> i
return clueVO;
}
@Override
public Boolean saveClueListByStoreInfo(List<ClueDTO> list) {
List<ClueEntity> entityList = Convert.toList(ClueEntity.class, list);
AnnouncementNotifyInfo notifyInfo;
for (ClueDTO dto : list) {
// 雪花算法id
Long id = IdUtil.getSnowflake(workerId, datacenterId).nextId();
notifyInfo = new AnnouncementNotifyInfo();
notifyInfo.setId(id);
notifyInfo.setTitle("新消息通知");
notifyInfo.setMessageKey(dto.getClueId().toString());
notifyInfo.setContent("您有一条新线索请及时查收!");
notifyInfo.setCreateTime(LocalDateTime.now());
notifyInfo.setState(DefaultNumberConstants.ZERO_NUMBER);
notifyInfo.setMessageType(DefaultNumberConstants.ONE_NUMBER);
publisher.publishEvent(new StationNotifyPushEvent(notifyInfo, Collections.singletonList(dto.getAssignedBy())));
}
return SqlHelper.retBool(baseMapper.insertBatchSomeColumn(entityList));
}

@ -3,6 +3,7 @@ package com.baiye.modules.distribute.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult;
@ -38,6 +39,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.ballcat.security.properties.SecurityProperties;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -66,6 +68,13 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
private final StoreService storeService;
@Value("${snowflake.workerId}")
private int workerId;
@Value("${snowflake.datacenterId}")
private int datacenterId;
@Override
public PageResult<CustomVO> queryPage(PageParam pageParam, CustomQo qo) {
PageResult<CustomVO> customVOPageResult = baseMapper.queryPage(pageParam, qo);
@ -179,14 +188,16 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
List<CustomStoreEntity> customStores = customStoreService.selectListByCustomId(id);
if (CollUtil.isNotEmpty(customStores)) {
for (CustomStoreEntity store : customStores) {
// 雪花算法id
Long clueId = IdUtil.getSnowflake(workerId, datacenterId).nextId();
StoreUserDTO entity = storeUserService.findUserIdByStoreId(store.getStoreId());
if (ObjectUtil.isNotNull(entity) && ObjectUtil.isNotNull(entity.getUserId())) {
// 扣减余额
Boolean result = sysUserService.deductionQuantity(entity.getUserId(), entity.getStoreName());
if (Boolean.TRUE.equals(result)) {
ClueDTO clueDTO = ClueDTO.builder().originName(ClueSourceEnum.STORE_DISTRIBUTION.getDescription()).remark
ClueDTO clueDTO = ClueDTO.builder().originName(ClueSourceEnum.STORE_DISTRIBUTION.getDescription()).clueId(clueId).remark
(customEntity.getRemark()).nid(AESUtils.encrypt(customEntity.getCustomNid(), securityProperties.getPasswordSecretKey())).assignedBy
(entity.getUserId()).createBy(customEntity.getCompanyId()).assignedName(store.getStoreName()).otherClue(otherClue).build();
(entity.getUserId()).createBy(customEntity.getCompanyId()).assignedName(store.getStoreName()).otherClue(otherClue).isNewClue(Boolean.TRUE).build();
list.add(clueDTO);
}
}

@ -2,7 +2,6 @@ package com.baiye.modules.distribute.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import com.baiye.exception.BadRequestException;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.modules.distribute.entity.CustomStoreEntity;
import com.baiye.modules.distribute.mapper.CustomStoreMapper;
@ -14,10 +13,9 @@ import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.List;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@ -39,10 +39,11 @@ public class OutsideReqServiceImpl implements OutsideReqService {
public void pushClue(String appKey, DBPushClueDTO dbPushClueDTO) {
log.info("推送appKey{},推送信息:{}", appKey, dbPushClueDTO);
if (dbPushClueDTO != null && (dbPushClueDTO.getMobile() != null || dbPushClueDTO.getCalled() != null)) {
String mobileDecodeStr = null;
String mobileDecodeStr;
String remark = dbPushClueDTO.getRemark();
String empClientTypeName = dbPushClueDTO.getEmpClientTypeName();
String called = dbPushClueDTO.getCalled();
Long variable = dbPushClueDTO.getVariable();
try {
if (StringUtils.isNotBlank(dbPushClueDTO.getMobile())) {
@ -59,7 +60,7 @@ public class OutsideReqServiceImpl implements OutsideReqService {
}
// 添加线索
boolean bool = MobileUtil.checkPhone(mobileDecodeStr);
if (bool) syncTaskService.pushClueExecuteTask(appKey, mobileDecodeStr, remark);
if (bool) syncTaskService.pushClueExecuteTask(appKey, mobileDecodeStr, remark, variable);
else log.error("============号码非法============");
}
}

@ -12,7 +12,7 @@ import java.util.List;
public class ClueVO {
@Schema(title = "线索ID")
private Long clueId;
private String clueId;
@Schema(title = "线索来源")
private String originName;
@ -56,6 +56,9 @@ public class ClueVO {
@Schema(title = "资源标签集合")
private List<String> clueLabelList;
@Schema(title = "资源线索ID")
private Boolean isNewClue;
@Schema(title = "标签组-标签信息")
List<LabelOrganizeEntity> organizeEntities;

@ -37,7 +37,7 @@ public class SyncTaskServiceImpl implements SyncTaskService {
private final DistributeTaskService distributeTaskService;
@Override
public void pushClueExecuteTask(String appKey, String mobile, String remark) {
public void pushClueExecuteTask(String appKey, String mobile, String remark, Long variable) {
// 查询appKey映射的记录
PushLinkEntity linkEntity = pushLinkService.getByAppKey(appKey);
if (linkEntity != null) {
@ -48,6 +48,7 @@ public class SyncTaskServiceImpl implements SyncTaskService {
// clueEntity.setOtherClue(JSONUtil.toJsonStr(dbPushClueDTO));
clueEntity.setCreateBy(linkEntity.getCreateBy());
clueEntity.setRemark(remark);
clueEntity.setVariable(variable);
clueService.save(clueEntity);
// 执行任务
DistributeTaskEntity entity = distributeTaskMapper.selectOne(

@ -6,7 +6,7 @@ import org.springframework.scheduling.annotation.Async;
public interface SyncTaskService {
@Async
void pushClueExecuteTask(String appKey, String mobile, String remark);
void pushClueExecuteTask(String appKey, String mobile, String remark, Long variable);
@Async
void clueUpload(ClueRecordEntity clueRecordEntity);

@ -93,3 +93,7 @@ elasticjob:
zookeeper:
namespace: springboot-elasticjob
server-list: localhost:2181
snowflake:
workerId: 9
datacenterId: 9

@ -3,6 +3,7 @@
<mapper namespace="com.baiye.modules.distribute.mapper.ClueMapper">
<sql id="Base_Alias_Column_List">
ce.clue_id,
ce.is_new_clue,
ce.origin_name,
ce.nid,
ce.clue_time,
@ -43,4 +44,4 @@
tb_clue ce
${ew.customSqlSegment}
</select>
</mapper>
</mapper>

Loading…
Cancel
Save