diff --git a/nflg-mobilebroken-admin/pom.xml b/nflg-mobilebroken-admin/pom.xml index d345206c..fc778042 100644 --- a/nflg-mobilebroken-admin/pom.xml +++ b/nflg-mobilebroken-admin/pom.xml @@ -90,6 +90,14 @@ cn.dev33 sa-token-spring-boot-starter + + cn.dev33 + sa-token-redis-jackson + + + org.apache.commons + commons-pool2 + diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/AdminApplication.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/AdminApplication.java index 258d7ff4..396511ae 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/AdminApplication.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/AdminApplication.java @@ -1,5 +1,7 @@ package com.nflg.mobilebroken.admin; +import cn.dev33.satoken.SaManager; +import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -11,10 +13,12 @@ import org.springframework.context.annotation.ComponentScan; @ComponentScan(basePackages = {"com.nflg.mobilebroken.repository.service", "com.nflg.mobilebroken.admin" , "com.nflg.mobilebroken.starter"}) @EnableDiscoveryClient +@Slf4j public class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); + log.info("启动成功,Sa-Token 配置如下:" + SaManager.getConfig()); } } \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/config/JacksonConfig.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/config/JacksonConfig.java index ce39efd3..60bcdc0d 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/config/JacksonConfig.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/config/JacksonConfig.java @@ -27,6 +27,7 @@ public class JacksonConfig { JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))); +// objectMapper.registerModule(javaTimeModule); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java index e317dc15..c63f6b58 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java @@ -13,10 +13,7 @@ import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.service.IAdminMessageService; import com.nflg.mobilebroken.repository.service.IAdminUserService; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; @@ -45,13 +42,15 @@ public class MessageController extends ControllerBase { */ @PostMapping("searchMessages") @ApiMark(moduleName = "消息管理", apiName = "搜索消息") - public ApiResult> searchMessages(@RequestBody AdminMessageSearchRequest request) { + public ApiResult> searchMessages(@RequestHeader(value = "authorization", required = false) String token, @RequestBody AdminMessageSearchRequest request) { IPage pageData = adminMessageService.search(AdminUserUtil.getUserId(), request); PageUtil.convert(pageData, d -> { - d.setTicketHandleBy(adminUserService.listByIds(StrUtil.split(",", d.getTicketHandleByIds())) - .stream() - .map(AdminUser::getUserName) - .collect(Collectors.toList())); + if (StrUtil.isNotBlank(d.getTicketHandleByIds())) { + d.setTicketHandleBy(adminUserService.listByIds(StrUtil.split(d.getTicketHandleByIds(), ",")) + .stream() + .map(AdminUser::getUserName) + .collect(Collectors.toList())); + } return d; }); return ApiResult.success(pageData); 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 ec363628..bde3eeb5 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 @@ -11,9 +11,11 @@ import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.AdminTicketSearchRequest; import com.nflg.mobilebroken.common.pojo.request.AssignmentTicketRequest; +import com.nflg.mobilebroken.common.pojo.request.FollowRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO; import com.nflg.mobilebroken.common.pojo.vo.DeviceInfoVO; import com.nflg.mobilebroken.common.pojo.vo.TicketPdfVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.EecExcelUtil; import com.nflg.mobilebroken.common.util.PageUtil; import com.nflg.mobilebroken.repository.entity.AdminUser; @@ -64,6 +66,32 @@ public class TicketController extends ControllerBase { @Resource private IAdminUserService adminUserService; + @Resource + private ITicketFollowService ticketFollowService; + + /** + * 获取问题类型 + * + * @return 问题类型列表 + */ + @GetMapping("getQuestions") + @ApiMark(moduleName = "获取问题类型", apiName = "搜索工单", isPublic = true) + public ApiResult> getQuestions() { + return ApiResult.success(Arrays.asList("技术设计问题", "装配工艺问题", "焊接质量问题", "机组装配质量问题", "电控问题", "工况方案问题", "操作不当", "原材料配件质量问题", "QC检验遗漏/误差", "部件/整机外观")); + } + + /** + * 关注或取消关注工单 + * + * @param request 请求信息 + **/ + @PostMapping("followTiket") + @ApiMark(moduleName = "关注或取消关注工单", apiName = "搜索工单") + public ApiResult followTiket(@Valid @RequestBody FollowRequest request) { + ticketFollowService.handleAdmin(request, AdminUserUtil.getUserId()); + return ApiResult.success(); + } + /** * 搜索工单 * @param request 请求参数 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 f0f19d1a..c684874b 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 @@ -7,6 +7,7 @@ import com.nflg.mobilebroken.common.pojo.dto.UserDTO; import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.entity.AppUser; import com.nflg.mobilebroken.repository.entity.Ticket; +import com.nflg.mobilebroken.repository.entity.TicketFollow; import com.nflg.mobilebroken.repository.service.IAdminUserService; import com.nflg.mobilebroken.repository.service.IAppUserService; import com.nflg.mobilebroken.repository.service.ITicketFollowService; @@ -98,7 +99,11 @@ public class TicketScheduledTasks { sendToApp(appUser, subject, StrUtil.format(content, ticket.getTitle())); } //给关注人发提醒 - List followUserIds = ticketFollowService.getUsers(ticket.getId()); + List follows = ticketFollowService.getUsers(ticket.getId()); + List followUserIds = follows.stream() + .filter(f -> Objects.equals(f.getFrom(), (byte) 0)) + .map(TicketFollow::getUserId) + .collect(Collectors.toList()); followUserIds.remove(appUser.getId()); if (CollectionUtil.isNotEmpty(followUserIds)) { List followUsers = appUserService.listByIds(followUserIds); @@ -108,6 +113,18 @@ public class TicketScheduledTasks { sendToApp(u, subject, StrUtil.format(content, ticket.getTitle())); }); } + followUserIds = follows.stream() + .filter(f -> Objects.equals(f.getFrom(), (byte) 1)) + .map(TicketFollow::getUserId) + .collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(followUserIds)) { + List followUsers = adminUserService.listByIds(followUserIds); + String subject = "该问题工单截止目前还未关闭,请跟进处理!"; + String content = "工单({})已超时未处理"; + followUsers.forEach(u -> { + sendToAdmin(u, subject, StrUtil.format(content, ticket.getTitle())); + }); + } } private void sendToAdmin(AdminUser user, String subject, String content) { diff --git a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/config/SaTokenJwtConfigure.java b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/config/SaTokenJwtConfigure.java deleted file mode 100644 index 72da9168..00000000 --- a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/config/SaTokenJwtConfigure.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.nflg.mobilebroken.auth.config; - -import cn.dev33.satoken.jwt.StpLogicJwtForStateless; -import com.nflg.mobilebroken.common.util.SaTokenAdminUtil; -import com.nflg.mobilebroken.common.util.SaTokenAppUtil; -import org.springframework.context.annotation.Configuration; - -import javax.annotation.PostConstruct; - -@Configuration -public class SaTokenJwtConfigure { - - @PostConstruct - public void setJwtStrategy() { - //设置jwt模式 - SaTokenAppUtil.setStpLogic(new StpLogicJwtForStateless(SaTokenAppUtil.TYPE)); - SaTokenAdminUtil.setStpLogic(new StpLogicJwtForStateless(SaTokenAdminUtil.TYPE)); - } -} diff --git a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java index 9575c380..0c4688c6 100644 --- a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java +++ b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java @@ -2,7 +2,6 @@ package com.nflg.mobilebroken.auth.controller; import cn.dev33.satoken.stp.SaLoginConfig; import cn.dev33.satoken.stp.SaTokenInfo; -import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.vo.PermissionsVO; @@ -55,7 +54,7 @@ public class AdminController extends ControllerBase { .setExtra("from", "admin") .setExtra("name", user.getUserName()) .setExtra("code", user.getUserCode()) - .setExtra("roles", StrUtil.join(",", roleCodes))); + .setExtra("roles", roleCodes)); return ApiResult.success(SaTokenAdminUtil.getTokenInfo()); } @@ -76,9 +75,10 @@ public class AdminController extends ControllerBase { @GetMapping("getPermissions") public ApiResult getPermissions() { VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录"); + List roles = AdminUserUtil.getRoles(); PermissionsVO vo = new PermissionsVO(); - vo.setMenus(adminRoleService.getMenusByRoleCodes(AdminUserUtil.getRoles())); - vo.setButtons(adminRoleService.getButtonsByRoleCodes(AdminUserUtil.getRoles())); + vo.setMenus(adminRoleService.getMenusByRoleCodes(roles)); + vo.setButtons(adminRoleService.getButtonsByRoleCodes(roles)); return ApiResult.success(vo); } } \ No newline at end of file diff --git a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java index 8ff9a7ad..b1153665 100644 --- a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java +++ b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AppController.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.auth.controller; import cn.dev33.satoken.stp.SaLoginConfig; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.StrUtil; import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.util.SaTokenAppUtil; @@ -16,8 +17,8 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.chrono.ChronoLocalDate; -import java.util.Arrays; import java.util.Objects; +import java.util.stream.Collectors; /** * 用户端用户登录 @@ -46,8 +47,10 @@ public class AppController extends ControllerBase { .setExtra("from", "app") .setExtra("name", user.getName()) .setExtra("email", user.getEmail()) - .setExtra("companys", Arrays.asList(1, 2)) + .setExtra("companys", StrUtil.split(user.getCompanyId(), ",").stream().map(Integer::valueOf).collect(Collectors.toList())) .setExtra("isPrimary", user.getIsPrimary())); + user.setLastLoginTime(LocalDateTime.now()); + appUserService.updateById(user); return ApiResult.success(StpUtil.getTokenInfo()); } diff --git a/nflg-mobilebroken-auth/src/main/resources/bootstrap.properties b/nflg-mobilebroken-auth/src/main/resources/bootstrap.properties index a728dc77..361d5989 100644 --- a/nflg-mobilebroken-auth/src/main/resources/bootstrap.properties +++ b/nflg-mobilebroken-auth/src/main/resources/bootstrap.properties @@ -8,6 +8,7 @@ spring.servlet.multipart.max-request-size=500MB #spring.config.import=classpath:application-${spring.profiles.active}.properties,nacos: #spring.config.import=nacos: logging.level.root=info +logging.level.org.mybatis=debug #logging.level.com.alibaba.nacos.client=DEBUG #logging.level.org.springframework.boot.context.config=DEBUG #logging.config=classpath:logback-sit.xml diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java index 71c4ea7d..5ed3c79e 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java @@ -46,7 +46,6 @@ public class MessageController extends ControllerBase { /** * 设置消息已读 - * * @param ids 消息id列表 */ @PostMapping("setReaded") diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java index b0724875..ca346263 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/ApiResult.java @@ -33,9 +33,9 @@ public class ApiResult implements Serializable { data.setItems(value);; data.setPage(query.getPage()); data.setPageSize(query.getPageSize()); - data.setTotal(total); + data.setTotal((int) total); vo.code = STATE.Success.getState(); - vo.type=STATE.Success.getType(); + vo.type = STATE.Success.getType(); vo.setResult(data); return vo; } @@ -43,9 +43,9 @@ public class ApiResult implements Serializable { public static ApiResult> success(IPage page) { ApiResult> vo = new ApiResult<>(); PageData pageData = new PageData<>(); - pageData.setPage(page.getCurrent()); - pageData.setPageSize(page.getSize()); - pageData.setTotal(page.getTotal()); + pageData.setPage((int) page.getCurrent()); + pageData.setPageSize((int) page.getSize()); + pageData.setTotal((int) page.getTotal()); pageData.setItems(page.getRecords()); vo.setCode(STATE.Success.getState()); vo.setType(STATE.Success.getType()); diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/PageData.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/PageData.java index bc677df0..2b21fda6 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/PageData.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/PageData.java @@ -13,20 +13,20 @@ public class PageData implements Serializable { //当前页码 @Setter - private long page = 1; + private int page = 1; //每页数据条数 @Setter - private long pageSize = 20; + private int pageSize = 20; //总条数 @Setter - private long total = 0; + private int total = 0; //总页数 - private long totalPages; + private int totalPages; - public long getTotalPages(){ + public int getTotalPages() { return total % pageSize == 0 ? total / pageSize : total / pageSize + 1; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java index bef38940..bb0e1acc 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminMessageVO.java @@ -12,6 +12,8 @@ import java.util.List; @Accessors(chain = true) public class AdminMessageVO { + private Integer id; + //任务id private Integer ticketId; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/AdminUserUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/AdminUserUtil.java index 9ed2141e..a65c3419 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/AdminUserUtil.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/AdminUserUtil.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.common.util; +import cn.dev33.satoken.stp.SaTokenInfo; import cn.hutool.core.collection.ListUtil; import java.util.List; @@ -11,6 +12,7 @@ public class AdminUserUtil { private static final Map> PERMISSION_MAP = new ConcurrentHashMap<>(); public static Integer getUserId(){ + SaTokenInfo tokenValue = SaTokenAdminUtil.getTokenInfo(); if (SaTokenAdminUtil.isLogin()) { return SaTokenAdminUtil.getLoginIdAsInt(); } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/PageUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/PageUtil.java index d9a6b5b7..c6a39f80 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/PageUtil.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/PageUtil.java @@ -10,9 +10,9 @@ public class PageUtil { public static PageData convert(IPage page, Function mapper) { PageData pageData = new PageData<>(); - pageData.setPage(page.getCurrent()); - pageData.setPageSize(page.getSize()); - pageData.setTotal(page.getTotal()); + pageData.setPage((int) page.getCurrent()); + pageData.setPageSize((int) page.getSize()); + pageData.setTotal((int) page.getTotal()); pageData.setItems(page.getRecords().stream().map(mapper).collect(Collectors.toList())); return pageData; } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketFollow.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketFollow.java index 89af73ca..7946f143 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketFollow.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TicketFollow.java @@ -3,12 +3,13 @@ package com.nflg.mobilebroken.repository.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.time.LocalDateTime; + /** *

