Merge branch 'master' into cc_20250723_Decoration
# Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.MatterConfigDAO;
|
||||
import com.cool.store.entity.MatterConfigDO;
|
||||
import com.cool.store.request.notice.MatterConfigAddRequest;
|
||||
import com.cool.store.request.notice.MatterConfigQueryRequest;
|
||||
import com.cool.store.userholder.CurrentUser;
|
||||
import com.cool.store.vo.notice.MatterAndMatterDetailVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/7/24 15:21
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface MatterConfigService {
|
||||
|
||||
|
||||
/**
|
||||
* 新增配置
|
||||
* @param request
|
||||
* @param currentUser
|
||||
* @return
|
||||
*/
|
||||
int addMatterConfig(MatterConfigAddRequest request, LoginUserInfo currentUser);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param request
|
||||
* @param currentUser
|
||||
* @return
|
||||
*/
|
||||
int editMatterConfig(MatterConfigAddRequest request, LoginUserInfo currentUser);
|
||||
|
||||
/**
|
||||
* 删除配置
|
||||
* @param ids
|
||||
* @param currentUser
|
||||
* @return
|
||||
*/
|
||||
Boolean deleteMatterConfig(List<Long> ids, LoginUserInfo currentUser);
|
||||
|
||||
|
||||
/**
|
||||
* 查询配置
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
PageInfo<MatterAndMatterDetailVO> listByCondition(MatterConfigQueryRequest request);
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dto.notice.NoticeDTO;
|
||||
import com.cool.store.request.notice.*;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import com.cool.store.vo.notice.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/7/25 9:58
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface MessageTemplateService {
|
||||
|
||||
|
||||
/**
|
||||
* 新增消息模版
|
||||
* @param request
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Boolean addMessageTemplate(MessageTemplateAddRequest request , LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* 编辑消息模版
|
||||
* @param request
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Boolean editMessageTemplate(MessageTemplateAddRequest request , LoginUserInfo user);
|
||||
|
||||
|
||||
/**
|
||||
* 获取详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
MessageTemplateDetailVO getMessageTemplateDetail(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除 未发布可以删除
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
Boolean batchDeleteMessageTemplate(BatchDeletedRequest request, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* batch 批量发布
|
||||
* @param request
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user);
|
||||
|
||||
|
||||
/**
|
||||
* 获取列表
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
PageInfo<NoticeDTO> getMessageTemplateList(MessageTemplateQueryRequest request);
|
||||
|
||||
|
||||
PageInfo<StoreMessageDetailVO> getStoreMessageListByTemplateId(StoreMessageRequest request);
|
||||
|
||||
|
||||
/**
|
||||
* 批量撤销
|
||||
* @param request
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Boolean batchRevokeNotice(BatchRevokeRequest request, LoginUserInfo user);
|
||||
|
||||
/**
|
||||
* 撤销单个门店通知
|
||||
* @param id
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Boolean revokeById(Long id, LoginUserInfo user);
|
||||
|
||||
List<ModuleAndMatterVO> getModuleList(String storeId,PartnerUserInfoVO userInfoVO);
|
||||
|
||||
PageInfo<StoreMessageVO> getStorePendingList(StoreMessagePendingRequest request);
|
||||
|
||||
MessageDetailVO getMessageDetail(Long id);
|
||||
|
||||
Boolean readMessage(Long id, PartnerUserInfoVO userInfoVO);
|
||||
|
||||
Boolean handleMessage(Long id, PartnerUserInfoVO userInfoVO);
|
||||
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.dto.StoreDTO;
|
||||
import com.cool.store.dto.store.AuthStoreUserDTO;
|
||||
import com.cool.store.dto.store.StoreUserPositionDTO;
|
||||
import com.cool.store.response.MiniShopsResponse;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
@@ -27,4 +28,12 @@ public interface StoreService {
|
||||
|
||||
List<StoreUserPositionDTO> getStoreUser(List<String> storeCodeList);
|
||||
|
||||
List<AuthStoreUserDTO> authStoreUser(List<String> storeIdList, String positionType);
|
||||
|
||||
List<AuthStoreUserDTO> getStorePositionUserList(List<String> storeIds,
|
||||
List<String> positionIds,
|
||||
List<String> nodePersonList,
|
||||
List<String> groupIdList,
|
||||
List<String> regionIdList);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.MatterConfigDAO;
|
||||
import com.cool.store.dto.notice.CommonDTO;
|
||||
import com.cool.store.entity.MatterConfigDO;
|
||||
import com.cool.store.request.notice.MatterConfigAddRequest;
|
||||
import com.cool.store.request.notice.MatterConfigQueryRequest;
|
||||
import com.cool.store.service.MatterConfigService;
|
||||
import com.cool.store.vo.notice.MatterAndMatterDetailVO;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/7/24 16:41
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
public class MatterConfigServiceImpl implements MatterConfigService {
|
||||
|
||||
@Resource
|
||||
MatterConfigDAO matterConfigDAO;
|
||||
|
||||
@Override
|
||||
public int addMatterConfig(MatterConfigAddRequest request, LoginUserInfo currentUser) {
|
||||
MatterConfigDO matterConfigDO = new MatterConfigDO();
|
||||
BeanUtils.copyProperties(request, matterConfigDO);
|
||||
matterConfigDO.setCreateUserId(currentUser.getUserId());
|
||||
matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList()));
|
||||
matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList()));
|
||||
return matterConfigDAO.insert(matterConfigDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int editMatterConfig(MatterConfigAddRequest request, LoginUserInfo currentUser) {
|
||||
MatterConfigDO matterConfigDO = new MatterConfigDO();
|
||||
BeanUtils.copyProperties(request, matterConfigDO);
|
||||
matterConfigDO.setUpdateUserId(currentUser.getUserId());
|
||||
matterConfigDO.setUpdateTime(new Date());
|
||||
matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList()));
|
||||
matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList()));
|
||||
return matterConfigDAO.updateForce(matterConfigDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deleteMatterConfig(List<Long> ids, LoginUserInfo currentUser) {
|
||||
matterConfigDAO.batchDelete(ids,currentUser.getUserId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<MatterAndMatterDetailVO> listByCondition(MatterConfigQueryRequest request) {
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<MatterConfigDO> matterConfigDOS = matterConfigDAO.ListByCondition(request);
|
||||
|
||||
if (CollectionUtils.isEmpty(matterConfigDOS)){
|
||||
return new PageInfo<>();
|
||||
}
|
||||
PageInfo result = new PageInfo<>(matterConfigDOS);
|
||||
List<MatterAndMatterDetailVO> list = new ArrayList<>();
|
||||
matterConfigDOS.forEach(x->{
|
||||
MatterAndMatterDetailVO matterAndMatterDetailVO = new MatterAndMatterDetailVO();
|
||||
BeanUtils.copyProperties(x,matterAndMatterDetailVO);
|
||||
matterAndMatterDetailVO.setStoreInfoList(JSONObject.parseArray(x.getDefaultStoreInfo(), CommonDTO.class));
|
||||
matterAndMatterDetailVO.setUserInfoList(JSONObject.parseArray(x.getDefaultHandlePersonInfo(),CommonDTO.class));
|
||||
list.add(matterAndMatterDetailVO);
|
||||
});
|
||||
result.setList(list);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,434 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.context.PartnerUserHolder;
|
||||
import com.cool.store.dao.EnterpriseUserDAO;
|
||||
import com.cool.store.dao.MessageTemplateDAO;
|
||||
import com.cool.store.dao.RegionDao;
|
||||
import com.cool.store.dao.StoreMessageDAO;
|
||||
import com.cool.store.dto.notice.CommonDTO;
|
||||
import com.cool.store.dto.notice.MessageTemplateCountDTO;
|
||||
import com.cool.store.dto.notice.NoticeDTO;
|
||||
import com.cool.store.dto.store.AuthStoreUserDTO;
|
||||
import com.cool.store.dto.store.StoreAreaDTO;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.notice.*;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.StoreGroupMappingMapper;
|
||||
import com.cool.store.mapper.StoreMapper;
|
||||
import com.cool.store.request.notice.*;
|
||||
import com.cool.store.service.MessageTemplateService;
|
||||
import com.cool.store.service.StoreService;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import com.cool.store.vo.notice.*;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/7/25 9:59
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MessageTemplateServiceImpl implements MessageTemplateService {
|
||||
|
||||
|
||||
@Resource
|
||||
MessageTemplateDAO messageTemplateDAO;
|
||||
@Resource
|
||||
StoreMapper storeMapper;
|
||||
@Resource
|
||||
RegionDao RegionDao;
|
||||
@Resource
|
||||
StoreGroupMappingMapper storeGroupMappingMapper;
|
||||
@Resource
|
||||
StoreService storeService;
|
||||
@Resource
|
||||
StoreMessageDAO storeMessageDAO;
|
||||
@Resource
|
||||
EnterpriseUserDAO enterpriseUserDAO;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean addMessageTemplate(MessageTemplateAddRequest request, LoginUserInfo user) {
|
||||
MessageTemplateDO messageTemplateDO = new MessageTemplateDO();
|
||||
BeanUtils.copyProperties(request, messageTemplateDO);
|
||||
messageTemplateDO.setMessageCode(getMessageTemplateCode());
|
||||
messageTemplateDO.setMatterType(MatterTypeEnum.NOTICE.getCode());
|
||||
messageTemplateDO.setCreateUserId(user.getUserId());
|
||||
messageTemplateDO.setSystemSource("CRM");
|
||||
messageTemplateDAO.insert(messageTemplateDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
public String getMessageTemplateCode() {
|
||||
//当前日期
|
||||
String today = CoolDateUtils.getToday();
|
||||
return "16" + today + String.format("%04d", ThreadLocalRandom.current().nextInt(10000));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean editMessageTemplate(MessageTemplateAddRequest request, LoginUserInfo user) {
|
||||
if (request.getId()==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR);
|
||||
}
|
||||
MessageTemplateDO messageTemplateDO = messageTemplateDAO.getById(request.getId());
|
||||
//只有待发布状态能编辑
|
||||
if (messageTemplateDO.getPublishStatus()!=0){
|
||||
throw new ServiceException(ErrorCodeEnum.MESSAGE_TEMPLATE_NOT_SUPPORT_EDIT);
|
||||
}
|
||||
BeanUtils.copyProperties(request, messageTemplateDO);
|
||||
messageTemplateDO.setUpdaterUserId(user.getUserId());
|
||||
messageTemplateDAO.update(messageTemplateDO);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageTemplateDetailVO getMessageTemplateDetail(Long id) {
|
||||
MessageTemplateDetailVO messageTemplateDetailVO = new MessageTemplateDetailVO();
|
||||
MessageTemplateDO messageTemplateDO = messageTemplateDAO.getById(id);
|
||||
if(messageTemplateDO==null){
|
||||
return messageTemplateDetailVO;
|
||||
}
|
||||
BeanUtils.copyProperties(messageTemplateDO, messageTemplateDetailVO);
|
||||
messageTemplateDetailVO.setUserInfoList(JSONObject.parseArray(messageTemplateDO.getHandlePersonInfo(), CommonDTO.class));
|
||||
messageTemplateDetailVO.setStoreInfoList(JSONObject.parseArray(messageTemplateDO.getStoreInfo(), CommonDTO.class));
|
||||
List<MessageTemplateCountDTO> messageTemplateCountList = storeMessageDAO.getMessageTemplateCountList(Arrays.asList(messageTemplateDO.getId()));
|
||||
|
||||
if (CollectionUtils.isNotEmpty(messageTemplateCountList)){
|
||||
messageTemplateDetailVO.setTotalNum(messageTemplateCountList.get(0).getTotalStoreCount());
|
||||
messageTemplateDetailVO.setHandleNum(messageTemplateCountList.get(0).getProcessedStoreCount());
|
||||
}
|
||||
return messageTemplateDetailVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchDeleteMessageTemplate(BatchDeletedRequest request, LoginUserInfo user) {
|
||||
List<MessageTemplateDO> list = messageTemplateDAO.getByIds(request.getIds());
|
||||
//校验是否都是未发布状态
|
||||
if (list.stream().anyMatch(x -> x.getPublishStatus()!= PublishStatusEnum.UNPUBLISHED.getCode())){
|
||||
throw new ServiceException(ErrorCodeEnum.MESSAGE_TEMPLATE_NOT_SUPPORT_DELETED);
|
||||
}
|
||||
messageTemplateDAO.updateDeleteStatusBatch(request.getIds(),user.getUserId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user) {
|
||||
if (CollectionUtils.isEmpty(request.getIds())||CollectionUtils.isEmpty(request.getStoreInfoList())||CollectionUtils.isEmpty(request.getUserInfoList())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
|
||||
List<StoreAreaDTO> storeAreaDTOS = getStoreRange(request.getStoreInfoList());
|
||||
List<String> storeIds = storeAreaDTOS.stream().map(StoreAreaDTO::getStoreId).collect(Collectors.toList());
|
||||
|
||||
Map<String, List<String>> authUser = getAuthUser(request.getUserInfoList(), storeIds);
|
||||
|
||||
List<MessageTemplateDO> list = messageTemplateDAO.getByIds(request.getIds());
|
||||
//过滤 只保留未发布的
|
||||
list = list.stream().filter(x -> PublishStatusEnum.UNPUBLISHED.getCode().equals(x.getPublishStatus())).collect(Collectors.toList());
|
||||
|
||||
if (CollUtil.isEmpty(list)){
|
||||
log.info("未找到待发布消息模板");
|
||||
}
|
||||
|
||||
list.stream().forEach(x -> {
|
||||
List<StoreMessageDO> result = new ArrayList<>();
|
||||
storeAreaDTOS.forEach(y->{
|
||||
if (CollectionUtils.isEmpty(authUser.get(y.getStoreId()))){
|
||||
log.info("当前门店没有人员 门店名称:{}",y.getStoreName());
|
||||
return;
|
||||
}
|
||||
StoreMessageDO storeMessageDO = new StoreMessageDO();
|
||||
storeMessageDO.setStoreId(y.getStoreId());
|
||||
storeMessageDO.setStoreName(y.getStoreName());
|
||||
storeMessageDO.setStoreCode(y.getStoreCode());
|
||||
storeMessageDO.setMessageTemplateId(x.getId());
|
||||
storeMessageDO.setReadStatus(ReadStatusEnum.UNREAD.getCode());
|
||||
storeMessageDO.setReadTime(new Date());
|
||||
storeMessageDO.setProcessStatus(ProcessStatusEnum.UNTREATED.getCode());
|
||||
storeMessageDO.setProcessTime(new Date());
|
||||
String userIdStr = authUser.get(y.getStoreId()).stream().collect(Collectors.joining(","));
|
||||
storeMessageDO.setOperatorList(userIdStr);
|
||||
result.add(storeMessageDO);
|
||||
});
|
||||
storeMessageDAO.batchInsert(result);
|
||||
});
|
||||
|
||||
List<Long> updateIds = list.stream().map(MessageTemplateDO::getId).collect(Collectors.toList());
|
||||
messageTemplateDAO.batchUpdateStoreInfoAndUserInfo(updateIds,
|
||||
JSONObject.toJSONString(request.getStoreInfoList()),
|
||||
JSONObject.toJSONString(request.getUserInfoList()),
|
||||
user.getUserId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public PageInfo<NoticeDTO> getMessageTemplateList(MessageTemplateQueryRequest request) {
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<NoticeDTO> list = messageTemplateDAO.getMessageTemplateList(request);
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
return new PageInfo<>(list);
|
||||
}
|
||||
//将列表中的创建人id与发布人id 放到同一个list 去重
|
||||
Set<String> userIdSet = new HashSet<>();
|
||||
list.forEach(notice -> {
|
||||
if (notice.getCreateUserId() != null) {
|
||||
userIdSet.add(String.valueOf(notice.getCreateUserId()));
|
||||
}
|
||||
if (notice.getPublishUserId() != null) {
|
||||
userIdSet.add(String.valueOf(notice.getPublishUserId()));
|
||||
}
|
||||
});
|
||||
|
||||
List<String> uniqueUserIds = new ArrayList<>(userIdSet);
|
||||
List<EnterpriseUserDO> userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(uniqueUserIds);
|
||||
Map<String, String> userMap = userInfoByUserIds.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName));
|
||||
|
||||
|
||||
List<Long> templateIds = list.stream().map(NoticeDTO::getId).collect(Collectors.toList());
|
||||
List<MessageTemplateCountDTO> messageTemplateCountList = storeMessageDAO.getMessageTemplateCountList(templateIds);
|
||||
//根据模板id查询 转为map
|
||||
Map<Long, MessageTemplateCountDTO> messageTemplateCountMap = messageTemplateCountList.stream().collect(Collectors.toMap(MessageTemplateCountDTO::getTemplateId, x -> x));
|
||||
list.forEach(x -> {
|
||||
x.setCreateUserName(userMap.get(x.getCreateUserId()));
|
||||
x.setPublishUserName(userMap.get(x.getPublishUserId()));
|
||||
MessageTemplateCountDTO count = messageTemplateCountMap.getOrDefault(x.getId(), new MessageTemplateCountDTO());
|
||||
x.setHandleNum(count.getProcessedStoreCount());
|
||||
x.setTotalNum(count.getTotalStoreCount());
|
||||
});
|
||||
return new PageInfo<>(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<StoreMessageDetailVO> getStoreMessageListByTemplateId(StoreMessageRequest request) {
|
||||
PageHelper.startPage(request.getPageNum(),request.getPageSize());
|
||||
List<StoreMessageDO> list = storeMessageDAO.getStoreMessageList(request);
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
return new PageInfo<>();
|
||||
}
|
||||
|
||||
List<StoreMessageDetailVO> result = new ArrayList<>();
|
||||
list.forEach(x->{
|
||||
StoreMessageDetailVO storeMessageDetailVO = new StoreMessageDetailVO();
|
||||
BeanUtils.copyProperties(x,storeMessageDetailVO);
|
||||
result.add(storeMessageDetailVO);
|
||||
});
|
||||
PageInfo storeMessageDOPageInfo = new PageInfo<>(list);
|
||||
storeMessageDOPageInfo.setList(result);
|
||||
return storeMessageDOPageInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchRevokeNotice(BatchRevokeRequest request, LoginUserInfo user) {
|
||||
log.info("batchRevokeNotice request:{}", JSONObject.toJSONString(request));
|
||||
List<Long> ids = request.getIds();
|
||||
if (ids == null || ids.size() == 0) {
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
//将消息置为撤销状态
|
||||
messageTemplateDAO.batchUpdatePublishStatus(ids);
|
||||
//将门店未处理的消息置为撤销状态 已处理和撤销的保持不变
|
||||
storeMessageDAO.batchRevoke(ids, user.getUserId(), user.getName());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean revokeById(Long id, LoginUserInfo user) {
|
||||
//查询门店消息
|
||||
StoreMessageDO storeMessage = storeMessageDAO.getById(id);
|
||||
if (storeMessage == null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
if (RevokeStatusEnum.REVOKE.getCode().equals(storeMessage.getRevokeStatus())){
|
||||
throw new ServiceException(ErrorCodeEnum.STORE_MESSAGE_REVOKE);
|
||||
}
|
||||
if (ProcessStatusEnum.PROCESSED.getCode().equals(storeMessage.getProcessStatus())){
|
||||
throw new ServiceException(ErrorCodeEnum.STORE_MESSAGE_HANDLED);
|
||||
}
|
||||
storeMessageDAO.revokeById(id,user.getUserId(),user.getName());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ModuleAndMatterVO> getModuleList(String storeId,PartnerUserInfoVO userInfoVO) {
|
||||
List<ModuleAndMatterVO> moduleAndMatterList = ModuleAndMatterVO.getModuleAndMatterList();
|
||||
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(userInfoVO.getMobile());
|
||||
if (enterpriseUserDO == null){
|
||||
enterpriseUserDO = new EnterpriseUserDO();
|
||||
}
|
||||
List<ModuleAndMatterVO> list= new ArrayList<>();
|
||||
EnterpriseUserDO finalEnterpriseUserDO = enterpriseUserDO;
|
||||
moduleAndMatterList.forEach(x->{
|
||||
Integer integer = storeMessageDAO.queryStoreModuleCount(storeId, finalEnterpriseUserDO.getUserId(), x.getModuleCode());
|
||||
if (integer > 0){
|
||||
list.add(x);
|
||||
}
|
||||
});
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<StoreMessageVO> getStorePendingList(StoreMessagePendingRequest request) {
|
||||
if(request.getMobile()==null||StringUtils.isEmpty(request.getStoreId())){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(request.getMobile());
|
||||
if (enterpriseUserDO == null){
|
||||
return new PageInfo<>();
|
||||
}
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<StoreMessageVO> storeMessageListByCondition = storeMessageDAO.getStoreMessageListByCondition(request.getStoreId(), request.getModuleCode(),
|
||||
request.getTodayTask(), request.getPendingFlag(), enterpriseUserDO.getUserId());
|
||||
return new PageInfo<>(storeMessageListByCondition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageDetailVO getMessageDetail(Long id) {
|
||||
MessageDetailVO messageDetailVO = storeMessageDAO.getMessageDetail(id);
|
||||
if (messageDetailVO!=null&&messageDetailVO.getPublishUserId()!=null){
|
||||
EnterpriseUserDO userInfoById = enterpriseUserDAO.getUserInfoById(messageDetailVO.getPublishUserId());
|
||||
messageDetailVO.setPublishUserName(userInfoById.getName());
|
||||
}
|
||||
return messageDetailVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean readMessage(Long id, PartnerUserInfoVO userInfoVO) {
|
||||
StoreMessageDO message = storeMessageDAO.getById(id);
|
||||
if (ProcessStatusEnum.PROCESSED.getCode().equals(message.getProcessStatus())){
|
||||
log.info("当前消息已读已处理:{}",JSONObject.toJSONString( message));
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
message.setReadStatus(ProcessStatusEnum.PROCESSED.getCode());
|
||||
message.setReadTime(new Date());
|
||||
MessageTemplateDO template = messageTemplateDAO.getById(message.getMessageTemplateId());
|
||||
if (ProcessTypeEnum.READ.getCode().equals(template.getProcessType())){
|
||||
message.setProcessStatus(ProcessStatusEnum.PROCESSED.getCode());
|
||||
message.setProcessTime(new Date());
|
||||
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(userInfoVO.getMobile());
|
||||
if (enterpriseUserDO != null){
|
||||
message.setActualOperatorId(enterpriseUserDO.getId());
|
||||
message.setActualOperatorName(enterpriseUserDO.getName());
|
||||
}
|
||||
}
|
||||
storeMessageDAO.update( message);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean handleMessage(Long id, PartnerUserInfoVO userInfoVO) {
|
||||
log.info("handleMessage request:{},处理人:{}", JSONObject.toJSONString(id), userInfoVO.getUsername());
|
||||
StoreMessageDO message = storeMessageDAO.getById(id);
|
||||
if (message==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
}
|
||||
message.setProcessStatus(ProcessStatusEnum.PROCESSED.getCode());
|
||||
message.setProcessTime(new Date());
|
||||
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(userInfoVO.getMobile());
|
||||
if (enterpriseUserDO != null){
|
||||
message.setActualOperatorId(enterpriseUserDO.getId());
|
||||
message.setActualOperatorName(enterpriseUserDO.getName());
|
||||
}
|
||||
storeMessageDAO.update( message);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
||||
public Map<String, List<String>> getAuthUser(List<CommonDTO> personInfo, List<String> storeIds){
|
||||
if (CollectionUtils.isEmpty(personInfo)){
|
||||
return new HashMap<>();
|
||||
}
|
||||
List<String> personIds = personInfo.stream().filter(x -> TypeEnum.PERSON.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
List<String> positionIds = personInfo.stream().filter(x -> TypeEnum.POSITION.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
List<String> groupIdList = personInfo.stream().filter(x -> TypeEnum.USER_GROUP.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
List<String> regionIdList = personInfo.stream().filter(x -> TypeEnum.ORGANIZATION.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
//权限
|
||||
List<AuthStoreUserDTO> authStoreUserList = storeService.getStorePositionUserList(storeIds, positionIds, personIds, groupIdList, regionIdList);
|
||||
Map<String, List<String>> storeUserMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(authStoreUserList)) {
|
||||
storeUserMap = authStoreUserList.stream().collect(Collectors.toMap(AuthStoreUserDTO::getStoreId,
|
||||
AuthStoreUserDTO::getUserIdList, (a, b) -> a));
|
||||
}
|
||||
return storeUserMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取门店范围
|
||||
* @param commonDTOS
|
||||
* @return
|
||||
*/
|
||||
private List<StoreAreaDTO> getStoreRange( List<CommonDTO> commonDTOS){
|
||||
List<String> regionIds = commonDTOS.stream().filter(x -> TypeEnum.REGION.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
|
||||
List<RegionDO> regionDOsByRegionIds = new ArrayList<>();
|
||||
Set<String> storeIdSet = new HashSet<>();
|
||||
if (CollectionUtils.isNotEmpty(regionIds)){
|
||||
regionDOsByRegionIds = RegionDao.getRegionByRegionIds(regionIds);
|
||||
//区域全路径地址集合 ["/1/37139128281/","/1/37139128283/"]
|
||||
List<String> regionFullRegionPathList = regionDOsByRegionIds.stream().map(RegionDO::getFullRegionPath).collect(Collectors.toList());
|
||||
//根据regionFullRegionPathList查询区域下所有的门店(包括子区域门店)
|
||||
List<StoreAreaDTO> storeAreaDTOS = storeMapper.listStoreByRegionPathList(regionFullRegionPathList);
|
||||
storeIdSet = storeAreaDTOS.stream().map(StoreAreaDTO::getStoreId).collect(Collectors.toSet());
|
||||
}
|
||||
List<String> storeIdList = commonDTOS.stream().filter(x -> TypeEnum.STORE.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(storeIdList)){
|
||||
//将寻找的门店添加到set中
|
||||
storeIdSet.addAll(storeIdList);
|
||||
}
|
||||
List<String> groupList = commonDTOS.stream().filter(x -> TypeEnum.GROUP.getType().equals(x.getType()))
|
||||
.map(CommonDTO::getValue).collect(Collectors.toList());
|
||||
//分组
|
||||
if (CollectionUtils.isNotEmpty(groupList)) {
|
||||
List<StoreGroupMappingDO> groupStoreList = storeGroupMappingMapper.getStoreGroupMappingByGroupIDs(groupList);
|
||||
if (CollectionUtils.isNotEmpty(groupStoreList)) {
|
||||
Set<String> groupStoreSet = groupStoreList.stream().map(StoreGroupMappingDO::getStoreId).collect(Collectors.toSet());
|
||||
if(CollectionUtils.isNotEmpty(groupStoreSet)){
|
||||
//将寻找的门店添加到set中
|
||||
storeIdSet.addAll(groupStoreSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(CollectionUtils.isEmpty(storeIdSet)){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<StoreAreaDTO> storeDTOList = storeMapper.getStoreAreaList(new ArrayList<>(storeIdSet));
|
||||
if(CollectionUtils.isNotEmpty(storeDTOList)){
|
||||
storeDTOList = storeDTOList.stream().filter(o -> "open".equals(o.getStoreStatus())).collect(Collectors.toList());
|
||||
}
|
||||
return storeDTOList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.cool.store.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dto.store.AuthStoreUserDTO;
|
||||
import com.cool.store.dao.EnterpriseUserDAO;
|
||||
import com.cool.store.dao.EnterpriseUserRoleDao;
|
||||
@@ -17,10 +18,7 @@ import com.cool.store.entity.SysRoleDO;
|
||||
import com.cool.store.entity.UserAuthMappingDO;
|
||||
import com.cool.store.enums.*;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.RegionMapper;
|
||||
import com.cool.store.mapper.StoreMapper;
|
||||
import com.cool.store.mapper.SysRoleMapper;
|
||||
import com.cool.store.mapper.UserAuthMappingMapper;
|
||||
import com.cool.store.mapper.*;
|
||||
import com.cool.store.response.MiniShopsResponse;
|
||||
import com.cool.store.service.StoreService;
|
||||
import com.cool.store.service.UserAuthMappingService;
|
||||
@@ -68,6 +66,10 @@ public class StoreServiceImpl implements StoreService {
|
||||
StoreMapper storeMapper;
|
||||
@Resource
|
||||
UserAuthMappingMapper userAuthMappingMapper;
|
||||
@Resource
|
||||
EnterpriseUserMapper enterpriseUserMapper;
|
||||
@Resource
|
||||
EnterpriseUserGroupMappingMapper enterpriseUserGroupMappingMapper;
|
||||
|
||||
@Override
|
||||
public PageInfo<StoreDTO> getStoreExtendFieldInfo(Integer pageSize, Integer pageNum) {
|
||||
@@ -169,7 +171,54 @@ public class StoreServiceImpl implements StoreService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<AuthStoreUserDTO> authStoreUser(List<String> storeIdList, String positionType) {
|
||||
|
||||
|
||||
@Override
|
||||
public List<AuthStoreUserDTO> getStorePositionUserList( List<String> storeIds,
|
||||
List<String> positionIds,
|
||||
List<String> nodePersonList,
|
||||
List<String> groupIdList,
|
||||
List<String> regionIdList) {
|
||||
log.info("StoreServiceImpl getStorePositionUserList param storeIds:{},positionIds:{},nodePersonList:{},groupIdList:{},regionIdList:{}",
|
||||
JSONObject.toJSONString(storeIds),
|
||||
JSONObject.toJSONString(positionIds), JSONObject.toJSONString(nodePersonList),
|
||||
JSONObject.toJSONString(groupIdList), JSONObject.toJSONString(regionIdList));
|
||||
List<AuthStoreUserDTO> authStoreUsers = this.authStoreUser(storeIds, null);
|
||||
if (CollUtil.isEmpty(authStoreUsers)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> allUserIds = Lists.newArrayList();
|
||||
if (CollectionUtils.isNotEmpty(positionIds)) {
|
||||
List<String> userIds = sysRoleMapper.getPositionUserIds(positionIds);
|
||||
allUserIds.addAll(userIds);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(groupIdList)) {
|
||||
List<String> groupUserIdList = enterpriseUserGroupMappingMapper.getUserIdsByGroupIdList(groupIdList);
|
||||
if (CollectionUtils.isNotEmpty(groupUserIdList)) {
|
||||
allUserIds.addAll(groupUserIdList);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(regionIdList)) {
|
||||
List<String> regionUserIdList = enterpriseUserMapper.getUserIdsByRegionIdList(regionIdList);
|
||||
if (CollectionUtils.isNotEmpty(regionUserIdList)) {
|
||||
allUserIds.addAll(regionUserIdList);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(nodePersonList)) {
|
||||
allUserIds.addAll(nodePersonList);
|
||||
}
|
||||
List<String> finalAllUserIds = allUserIds;
|
||||
authStoreUsers.forEach(f -> f.getUserIdList().retainAll(finalAllUserIds));
|
||||
if (CollectionUtils.isNotEmpty(authStoreUsers)) {
|
||||
authStoreUsers = authStoreUsers.stream().distinct().collect(Collectors.toList());
|
||||
}
|
||||
return authStoreUsers;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<AuthStoreUserDTO> authStoreUser(List<String> storeIdList, String positionType) {
|
||||
List<AuthStoreUserDTO> result = new ArrayList<>();
|
||||
if (CollectionUtils.isEmpty(storeIdList)) {
|
||||
return result;
|
||||
@@ -304,7 +353,9 @@ public class StoreServiceImpl implements StoreService {
|
||||
StoreDTO dto = new StoreDTO();
|
||||
dto.setStoreName(store.getStoreName());
|
||||
dto.setStoreCode(store.getStoreNum());
|
||||
|
||||
dto.setStoreAddress(store.getStoreAddress());
|
||||
dto.setStoreAvatar(store.getAvatar());
|
||||
dto.setTelephone(store.getTelephone());
|
||||
try {
|
||||
// 解析门店的扩展字段
|
||||
Map<String, String> extendFields = objectMapper.readValue(
|
||||
|
||||
Reference in New Issue
Block a user