From 3a3220d7d30a8dd2aaac1be597ddab4aec49b9ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 24 Feb 2025 23:42:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=80=E4=BA=9B=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/SSEController.java | 17 +++---- .../admin/controller/TicketController.java | 4 +- .../admin/event/TicketReplyEvent.java | 2 +- .../admin/task/TicketScheduledTasks.java | 10 ++-- .../cfs/controller/SSEController.java | 17 +++---- .../cfs/controller/TiketController.java | 4 +- .../cfs/controller/UserController.java | 2 +- .../repository/entity/AppUserApplyfor.java | 4 +- .../service/impl/AdminRoleServiceImpl.java | 2 +- .../impl/AppUserApplyforServiceImpl.java | 47 +++++++++++++++---- .../service/impl/AppUserServiceImpl.java | 37 ++++++++++++--- .../impl/TBaseCustomerServiceImpl.java | 3 +- .../main/resources/mapper/AdminRoleMapper.xml | 2 +- .../repository/CodeGenerator.java | 3 +- .../starter/service/SSEManagerBase.java | 17 +++++-- .../service/impl/APPSSEManagerService.java | 14 ++++++ .../service/impl/AdminSSEManagerService.java | 16 ++++++- 17 files changed, 145 insertions(+), 56 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java index 4172d463..0f9a27a5 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java @@ -1,8 +1,6 @@ package com.nflg.mobilebroken.admin.controller; import com.nflg.mobilebroken.admin.annotation.ApiMark; -import com.nflg.mobilebroken.common.constant.STATE; -import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.starter.service.impl.APPSSEManagerService; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; @@ -13,7 +11,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import javax.annotation.Resource; -import java.io.IOException; @RestController @Slf4j @@ -33,13 +30,13 @@ public class SSEController extends ControllerBase { @ApiMark(moduleName = "连接", apiName = "SSE", isPublic = true) public SseEmitter connect(@RequestParam String userId) { SseEmitter sse = sseManagerService.connect(Integer.valueOf(userId)); - try { - sse.send("您已连接"); - } catch (IOException e) { - log.error("sse发送数据出错", e); - sse.complete(); - throw new NflgException(STATE.BusinessError, "sse发送数据出错"); - } +// try { +// sse.send("您已连接"); +// } catch (IOException e) { +// log.error("sse发送数据出错", e); +// sse.complete(); +// throw new NflgException(STATE.BusinessError, "sse发送数据出错"); +// } return sse; } } \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index 17ea9cf5..5b1a4879 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -511,7 +511,7 @@ public class TicketController extends ControllerBase { vo.setMessages(messageVOS); String key="chatMessage:readed:"+ticketId+":admin:"+AdminUserUtil.getUserId(); Set readeds=redisTemplate.opsForSet().members(key); - Set notReadeds=new HashSet<>(); + Set notReadeds=new LinkedHashSet<>(); if (CollectionUtil.isEmpty(readeds)){ notReadeds=messageVOS.stream() .filter(m->!Objects.equals(m.getSenderId(),AdminUserUtil.getUserId())) @@ -529,7 +529,7 @@ public class TicketController extends ControllerBase { if (CollectionUtil.isNotEmpty(notReadeds)) { redisTemplate.opsForSet().add(key, notReadeds.toArray(String[]::new)); vo.setNotReadCount(notReadeds.size()); - vo.setFirstMessageId(notReadeds.stream().findFirst().get()); + vo.setFirstMessageId(notReadeds.iterator().next()); } return ApiResult.success(vo); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java index 372b5a44..0a885e21 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketReplyEvent.java @@ -54,7 +54,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon public void send(){ sendUserMessage(); - sendEmail(); +// sendEmail(); } private void sendUserMessage(){ diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java index f7c136aa..a5ba8926 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/TicketScheduledTasks.java @@ -15,6 +15,7 @@ import com.nflg.mobilebroken.repository.entity.*; import com.nflg.mobilebroken.repository.service.*; import com.nflg.mobilebroken.starter.service.EmailService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -34,6 +35,9 @@ import java.util.stream.Collectors; @Slf4j public class TicketScheduledTasks { + @Value("${email.activate.app.website}") + private String websiteUrl; + @Resource private ITicketService ticketService; @@ -82,12 +86,10 @@ public class TicketScheduledTasks { List adminUsers = adminUserService.listByIds(adminUserIds); String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_TICKET_INVITE_COMMENT, Constant.DEFAULT_LANGUAGE_CODE); String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_TICKET_INVITE_COMMENT, Constant.DEFAULT_LANGUAGE_CODE) - .replace("${no}", ticket.getNo()) + .replace("${websiteUrl}", websiteUrl) .replace("${title}", ticket.getTitle()) .replace("${createUser}", createUser.getUserName()) - .replace("${handleUser}", StrUtil.join(",", adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList()))) - .replace("${createTime}", toTimeString(ticket.getCreateTime())) - .replace("${msg}", subject); + .replace("${url}", websiteUrl+"/#/workOrder/workOrderDetail?id="+ticket.getId()); try { sendEamilForAdminUser(adminUsers, subject, content); } catch (Exception e) { diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java index ccd853e0..bad07801 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java @@ -1,7 +1,5 @@ package com.nflg.mobilebroken.cfs.controller; -import com.nflg.mobilebroken.common.constant.STATE; -import com.nflg.mobilebroken.common.exception.NflgException; import com.nflg.mobilebroken.starter.service.impl.AdminSSEManagerService; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; @@ -12,7 +10,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import javax.annotation.Resource; -import java.io.IOException; /** * sse相关接口 @@ -35,13 +32,13 @@ public class SSEController extends ControllerBase { @GetMapping(value = "connect",produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter connect(@RequestParam Integer userId) { SseEmitter sse = adminSSEManagerService.connect(userId); - try { - sse.send("您已连接"); - } catch (IOException e) { - log.error("sse发送数据出错",e); - sse.complete(); - throw new NflgException(STATE.BusinessError,"sse发送数据出错"); - } +// try { +// sse.send("您已连接"); +// } catch (IOException e) { +// log.error("sse发送数据出错",e); +// sse.complete(); +// throw new NflgException(STATE.BusinessError,"sse发送数据出错"); +// } return sse; } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index 710b226d..c3fd8e14 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -286,7 +286,7 @@ public class TiketController extends ControllerBase { vo.setMessages(messageVOS); String key="chatMessage:readed:"+ticketId+":app:"+AppUserUtil.getUserId(); Set readeds=redisTemplate.opsForSet().members(key); - Set notReadeds=new HashSet<>(); + Set notReadeds=new LinkedHashSet<>(); if (CollectionUtil.isEmpty(readeds)){ notReadeds=messageVOS.stream() .filter(m->!Objects.equals(m.getSenderId(),AppUserUtil.getUserId())) @@ -304,7 +304,7 @@ public class TiketController extends ControllerBase { if (CollectionUtil.isNotEmpty(notReadeds)) { redisTemplate.opsForSet().add(key, notReadeds.toArray(String[]::new)); vo.setNotReadCount(notReadeds.size()); - vo.setFirstMessageId(notReadeds.stream().findFirst().get()); + vo.setFirstMessageId(notReadeds.iterator().next()); } return ApiResult.success(vo); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java index 1bcc2f49..557ab47d 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java @@ -185,7 +185,7 @@ public class UserController extends ControllerBase { if (CollectionUtil.isNotEmpty(adminUsers)){ adminUsers.forEach(c -> adminMessageService.add( new AdminMessage() - .setNo(applyfor.getUserEmail()) + .setNo(request.getEmail()) .setUserId(c.getId()) .setSourceId(applyfor.getId()) .setSource(1) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java index 78fca73d..75d8ef92 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java @@ -95,9 +95,9 @@ public class AppUserApplyfor implements Serializable { private String salesUserName; /** - * 创建人 + * 创建人id */ - private String createBy; + private Integer createBy; /** * 创建时间 diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminRoleServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminRoleServiceImpl.java index 5a61bc01..616dac83 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminRoleServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminRoleServiceImpl.java @@ -89,7 +89,7 @@ public class AdminRoleServiceImpl extends ServiceImplObjects.equals(d.getId(),mp.getId()))){ - MenuVO m=new MenuVO().setId(mp.getId()).setName(mp.getName()).setUrl(mp.getUrl()).setComponent(mp.getComponent()).setParentId(mp.getParentId()); + MenuVO m=new MenuVO().setId(mp.getId()).setName(mp.getName()).setShow(mp.getShow()).setUrl(mp.getUrl()).setComponent(mp.getComponent()).setParentId(mp.getParentId()); datas.add(m); } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java index b97ceee7..7b44c71a 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java @@ -79,7 +79,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl customers =customerService.listByIds(Arrays.stream(appUser.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())); - applyforInfo - .setCompanyName(StrUtil.join(",",customers.stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()))) - .setPhone(appUser.getPhone()) + if (StrUtil.isBlank(companyId)){ + companyId= appUser.getCompanyId(); + } + applyforInfo.setPhone(appUser.getPhone()) .setUserName(appUser.getName()) .setEmail(appUser.getEmail()); } + if (StrUtil.isNotBlank(companyId)) { + List customers =customerService.listByIds(Arrays.stream(companyId.split(",")).map(Integer::parseInt).collect(Collectors.toList())); + applyforInfo.setCompanyName(StrUtil.join(",",customers.stream().map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()))); + } if (Objects.nonNull(applyfor.getAreaId())) { AppArea area = appAreaService.getById(applyfor.getAreaId()); applyforInfo.setAreaName(area.getName()); @@ -157,6 +179,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl impl if (Objects.nonNull(d.getTitleId())) { title = positionService.getById(d.getTitleId()); } - return new AppUserForAdminVO() + AppUserForAdminVO vo= new AppUserForAdminVO() .setKey("u-" + d.getId()) .setId(d.getId()) .setAvatar(d.getAvatar()) @@ -331,12 +328,22 @@ public class AppUserServiceImpl extends ServiceImpl impl .setCreateBy(d.getCreateBy()) .setCreateTime(d.getCreateTime()) .setUpdateBy(d.getUpdateBy()) + .setUpdateTime(d.getUpdateTime()) .setPrimary(true) .setState(d.getExpireTime().isAfter(ChronoLocalDate.from(LocalDateTime.now())) ? 1 : 2) .setLastLoginTime(d.getLastLoginTime()) .setTitleId(d.getTitleId()) .setTitle(Objects.isNull(title)?"":title.getPositionName()) .setChildren(getChildrenOfAppUser(d.getId())); + AppUserApplyfor applyFor=appUserApplyforService.lambdaQuery() + .eq(AppUserApplyfor::getUserId, d.getId()) + .eq(AppUserApplyfor::getState, AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue()) + .ne(AppUserApplyfor::getType, AppUserApplyforType.ADD.getState().byteValue()) + .one(); + if (Objects.nonNull(applyFor)) { + vo.setKey("f-" + applyFor.getId()).setId(applyFor.getId()).setState(0); + } + return vo; }); } @@ -398,7 +405,7 @@ public class AppUserServiceImpl extends ServiceImpl impl } TBaseCustomer customer=customerService.getById(Integer.valueOf(d.getCompanyId())); TBasePosition title=positionService.getById(d.getTitleId()); - return new AppUserForAdminVO() + AppUserForAdminVO vo= new AppUserForAdminVO() .setKey("u-" + d.getId()) .setId(d.getId()) .setAvatar(d.getAvatar()) @@ -421,11 +428,22 @@ public class AppUserServiceImpl extends ServiceImpl impl .setCreateBy(d.getCreateBy()) .setCreateTime(d.getCreateTime()) .setUpdateBy(d.getUpdateBy()) + .setUpdateTime(d.getUpdateTime()) .setState(d.getExpireTime().isAfter(ChronoLocalDate.from(LocalDateTime.now())) ? 1 : 2) .setLastLoginTime(d.getLastLoginTime()); + AppUserApplyfor applyFor=appUserApplyforService.lambdaQuery() + .eq(AppUserApplyfor::getUserId, d.getId()) + .eq(AppUserApplyfor::getState, AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue()) + .ne(AppUserApplyfor::getType, AppUserApplyforType.ADD.getState().byteValue()) + .one(); + if (Objects.nonNull(applyFor)) { + vo.setKey("f-" + applyFor.getId()).setId(applyFor.getId()).setState(0); + } + return vo; }).collect(Collectors.toList()); LambdaQueryWrapper queryApplyforListWrapper = new LambdaQueryWrapper<>(); queryApplyforListWrapper.eq(AppUserApplyfor::getState, AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue()); + queryApplyforListWrapper.eq(AppUserApplyfor::getType, AppUserApplyforType.ADD.getState().byteValue()); queryApplyforListWrapper.and(wrapper -> { for (String companyId : companyIds) { wrapper.or().eq(AppUserApplyfor::getCompanyId, Integer.parseInt(companyId)); @@ -435,6 +453,8 @@ public class AppUserServiceImpl extends ServiceImpl impl vos.addAll(applyforList.stream().map(d -> { AppArea area = appAreaService.getById(d.getAreaId()); TBaseCustomer company = customerService.getById(d.getCompanyId()); + TBasePosition title=positionService.getById(d.getTitleId()); + AppUser createdByUser = getById(d.getCreateBy()); return new AppUserForAdminVO() .setKey("f-" + d.getId()) .setId(d.getId()) @@ -447,8 +467,13 @@ public class AppUserServiceImpl extends ServiceImpl impl .setEmail(d.getUserEmail()) .setSalesUserName(d.getSalesUserName()) .setAreaName(area.getName()) + .setAreaId(d.getAreaId()) .setUserState(UserState.ToBeActivated.getState()) .setPrimary(false) + .setTitleId(d.getTitleId()) + .setTitle(title.getPositionName()) + .setCreateBy(createdByUser.getName()) + .setCreateTime(d.getCreateTime()) .setState(0); }).collect(Collectors.toList())); return vos; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java index 13de38b7..3dc76ff6 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBaseCustomerServiceImpl.java @@ -98,7 +98,8 @@ public class TBaseCustomerServiceImpl extends ServiceImpl new CompanySimpleVO() .setId(d.getId()) - .setName(d.getAgencyCompanyName())) + .setName(d.getAgencyCompanyName()) + .setCode(d.getAgencyCompanyCode())) .collect(Collectors.toList()); } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminRoleMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminRoleMapper.xml index 15e69ec8..8dfa7ba8 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminRoleMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminRoleMapper.xml @@ -25,7 +25,7 @@