* 工单-关注 @@ -38,6 +39,11 @@ public class TicketFollow implements Serializable { */ private Integer userId; + /** + * 来源,0:用户端,1:管理端 + */ + private Byte from; + /** * 关注时间 */ diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketFollowService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketFollowService.java index 5116f56c..b21b714f 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketFollowService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketFollowService.java @@ -18,5 +18,7 @@ public interface ITicketFollowService extends IService { void handle(FollowRequest request, Integer userId); - List getUsers(Integer id); + List getUsers(Integer id); + + void handleAdmin(FollowRequest request, Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java index 571bd952..2fffdec0 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java @@ -117,9 +117,9 @@ public class AdminUserServiceImpl extends ServiceImpl(request.getPage(), request.getPageSize())); PageData pageData = new PageData<>(); - pageData.setPage(page.getCurrent()); - pageData.setPageSize(page.getSize()); - pageData.setTotal(page.getTotal()); + pageData.setPage((int) page.getCurrent()); + pageData.setPageSize((int) page.getSize()); + pageData.setTotal((int) page.getTotal()); pageData.setItems(page.getRecords().stream().map(u -> new AdminUserVO() .setId(u.getId()) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketFollowServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketFollowServiceImpl.java index cc421e88..3bdb2f05 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketFollowServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketFollowServiceImpl.java @@ -11,7 +11,6 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; /** *

@@ -26,33 +25,58 @@ public class TicketFollowServiceImpl extends ServiceImpl lambdaQueryWrapper =new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(TicketFollow::getTicketId,request.getTicketId()); - lambdaQueryWrapper.eq(TicketFollow::getUserId,userId); + } else { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(TicketFollow::getTicketId, request.getTicketId()); + lambdaQueryWrapper.eq(TicketFollow::getUserId, userId); + lambdaQueryWrapper.eq(TicketFollow::getFrom, (byte) 0); this.remove(lambdaQueryWrapper); } } @Override - public List getUsers(Integer id) { + public List getUsers(Integer id) { return lambdaQuery() .eq(TicketFollow::getTicketId, id) - .list() - .stream() - .map(TicketFollow::getUserId) - .collect(Collectors.toList()); + .list(); + } + + @Override + public void handleAdmin(FollowRequest request, Integer userId) { + if (request.getIsFollow()) { + TicketFollow ticketFollow = lambdaQuery() + .eq(TicketFollow::getTicketId, request.getTicketId()) + .eq(TicketFollow::getUserId, userId) + .eq(TicketFollow::getFrom, (byte) 1) + .one(); + if (Objects.isNull(ticketFollow)) { + TicketFollow follow = new TicketFollow() + .setTicketId(request.getTicketId()) + .setUserId(userId) + .setFrom((byte) 1) + .setCreateTime(LocalDateTime.now()); + save(follow); + } + } else { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(TicketFollow::getTicketId, request.getTicketId()); + lambdaQueryWrapper.eq(TicketFollow::getUserId, userId); + lambdaQueryWrapper.eq(TicketFollow::getFrom, (byte) 1); + this.remove(lambdaQueryWrapper); + } } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml index 01c5283a..80ce6c9d 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminMessageMapper.xml @@ -3,12 +3,12 @@ @@ -30,7 +30,7 @@ INNER JOIN admin_role_menu_map rmm ON r.id=rmm.role_id INNER JOIN admin_menu m ON rmm.menu_id=m.id WHERE m.`enable`=1 AND r.`enable`=1 AND r.`code` IN - + #{code} @@ -41,7 +41,7 @@ INNER JOIN admin_role_button_map rbm ON r.id=rbm.role_id INNER JOIN admin_menu_button mb ON rbm.button_id=mb.id WHERE rbm.role_id=1 AND r.`enable`=1 AND r.`code` IN - + #{code} diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AppMessageMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AppMessageMapper.xml index 0effe06d..be40aaaf 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AppMessageMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AppMessageMapper.xml @@ -3,7 +3,7 @@ - SELECT t.*,a.`name` AS 'areaName',IF(tf.id IS NULL, false, true) AS 'followed',u.`name` AS 'createBy' + SELECT t.*,a.`name` AS 'areaName',IF(tf.id IS NULL, false, true) AS 'followed',u.`name` AS 'createBy',IF(tf.id IS NULL, false, true) AS 'followed' FROM ticket t LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN app_area a ON u.area_id=a.id - LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id + LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=0 WHERE t.user_id=#{userId} @@ -143,12 +143,12 @@ SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,a.`name` AS 'areaName' ,c.agency_company_name AS 'companyName',u.`name` AS 'createUserName',t.device_no AS 'deviceNo',t.use_time AS 'useTime' - ,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc' + ,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc',IF(tf.id IS NULL, false, true) AS 'followed' FROM ticket t LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN t_base_customer c ON u.company_id=c.id LEFT JOIN app_area a ON u.area_id=a.id - INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} + INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1 LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1 LEFT JOIN dictionary_item di ON d.warranty_state=di.id diff --git a/nflg-mobilebroken-starter/pom.xml b/nflg-mobilebroken-starter/pom.xml index ae72134b..7e6d0f2f 100644 --- a/nflg-mobilebroken-starter/pom.xml +++ b/nflg-mobilebroken-starter/pom.xml @@ -105,6 +105,10 @@ fastjson 1.2.83 + + cn.dev33 + sa-token-jwt + diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/SaTokenAnnotationConfigure.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/SaTokenAnnotationConfigure.java index 02e09ed3..fcc5ad27 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/SaTokenAnnotationConfigure.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/SaTokenAnnotationConfigure.java @@ -1,6 +1,9 @@ package com.nflg.mobilebroken.starter.config; +import cn.dev33.satoken.jwt.StpLogicJwtForStateless; import cn.dev33.satoken.strategy.SaAnnotationStrategy; +import com.nflg.mobilebroken.common.util.SaTokenAdminUtil; +import com.nflg.mobilebroken.common.util.SaTokenAppUtil; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AnnotatedElementUtils; @@ -13,5 +16,8 @@ public class SaTokenAnnotationConfigure { public void rewriteSaStrategy() { // 重写Sa-Token的注解处理器,增加注解合并功能 SaAnnotationStrategy.instance.getAnnotation = AnnotatedElementUtils::getMergedAnnotation; + //设置jwt模式 + SaTokenAppUtil.setStpLogic(new StpLogicJwtForStateless(SaTokenAppUtil.TYPE)); + SaTokenAdminUtil.setStpLogic(new StpLogicJwtForStateless(SaTokenAdminUtil.TYPE)); } } \ No newline at end of file