From 767e25a13e4cda506108e3b37e8199664e4d3bca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 9 May 2025 17:44:49 +0800 Subject: [PATCH 01/19] =?UTF-8?q?fix:=20=E3=80=90bug-182=E3=80=91=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=B7=A5=E5=8D=95=E6=97=B6=EF=BC=8C=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BC=96=E5=8F=B7=E7=9A=84=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E5=B1=95=E7=A4=BA=E7=9A=84=E8=AE=BE=E5=A4=87=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AD=97=E6=AE=B5=E6=B2=A1=E6=9C=89=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E4=BC=98=E5=8C=96=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E8=AE=BE=E5=A4=87=E8=B4=A8=E4=BF=9D=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/mobilebroken/cfs/controller/TiketController.java | 2 +- .../java/com/nflg/mobilebroken/common/pojo/vo/DeviceVO.java | 3 +++ .../nflg/mobilebroken/repository/mapper/DeviceMapper.java | 2 +- .../nflg/mobilebroken/repository/service/IDeviceService.java | 2 +- .../repository/service/impl/DeviceServiceImpl.java | 4 ++-- .../src/main/resources/mapper/DeviceMapper.xml | 5 ++++- 6 files changed, 12 insertions(+), 6 deletions(-) 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 36eaaf72..27b54e86 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 @@ -96,7 +96,7 @@ public class TiketController extends ControllerBase { **/ @PostMapping("searchDevice") public ApiResult> searchDevice(@Valid @RequestBody SearchDeviceRequest request) { - return ApiResult.success(deviceService.searchDevice(request)); + return ApiResult.success(deviceService.searchDevice(request,MultilingualUtil.getLanguage())); } /** diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DeviceVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DeviceVO.java index 4f5090e5..52f3a6e7 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DeviceVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DeviceVO.java @@ -18,6 +18,9 @@ public class DeviceVO { // 设备型号 private String modelNo; + //质保状态 + private String warrantyState; + // 设备类型 private String deviceType; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceMapper.java index 8a9595d0..fb640ab8 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/DeviceMapper.java @@ -35,7 +35,7 @@ public interface DeviceMapper extends BaseMapper { void batchDelByIds(@Param("ids")List ids); - Page searchDevice(SearchDeviceRequest request, List companyIds, Page page); + Page searchDevice(SearchDeviceRequest request, List companyIds,String language, Page page); void taskWarrantyStateNotStarted(); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceService.java index 774178c7..4eb4cfed 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IDeviceService.java @@ -28,7 +28,7 @@ public interface IDeviceService extends IService { void batchDelByIds(@Param("ids") List ids); - Page searchDevice(SearchDeviceRequest request); + Page searchDevice(SearchDeviceRequest request,String language); void taskWarrantyStateNotStarted(); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceServiceImpl.java index 7e592fea..fa14b7a9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/DeviceServiceImpl.java @@ -49,7 +49,7 @@ public class DeviceServiceImpl extends ServiceImpl impleme } @Override - public Page searchDevice(SearchDeviceRequest request) { + public Page searchDevice(SearchDeviceRequest request,String language) { // IPage page = lambdaQuery() // .like(StrUtil.isNotBlank(request.getDeviceNo()), Device::getDeviceNo, request.getDeviceNo()) // .like(StrUtil.isNotBlank(request.getModelNo()), Device::getModelNo, request.getModelNo()) @@ -57,7 +57,7 @@ public class DeviceServiceImpl extends ServiceImpl impleme // .page(new Page<>(request.getPage(), request.getPageSize())); // return PageUtil.convert(page, d -> Convert.convert(DeviceVO.class, d)); List companyIds = AppUserUtil.getCompanyIds(); - return baseMapper.searchDevice(request, companyIds, new Page<>(request.getPage(), request.getPageSize())); + return baseMapper.searchDevice(request, companyIds,language ,new Page<>(request.getPage(), request.getPageSize())); } public void taskWarrantyStateNotStarted(){ diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml index b6b5bf62..730cc4ab 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml @@ -60,10 +60,13 @@ + select exists(select 1 + from ticket_call tc + left join ticket_call_join tcj on tc.id = tcj.call_id + where tc.state = 1 + and tcj.user_id = #{userId}) + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketCallMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketCallMapper.xml new file mode 100644 index 00000000..391549ee --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketCallMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java index 7ea7dc4e..0543aa6d 100644 --- a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java +++ b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java @@ -33,7 +33,7 @@ public class CodeGenerator { , Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper")) ) .strategyConfig(builder -> { - builder.addInclude("anonymous_ticket") //只生成指定表 + builder.addInclude("ticket_call,ticket_call_join") //只生成指定表 .entityBuilder() .enableLombok() .enableChainModel() diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java new file mode 100644 index 00000000..c89cf3ef --- /dev/null +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.starter.service; + +import cn.hutool.json.JSONUtil; +import com.nflg.mobilebroken.common.pojo.dto.UniPushMessage; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +@Slf4j +@Component +public class UniPushService { + + @Value("${uniapp.cloud.push.url}") + private String url; + + public void send(UniPushMessage message){ + log.info("发送uniapp消息:{}", JSONUtil.toJsonStr(message)); + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url,message, String.class); + log.info("发送uniapp消息结果:{}", response.getBody()); + } +} \ No newline at end of file From 1f3e0968cce8420df4fd953078bda87dbb708600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 20 May 2025 14:06:59 +0800 Subject: [PATCH 03/19] =?UTF-8?q?feat:=20=E8=A7=86=E9=A2=91=E9=80=9A?= =?UTF-8?q?=E8=AF=9D=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java index 1be9f58a..6a0e461c 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java @@ -48,7 +48,7 @@ public class ShengWangScheduledTasks { log.info("将不存在列表中的通话设置为已结束状态"); List ticketCalls = ticketCallService.lambdaQuery() .ne(TicketCall::getState, 2) - .notIn(TicketCall::getTicketId, dto.getChannels() + .notIn(dto.getTotalSize() > 0, TicketCall::getTicketId, dto.getChannels() .stream() .map(o -> Integer.valueOf(o.getChannelName().replace("ticket", ""))) .collect(Collectors.toList())) From 91d3d78c9b0ecff7d2faaa8fad74e51679d7b140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 21 May 2025 11:03:45 +0800 Subject: [PATCH 04/19] =?UTF-8?q?feat:=20=E8=A7=86=E9=A2=91=E9=80=9A?= =?UTF-8?q?=E8=AF=9D=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/task/ShengWangScheduledTasks.java | 49 ++++++++++++++++--- .../service/ITicketCallJoinService.java | 2 + .../impl/TicketCallJoinServiceImpl.java | 8 +++ .../service/impl/TicketCallServiceImpl.java | 7 +-- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java index 6a0e461c..ba1283af 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/task/ShengWangScheduledTasks.java @@ -4,12 +4,14 @@ import cn.hutool.core.collection.CollectionUtil; import com.nflg.mobilebroken.admin.pojo.dto.ShengWangChannelDTO; import com.nflg.mobilebroken.admin.pojo.dto.ShengWangChannelInfoDTO; import com.nflg.mobilebroken.admin.service.ShengWangService; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.util.IdUtil; import com.nflg.mobilebroken.repository.entity.TicketCall; import com.nflg.mobilebroken.repository.entity.TicketCallJoin; import com.nflg.mobilebroken.repository.service.ITicketCallJoinService; import com.nflg.mobilebroken.repository.service.ITicketCallService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.slf4j.MDC; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -73,23 +75,54 @@ public class ShengWangScheduledTasks { .one(); if (Objects.nonNull(ticketCall)) { log.info("获取频道用户"); - List userIds = shengWangService.getChannelUsers(info.getChannelName()); - if (CollectionUtil.isEmpty(userIds)) { + List channelUsers = shengWangService.getChannelUsers(info.getChannelName()); + log.info("频道用户:{}", channelUsers); + if (CollectionUtil.isEmpty(channelUsers)) { ticketCallJoinService.lambdaUpdate() .set(TicketCallJoin::getState, 2) .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) .eq(TicketCallJoin::getCallId, ticketCall.getId()) .update(); } else { - ticketCallJoinService.lambdaUpdate() - .set(TicketCallJoin::getState, 2) - .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) - .eq(TicketCallJoin::getCallId, ticketCall.getId()) - .notIn(TicketCallJoin::getUserId, userIds) - .update(); + //用户端 + List userIds = channelUsers.stream() + .map(String::valueOf) + .filter(userId -> String.valueOf(userId).startsWith("1")) + .map(this::getUserId) + .collect(Collectors.toList()); + log.info("客户端用户:{}", userIds); + if (CollectionUtil.isNotEmpty(userIds)) { + ticketCallJoinService.lambdaUpdate() + .set(TicketCallJoin::getState, 2) + .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) + .eq(TicketCallJoin::getCallId, ticketCall.getId()) + .eq(TicketCallJoin::getFrom, Constant.FROM_APP) + .notIn(TicketCallJoin::getUserId, userIds) + .update(); + } + //管理端 + userIds = channelUsers.stream() + .map(String::valueOf) + .filter(userId -> String.valueOf(userId).startsWith("2")) + .map(this::getUserId) + .collect(Collectors.toList()); + log.info("管理端用户:{}", userIds); + if (CollectionUtil.isNotEmpty(userIds)) { + ticketCallJoinService.lambdaUpdate() + .set(TicketCallJoin::getState, 2) + .set(TicketCallJoin::getHangupTime, LocalDateTime.now()) + .eq(TicketCallJoin::getCallId, ticketCall.getId()) + .eq(TicketCallJoin::getFrom, Constant.FROM_ADMIN) + .notIn(TicketCallJoin::getUserId, userIds) + .update(); + } } } } log.info("执行声网通话状态同步完毕"); } + + private Integer getUserId(String userId){ + return Integer.valueOf(StringUtils.stripStart(userId.substring(1),"0")); + } } \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java index 694bd0e8..a0c1dafd 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java @@ -25,4 +25,6 @@ public interface ITicketCallJoinService extends IService { void hangUp(Integer callId, Integer userId, String from, boolean reject); void add(Integer callId, Integer userId, String from); + + void hangUpAll(Integer id); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java index 79386b14..80bde7c0 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java @@ -116,4 +116,12 @@ public class TicketCallJoinServiceImpl extends ServiceImpl Date: Thu, 22 May 2025 15:03:45 +0800 Subject: [PATCH 05/19] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96sse=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E6=96=AD=E5=BC=80=E8=BF=9E=E6=8E=A5=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../push/service/SSEManagerBase.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java index 06f971c0..b0c34185 100644 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java +++ b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java @@ -8,6 +8,7 @@ import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.push.UserSseEmitter; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.connector.ClientAbortException; import org.springframework.scheduling.TaskScheduler; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -74,7 +75,11 @@ public class SSEManagerBase { }); try { emitter.send(SseEmitter.event().data("已连接").reconnectTime(5000)); - } catch (IOException e) { + }catch (ClientAbortException e){ + log.error("客户端断开连接:{}", userId); + emitter.complete(); + } + catch (IOException e) { log.error("sse发送数据出错", e); emitter.completeWithError(e); } @@ -83,7 +88,7 @@ public class SSEManagerBase { protected void sendByTicket(Integer ticketId, PushMessageDTO dto) { log.info(StrUtil.format(from + "SSE发送消息,工单id: {},内容: {}", ticketId, dto)); - List emitters = SSE_EMITTERS.stream() + List emitters = SSE_EMITTERS.stream() .filter(s -> Objects.equals(s.getTicketId(), ticketId)) .collect(Collectors.toList()); if (CollectionUtil.isEmpty(emitters)){ @@ -93,6 +98,9 @@ public class SSEManagerBase { emitters.forEach(emitter -> { try { emitter.send(SseEmitter.event().name(dto.getType()).data(dto.getData())); + } catch (ClientAbortException e) { + log.error("客户端断开连接:{}", emitter.getUserId()); + emitter.complete(); } catch (IOException e) { log.error("sse发送数据出错", e); emitter.completeWithError(e); @@ -102,7 +110,7 @@ public class SSEManagerBase { protected void sendByUser(Integer userId, PushMessageDTO dto) { log.info(StrUtil.format(from + "SSE发送消息,用户id: {},内容: {}", userId, dto)); - List emitters = SSE_EMITTERS.stream() + List emitters = SSE_EMITTERS.stream() .filter(s -> Objects.equals(s.getUserId(), userId)) .collect(Collectors.toList()); if (CollectionUtil.isEmpty(emitters)) { @@ -113,7 +121,10 @@ public class SSEManagerBase { try { emitter.send(SseEmitter.event().name(dto.getType()).data(dto.getData())); log.info("发送成功"); - } catch (IOException e) { + } catch (ClientAbortException e) { + log.error("客户端断开连接:{}", emitter.getUserId()); + emitter.complete(); + }catch (IOException e) { log.error("sse发送数据出错", e); emitter.completeWithError(e); } From 485ed4d8b1a63334867e883cb05b4167d6d336ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 22 May 2025 14:46:23 +0800 Subject: [PATCH 06/19] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E4=B8=AD?= =?UTF-8?q?=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProductBaseController.java | 124 ++++++++++++++++++ .../controller/ProductModelController.java | 58 ++++++++ .../controller/ProductPartController.java | 67 ++++++++++ .../controller/ProductSeriesController.java | 58 ++++++++ .../controller/ProductTypeController.java | 58 ++++++++ .../admin/controller/TicketController.java | 52 ++++---- .../controller/AdvertisementController.java | 2 +- .../cfs/controller/TicketController.java | 21 ++- .../common/pojo/dto/ProductParamsDTO.java | 32 +++++ .../pojo/request/ProductCaseAddRequest.java | 29 ++++ .../request/ProductCaseInfoAddRequest.java | 29 ++++ .../request/ProductCaseSearchRequest.java | 29 ++++ .../request/ProductCaseUpdateRequest.java | 12 ++ .../pojo/request/ProductHonorAddRequest.java | 25 ++++ .../request/ProductHonorInfoAddRequest.java | 27 ++++ .../request/ProductHonorSearchRequest.java | 29 ++++ .../request/ProductHonorUpdateRequest.java | 12 ++ .../pojo/request/ProductIntroAddRequest.java | 33 +++++ .../request/ProductIntroInfoAddRequest.java | 42 ++++++ .../request/ProductIntroSearchRequest.java | 23 ++++ .../request/ProductIntroUpdateRequest.java | 14 ++ .../pojo/request/ProductModelAddRequest.java | 46 +++++++ .../request/ProductModelImageAddRequest.java | 27 ++++ .../request/ProductModelInfoAddRequest.java | 37 ++++++ .../request/ProductModelSearchRequest.java | 31 +++++ .../request/ProductModelUpdateRequest.java | 15 +++ .../request/ProductModelVideoAddRequest.java | 12 ++ .../pojo/request/ProductParamsAddRequest.java | 27 ++++ .../pojo/request/ProductPartAddRequest.java | 24 ++++ .../request/ProductPartInfoAddRequest.java | 37 ++++++ .../request/ProductPartSearchRequest.java | 24 ++++ .../request/ProductPartUpdateRequest.java | 15 +++ .../pojo/request/ProductSeriesAddRequest.java | 19 +++ .../request/ProductSeriesInfoAddRequest.java | 24 ++++ .../request/ProductSeriesSearchRequest.java | 24 ++++ .../request/ProductSeriesUpdateRequest.java | 12 ++ .../pojo/request/ProductTypeAddRequest.java | 31 +++++ .../request/ProductTypeInfoAddRequest.java | 32 +++++ .../request/ProductTypeSearchRequest.java | 31 +++++ .../request/ProductTypeUpdateRequest.java | 15 +++ .../common/pojo/vo/ProductCaseSearchVO.java | 46 +++++++ .../common/pojo/vo/ProductCaseVO.java | 22 ++++ .../common/pojo/vo/ProductFileVO.java | 27 ++++ .../common/pojo/vo/ProductHonorSearchVO.java | 40 ++++++ .../common/pojo/vo/ProductHonorVO.java | 22 ++++ .../common/pojo/vo/ProductImageVO.java | 17 +++ .../common/pojo/vo/ProductIntroSearchVO.java | 46 +++++++ .../common/pojo/vo/ProductIntroVO.java | 32 +++++ .../common/pojo/vo/ProductModelInfoVO.java | 46 +++++++ .../common/pojo/vo/ProductModelParamsVO.java | 28 ++++ .../common/pojo/vo/ProductModelSearchVO.java | 41 ++++++ .../common/pojo/vo/ProductModelVO.java | 24 ++++ .../common/pojo/vo/ProductParamsInfoVO.java | 24 ++++ .../common/pojo/vo/ProductParamsVO.java | 26 ++++ .../common/pojo/vo/ProductPartInfoVO.java | 36 +++++ .../common/pojo/vo/ProductPartSearchVO.java | 41 ++++++ .../common/pojo/vo/ProductSeriesSearchVO.java | 41 ++++++ .../common/pojo/vo/ProductSeriesVO.java | 24 ++++ .../common/pojo/vo/ProductTypeSearchVO.java | 41 ++++++ .../common/pojo/vo/ProductTypeVO.java | 24 ++++ .../common/pojo/vo/ProductVideoVO.java | 12 ++ nflg-mobilebroken-product/pom.xml | 88 +++++++++++++ .../product/ProductApplication.java | 31 +++++ .../controller/AdvertisementController.java | 36 +++++ .../product/controller/BaseController.java | 9 ++ .../product/controller/DataController.java | 80 +++++++++++ .../product/controller/InfoController.java | 59 +++++++++ .../main/resources/bootstrap-dev.properties | 15 +++ .../src/main/resources/bootstrap.properties | 31 +++++ .../src/main/resources/logback-sit.xml | 46 +++++++ .../repository/entity/ProductCase.java | 66 ++++++++++ .../repository/entity/ProductCaseInfo.java | 76 +++++++++++ .../repository/entity/ProductHonor.java | 62 +++++++++ .../repository/entity/ProductHonorInfo.java | 71 ++++++++++ .../repository/entity/ProductIntro.java | 66 ++++++++++ .../repository/entity/ProductIntroInfo.java | 81 ++++++++++++ .../repository/entity/ProductModel.java | 66 ++++++++++ .../repository/entity/ProductModelFile.java | 81 ++++++++++++ .../repository/entity/ProductModelImage.java | 71 ++++++++++ .../repository/entity/ProductModelInfo.java | 76 +++++++++++ .../repository/entity/ProductModelParams.java | 71 ++++++++++ .../repository/entity/ProductModelVideo.java | 76 +++++++++++ .../repository/entity/ProductPart.java | 56 ++++++++ .../repository/entity/ProductPartInfo.java | 76 +++++++++++ .../repository/entity/ProductPartParams.java | 71 ++++++++++ .../repository/entity/ProductSeries.java | 56 ++++++++ .../repository/entity/ProductSeriesInfo.java | 76 +++++++++++ .../repository/entity/ProductType.java | 61 +++++++++ .../repository/entity/ProductTypeInfo.java | 76 +++++++++++ .../mapper/ProductCaseInfoMapper.java | 16 +++ .../repository/mapper/ProductCaseMapper.java | 19 +++ .../mapper/ProductHonorInfoMapper.java | 16 +++ .../repository/mapper/ProductHonorMapper.java | 26 ++++ .../mapper/ProductIntroInfoMapper.java | 16 +++ .../repository/mapper/ProductIntroMapper.java | 26 ++++ .../mapper/ProductModelFileMapper.java | 16 +++ .../mapper/ProductModelImageMapper.java | 15 +++ .../mapper/ProductModelInfoMapper.java | 16 +++ .../repository/mapper/ProductModelMapper.java | 29 ++++ .../mapper/ProductModelParamsMapper.java | 20 +++ .../mapper/ProductModelVideoMapper.java | 16 +++ .../mapper/ProductPartInfoMapper.java | 16 +++ .../repository/mapper/ProductPartMapper.java | 24 ++++ .../mapper/ProductPartParamsMapper.java | 20 +++ .../mapper/ProductSeriesInfoMapper.java | 16 +++ .../mapper/ProductSeriesMapper.java | 26 ++++ .../mapper/ProductTypeInfoMapper.java | 16 +++ .../repository/mapper/ProductTypeMapper.java | 26 ++++ .../service/IProductCaseInfoService.java | 22 ++++ .../service/IProductCaseService.java | 32 +++++ .../service/IProductHonorInfoService.java | 22 ++++ .../service/IProductHonorService.java | 32 +++++ .../service/IProductIntroInfoService.java | 20 +++ .../service/IProductIntroService.java | 31 +++++ .../service/IProductModelFileService.java | 20 +++ .../service/IProductModelImageService.java | 25 ++++ .../service/IProductModelInfoService.java | 24 ++++ .../service/IProductModelParamsService.java | 25 ++++ .../service/IProductModelService.java | 39 ++++++ .../service/IProductModelVideoService.java | 25 ++++ .../service/IProductPartInfoService.java | 24 ++++ .../service/IProductPartParamsService.java | 25 ++++ .../service/IProductPartService.java | 32 +++++ .../service/IProductSeriesInfoService.java | 22 ++++ .../service/IProductSeriesService.java | 32 +++++ .../service/IProductTypeInfoService.java | 24 ++++ .../service/IProductTypeService.java | 32 +++++ .../impl/ProductCaseInfoServiceImpl.java | 66 ++++++++++ .../service/impl/ProductCaseServiceImpl.java | 82 ++++++++++++ .../impl/ProductHonorInfoServiceImpl.java | 64 +++++++++ .../service/impl/ProductHonorServiceImpl.java | 70 ++++++++++ .../impl/ProductIntroInfoServiceImpl.java | 47 +++++++ .../service/impl/ProductIntroServiceImpl.java | 88 +++++++++++++ .../impl/ProductModelFileServiceImpl.java | 38 ++++++ .../impl/ProductModelImageServiceImpl.java | 80 +++++++++++ .../impl/ProductModelInfoServiceImpl.java | 66 ++++++++++ .../impl/ProductModelParamsServiceImpl.java | 90 +++++++++++++ .../service/impl/ProductModelServiceImpl.java | 114 ++++++++++++++++ .../impl/ProductModelVideoServiceImpl.java | 81 ++++++++++++ .../impl/ProductPartInfoServiceImpl.java | 65 +++++++++ .../impl/ProductPartParamsServiceImpl.java | 95 ++++++++++++++ .../service/impl/ProductPartServiceImpl.java | 78 +++++++++++ .../impl/ProductSeriesInfoServiceImpl.java | 65 +++++++++ .../impl/ProductSeriesServiceImpl.java | 69 ++++++++++ .../impl/ProductTypeInfoServiceImpl.java | 67 ++++++++++ .../service/impl/ProductTypeServiceImpl.java | 69 ++++++++++ .../mapper/ProductCaseInfoMapper.xml | 5 + .../resources/mapper/ProductCaseMapper.xml | 12 ++ .../mapper/ProductHonorInfoMapper.xml | 5 + .../resources/mapper/ProductHonorMapper.xml | 32 +++++ .../mapper/ProductIntroInfoMapper.xml | 5 + .../resources/mapper/ProductIntroMapper.xml | 33 +++++ .../mapper/ProductModelFileMapper.xml | 5 + .../mapper/ProductModelImageMapper.xml | 5 + .../mapper/ProductModelInfoMapper.xml | 5 + .../resources/mapper/ProductModelMapper.xml | 36 +++++ .../mapper/ProductModelParamsMapper.xml | 18 +++ .../mapper/ProductModelVideoMapper.xml | 5 + .../mapper/ProductPartInfoMapper.xml | 5 + .../resources/mapper/ProductPartMapper.xml | 29 ++++ .../mapper/ProductPartParamsMapper.xml | 17 +++ .../mapper/ProductSeriesInfoMapper.xml | 5 + .../resources/mapper/ProductSeriesMapper.xml | 28 ++++ .../mapper/ProductTypeInfoMapper.xml | 5 + .../resources/mapper/ProductTypeMapper.xml | 28 ++++ .../repository/CodeGenerator.java | 3 +- pom.xml | 1 + 167 files changed, 6174 insertions(+), 39 deletions(-) create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductBaseController.java create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductPartController.java create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductSeriesController.java create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductTypeController.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ProductParamsDTO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelImageAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelVideoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductParamsAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeInfoAddRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeSearchRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeUpdateRequest.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductFileVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductImageVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelInfoVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelParamsVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsInfoVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeSearchVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeVO.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductVideoVO.java create mode 100644 nflg-mobilebroken-product/pom.xml create mode 100644 nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/ProductApplication.java create mode 100644 nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/AdvertisementController.java create mode 100644 nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/BaseController.java create mode 100644 nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/DataController.java create mode 100644 nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/InfoController.java create mode 100644 nflg-mobilebroken-product/src/main/resources/bootstrap-dev.properties create mode 100644 nflg-mobilebroken-product/src/main/resources/bootstrap.properties create mode 100644 nflg-mobilebroken-product/src/main/resources/logback-sit.xml create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCase.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCaseInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonor.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonorInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntro.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntroInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModel.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelFile.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelImage.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelParams.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelVideo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPart.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartParams.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeries.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeriesInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductType.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductTypeInfo.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelFileMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelImageMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelVideoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartParamsMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeMapper.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelImageService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelVideoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartParamsService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelImageServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelVideoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartParamsServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeInfoServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeServiceImpl.java create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelFileMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelImageMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelVideoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartParamsMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeMapper.xml diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductBaseController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductBaseController.java new file mode 100644 index 00000000..6d31c9f3 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductBaseController.java @@ -0,0 +1,124 @@ +package com.nflg.mobilebroken.admin.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.*; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroSearchVO; +import com.nflg.mobilebroken.repository.service.IProductCaseService; +import com.nflg.mobilebroken.repository.service.IProductHonorService; +import com.nflg.mobilebroken.repository.service.IProductIntroService; +import lombok.extern.slf4j.Slf4j; +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 javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 产品中心基础信息 + */ +@Slf4j +@RestController +@RequestMapping("/product/base") +public class ProductBaseController extends ControllerBase{ + + @Resource + private IProductIntroService productIntroService; + + @Resource + private IProductHonorService productHonorService; + + @Resource + private IProductCaseService productCaseService; + + /** + * 添加介绍 + * @param request 请求参数 + */ + @PostMapping("/addIntro") + public ApiResult addIntro(@Valid @RequestBody ProductIntroAddRequest request){ + productIntroService.add(request); + return ApiResult.success(); + } + + /** + * 修改介绍 + * @param request 请求参数 + */ + @PostMapping("/updateIntro") + public ApiResult updateIntro(@Valid @RequestBody ProductIntroUpdateRequest request){ + productIntroService.update(request); + return ApiResult.success(); + } + + /** + * 获取介绍列表 + * @param request 请求参数 + */ + @PostMapping("/getIntroList") + public ApiResult> getIntroList(@RequestBody ProductIntroSearchRequest request){ + return ApiResult.success(productIntroService.getList(request)); + } + + /** + * 添加荣誉 + * @param request 请求参数 + */ + @PostMapping("/addHonor") + public ApiResult addHonor(@Valid @RequestBody ProductHonorAddRequest request){ + productHonorService.add(request); + return ApiResult.success(); + } + + /** + * 修改荣誉 + * @param request 请求参数 + */ + @PostMapping("/updateHonor") + public ApiResult updateHonor(@Valid @RequestBody ProductHonorUpdateRequest request){ + productHonorService.update(request); + return ApiResult.success(); + } + + /** + * 获取荣誉列表 + * @param request 请求参数 + */ + @PostMapping("/getHonorList") + public ApiResult> getHonorList(@RequestBody ProductHonorSearchRequest request){ + return ApiResult.success(productHonorService.getList(request)); + } + + /** + * 添加案例 + * @param request 请求参数 + */ + @PostMapping("/addCase") + public ApiResult addCase(@Valid @RequestBody ProductCaseAddRequest request){ + productCaseService.add(request); + return ApiResult.success(); + } + + /** + * 修改案例 + * @param request 请求参数 + */ + @PostMapping("/updateCase") + public ApiResult updateCase(@Valid @RequestBody ProductCaseUpdateRequest request){ + productCaseService.update(request); + return ApiResult.success(); + } + + /** + * 获取案例列表 + * @param request 请求参数 + */ + @PostMapping("/getCaseList") + public ApiResult> getCaseList(@RequestBody ProductCaseSearchRequest request){ + return ApiResult.success(productCaseService.getList(request)); + } +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java new file mode 100644 index 00000000..6e81e3a7 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductModelController.java @@ -0,0 +1,58 @@ +package com.nflg.mobilebroken.admin.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductModelAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductModelSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductModelUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelSearchVO; +import com.nflg.mobilebroken.repository.service.IProductModelService; +import lombok.extern.slf4j.Slf4j; +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 javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 产品中心-产品机型 + */ +@Slf4j +@RestController +@RequestMapping("/product/model") +public class ProductModelController extends ControllerBase{ + + @Resource + private IProductModelService productModelService; + + /** + * 添加机型 + * @param request 请求参数 + */ + @PostMapping("/add") + public ApiResult add(@Valid @RequestBody ProductModelAddRequest request){ + productModelService.add(request); + return ApiResult.success(); + } + + /** + * 修改机型 + * @param request 请求参数 + */ + @PostMapping("/update") + public ApiResult update(@Valid @RequestBody ProductModelUpdateRequest request){ + productModelService.update(request); + return ApiResult.success(); + } + + /** + * 获取机型列表 + * @param request 请求参数 + */ + @PostMapping("/getList") + public ApiResult> getList(@RequestBody ProductModelSearchRequest request){ + return ApiResult.success(productModelService.getList(request)); + } +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductPartController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductPartController.java new file mode 100644 index 00000000..73c90119 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductPartController.java @@ -0,0 +1,67 @@ +package com.nflg.mobilebroken.admin.controller; + +import com.nflg.mobilebroken.common.constant.Constant; +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductPartAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductPartSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductPartUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartSearchVO; +import com.nflg.mobilebroken.repository.service.IProductPartService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + +/** + * 产品中心-部件 + */ +@Slf4j +@RestController +@RequestMapping("/product/part") +public class ProductPartController extends ControllerBase { + + @Resource + private IProductPartService productPartService; + + /** + * 添加部件 + * @param request 请求参数 + */ + @PostMapping("/add") + public ApiResult add(@Valid @RequestBody ProductPartAddRequest request) { + productPartService.add(request); + return ApiResult.success(); + } + + /** + * 修改部件 + * @param request 请求参数 + */ + @PostMapping("/update") + public ApiResult update(@Valid @RequestBody ProductPartUpdateRequest request) { + productPartService.update(request); + return ApiResult.success(); + } + + /** + * 获取部件列表 + * @param request 请求参数 + */ + @PostMapping("/getList") + public ApiResult> getList(@RequestBody ProductPartSearchRequest request) { + return ApiResult.success(productPartService.getList(request)); + } + + /** + * 获取部件详情 + * @param partId 产品部件id + */ + @GetMapping("/getInfo") + public ApiResult getModelInfo(@Valid @RequestParam @NotNull Integer partId) { + return ApiResult.success(productPartService.getInfo(partId, Constant.DEFAULT_LANGUAGE_CODE)); + } +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductSeriesController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductSeriesController.java new file mode 100644 index 00000000..50dd6a70 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductSeriesController.java @@ -0,0 +1,58 @@ +package com.nflg.mobilebroken.admin.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesSearchVO; +import com.nflg.mobilebroken.repository.service.IProductSeriesService; +import lombok.extern.slf4j.Slf4j; +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 javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 产品中心-产品系列 + */ +@Slf4j +@RestController +@RequestMapping("/product/series") +public class ProductSeriesController extends ControllerBase{ + + @Resource + private IProductSeriesService productSeriesService; + + /** + * 添加系列 + * @param request 请求参数 + */ + @PostMapping("/add") + public ApiResult add(@Valid @RequestBody ProductSeriesAddRequest request){ + productSeriesService.add(request); + return ApiResult.success(); + } + + /** + * 修改系列 + * @param request 请求参数 + */ + @PostMapping("/update") + public ApiResult update(@Valid @RequestBody ProductSeriesUpdateRequest request){ + productSeriesService.update(request); + return ApiResult.success(); + } + + /** + * 获取系列列表 + * @param request 请求参数 + */ + @PostMapping("/getList") + public ApiResult> getList(@RequestBody ProductSeriesSearchRequest request){ + return ApiResult.success(productSeriesService.getList(request)); + } +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductTypeController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductTypeController.java new file mode 100644 index 00000000..7ce4b990 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/ProductTypeController.java @@ -0,0 +1,58 @@ +package com.nflg.mobilebroken.admin.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeSearchVO; +import com.nflg.mobilebroken.repository.service.IProductTypeService; +import lombok.extern.slf4j.Slf4j; +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 javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 产品中心-产品类型 + */ +@Slf4j +@RestController +@RequestMapping("/product/type") +public class ProductTypeController extends ControllerBase{ + + @Resource + private IProductTypeService productTypeService; + + /** + * 添加类型 + * @param request 请求参数 + */ + @PostMapping("/add") + public ApiResult add(@Valid @RequestBody ProductTypeAddRequest request){ + productTypeService.add(request); + return ApiResult.success(); + } + + /** + * 修改类型 + * @param request 请求参数 + */ + @PostMapping("/update") + public ApiResult update(@Valid @RequestBody ProductTypeUpdateRequest request){ + productTypeService.update(request); + return ApiResult.success(); + } + + /** + * 获取类型列表 + * @param request 请求参数 + */ + @PostMapping("/getList") + public ApiResult> getList(@RequestBody ProductTypeSearchRequest request){ + return ApiResult.success(productTypeService.getList(request)); + } +} 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 6547d007..3d86c45e 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 @@ -131,11 +131,11 @@ public class TicketController extends ControllerBase { @Resource private UniPushService uniPushService; - @Resource - private ITicketCallService ticketCallService; - - @Resource - private ITicketCallJoinService ticketCallJoinService; +// @Resource +// private ITicketCallService ticketCallService; +// +// @Resource +// private ITicketCallJoinService ticketCallJoinService; /** * 获取问题类型 @@ -1254,7 +1254,7 @@ public class TicketController extends ControllerBase { ) ); ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), ticketId); - ticketCallService.add(ticketId, handlerUserId, ticket.getUserId(), Constant.FROM_ADMIN); +// ticketCallService.add(ticketId, handlerUserId, ticket.getUserId(), Constant.FROM_ADMIN); return ApiResult.success(); } @@ -1266,11 +1266,11 @@ public class TicketController extends ControllerBase { @PostMapping("addCallUser") public ApiResult addCallUser(@Valid @RequestBody CallUserAddRequest request){ AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId()); - TicketCall ticketCall = ticketCallService.lambdaQuery() - .eq(TicketCall::getTicketId, request.getTicketId()) - .eq(TicketCall::getState, 1) - .one(); - VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中"); +// TicketCall ticketCall = ticketCallService.lambdaQuery() +// .eq(TicketCall::getTicketId, request.getTicketId()) +// .eq(TicketCall::getState, 1) +// .one(); +// VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中"); request.getUserIds().forEach(userId->{ AdminUser adminUser1 = adminUserService.getById(userId); if (Objects.nonNull(adminUser1)) { @@ -1292,7 +1292,7 @@ public class TicketController extends ControllerBase { ) ); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); - ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); +// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); }); } }); @@ -1309,9 +1309,9 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许请求通话"); - VUtils.trueThrowBusinessError(ticketCallService.isInCall(AdminUserUtil.getUserId())) - .throwMessage("您已加入别的通话中"); - ticketCallJoinService.join(ticketId, AdminUserUtil.getUserId(),Constant.FROM_ADMIN); +// VUtils.trueThrowBusinessError(ticketCallService.isInCall(AdminUserUtil.getUserId())) +// .throwMessage("您已加入别的通话中"); +// ticketCallJoinService.join(ticketId, AdminUserUtil.getUserId(),Constant.FROM_ADMIN); return ApiResult.success(); } @@ -1321,10 +1321,10 @@ public class TicketController extends ControllerBase { */ @PostMapping("call/hangUp") public ApiResult hangUp(@Valid @RequestBody TicketCallHangUpRequest request) { - TicketCall ticketCall = ticketCallService.lambdaQuery() - .eq(TicketCall::getTicketId, request.getTicketId()) - .ne(TicketCall::getState, 2) - .one(); +// TicketCall ticketCall = ticketCallService.lambdaQuery() +// .eq(TicketCall::getTicketId, request.getTicketId()) +// .ne(TicketCall::getState, 2) +// .one(); if (request.getReject()) { AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId()); if (StrUtil.equals(request.getFrom(), "app")) { @@ -1345,7 +1345,7 @@ public class TicketController extends ControllerBase { ) ); ssePushService.sendTicketCallHangUpToApp(request.getTicketId(), request.getFromUserId(), adminUser); - ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); +// ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); }else if (StrUtil.equals(request.getFrom(), "admin")) { uniPushService.send(new UniPushMessage() .setSenderId("admin-uid-" + adminUser.getId()) @@ -1364,14 +1364,14 @@ public class TicketController extends ControllerBase { ) ); ssePushService.sendTicketCallHangUpToAdmin(request.getTicketId(), request.getFromUserId(), adminUser); - ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); +// ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); } }else { - if (StrUtil.equals(request.getFrom(), "app")) { - ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); - }else { - ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); - } +// if (StrUtil.equals(request.getFrom(), "app")) { +// ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); +// }else { +// ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); +// } } return ApiResult.success(); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AdvertisementController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AdvertisementController.java index 423cbedf..215c9da3 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AdvertisementController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/AdvertisementController.java @@ -19,7 +19,7 @@ import javax.validation.constraints.NotNull; */ @RestController @RequestMapping("/ad") -public class AdvertisementController { +public class AdvertisementController extends ControllerBase{ @Resource private IAdvertisementService advertisementService; diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index 6ec8f3a0..d8c2f082 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.mobilebroken.cfs.publisher.TicketEventPublisher; import com.nflg.mobilebroken.cfs.service.SsePushService; -import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; @@ -93,11 +92,11 @@ public class TicketController extends ControllerBase { @Resource private UniPushService uniPushService; - @Resource - private ITicketCallService ticketCallService; - - @Resource - private ITicketCallJoinService ticketCallJoinService; +// @Resource +// private ITicketCallService ticketCallService; +// +// @Resource +// private ITicketCallJoinService ticketCallJoinService; /** * 搜索设备 @@ -509,7 +508,7 @@ public class TicketController extends ControllerBase { ) ); ssePushService.sendTicketCallToAdmin(appUser, handlerUserId, ticketId); - ticketCallService.add(ticketId, AppUserUtil.getUserId(), handlerUserId, Constant.FROM_APP); +// ticketCallService.add(ticketId, AppUserUtil.getUserId(), handlerUserId, Constant.FROM_APP); return ApiResult.success(); } @@ -523,9 +522,9 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许通话"); - VUtils.trueThrowBusinessError(ticketCallService.isInCall(AppUserUtil.getUserId())) - .throwMessage("您已加入别的通话中"); - ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP); +// VUtils.trueThrowBusinessError(ticketCallService.isInCall(AppUserUtil.getUserId())) +// .throwMessage("您已加入别的通话中"); +// ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP); return ApiResult.success(); } @@ -554,7 +553,7 @@ public class TicketController extends ControllerBase { ) ); ssePushService.sendTicketCallHangUpToAdmin(request.getTicketId(), request.getFromUserId(), appUser); - ticketCallService.hangUp(request.getTicketId(), AppUserUtil.getUserId(), Constant.FROM_APP, true); +// ticketCallService.hangUp(request.getTicketId(), AppUserUtil.getUserId(), Constant.FROM_APP, true); } return ApiResult.success(); } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ProductParamsDTO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ProductParamsDTO.java new file mode 100644 index 00000000..79e689e8 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ProductParamsDTO.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.common.pojo.dto; + +import lombok.Data; + +@Data +public class ProductParamsDTO { + + /** + * 字典ID + */ + private Integer dictionaryId; + + /** + * 字典值 + */ + private String dictionaryName; + + /** + * 字典项ID + */ + private Integer dictionaryItemId; + + /** + * 字典项值 + */ + private String dictionaryItemName; + + /** + * 参数值 + */ + private String value; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseAddRequest.java new file mode 100644 index 00000000..e0f3445a --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseAddRequest.java @@ -0,0 +1,29 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProductCaseAddRequest { + + /** + * 标题 + */ + private String title; + + /** + * 排序 + */ + private int sort; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 多语言数据 + */ + private List items; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseInfoAddRequest.java new file mode 100644 index 00000000..cff7ee1a --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseInfoAddRequest.java @@ -0,0 +1,29 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductCaseInfoAddRequest { + + private Integer id; + + /** + * 语言编码 + */ + private String languageCode; + + /** + * 描述 + */ + private String desc; + + /** + * 图片 + */ + private String image; + + /** + * 视频 + */ + private String video; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseSearchRequest.java new file mode 100644 index 00000000..cf00b44d --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseSearchRequest.java @@ -0,0 +1,29 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class ProductCaseSearchRequest extends PageRequest { + + /** + * 标题 + */ + private String title; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 开始时间 + */ + private LocalDate startDate; + + /** + * 结束时间 + */ + private LocalDate endDate; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseUpdateRequest.java new file mode 100644 index 00000000..be10d090 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductCaseUpdateRequest.java @@ -0,0 +1,12 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProductCaseUpdateRequest extends ProductCaseAddRequest{ + + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorAddRequest.java new file mode 100644 index 00000000..6c794b47 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorAddRequest.java @@ -0,0 +1,25 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class ProductHonorAddRequest { + + /** + * 获得时间 + */ + private LocalDate obtainingTime; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 多语言数据 + */ + private List items; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorInfoAddRequest.java new file mode 100644 index 00000000..c1f76d6b --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorInfoAddRequest.java @@ -0,0 +1,27 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductHonorInfoAddRequest { + + /** + * id, 新增时为空 + */ + private Integer id; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 标题 + */ + private String title; + + /** + * 图片 + */ + private String image; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorSearchRequest.java new file mode 100644 index 00000000..5cd43b19 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorSearchRequest.java @@ -0,0 +1,29 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class ProductHonorSearchRequest extends PageRequest { + + /** + * 标题 + */ + private String title; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 起始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; +} \ No newline at end of file diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorUpdateRequest.java new file mode 100644 index 00000000..6c0e9fe9 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductHonorUpdateRequest.java @@ -0,0 +1,12 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProductHonorUpdateRequest extends ProductHonorAddRequest { + + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroAddRequest.java new file mode 100644 index 00000000..83cb3fff --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroAddRequest.java @@ -0,0 +1,33 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class ProductIntroAddRequest { + + /** + * 字典项id + */ + @NotNull + private Integer dictionaryItemId; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 排序 + */ + private int sort; + + /** + * 详情 + */ + @Valid + private List items; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroInfoAddRequest.java new file mode 100644 index 00000000..254c986b --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroInfoAddRequest.java @@ -0,0 +1,42 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ProductIntroInfoAddRequest { + + /** + * 多语言详情id,添加时为空 + */ + private Integer id; + + /** + * 语言代码 + */ + @NotBlank + private String languageCode; + + /** + * 标题 + */ + @NotBlank + private String name; + + /** + * 内容 + */ + @NotBlank + private String desc; + + /** + * 图片地址 + */ + private String image; + + /** + * 图片位置,1:左边;2:右边 + */ + private Integer imagePosition; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroSearchRequest.java new file mode 100644 index 00000000..d8f7084c --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroSearchRequest.java @@ -0,0 +1,23 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import java.time.LocalDate; + +public class ProductIntroSearchRequest extends PageRequest{ + + private Integer dictionaryItemId; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 起始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroUpdateRequest.java new file mode 100644 index 00000000..1d615d07 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductIntroUpdateRequest.java @@ -0,0 +1,14 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; + +@EqualsAndHashCode(callSuper = true) +@Data +public class ProductIntroUpdateRequest extends ProductIntroAddRequest { + + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelAddRequest.java new file mode 100644 index 00000000..b10e3f76 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelAddRequest.java @@ -0,0 +1,46 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class ProductModelAddRequest { + + /** + * 产品类型ID + */ + @NotNull + private Integer typeId; + + /** + * 排序 + */ + private Integer sort; + + /** + * 热点图片 + */ + private String hotImage; + + /** + * 多语言数据 + */ + private List items; + + /** + * 图册 + */ + private List images; + + /** + * 视频 + */ + private List videos; + + /** + * 参数 + */ + private List params; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelImageAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelImageAddRequest.java new file mode 100644 index 00000000..15e663e3 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelImageAddRequest.java @@ -0,0 +1,27 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductModelImageAddRequest { + + /** + * 主键,添加时为空 + */ + private Integer id; + + /** + * 语言编码 + */ + private String languageCode; + + /** + * 图片 + */ + private String image; + + /** + * 描述 + */ + private String content; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelInfoAddRequest.java new file mode 100644 index 00000000..d7d5dafc --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelInfoAddRequest.java @@ -0,0 +1,37 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductModelInfoAddRequest { + + /** + * 主键,添加时为空 + */ + private Integer id; + + /** + * 模型id + */ + private Integer modelId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 名称 + */ + private String name; + + /** + * 描述 + */ + private String desc; + + /** + * 图片或者视频地址 + */ + private String url; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelSearchRequest.java new file mode 100644 index 00000000..f5ec5855 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelSearchRequest.java @@ -0,0 +1,31 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; + +@Data +public class ProductModelSearchRequest extends PageRequest{ + + /** + * 产品类型ID + */ + @NotNull + private Integer typeId; + + /** + * 名称 + */ + private String name; + + /** + * 起始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelUpdateRequest.java new file mode 100644 index 00000000..2743e9e9 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelUpdateRequest.java @@ -0,0 +1,15 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProductModelUpdateRequest extends ProductModelAddRequest{ + + /** + * 主键 + */ + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelVideoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelVideoAddRequest.java new file mode 100644 index 00000000..cfae6a54 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductModelVideoAddRequest.java @@ -0,0 +1,12 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductModelVideoAddRequest extends ProductModelImageAddRequest{ + + /** + * 视频地址 + */ + private String video; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductParamsAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductParamsAddRequest.java new file mode 100644 index 00000000..e36f270e --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductParamsAddRequest.java @@ -0,0 +1,27 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductParamsAddRequest { + + /** + * 主键,添加时为空 + */ + private Integer id; + + /** + * 字典项ID + */ + private Integer dictionaryItemId; + + /** + * 语言编码 + */ + private String languageCode; + + /** + * 值 + */ + private String value; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartAddRequest.java new file mode 100644 index 00000000..3e5ac650 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartAddRequest.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProductPartAddRequest { + + /** + * 物料变化 + */ + private String materialNo; + + /** + * 多语言数据 + */ + private List items; + + /** + * 参数 + */ + private List params; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartInfoAddRequest.java new file mode 100644 index 00000000..ddb5f576 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartInfoAddRequest.java @@ -0,0 +1,37 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ProductPartInfoAddRequest { + + /** + * 主键,添加时为空 + */ + private Integer id; + + /** + * 语言代码 + */ + @NotBlank + private String languageCode; + + /** + * 名称 + */ + private String name; + + /** + * 介绍 + */ + @TableField(value = "`desc`") + private String desc; + + /** + * 视频或者图片地址 + */ + private String url; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartSearchRequest.java new file mode 100644 index 00000000..a9141cdb --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartSearchRequest.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class ProductPartSearchRequest extends PageRequest { + + /** + * 名称 + */ + private String name; + + /** + * 起始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartUpdateRequest.java new file mode 100644 index 00000000..63542e27 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductPartUpdateRequest.java @@ -0,0 +1,15 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProductPartUpdateRequest extends ProductPartAddRequest{ + + /** + * 主键 + */ + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesAddRequest.java new file mode 100644 index 00000000..53d1e981 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesAddRequest.java @@ -0,0 +1,19 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProductSeriesAddRequest { + + /** + * 排序 + */ + private Integer sort; + + /** + * 多语言数据 + */ + private List items; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesInfoAddRequest.java new file mode 100644 index 00000000..20bb5c72 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesInfoAddRequest.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductSeriesInfoAddRequest { + + private Integer id; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 图片 + */ + private String image; + + /** + * 内容 + */ + private String content; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesSearchRequest.java new file mode 100644 index 00000000..41787407 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesSearchRequest.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class ProductSeriesSearchRequest extends PageRequest{ + + /** + * 名称 + */ + private String name; + + /** + * 起始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesUpdateRequest.java new file mode 100644 index 00000000..09e69e9e --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductSeriesUpdateRequest.java @@ -0,0 +1,12 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProductSeriesUpdateRequest extends ProductSeriesAddRequest { + + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeAddRequest.java new file mode 100644 index 00000000..8b5efa22 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeAddRequest.java @@ -0,0 +1,31 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class ProductTypeAddRequest { + + /** + * 系列id + */ + @NotNull + private Integer seriesId; + + /** + * 名称 + */ + private String name; + + /** + * 排序 + */ + private Integer sort; + + /** + * 多语言数据 + */ + private List items; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeInfoAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeInfoAddRequest.java new file mode 100644 index 00000000..7da69949 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeInfoAddRequest.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class ProductTypeInfoAddRequest { + + /** + * 主键,添加时为空 + */ + private Integer id; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 名称 + */ + private String name; + + /** + * 图片 + */ + private String image; + + /** + * 内容 + */ + private String content; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeSearchRequest.java new file mode 100644 index 00000000..74e0e3c2 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeSearchRequest.java @@ -0,0 +1,31 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; + +@Data +public class ProductTypeSearchRequest extends PageRequest{ + + /** + * 系列ID + */ + @NotNull + private Integer seriesId; + + /** + * 名称 + */ + private String name; + + /** + * 起始时间 + */ + private LocalDate startTime; + + /** + * 结束时间 + */ + private LocalDate endTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeUpdateRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeUpdateRequest.java new file mode 100644 index 00000000..bffa3c2d --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ProductTypeUpdateRequest.java @@ -0,0 +1,15 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class ProductTypeUpdateRequest extends ProductTypeAddRequest{ + + /** + * 主键 + */ + @NotNull + private Integer id; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseSearchVO.java new file mode 100644 index 00000000..a5da4bc3 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseSearchVO.java @@ -0,0 +1,46 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ProductCaseSearchVO { + + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseVO.java new file mode 100644 index 00000000..37f14163 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductCaseVO.java @@ -0,0 +1,22 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductCaseVO { + + /** + * 描述 + */ + private String desc; + + /** + * 视频封面图片 + */ + private String image; + + /** + * 视频地址 + */ + private String video; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductFileVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductFileVO.java new file mode 100644 index 00000000..b21352c5 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductFileVO.java @@ -0,0 +1,27 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductFileVO { + + /** + * 文件名 + */ + private String name; + + /** + * 文件类型 + */ + private String type; + + /** + * 文件地址 + */ + private String url; + + /** + * 文件大小,单位KB + */ + private Integer size; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorSearchVO.java new file mode 100644 index 00000000..3f0c6ded --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorSearchVO.java @@ -0,0 +1,40 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class ProductHonorSearchVO { + + /** + * 标题 + */ + private String title; + + /** + * 获得时间 + */ + private LocalDate obtainingTime; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorVO.java new file mode 100644 index 00000000..049284b5 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductHonorVO.java @@ -0,0 +1,22 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductHonorVO { + + /** + * 年份 + **/ + private int year; + + /** + * 荣誉名称 + **/ + private String title; + + /** + * 荣誉图片 + **/ + private String image; +} \ No newline at end of file diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductImageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductImageVO.java new file mode 100644 index 00000000..ed6f6209 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductImageVO.java @@ -0,0 +1,17 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductImageVO { + + /** + * 图片地址 + */ + private String url; + + /** + * 描述 + */ + private String content; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroSearchVO.java new file mode 100644 index 00000000..5f32c4d5 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroSearchVO.java @@ -0,0 +1,46 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ProductIntroSearchVO { + + private Integer id; + + /** + * 字典项id + */ + private Integer dictionaryItemId; + + /** + * 字典项名称 + */ + private String dictionaryItemName; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} \ No newline at end of file diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroVO.java new file mode 100644 index 00000000..ea77da3a --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductIntroVO.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductIntroVO { + + /** + * 字典项名称 + */ + private String dictionaryItemName; + + /** + * 标题 + */ + private String name; + + /** + * 内容 + */ + private String desc; + + /** + * 图片地址 + */ + private String image; + + /** + * 图片位置,1:左边;2:右边 + */ + private Integer imagePosition; +} \ No newline at end of file diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelInfoVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelInfoVO.java new file mode 100644 index 00000000..c9aecaa7 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelInfoVO.java @@ -0,0 +1,46 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProductModelInfoVO { + + private Integer id; + + /** + * 名称 + */ + private String name; + + /** + * 描述 + */ + private String desc; + + /** + * 图片或者视频地址 + */ + private String url; + + /** + * 热点图片 + */ + private String hotImage; + + /** + * 产品图册 + */ + private List images; + + /** + * 产品视频 + */ + private List videos; + + /** + * 产品资料 + */ + private List files; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelParamsVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelParamsVO.java new file mode 100644 index 00000000..de0b22cd --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelParamsVO.java @@ -0,0 +1,28 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class ProductModelParamsVO { + + private Integer id; + + /** + * 机型名称 + */ + private String name; + + /** + * 机型图片 + */ + private String url; + + /** + * 机型参数列表 + */ + private List params; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelSearchVO.java new file mode 100644 index 00000000..4e44c26f --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelSearchVO.java @@ -0,0 +1,41 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ProductModelSearchVO { + + private Integer id; + + /** + * 名称 + */ + private String name; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelVO.java new file mode 100644 index 00000000..5080f9bc --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductModelVO.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductModelVO { + + private Integer id; + + /** + * 机型名称 + */ + private String name; + + /** + * 机型描述 + */ + private String desc; + + /** + * 图片或者视频url + */ + private String url; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsInfoVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsInfoVO.java new file mode 100644 index 00000000..0372b3fd --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsInfoVO.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class ProductParamsInfoVO { + + /** + * 字典项ID + */ + private Integer dictionaryItemId; + + /** + * 字典项值 + */ + private String dictionaryItemName; + + /** + * 参数值 + */ + private String value; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsVO.java new file mode 100644 index 00000000..9d1c71e5 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductParamsVO.java @@ -0,0 +1,26 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class ProductParamsVO { + + /** + * 字典ID + */ + private Integer dictionaryId; + + /** + * 字典值 + */ + private String dictionaryName; + + /** + * 参数列表 + */ + private List items; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoVO.java new file mode 100644 index 00000000..5c47d694 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartInfoVO.java @@ -0,0 +1,36 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class ProductPartInfoVO { + + private Integer id; + + /** + * 名称 + */ + private String name; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 描述 + */ + private String desc; + + /** + * 图片 + */ + private String url; + + /** + * 参数 + */ + private List params; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartSearchVO.java new file mode 100644 index 00000000..99b5d215 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductPartSearchVO.java @@ -0,0 +1,41 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ProductPartSearchVO { + + private Integer id; + + /** + * 名称 + */ + private String name; + + /** + * 物料编号 + */ + private String materialNo; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesSearchVO.java new file mode 100644 index 00000000..c4fac8d4 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesSearchVO.java @@ -0,0 +1,41 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ProductSeriesSearchVO { + + private Integer id; + + /** + * 系列名称 + */ + private String name; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesVO.java new file mode 100644 index 00000000..299965d2 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductSeriesVO.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductSeriesVO { + + private Integer id; + + /** + * 系列名称 + */ + private String name; + + /** + * 内容 + */ + private String content; + + /** + * 图片 + */ + private String image; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeSearchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeSearchVO.java new file mode 100644 index 00000000..f1d48f35 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeSearchVO.java @@ -0,0 +1,41 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ProductTypeSearchVO { + + private Integer id; + + /** + * 类型名称 + */ + private String name; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeVO.java new file mode 100644 index 00000000..9af7b2d0 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductTypeVO.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductTypeVO { + + private Integer id; + + /** + * 类型名称 + */ + private String name; + + /** + * 类型图片 + */ + private String image; + + /** + * 类型介绍 + */ + private String content; +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductVideoVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductVideoVO.java new file mode 100644 index 00000000..eaa05bbb --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ProductVideoVO.java @@ -0,0 +1,12 @@ +package com.nflg.mobilebroken.common.pojo.vo; + +import lombok.Data; + +@Data +public class ProductVideoVO extends ProductImageVO{ + + /** + * 视频地址 + */ + private String video; +} diff --git a/nflg-mobilebroken-product/pom.xml b/nflg-mobilebroken-product/pom.xml new file mode 100644 index 00000000..610bf619 --- /dev/null +++ b/nflg-mobilebroken-product/pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + + com.nflg + nflg-mobilebroken + 1.0.0-SNAPSHOT + + nflg-mobilebroken-product + 1.0.0-SNAPSHOT + 服务-产品中心 + 产品中心 + jar + + + com.nflg + nflg-mobilebroken-common + + + com.nflg + nflg-mobilebroken-starter + + + org.springframework.boot + spring-boot-starter + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + org.junit.jupiter + junit-jupiter + test + + + org.springframework.boot + spring-boot-starter-web + + + com.nflg + nflg-mobilebroken-repository + + + org.springframework.boot + spring-boot-starter-validation + + + cn.dev33 + sa-token-spring-boot-starter + + + cn.dev33 + sa-token-redis-jackson + + + org.apache.commons + commons-pool2 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + + diff --git a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/ProductApplication.java b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/ProductApplication.java new file mode 100644 index 00000000..a40c0d7e --- /dev/null +++ b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/ProductApplication.java @@ -0,0 +1,31 @@ +package com.nflg.mobilebroken.product; + +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; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@MapperScan("com.nflg.mobilebroken.repository.mapper") +@ComponentScan(basePackages = { + "com.nflg.mobilebroken.repository.service" + , "com.nflg.mobilebroken.product" + , "com.nflg.mobilebroken.starter" +}) +@EnableDiscoveryClient +@EnableScheduling +@Slf4j +@EnableAsync +public class ProductApplication { + + public static void main(String[] args) { + SpringApplication.run(ProductApplication.class, args); + log.info("启动成功,Sa-Token 配置如下:" + SaManager.getConfig()); + } + +} diff --git a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/AdvertisementController.java b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/AdvertisementController.java new file mode 100644 index 00000000..8005764a --- /dev/null +++ b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/AdvertisementController.java @@ -0,0 +1,36 @@ +package com.nflg.mobilebroken.product.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.request.AdvertisementRequst; +import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO; +import com.nflg.mobilebroken.repository.service.IAdvertisementService; +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 javax.annotation.Resource; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + +/** + * 广告相关接口 + * @author 曹鹏飞 + */ +@RestController +@RequestMapping("/ad") +public class AdvertisementController extends BaseController{ + + @Resource + private IAdvertisementService advertisementService; + + /** + * 根据类型获取广告 + * @param request 请求参数 + * @return 广告列表 + */ + @PostMapping("getByType") + public ApiResult getAdvertisement(@Valid @RequestBody @NotNull AdvertisementRequst request){ + return ApiResult.success(advertisementService.getByType(request.getType(),request.getPosition())); + } +} diff --git a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/BaseController.java b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/BaseController.java new file mode 100644 index 00000000..de5dc5a6 --- /dev/null +++ b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/BaseController.java @@ -0,0 +1,9 @@ +package com.nflg.mobilebroken.product.controller; + +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +@Validated +@RestController +public class BaseController { +} diff --git a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/DataController.java b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/DataController.java new file mode 100644 index 00000000..cf252f64 --- /dev/null +++ b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/DataController.java @@ -0,0 +1,80 @@ +package com.nflg.mobilebroken.product.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.vo.*; +import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.service.IProductModelService; +import com.nflg.mobilebroken.repository.service.IProductSeriesService; +import com.nflg.mobilebroken.repository.service.IProductTypeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 系列 + */ +@Slf4j +@RestController +@RequestMapping("/data") +public class DataController extends BaseController{ + + @Resource + private IProductSeriesService productSeriesService; + + @Resource + private IProductTypeService productTypeService; + + @Resource + private IProductModelService productModelService; + + /** + * 获取产品系列列表 + */ + @GetMapping("/getSeries") + public ApiResult> getSeries(){ + return ApiResult.success(productSeriesService.get(MultilingualUtil.getLanguage())); + } + + /** + * 获取产品类型列表 + * @param seriesId 产品系列id + */ + @GetMapping("/getType") + public ApiResult> getType(@Valid @RequestParam @NotNull Integer seriesId){ + return ApiResult.success(productTypeService.get(seriesId,MultilingualUtil.getLanguage())); + } + + /** + * 获取产品机型列表 + * @param typeId 产品类型id + */ + @GetMapping("/getModel") + public ApiResult> getModel(@Valid @RequestParam @NotNull Integer typeId){ + return ApiResult.success(productModelService.get(typeId,MultilingualUtil.getLanguage())); + } + + /** + * 获取产品机型详情 + * @param modelId 产品机型id + */ + @GetMapping("/getModelInfo") + public ApiResult getModelInfo(@Valid @RequestParam @NotNull Integer modelId){ + return ApiResult.success(productModelService.getInfo(modelId,MultilingualUtil.getLanguage())); + } + + /** + * 获取产品机型参数列表 + * @param modelId 产品机型id + */ + @GetMapping("/getModelParams") + public ApiResult getModelParams(@Valid @RequestParam @NotNull Integer modelId){ + return ApiResult.success(productModelService.getParams(modelId,MultilingualUtil.getLanguage())); + } +} diff --git a/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/InfoController.java b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/InfoController.java new file mode 100644 index 00000000..b4aa2352 --- /dev/null +++ b/nflg-mobilebroken-product/src/main/java/com/nflg/mobilebroken/product/controller/InfoController.java @@ -0,0 +1,59 @@ +package com.nflg.mobilebroken.product.controller; + +import com.nflg.mobilebroken.common.pojo.ApiResult; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroVO; +import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.service.IProductCaseService; +import com.nflg.mobilebroken.repository.service.IProductHonorService; +import com.nflg.mobilebroken.repository.service.IProductIntroService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 基础信息 + */ +@Slf4j +@RestController +@RequestMapping("/base") +public class InfoController extends BaseController{ + + @Resource + private IProductIntroService productIntroService; + + @Resource + private IProductHonorService productHonorService; + + @Resource + private IProductCaseService productCaseService; + + /** + * 获取多语言环境介绍 + */ + @GetMapping("/getIntro") + public ApiResult> getIntro(){ + return ApiResult.success(productIntroService.get(MultilingualUtil.getLanguage())); + } + + /** + * 获取多语言环境荣誉 + */ + @GetMapping("/getHonor") + public ApiResult> getHonor(){ + return ApiResult.success(productHonorService.get(MultilingualUtil.getLanguage())); + } + + /** + * 获取多语言环境案例 + */ + @GetMapping("/getCase") + public ApiResult> getCase(){ + return ApiResult.success(productCaseService.get(MultilingualUtil.getLanguage())); + } +} diff --git a/nflg-mobilebroken-product/src/main/resources/bootstrap-dev.properties b/nflg-mobilebroken-product/src/main/resources/bootstrap-dev.properties new file mode 100644 index 00000000..3e8f7af9 --- /dev/null +++ b/nflg-mobilebroken-product/src/main/resources/bootstrap-dev.properties @@ -0,0 +1,15 @@ +# Nacos 地址 +nacos.server-addr=${NACOS_SERVER_ADDR:112.74.186.154:8848} +#nacos.server-addr=192.168.0.194:8848 +#spring.cloud.nacos.discovery.username=nacos +#spring.cloud.nacos.discovery.password=ZLQ8vgmjoJ4?EPJ4]fs_ +#spring.config.activate.on-profile=dev +logging.level.com.nflg=DEBUG +logging.level.com.alibaba.cloud.nacos.config=DEBUG + +#spring.datasource.url=jdbc:mysql://112.74.186.154:13151/mobilebroken?useUnicode=true&characterEncoding=utf8mb4&tinyInt1isBit=false&useSSL=false&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=GMT%2B8 +#spring.datasource.username=nflg +#spring.datasource.password=Aciga@2022 +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +logging.config=classpath:logback-sit.xml \ No newline at end of file diff --git a/nflg-mobilebroken-product/src/main/resources/bootstrap.properties b/nflg-mobilebroken-product/src/main/resources/bootstrap.properties new file mode 100644 index 00000000..9696db1d --- /dev/null +++ b/nflg-mobilebroken-product/src/main/resources/bootstrap.properties @@ -0,0 +1,31 @@ +spring.application.name=product +spring.profiles.active=dev +server.port=8084 +# 设置最大文件大小 (默认为1MB) +spring.servlet.multipart.max-file-size=100MB +# 设置所有文件总大小 (默认为10MB) +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.com.alibaba.nacos.client=DEBUG +#logging.level.org.springframework.boot.context.config=DEBUG +#logging.config=classpath:logback-sit.xml + +# 启用服务发现自动路由 +spring.cloud.gateway.discovery.locator.enabled=true +spring.cloud.nacos.config.namespace=mobilebroken +spring.cloud.nacos.config.group=${spring.profiles.active} +spring.cloud.nacos.config.server-addr=${nacos.server-addr} +spring.cloud.nacos.config.file-extension=properties +spring.cloud.nacos.config.extension-configs[0].data-id=shared.properties +spring.cloud.nacos.config.extension-configs[0].group=${spring.profiles.active} +spring.cloud.nacos.config.extension-configs[0].refresh=true +spring.cloud.nacos.discovery.server-addr=${nacos.server-addr} +spring.cloud.nacos.discovery.namespace=mobilebroken +spring.cloud.nacos.discovery.group=${spring.profiles.active} +spring.cloud.nacos.discovery.metadata.env=${spring.profiles.active} + +# 日期格式 +spring.jackson.date-format=yyyy-MM-dd HH:mm:ss +spring.jackson.time-zone=GMT+8 \ No newline at end of file diff --git a/nflg-mobilebroken-product/src/main/resources/logback-sit.xml b/nflg-mobilebroken-product/src/main/resources/logback-sit.xml new file mode 100644 index 00000000..56d1e532 --- /dev/null +++ b/nflg-mobilebroken-product/src/main/resources/logback-sit.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{10} %msg%n + + + + + + + debug + + ${logDir}/mobilebroken-product.log + + + ${logDir}/%d{yyyy-MM-dd}.%i.log + + 15 + + true + + ${splitSize} + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} [%thread] %-5level %logger{50} %msg%n + + + + + + + + + + + + \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCase.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCase.java new file mode 100644 index 00000000..fd094ade --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCase.java @@ -0,0 +1,66 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-案例 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_case") +public class ProductCase implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 标题 + */ + private String title; + + /** + * 排序 + */ + private Integer sort; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCaseInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCaseInfo.java new file mode 100644 index 00000000..8f220377 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductCaseInfo.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-案例-详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_case_info") +public class ProductCaseInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 案例id + */ + private Integer caseId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 描述 + */ + private String desc; + + /** + * 视频封面图片地址 + */ + private String image; + + /** + * 视频地址 + */ + private String video; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonor.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonor.java new file mode 100644 index 00000000..9c02a3d2 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonor.java @@ -0,0 +1,62 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-荣誉 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_honor") +public class ProductHonor implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 获得时间 + */ + private LocalDate obtainingTime; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonorInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonorInfo.java new file mode 100644 index 00000000..36b9602f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductHonorInfo.java @@ -0,0 +1,71 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-荣誉详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_honor_info") +public class ProductHonorInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 荣誉id + */ + private Integer honorId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 标题 + */ + private String title; + + /** + * 图片地址 + */ + private String image; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntro.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntro.java new file mode 100644 index 00000000..49d2f922 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntro.java @@ -0,0 +1,66 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-介绍 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_intro") +public class ProductIntro implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 字典值id + */ + private Integer dictionaryItemId; + + /** + * 排序 + */ + private Integer sort; + + /** + * 是否启用 + */ + private Boolean enable; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntroInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntroInfo.java new file mode 100644 index 00000000..463701b4 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductIntroInfo.java @@ -0,0 +1,81 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-介绍详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_intro_info") +public class ProductIntroInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 介绍id + */ + private Integer introId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 标题 + */ + private String name; + + /** + * 内容 + */ + private String desc; + + /** + * 图片地址 + */ + private String image; + + /** + * 图片位置,1:左边;2:右边 + */ + private Integer imagePosition; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModel.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModel.java new file mode 100644 index 00000000..a14a07e7 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModel.java @@ -0,0 +1,66 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品机型 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_model") +public class ProductModel implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 产品类型id + */ + private Integer typeId; + + /** + * 热点图片 + */ + private String hotImage; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelFile.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelFile.java new file mode 100644 index 00000000..96d35c59 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelFile.java @@ -0,0 +1,81 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品机型-文件 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_model_file") +public class ProductModelFile implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 产品机型id + */ + private Integer modelId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 文件名称 + */ + private String name; + + /** + * 文件后缀 + */ + private String type; + + /** + * 下载地址 + */ + private String url; + + /** + * 文件大小,单位KB + */ + private Integer size; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelImage.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelImage.java new file mode 100644 index 00000000..0f5bddaf --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelImage.java @@ -0,0 +1,71 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品机型-图片 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_model_image") +public class ProductModelImage implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 产品机型id + */ + private Integer modelId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 图片描述 + */ + private String content; + + /** + * 图片地址 + */ + private String image; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelInfo.java new file mode 100644 index 00000000..26807a7b --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelInfo.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-机型详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_model_info") +public class ProductModelInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 机型id + */ + private Integer modeId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 机型名称 + */ + private String name; + + /** + * 机型介绍 + */ + private String desc; + + /** + * 视频或者图片地址 + */ + private String url; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelParams.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelParams.java new file mode 100644 index 00000000..23f65751 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelParams.java @@ -0,0 +1,71 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-机型-参数 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_model_params") +public class ProductModelParams implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 机型id + */ + private Integer modelId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 字典值id + */ + private Integer dictionaryItemId; + + /** + * 参数值 + */ + private String value; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelVideo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelVideo.java new file mode 100644 index 00000000..738e6567 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductModelVideo.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品机型-视频 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_model_video") +public class ProductModelVideo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 产品机型id + */ + private Integer modelId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 视频地址 + */ + private String video; + + /** + * 视频描述 + */ + private String content; + + /** + * 视频封面地址 + */ + private String image; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPart.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPart.java new file mode 100644 index 00000000..1220cf55 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPart.java @@ -0,0 +1,56 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-部件 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_part") +public class ProductPart implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 物料编码 + */ + private String materialNo; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartInfo.java new file mode 100644 index 00000000..bdc5d647 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartInfo.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-部件详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_part_info") +public class ProductPartInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 部件id + */ + private Integer partId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 部件名称 + */ + private String name; + + /** + * 部件介绍 + */ + private String desc; + + /** + * 视频或者图片地址 + */ + private String url; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartParams.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartParams.java new file mode 100644 index 00000000..ba7af94f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductPartParams.java @@ -0,0 +1,71 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-部件-参数 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_part_params") +public class ProductPartParams implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 部件id + */ + private Integer partId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 字典值id + */ + private Integer dictionaryItemId; + + /** + * 参数值 + */ + private String value; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeries.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeries.java new file mode 100644 index 00000000..9febf898 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeries.java @@ -0,0 +1,56 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品系列 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_series") +public class ProductSeries implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeriesInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeriesInfo.java new file mode 100644 index 00000000..a0153e1f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductSeriesInfo.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品系列详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_series_info") +public class ProductSeriesInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 产品系列id + */ + private Integer seriesId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 名称 + */ + private String name; + + /** + * 图片地址 + */ + private String image; + + /** + * 内容 + */ + private String content; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductType.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductType.java new file mode 100644 index 00000000..18b00030 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductType.java @@ -0,0 +1,61 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品类型 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_type") +public class ProductType implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 系列id + */ + private Integer seriesId; + + /** + * 排序 + */ + private Integer sort; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductTypeInfo.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductTypeInfo.java new file mode 100644 index 00000000..16a43609 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/ProductTypeInfo.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 产品中心-产品类型详情 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Getter +@Setter +@Accessors(chain = true) +@TableName("product_type_info") +public class ProductTypeInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 产品类型id + */ + private Integer typeId; + + /** + * 语言代码 + */ + private String languageCode; + + /** + * 名称 + */ + private String name; + + /** + * 内容 + */ + private String content; + + /** + * 图片地址 + */ + private String image; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新人 + */ + private String updateBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseInfoMapper.java new file mode 100644 index 00000000..11eba438 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductCaseInfo; + +/** + *

+ * 产品中心-案例-详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductCaseInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseMapper.java new file mode 100644 index 00000000..6ff18d36 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductCaseMapper.java @@ -0,0 +1,19 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseVO; +import com.nflg.mobilebroken.repository.entity.ProductCase; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductCaseMapper extends BaseMapper { + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorInfoMapper.java new file mode 100644 index 00000000..00099b8c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductHonorInfo; + +/** + *

+ * 产品中心-荣誉详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductHonorInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorMapper.java new file mode 100644 index 00000000..9611f3f0 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductHonorMapper.java @@ -0,0 +1,26 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorVO; +import com.nflg.mobilebroken.repository.entity.ProductHonor; + +import java.util.List; + +/** + *

+ * 产品中心-荣誉 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductHonorMapper extends BaseMapper { + + IPage getList(ProductHonorSearchRequest request, Page page); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroInfoMapper.java new file mode 100644 index 00000000..26079026 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductIntroInfo; + +/** + *

+ * 产品中心-介绍详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductIntroInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroMapper.java new file mode 100644 index 00000000..a583105b --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductIntroMapper.java @@ -0,0 +1,26 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroVO; +import com.nflg.mobilebroken.repository.entity.ProductIntro; + +import java.util.List; + +/** + *

+ * 产品中心-介绍 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductIntroMapper extends BaseMapper { + + IPage getList(ProductIntroSearchRequest request, Page page); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelFileMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelFileMapper.java new file mode 100644 index 00000000..84087bbc --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelFileMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductModelFile; + +/** + *

+ * 产品中心-产品机型-文件 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductModelFileMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelImageMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelImageMapper.java new file mode 100644 index 00000000..3903f5cc --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelImageMapper.java @@ -0,0 +1,15 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductModelImage; + +/** + *

+ * 产品中心-产品机型-图片 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductModelImageMapper extends BaseMapper { +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelInfoMapper.java new file mode 100644 index 00000000..8918f1f4 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductModelInfo; + +/** + *

+ * 产品中心-机型详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductModelInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelMapper.java new file mode 100644 index 00000000..a8bd7339 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelMapper.java @@ -0,0 +1,29 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductModelSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelVO; +import com.nflg.mobilebroken.repository.entity.ProductModel; + +import java.util.List; + +/** + *

+ * 产品中心-产品机型 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductModelMapper extends BaseMapper { + + PageData getList(ProductModelSearchRequest request, Page page); + + List get(Integer typeId, String language); + + ProductModelInfoVO getInfo(Integer modelId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java new file mode 100644 index 00000000..0017b484 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelParamsMapper.java @@ -0,0 +1,20 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.common.pojo.dto.ProductParamsDTO; +import com.nflg.mobilebroken.repository.entity.ProductModelParams; + +import java.util.List; + +/** + *

+ * 产品中心-机型-参数 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductModelParamsMapper extends BaseMapper { + + List getInfo(Integer modelId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelVideoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelVideoMapper.java new file mode 100644 index 00000000..f5407dce --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductModelVideoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductModelVideo; + +/** + *

+ * 产品中心-产品机型-视频 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductModelVideoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartInfoMapper.java new file mode 100644 index 00000000..389db4a9 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductPartInfo; + +/** + *

+ * 产品中心-部件详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductPartInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java new file mode 100644 index 00000000..d1f10818 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartMapper.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductPartSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartSearchVO; +import com.nflg.mobilebroken.repository.entity.ProductPart; + +/** + *

+ * 产品中心-部件 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductPartMapper extends BaseMapper { + + PageData getList(ProductPartSearchRequest request, Page page); + + ProductPartInfoVO getInfo(Integer partId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartParamsMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartParamsMapper.java new file mode 100644 index 00000000..0228f407 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductPartParamsMapper.java @@ -0,0 +1,20 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.common.pojo.dto.ProductParamsDTO; +import com.nflg.mobilebroken.repository.entity.ProductPartParams; + +import java.util.List; + +/** + *

+ * 产品中心-部件-参数 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductPartParamsMapper extends BaseMapper { + + List getInfo(Integer partId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesInfoMapper.java new file mode 100644 index 00000000..c653b3c1 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductSeriesInfo; + +/** + *

+ * 产品中心-产品系列详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductSeriesInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesMapper.java new file mode 100644 index 00000000..e72553b1 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductSeriesMapper.java @@ -0,0 +1,26 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesVO; +import com.nflg.mobilebroken.repository.entity.ProductSeries; + +import java.util.List; + +/** + *

+ * 产品中心-产品系列 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductSeriesMapper extends BaseMapper { + + PageData getList(ProductSeriesSearchRequest request, Page page); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java new file mode 100644 index 00000000..47306c57 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeInfoMapper.java @@ -0,0 +1,16 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nflg.mobilebroken.repository.entity.ProductTypeInfo; + +/** + *

+ * 产品中心-产品类型详情 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductTypeInfoMapper extends BaseMapper { + +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeMapper.java new file mode 100644 index 00000000..de604b0c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/ProductTypeMapper.java @@ -0,0 +1,26 @@ +package com.nflg.mobilebroken.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeSearchRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeVO; +import com.nflg.mobilebroken.repository.entity.ProductType; + +import java.util.List; + +/** + *

+ * 产品中心-产品类型 Mapper 接口 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface ProductTypeMapper extends BaseMapper { + + PageData getList(ProductTypeSearchRequest request, Page page); + + List get(Integer seriesId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseInfoService.java new file mode 100644 index 00000000..bc90f33c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseInfoService.java @@ -0,0 +1,22 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductCaseInfo; + +import java.util.List; + +/** + *

+ * 产品中心-案例-详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductCaseInfoService extends IService { + + void add(Integer caseId, List items); + + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseService.java new file mode 100644 index 00000000..709057ca --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductCaseService.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseVO; +import com.nflg.mobilebroken.repository.entity.ProductCase; + +import javax.validation.Valid; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductCaseService extends IService { + + void add(@Valid ProductCaseAddRequest request); + + void update(@Valid ProductCaseUpdateRequest request); + + PageData getList(ProductCaseSearchRequest request); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorInfoService.java new file mode 100644 index 00000000..27128e37 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorInfoService.java @@ -0,0 +1,22 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductHonorInfo; + +import java.util.List; + +/** + *

+ * 产品中心-荣誉详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductHonorInfoService extends IService { + + void add(Integer honorId, List items); + + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorService.java new file mode 100644 index 00000000..defd1d5f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductHonorService.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorVO; +import com.nflg.mobilebroken.repository.entity.ProductHonor; + +import javax.validation.Valid; +import java.util.List; + +/** + *

+ * 产品中心-荣誉 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductHonorService extends IService { + + void add(@Valid ProductHonorAddRequest request); + + void update(@Valid ProductHonorUpdateRequest request); + + IPage getList(ProductHonorSearchRequest request); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroInfoService.java new file mode 100644 index 00000000..a9ceece5 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroInfoService.java @@ -0,0 +1,20 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductIntroInfo; + +import java.util.List; + +/** + *

+ * 产品中心-介绍详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductIntroInfoService extends IService { + + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroService.java new file mode 100644 index 00000000..585d4657 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductIntroService.java @@ -0,0 +1,31 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroVO; +import com.nflg.mobilebroken.repository.entity.ProductIntro; + +import java.util.List; + +/** + *

+ * 产品中心-介绍 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductIntroService extends IService { + + void add(ProductIntroAddRequest request); + + void update(ProductIntroUpdateRequest request); + + IPage getList(ProductIntroSearchRequest request); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java new file mode 100644 index 00000000..2864309e --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelFileService.java @@ -0,0 +1,20 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO; +import com.nflg.mobilebroken.repository.entity.ProductModelFile; + +import java.util.List; + +/** + *

+ * 产品中心-产品机型-文件 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductModelFileService extends IService { + + List getByModelId(Integer modelId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelImageService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelImageService.java new file mode 100644 index 00000000..cebf6b08 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelImageService.java @@ -0,0 +1,25 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductModelImageAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductImageVO; +import com.nflg.mobilebroken.repository.entity.ProductModelImage; + +import java.util.List; + +/** + *

+ * 产品中心-产品机型-图片 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductModelImageService extends IService { + + List getByModelId(Integer modelId, String language); + + void add(Integer id, List images); + + void update(List images); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelInfoService.java new file mode 100644 index 00000000..564d02a8 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelInfoService.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductModelInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductModelInfo; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + *

+ * 产品中心-机型详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductModelInfoService extends IService { + + void add(Integer modelId, List items); + + @Transactional + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java new file mode 100644 index 00000000..b7699842 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelParamsService.java @@ -0,0 +1,25 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductParamsAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductParamsVO; +import com.nflg.mobilebroken.repository.entity.ProductModelParams; + +import java.util.List; + +/** + *

+ * 产品中心-机型-参数 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductModelParamsService extends IService { + + List getInfo(Integer modelId, String language); + + void add(Integer modelId, List params); + + void update(List params); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelService.java new file mode 100644 index 00000000..55bd8037 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelService.java @@ -0,0 +1,39 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductModelAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductModelSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductModelUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelParamsVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelVO; +import com.nflg.mobilebroken.repository.entity.ProductModel; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + *

+ * 产品中心-产品机型 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductModelService extends IService { + + void add(@Valid ProductModelAddRequest request); + + void update(ProductModelUpdateRequest request); + + PageData getList(ProductModelSearchRequest request); + + List get(@Valid @NotNull Integer typeId, String language); + + ProductModelInfoVO getInfo(@Valid @NotNull Integer modelId, String language); + + ProductModelParamsVO getParams(@Valid @NotNull Integer modelId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelVideoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelVideoService.java new file mode 100644 index 00000000..eea10b3a --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductModelVideoService.java @@ -0,0 +1,25 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductModelVideoAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductVideoVO; +import com.nflg.mobilebroken.repository.entity.ProductModelVideo; + +import java.util.List; + +/** + *

+ * 产品中心-产品机型-视频 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductModelVideoService extends IService { + + List getByModelId(Integer modelId, String language); + + void add(Integer id, List videos); + + void update(List videos); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartInfoService.java new file mode 100644 index 00000000..5ce86dc0 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartInfoService.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductPartInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductPartInfo; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + *

+ * 产品中心-部件详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductPartInfoService extends IService { + + void add(Integer partId, List items); + + @Transactional + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartParamsService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartParamsService.java new file mode 100644 index 00000000..8f999deb --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartParamsService.java @@ -0,0 +1,25 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductParamsAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductParamsVO; +import com.nflg.mobilebroken.repository.entity.ProductPartParams; + +import java.util.List; + +/** + *

+ * 产品中心-部件-参数 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductPartParamsService extends IService { + + void add(Integer partId, List params); + + void update(List params); + + List getInfo(Integer partId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java new file mode 100644 index 00000000..712dfd3d --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductPartService.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductPartAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductPartSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductPartUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartSearchVO; +import com.nflg.mobilebroken.repository.entity.ProductPart; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; + +/** + *

+ * 产品中心-部件 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductPartService extends IService { + + void add(@Valid ProductPartAddRequest request); + + void update(@Valid ProductPartUpdateRequest request); + + PageData getList(ProductPartSearchRequest request); + + ProductPartInfoVO getInfo(@Valid @NotNull Integer partId, String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesInfoService.java new file mode 100644 index 00000000..299ad5fd --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesInfoService.java @@ -0,0 +1,22 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductSeriesInfo; + +import java.util.List; + +/** + *

+ * 产品中心-产品系列详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductSeriesInfoService extends IService { + + void add(Integer seriesId,List items); + + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesService.java new file mode 100644 index 00000000..8f35932e --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductSeriesService.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesVO; +import com.nflg.mobilebroken.repository.entity.ProductSeries; + +import javax.validation.Valid; +import java.util.List; + +/** + *

+ * 产品中心-产品系列 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductSeriesService extends IService { + + void add(@Valid ProductSeriesAddRequest request); + + void update(@Valid ProductSeriesUpdateRequest request); + + PageData getList(ProductSeriesSearchRequest request); + + List get(String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java new file mode 100644 index 00000000..15425b4f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeInfoService.java @@ -0,0 +1,24 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeInfoAddRequest; +import com.nflg.mobilebroken.repository.entity.ProductTypeInfo; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + *

+ * 产品中心-产品类型详情 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductTypeInfoService extends IService { + + void add(Integer typeId, List items); + + @Transactional + void update(List items); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java new file mode 100644 index 00000000..ec432a15 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IProductTypeService.java @@ -0,0 +1,32 @@ +package com.nflg.mobilebroken.repository.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeVO; +import com.nflg.mobilebroken.repository.entity.ProductType; + +import javax.validation.Valid; +import java.util.List; + +/** + *

+ * 产品中心-产品类型 服务类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +public interface IProductTypeService extends IService { + + void add(@Valid ProductTypeAddRequest request); + + void update(@Valid ProductTypeUpdateRequest request); + + PageData getList(ProductTypeSearchRequest request); + + List get(Integer seriesId,String language); +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseInfoServiceImpl.java new file mode 100644 index 00000000..87052070 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseInfoServiceImpl.java @@ -0,0 +1,66 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductCaseInfo; +import com.nflg.mobilebroken.repository.mapper.ProductCaseInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductCaseInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-案例-详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductCaseInfoServiceImpl extends ServiceImpl implements IProductCaseInfoService { + + @Transactional + @Override + public void add(Integer caseId, List items) { + if (CollectionUtil.isNotEmpty(items)) { + saveBatch( + items.stream() + .map(it -> new ProductCaseInfo() + .setCaseId(caseId) + .setLanguageCode(it.getLanguageCode()) + .setDesc(it.getDesc()) + .setImage(it.getImage()) + .setVideo(it.getVideo()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)) { + updateBatchById( + items.stream() + .map(it -> new ProductCaseInfo() + .setId(it.getId()) + .setDesc(it.getDesc()) + .setImage(it.getImage()) + .setVideo(it.getVideo()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java new file mode 100644 index 00000000..13ba9922 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductCaseServiceImpl.java @@ -0,0 +1,82 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductCaseUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductCaseVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.common.util.PageUtil; +import com.nflg.mobilebroken.repository.entity.ProductCase; +import com.nflg.mobilebroken.repository.mapper.ProductCaseMapper; +import com.nflg.mobilebroken.repository.service.IProductCaseInfoService; +import com.nflg.mobilebroken.repository.service.IProductCaseService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductCaseServiceImpl extends ServiceImpl implements IProductCaseService { + + @Resource + private IProductCaseInfoService productCaseInfoService; + + @Transactional + @Override + public void add(ProductCaseAddRequest request) { + ProductCase entity = new ProductCase() + .setTitle(request.getTitle()) + .setEnable(request.getEnable()) + .setSort(request.getSort()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(entity); + productCaseInfoService.add(entity.getId(), request.getItems()); + } + + @Transactional + @Override + public void update(ProductCaseUpdateRequest request) { + lambdaUpdate() + .set(ProductCase::getTitle, request.getTitle()) + .set(ProductCase::getSort, request.getSort()) + .set(ProductCase::getEnable, request.getEnable()) + .set(ProductCase::getUpdateBy, AdminUserUtil.getUserName()) + .set(ProductCase::getUpdateTime, LocalDateTime.now()) + .update(); + productCaseInfoService.update(request.getItems()); + } + + @Override + public PageData getList(ProductCaseSearchRequest request) { + IPage page=lambdaQuery() + .eq(Objects.nonNull(request.getEnable()), ProductCase::getEnable, request.getEnable()) + .like(Objects.nonNull(request.getTitle()), ProductCase::getTitle, request.getTitle()) + .ge(Objects.nonNull(request.getStartDate()), ProductCase::getCreateTime, request.getStartDate()) + .le(Objects.nonNull(request.getEndDate()), ProductCase::getCreateTime, request.getEndDate()) + .page(new Page<>(request.getPage(), request.getPageSize())); + return PageUtil.convert(page, d -> Convert.convert(ProductCaseSearchVO.class, d)); + } + + @Override + public List get(String language) { + return baseMapper.get(language); + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorInfoServiceImpl.java new file mode 100644 index 00000000..0c9d8a93 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorInfoServiceImpl.java @@ -0,0 +1,64 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductHonorInfo; +import com.nflg.mobilebroken.repository.mapper.ProductHonorInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductHonorInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-荣誉详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductHonorInfoServiceImpl extends ServiceImpl implements IProductHonorInfoService { + + @Transactional + @Override + public void add(Integer honorId, List items) { + if (CollectionUtil.isNotEmpty(items)) { + saveBatch( + items.stream() + .map(it -> new ProductHonorInfo() + .setHonorId(honorId) + .setLanguageCode(it.getLanguageCode()) + .setTitle(it.getTitle()) + .setImage(it.getImage()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)) { + updateBatchById( + items.stream() + .map(it -> new ProductHonorInfo() + .setId(it.getId()) + .setTitle(it.getTitle()) + .setImage(it.getImage()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorServiceImpl.java new file mode 100644 index 00000000..bed788fd --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductHonorServiceImpl.java @@ -0,0 +1,70 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductHonorUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductHonorVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductHonor; +import com.nflg.mobilebroken.repository.mapper.ProductHonorMapper; +import com.nflg.mobilebroken.repository.service.IProductHonorInfoService; +import com.nflg.mobilebroken.repository.service.IProductHonorService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 产品中心-荣誉 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductHonorServiceImpl extends ServiceImpl implements IProductHonorService { + + @Resource + private IProductHonorInfoService productHonorInfoService; + + @Transactional + @Override + public void add(ProductHonorAddRequest request) { + ProductHonor productHonor = new ProductHonor() + .setObtainingTime(request.getObtainingTime()) + .setEnable(request.getEnable()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(productHonor); + productHonorInfoService.add(productHonor.getId(), request.getItems()); + } + + @Transactional + @Override + public void update(ProductHonorUpdateRequest request) { + lambdaUpdate() + .set(ProductHonor::getObtainingTime, request.getObtainingTime()) + .set(ProductHonor::getEnable,request.getEnable()) + .set(ProductHonor::getUpdateBy, AdminUserUtil.getUserName()) + .set(ProductHonor::getUpdateTime, LocalDateTime.now()) + .update(); + productHonorInfoService.update(request.getItems()); + } + + @Override + public IPage getList(ProductHonorSearchRequest request) { + return baseMapper.getList(request,new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public List get(String language) { + return baseMapper.get(language); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroInfoServiceImpl.java new file mode 100644 index 00000000..c8cf32b7 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroInfoServiceImpl.java @@ -0,0 +1,47 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductIntroInfo; +import com.nflg.mobilebroken.repository.mapper.ProductIntroInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductIntroInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-介绍详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductIntroInfoServiceImpl extends ServiceImpl implements IProductIntroInfoService { + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)) { + updateBatchById( + items.stream() + .map(it -> new ProductIntroInfo() + .setId(it.getId()) + .setName(it.getName()) + .setImage(it.getImage()) + .setDesc(it.getDesc()) + .setImagePosition(it.getImagePosition()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroServiceImpl.java new file mode 100644 index 00000000..6f33ce8f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductIntroServiceImpl.java @@ -0,0 +1,88 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductIntroUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductIntroVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductIntro; +import com.nflg.mobilebroken.repository.entity.ProductIntroInfo; +import com.nflg.mobilebroken.repository.mapper.ProductIntroMapper; +import com.nflg.mobilebroken.repository.service.IProductIntroInfoService; +import com.nflg.mobilebroken.repository.service.IProductIntroService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-介绍 服务实现类 + *

+ * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductIntroServiceImpl extends ServiceImpl implements IProductIntroService { + + @Resource + private IProductIntroInfoService introInfoService; + + @Transactional + @Override + public void add(ProductIntroAddRequest request) { + ProductIntro intro = new ProductIntro() + .setDictionaryItemId(request.getDictionaryItemId()) + .setSort(request.getSort()) + .setEnable(request.getEnable()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(intro); + if (CollectionUtil.isNotEmpty(request.getItems())) { + introInfoService.saveBatch( + request.getItems().stream() + .map(i -> new ProductIntroInfo() + .setIntroId(intro.getId()) + .setLanguageCode(i.getLanguageCode()) + .setName(i.getName()) + .setDesc(i.getDesc()) + .setImage(i.getImage()) + .setImagePosition(i.getImagePosition()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now())) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(ProductIntroUpdateRequest request) { + lambdaUpdate() + .set(ProductIntro::getDictionaryItemId, request.getDictionaryItemId()) + .set(ProductIntro::getSort, request.getSort()) + .set(ProductIntro::getEnable,request.getEnable()) + .set(ProductIntro::getUpdateBy, AdminUserUtil.getUserName()) + .set(ProductIntro::getUpdateTime, LocalDateTime.now()) + .update(); + introInfoService.update(request.getItems()); + } + + @Override + public IPage getList(ProductIntroSearchRequest request) { + return baseMapper.getList(request,new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public List get(String language) { + return baseMapper.get(language); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java new file mode 100644 index 00000000..2bb69974 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelFileServiceImpl.java @@ -0,0 +1,38 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO; +import com.nflg.mobilebroken.repository.entity.ProductModelFile; +import com.nflg.mobilebroken.repository.mapper.ProductModelFileMapper; +import com.nflg.mobilebroken.repository.service.IProductModelFileService; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + *

+ * 产品中心-产品机型-文件 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductModelFileServiceImpl extends ServiceImpl implements IProductModelFileService { + + @Override + public List getByModelId(Integer modelId, String language) { + List files=lambdaQuery() + .eq(ProductModelFile::getModelId,modelId) + .eq(ProductModelFile::getLanguageCode,language) + .list(); + if (CollectionUtil.isEmpty(files)){ + return Collections.emptyList(); + }else { + return Convert.toList(ProductFileVO.class,files); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelImageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelImageServiceImpl.java new file mode 100644 index 00000000..9224344a --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelImageServiceImpl.java @@ -0,0 +1,80 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductModelImageAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductImageVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductModelImage; +import com.nflg.mobilebroken.repository.mapper.ProductModelImageMapper; +import com.nflg.mobilebroken.repository.service.IProductModelImageService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-产品机型-图片 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductModelImageServiceImpl extends ServiceImpl implements IProductModelImageService { + + @Override + public List getByModelId(Integer modelId, String language) { + List productModelImages = lambdaQuery() + .eq(ProductModelImage::getModelId, modelId) + .eq(ProductModelImage::getLanguageCode, language) + .list(); + if (CollectionUtil.isEmpty(productModelImages)){ + return Collections.emptyList(); + }else { + return Convert.toList(ProductImageVO.class, productModelImages); + } + } + + @Transactional + @Override + public void add(Integer id, List images) { + if (CollectionUtil.isNotEmpty(images)){ + saveBatch( + images.stream() + .map(it -> new ProductModelImage() + .setModelId(id) + .setLanguageCode(it.getLanguageCode()) + .setContent(it.getContent()) + .setImage(it.getImage()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List images) { + if (CollectionUtil.isNotEmpty(images)){ + updateBatchById( + images.stream() + .map(it -> new ProductModelImage() + .setId(it.getId()) + .setContent(it.getContent()) + .setImage(it.getImage()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelInfoServiceImpl.java new file mode 100644 index 00000000..4c80aa2c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelInfoServiceImpl.java @@ -0,0 +1,66 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductModelInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductModelInfo; +import com.nflg.mobilebroken.repository.mapper.ProductModelInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductModelInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-机型详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductModelInfoServiceImpl extends ServiceImpl implements IProductModelInfoService { + + @Transactional + @Override + public void add(Integer modelId, List items) { + if (CollectionUtil.isNotEmpty(items)){ + saveBatch( + items.stream() + .map(it -> new ProductModelInfo() + .setModeId(it.getModelId()) + .setLanguageCode(it.getLanguageCode()) + .setName(it.getName()) + .setDesc(it.getDesc()) + .setUrl(it.getUrl()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)){ + updateBatchById( + items.stream() + .map(it -> new ProductModelInfo() + .setId(it.getId()) + .setName(it.getName()) + .setDesc(it.getDesc()) + .setUrl(it.getUrl()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java new file mode 100644 index 00000000..9b70df84 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelParamsServiceImpl.java @@ -0,0 +1,90 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.dto.ProductParamsDTO; +import com.nflg.mobilebroken.common.pojo.request.ProductParamsAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductParamsInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductParamsVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductModelParams; +import com.nflg.mobilebroken.repository.mapper.ProductModelParamsMapper; +import com.nflg.mobilebroken.repository.service.IProductModelParamsService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-机型-参数 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductModelParamsServiceImpl extends ServiceImpl implements IProductModelParamsService { + + @Override + public List getInfo(Integer modelId, String language) { + List datas = baseMapper.getInfo(modelId, language); + if (CollectionUtil.isEmpty(datas)) { + return Collections.emptyList(); + } else { + Map> maps = datas.stream().collect(Collectors.groupingBy(ProductParamsDTO::getDictionaryId)); + return maps.entrySet() + .stream() + .map(e -> new ProductParamsVO() + .setDictionaryId(e.getKey()) + .setDictionaryName(e.getValue().get(0).getDictionaryName()) + .setItems(e.getValue().stream().map(it -> + new ProductParamsInfoVO() + .setDictionaryItemId(it.getDictionaryItemId()) + .setDictionaryItemName(it.getDictionaryItemName()) + ).collect(Collectors.toList())) + ) + .collect(Collectors.toList()); + } + } + + @Transactional + @Override + public void add(Integer modelId, List params) { + if (CollectionUtil.isNotEmpty(params)){ + saveBatch( + params.stream() + .map(it -> new ProductModelParams() + .setModelId(modelId) + .setLanguageCode(it.getLanguageCode()) + .setDictionaryItemId(it.getDictionaryItemId()) + .setValue(it.getValue()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List params) { + if (CollectionUtil.isNotEmpty(params)){ + updateBatchById( + params.stream() + .map(it -> new ProductModelParams() + .setId(it.getId()) + .setValue(it.getValue()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java new file mode 100644 index 00000000..c70c4b01 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelServiceImpl.java @@ -0,0 +1,114 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductModelAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductModelSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductModelUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelParamsVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductModelVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductModel; +import com.nflg.mobilebroken.repository.mapper.ProductModelMapper; +import com.nflg.mobilebroken.repository.service.*; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 产品中心-产品机型 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductModelServiceImpl extends ServiceImpl implements IProductModelService { + + @Resource + private IProductModelInfoService productModelInfoService; + + @Resource + private IProductModelImageService productModelImageService; + + @Resource + private IProductModelVideoService productModelVideoService; + + @Resource + private IProductModelFileService productModelFileService; + + @Resource + private IProductModelParamsService productPartParamsService; + + @Transactional + @Override + public void add(ProductModelAddRequest request) { + ProductModel productModel = new ProductModel() + .setTypeId(request.getTypeId()) + .setHotImage(request.getHotImage()) + .setSort(request.getSort()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(productModel); + productModelInfoService.add(productModel.getId(), request.getItems()); + productPartParamsService.add(productModel.getId(), request.getParams()); + productModelImageService.add(productModel.getId(), request.getImages()); + productModelVideoService.add(productModel.getId(), request.getVideos()); + } + + @Transactional + @Override + public void update(ProductModelUpdateRequest request) { + lambdaUpdate() + .set(ProductModel::getHotImage, request.getHotImage()) + .set(ProductModel::getSort, request.getSort()) + .eq(ProductModel::getId, request.getId()) + .update(); + productModelInfoService.update(request.getItems()); + productPartParamsService.update(request.getParams()); + productModelImageService.update(request.getImages()); + productModelVideoService.update(request.getVideos()); + } + + @Override + public PageData getList(ProductModelSearchRequest request) { + return baseMapper.getList(request, new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public List get(Integer typeId, String language) { + return baseMapper.get(typeId, language); + } + + @Override + public ProductModelInfoVO getInfo(Integer modelId, String language) { + ProductModelInfoVO info = baseMapper.getInfo(modelId, language); + if (Objects.nonNull(info)) { + info.setImages(productModelImageService.getByModelId(modelId, language)); + info.setVideos(productModelVideoService.getByModelId(modelId, language)); + info.setFiles(productModelFileService.getByModelId(modelId, language)); + } + return info; + } + + @Override + public ProductModelParamsVO getParams(Integer modelId, String language) { + ProductModelInfoVO model = baseMapper.getInfo(modelId, language); + if (Objects.isNull(model)) { + return null; + } + return new ProductModelParamsVO() + .setId(model.getId()) + .setName(model.getName()) + .setUrl(model.getUrl()) + .setParams(productPartParamsService.getInfo(modelId, language)); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelVideoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelVideoServiceImpl.java new file mode 100644 index 00000000..3a67e54c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductModelVideoServiceImpl.java @@ -0,0 +1,81 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductModelVideoAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductVideoVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductModelVideo; +import com.nflg.mobilebroken.repository.mapper.ProductModelVideoMapper; +import com.nflg.mobilebroken.repository.service.IProductModelVideoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-产品机型-视频 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductModelVideoServiceImpl extends ServiceImpl implements IProductModelVideoService { + + @Override + public List getByModelId(Integer modelId, String language) { + List videos=lambdaQuery() + .eq(ProductModelVideo::getModelId,modelId) + .eq(ProductModelVideo::getLanguageCode,language) + .list(); + if (CollectionUtil.isEmpty(videos)){ + return Collections.emptyList(); + }else { + return Convert.toList(ProductVideoVO.class,videos); + } + } + + @Transactional + @Override + public void add(Integer id, List videos) { + if (CollectionUtil.isNotEmpty(videos)){ + saveBatch( + videos.stream() + .map(it -> new ProductModelVideo() + .setModelId(id) + .setLanguageCode(it.getLanguageCode()) + .setVideo(it.getVideo()) + .setContent(it.getContent()) + .setImage(it.getImage()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List videos) { + if (CollectionUtil.isNotEmpty(videos)){ + saveOrUpdateBatch( + videos.stream() + .map(it -> new ProductModelVideo() + .setId(it.getId()) + .setVideo(it.getVideo()) + .setContent(it.getContent()) + .setImage(it.getImage()) + .setUpdateBy(AdminUserUtil.getUserName()) + ) + .collect(Collectors.toList()) + ); + } + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartInfoServiceImpl.java new file mode 100644 index 00000000..05fb0e8a --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartInfoServiceImpl.java @@ -0,0 +1,65 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductPartInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductPartInfo; +import com.nflg.mobilebroken.repository.mapper.ProductPartInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductPartInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-部件详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductPartInfoServiceImpl extends ServiceImpl implements IProductPartInfoService { + + @Transactional + @Override + public void add(Integer partId, List items) { + if (CollectionUtil.isNotEmpty(items)) { + saveBatch( + items.stream() + .map(it -> new ProductPartInfo() + .setPartId(partId) + .setLanguageCode(it.getLanguageCode()) + .setName(it.getName()) + .setDesc(it.getDesc()) + .setUrl(it.getUrl()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)) { + saveBatch( + items.stream() + .map(it -> new ProductPartInfo() + .setName(it.getName()) + .setDesc(it.getDesc()) + .setUrl(it.getUrl()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartParamsServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartParamsServiceImpl.java new file mode 100644 index 00000000..eb90754b --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartParamsServiceImpl.java @@ -0,0 +1,95 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.dto.ProductParamsDTO; +import com.nflg.mobilebroken.common.pojo.request.ProductParamsAddRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductParamsInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductParamsVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductPartParams; +import com.nflg.mobilebroken.repository.mapper.ProductPartParamsMapper; +import com.nflg.mobilebroken.repository.service.IDictionaryItemService; +import com.nflg.mobilebroken.repository.service.IProductPartParamsService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-部件-参数 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductPartParamsServiceImpl extends ServiceImpl implements IProductPartParamsService { + + @Resource + private IDictionaryItemService dictionaryItemService; + + @Transactional + @Override + public void add(Integer partId, List params) { + if (CollectionUtil.isNotEmpty(params)){ + saveBatch( + params.stream() + .map(it -> new ProductPartParams() + .setPartId(partId) + .setDictionaryItemId(it.getDictionaryItemId()) + .setLanguageCode(it.getLanguageCode()) + .setValue(it.getValue()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List params) { + if (CollectionUtil.isNotEmpty(params)){ + updateBatchById( + params.stream() + .map(it -> new ProductPartParams() + .setId(it.getId()) + .setValue(it.getValue()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Override + public List getInfo(Integer partId, String language) { + List datas = baseMapper.getInfo(partId, language); + if (CollectionUtil.isEmpty(datas)) { + return Collections.emptyList(); + } else { + Map> maps = datas.stream().collect(Collectors.groupingBy(ProductParamsDTO::getDictionaryId)); + return maps.entrySet() + .stream() + .map(e -> new ProductParamsVO() + .setDictionaryId(e.getKey()) + .setDictionaryName(e.getValue().get(0).getDictionaryName()) + .setItems(e.getValue().stream().map(it -> + new ProductParamsInfoVO() + .setDictionaryItemId(it.getDictionaryItemId()) + .setDictionaryItemName(it.getDictionaryItemName()) + ).collect(Collectors.toList())) + ) + .collect(Collectors.toList()); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartServiceImpl.java new file mode 100644 index 00000000..894e4191 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductPartServiceImpl.java @@ -0,0 +1,78 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductPartAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductPartSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductPartUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartInfoVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductPartSearchVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductPart; +import com.nflg.mobilebroken.repository.mapper.ProductPartMapper; +import com.nflg.mobilebroken.repository.service.IProductPartInfoService; +import com.nflg.mobilebroken.repository.service.IProductPartParamsService; +import com.nflg.mobilebroken.repository.service.IProductPartService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Objects; + +/** + *

+ * 产品中心-部件 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductPartServiceImpl extends ServiceImpl implements IProductPartService { + + @Resource + private IProductPartInfoService productPartInfoService; + + @Resource + private IProductPartParamsService productPartParamsService; + + @Transactional + @Override + public void add(ProductPartAddRequest request) { + ProductPart part = new ProductPart() + .setMaterialNo(request.getMaterialNo()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(part); + productPartInfoService.add(part.getId(), request.getItems()); + productPartParamsService.add(part.getId(), request.getParams()); + } + + @Transactional + @Override + public void update(ProductPartUpdateRequest request) { + lambdaUpdate() + .set(ProductPart::getMaterialNo, request.getMaterialNo()) + .set(ProductPart::getUpdateBy, AdminUserUtil.getUserName()) + .set(ProductPart::getUpdateTime, LocalDateTime.now()) + .update(); + productPartInfoService.update(request.getItems()); + productPartParamsService.update(request.getParams()); + } + + @Override + public PageData getList(ProductPartSearchRequest request) { + return baseMapper.getList(request, new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public ProductPartInfoVO getInfo(Integer partId, String language) { + ProductPartInfoVO part = baseMapper.getInfo(partId, language); + if (Objects.nonNull(part)) { + part.setParams(productPartParamsService.getInfo(partId, language)); + } + return part; + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesInfoServiceImpl.java new file mode 100644 index 00000000..240f1c5a --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesInfoServiceImpl.java @@ -0,0 +1,65 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductSeriesInfo; +import com.nflg.mobilebroken.repository.mapper.ProductSeriesInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductSeriesInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-产品系列详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductSeriesInfoServiceImpl extends ServiceImpl implements IProductSeriesInfoService { + + @Transactional + @Override + public void add(Integer seriesId, List items) { + if (CollectionUtil.isNotEmpty(items)) { + saveBatch( + items.stream() + .map(it -> new ProductSeriesInfo() + .setSeriesId(seriesId) + .setLanguageCode(it.getLanguageCode()) + .setImage(it.getImage()) + .setContent(it.getContent()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)) { + updateBatchById( + items.stream() + .map(it -> new ProductSeriesInfo() + .setId(it.getId()) + .setLanguageCode(it.getLanguageCode()) + .setImage(it.getImage()) + .setContent(it.getContent()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesServiceImpl.java new file mode 100644 index 00000000..88320cfd --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductSeriesServiceImpl.java @@ -0,0 +1,69 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductSeriesUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductSeriesVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductSeries; +import com.nflg.mobilebroken.repository.mapper.ProductSeriesMapper; +import com.nflg.mobilebroken.repository.service.IProductSeriesInfoService; +import com.nflg.mobilebroken.repository.service.IProductSeriesService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 产品中心-产品系列 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductSeriesServiceImpl extends ServiceImpl implements IProductSeriesService { + + @Resource + private IProductSeriesInfoService productSeriesInfoService; + + @Transactional + @Override + public void add(ProductSeriesAddRequest request) { + ProductSeries productSeries = new ProductSeries() + .setSort(request.getSort()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(productSeries); + productSeriesInfoService.add(productSeries.getId(),request.getItems()); + } + + @Transactional + @Override + public void update(ProductSeriesUpdateRequest request) { + lambdaUpdate() + .set(ProductSeries::getSort, request.getSort()) + .set(ProductSeries::getUpdateBy, AdminUserUtil.getUserName()) + .set(ProductSeries::getUpdateTime, LocalDateTime.now()) + .eq(ProductSeries::getId, request.getId()) + .update(); + productSeriesInfoService.update(request.getItems()); + } + + @Override + public PageData getList(ProductSeriesSearchRequest request) { + return baseMapper.getList(request,new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public List get(String language) { + return baseMapper.get(language); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeInfoServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeInfoServiceImpl.java new file mode 100644 index 00000000..1b693d7f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeInfoServiceImpl.java @@ -0,0 +1,67 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeInfoAddRequest; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductTypeInfo; +import com.nflg.mobilebroken.repository.mapper.ProductTypeInfoMapper; +import com.nflg.mobilebroken.repository.service.IProductTypeInfoService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 产品中心-产品类型详情 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductTypeInfoServiceImpl extends ServiceImpl implements IProductTypeInfoService { + + @Transactional + @Override + public void add(Integer typeId, List items) { + if (CollectionUtil.isNotEmpty(items)) { + saveBatch( + items.stream() + .map(it -> new ProductTypeInfo() + .setTypeId(typeId) + .setLanguageCode(it.getLanguageCode()) + .setName(it.getName()) + .setContent(it.getContent()) + .setImage(it.getImage()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } + + @Transactional + @Override + public void update(List items) { + if (CollectionUtil.isNotEmpty(items)){ + updateBatchById( + items.stream() + .map(it -> new ProductTypeInfo() + .setId(it.getId()) + .setLanguageCode(it.getLanguageCode()) + .setName(it.getName()) + .setImage(it.getImage()) + .setContent(it.getContent()) + .setUpdateBy(AdminUserUtil.getUserName()) + .setUpdateTime(LocalDateTime.now()) + ) + .collect(Collectors.toList()) + ); + } + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeServiceImpl.java new file mode 100644 index 00000000..a7bc3a91 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeServiceImpl.java @@ -0,0 +1,69 @@ +package com.nflg.mobilebroken.repository.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeAddRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeSearchRequest; +import com.nflg.mobilebroken.common.pojo.request.ProductTypeUpdateRequest; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeSearchVO; +import com.nflg.mobilebroken.common.pojo.vo.ProductTypeVO; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.repository.entity.ProductType; +import com.nflg.mobilebroken.repository.mapper.ProductTypeMapper; +import com.nflg.mobilebroken.repository.service.IProductTypeInfoService; +import com.nflg.mobilebroken.repository.service.IProductTypeService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 产品中心-产品类型 服务实现类 + *

+ * + * @author 代码生成器生成 + * @since 2025 + */ +@Service +public class ProductTypeServiceImpl extends ServiceImpl implements IProductTypeService { + + @Resource + private IProductTypeInfoService productTypeInfoService; + + @Transactional + @Override + public void add(ProductTypeAddRequest request) { + ProductType productType = new ProductType() + .setSort(request.getSort()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()); + save(productType); + productTypeInfoService.add(productType.getId(),request.getItems()); + } + + @Transactional + @Override + public void update(ProductTypeUpdateRequest request) { + lambdaUpdate() + .set(ProductType::getSort, request.getSort()) + .set(ProductType::getUpdateBy, AdminUserUtil.getUserName()) + .set(ProductType::getUpdateTime, LocalDateTime.now()) + .eq(ProductType::getId, request.getId()) + .update(); + productTypeInfoService.update(request.getItems()); + } + + @Override + public PageData getList(ProductTypeSearchRequest request) { + return baseMapper.getList(request,new Page<>(request.getPage(), request.getPageSize())); + } + + @Override + public List get(Integer seriesId,String language) { + return baseMapper.get(seriesId,language); + } +} diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseInfoMapper.xml new file mode 100644 index 00000000..a196017d --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseMapper.xml new file mode 100644 index 00000000..1ccde7db --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductCaseMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorInfoMapper.xml new file mode 100644 index 00000000..5ab00fd3 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorMapper.xml new file mode 100644 index 00000000..308decdc --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductHonorMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroInfoMapper.xml new file mode 100644 index 00000000..1a525339 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroMapper.xml new file mode 100644 index 00000000..dd115129 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductIntroMapper.xml @@ -0,0 +1,33 @@ + + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelFileMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelFileMapper.xml new file mode 100644 index 00000000..e5c3e5b4 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelFileMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelImageMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelImageMapper.xml new file mode 100644 index 00000000..372b2bee --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelInfoMapper.xml new file mode 100644 index 00000000..e741c8a4 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelMapper.xml new file mode 100644 index 00000000..ecb411b5 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml new file mode 100644 index 00000000..da00c265 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelParamsMapper.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelVideoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelVideoMapper.xml new file mode 100644 index 00000000..7c34dc31 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductModelVideoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartInfoMapper.xml new file mode 100644 index 00000000..56b1eb76 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartMapper.xml new file mode 100644 index 00000000..027bfc9f --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartParamsMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartParamsMapper.xml new file mode 100644 index 00000000..b5e51562 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductPartParamsMapper.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesInfoMapper.xml new file mode 100644 index 00000000..0497596c --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesMapper.xml new file mode 100644 index 00000000..8c7ab019 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductSeriesMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml new file mode 100644 index 00000000..b0bd8e80 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeMapper.xml new file mode 100644 index 00000000..6e0fb7b5 --- /dev/null +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/ProductTypeMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java index 0543aa6d..477a24c7 100644 --- a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java +++ b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGenerator.java @@ -33,7 +33,8 @@ public class CodeGenerator { , Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper")) ) .strategyConfig(builder -> { - builder.addInclude("ticket_call,ticket_call_join") //只生成指定表 + builder + .addInclude("^product_.*") //只生成指定表 .entityBuilder() .enableLombok() .enableChainModel() diff --git a/pom.xml b/pom.xml index 0e806969..a39dd11c 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,7 @@ nflg-mobilebroken-repository nflg-mobilebroken-auth nflg-mobilebroken-push + nflg-mobilebroken-product 11 From 1d493b3b2f707a954d96c132b86335f18665c5a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 26 May 2025 11:33:10 +0800 Subject: [PATCH 07/19] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E4=B8=AD?= =?UTF-8?q?=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MultilingualController.java | 11 +- .../admin/controller/TestController.java | 10 ++ .../admin/controller/TicketController.java | 157 ++++++++++-------- .../admin/event/TicketCallBeginEvent.java | 48 ++++++ .../admin/event/TicketCallEndEvent.java | 46 +++++ .../admin/listener/TicketEventListener.java | 17 +- .../admin/publisher/TicketEventPublisher.java | 17 +- .../admin/service/SsePushService.java | 36 +++- .../cfs/controller/TicketController.java | 90 ++++++---- .../cfs/event/TicketCallBeginEvent.java | 48 ++++++ .../cfs/event/TicketCallEndEvent.java | 46 +++++ .../cfs/listener/TicketEventListener.java | 12 ++ .../cfs/publisher/TicketEventPublisher.java | 12 ++ .../cfs/service/SsePushService.java | 33 +++- .../common/pojo/dto/PushMessageDataBody.java | 5 + .../mobilebroken/push/UserSseEmitter.java | 6 + .../mobilebroken/push/config/CorsConfig.java | 25 --- .../push/controller/SSEController.java | 14 ++ .../push/service/SSEManagerBase.java | 40 +++-- .../service/ITicketCallJoinService.java | 2 +- .../service/ITicketCallService.java | 2 +- .../impl/TicketCallJoinServiceImpl.java | 8 +- .../service/impl/TicketCallServiceImpl.java | 6 +- .../resources/mapper/TicketCallJoinMapper.xml | 11 +- .../starter/config/CorsConfig.java | 25 --- .../starter/config/RedisConfig.java | 3 + 26 files changed, 543 insertions(+), 187 deletions(-) create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java create mode 100644 nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java create mode 100644 nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java delete mode 100644 nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/config/CorsConfig.java delete mode 100644 nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/CorsConfig.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java index e8810fd0..842f8b54 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MultilingualController.java @@ -27,6 +27,7 @@ import com.nflg.mobilebroken.repository.service.ILanguageService; import com.nflg.mobilebroken.repository.service.IWebComponentService; import com.nflg.mobilebroken.repository.service.IWebComponentTranslateService; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; +import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -55,6 +56,7 @@ import java.util.stream.Collectors; * * @author 曹鹏飞 */ +@Slf4j @RestController @RequestMapping("/multilingual") public class MultilingualController extends ControllerBase { @@ -204,8 +206,15 @@ public class MultilingualController extends ControllerBase { List> datas = EecExcelUtil.readTo(file.getInputStream()); List languages = languageService.getLanguages(); datas.forEach(d -> { + String moduleCode = (String) d.get("模块编号"); + String pageCode = (String) d.get("页面编号"); String componentCode = (String) d.get("组件编号"); - WebComponent webComponent = webComponentService.lambdaQuery().eq(WebComponent::getComponentCode, componentCode).one(); + log.info("模块编号:{},页面编号:{},组件编号:{}",moduleCode,pageCode,componentCode); + WebComponent webComponent = webComponentService.lambdaQuery() + .eq(WebComponent::getModuleCode, moduleCode) + .eq(WebComponent::getPageCode, pageCode) + .eq(WebComponent::getComponentCode, componentCode) + .one(); if (Objects.nonNull(webComponent)) { d.remove("模块"); d.remove("模块编号"); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TestController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TestController.java index 46b34c0e..77bdb3c3 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TestController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TestController.java @@ -1,7 +1,9 @@ package com.nflg.mobilebroken.admin.controller; import com.nflg.mobilebroken.admin.service.DeviceQRCodeService; +import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.util.VUtils; +import com.nflg.mobilebroken.repository.service.ITicketCallService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -21,6 +23,9 @@ public class TestController extends ControllerBase{ @Resource private DeviceQRCodeService deviceQRCodeService; + @Resource + private ITicketCallService ticketCallService; + /** * 显示二维码 * @param deviceNo 设备编号 @@ -42,4 +47,9 @@ public class TestController extends ControllerBase{ VUtils.trueThrowBusinessError(true).throwMessage("生成二维码出错"); } } + + @GetMapping("test") + public ApiResult test(@RequestParam Integer userId){ + return ApiResult.success(ticketCallService.isInCall(userId)); + } } 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 3d86c45e..8563da2f 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 @@ -54,7 +54,6 @@ import java.nio.charset.StandardCharsets; import java.time.Instant; import java.time.LocalDateTime; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -131,11 +130,11 @@ public class TicketController extends ControllerBase { @Resource private UniPushService uniPushService; -// @Resource -// private ITicketCallService ticketCallService; -// -// @Resource -// private ITicketCallJoinService ticketCallJoinService; + @Resource + private ITicketCallService ticketCallService; + + @Resource + private ITicketCallJoinService ticketCallJoinService; /** * 获取问题类型 @@ -1235,7 +1234,7 @@ public class TicketController extends ControllerBase { Integer handlerUserId = Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).findFirst().get(); VUtils.trueThrowBusinessError(!Objects.equals(AdminUserUtil.getUserId(), handlerUserId)) .throwMessage("不是工单主负责人无权限呼叫"); -// VUtils.trueThrowBusinessError(ticketCallService.isInCall(ticket.getUserId())).throwMessage("对方正在通话中"); + VUtils.trueThrowBusinessError(ticketCallService.isInCall(ticket.getUserId())).throwMessage("对方正在通话中"); AdminUser adminUser = adminUserService.getById(handlerUserId); uniPushService.send(new UniPushMessage() .setSenderId("admin-uid-" + handlerUserId) @@ -1248,13 +1247,14 @@ public class TicketController extends ControllerBase { .setUserId(adminUser.getId()) .setUserName(adminUser.getUserName()) .setUserAvatar(adminUser.getAvatar()) - .setCategory("call") + .setCategory("ticketCall") .setFrom("admin") ) ) ); ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), ticketId); -// ticketCallService.add(ticketId, handlerUserId, ticket.getUserId(), Constant.FROM_ADMIN); + ticketCallService.add(ticketId, handlerUserId, ticket.getUserId(), Constant.FROM_ADMIN); + ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser.getUserName()); return ApiResult.success(); } @@ -1266,34 +1266,32 @@ public class TicketController extends ControllerBase { @PostMapping("addCallUser") public ApiResult addCallUser(@Valid @RequestBody CallUserAddRequest request){ AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId()); -// TicketCall ticketCall = ticketCallService.lambdaQuery() -// .eq(TicketCall::getTicketId, request.getTicketId()) -// .eq(TicketCall::getState, 1) -// .one(); -// VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中"); + TicketCall ticketCall = ticketCallService.lambdaQuery() + .eq(TicketCall::getTicketId, request.getTicketId()) + .eq(TicketCall::getState, 1) + .one(); + VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中"); request.getUserIds().forEach(userId->{ AdminUser adminUser1 = adminUserService.getById(userId); if (Objects.nonNull(adminUser1)) { - CompletableFuture.runAsync(()->{ - uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + adminUser.getId()) - .setReceiverId("admin-uid-" + userId) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContent(adminUser.getUserName() + "请求与您视频通话") - .setPayload(new UniPushMessageCallPayload() - .setTicketId(request.getTicketId()) - .setUserId(adminUser.getId()) - .setUserName(adminUser.getUserName()) - .setUserAvatar(adminUser.getAvatar()) - .setCategory("call") - .setFrom("admin") - ) - ) - ); - ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); -// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); - }); + uniPushService.send(new UniPushMessage() + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + userId) + .setSendData(new UniPushMessageBody() + .setTitle("视频通话") + .setContent(adminUser.getUserName() + "请求与您视频通话") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(request.getTicketId()) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCall") + .setFrom("admin") + ) + ) + ); + ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); + ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); } }); return ApiResult.success(); @@ -1309,9 +1307,9 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许请求通话"); -// VUtils.trueThrowBusinessError(ticketCallService.isInCall(AdminUserUtil.getUserId())) -// .throwMessage("您已加入别的通话中"); -// ticketCallJoinService.join(ticketId, AdminUserUtil.getUserId(),Constant.FROM_ADMIN); + VUtils.trueThrowBusinessError(ticketCallService.isInCall(AdminUserUtil.getUserId())) + .throwMessage("您已加入别的通话中"); + ticketCallJoinService.join(ticketId, AdminUserUtil.getUserId(),Constant.FROM_ADMIN); return ApiResult.success(); } @@ -1321,10 +1319,11 @@ public class TicketController extends ControllerBase { */ @PostMapping("call/hangUp") public ApiResult hangUp(@Valid @RequestBody TicketCallHangUpRequest request) { -// TicketCall ticketCall = ticketCallService.lambdaQuery() -// .eq(TicketCall::getTicketId, request.getTicketId()) -// .ne(TicketCall::getState, 2) -// .one(); + TicketCall ticketCall = ticketCallService.lambdaQuery() + .eq(TicketCall::getTicketId, request.getTicketId()) + .ne(TicketCall::getState, 2) + .one(); + boolean flag=false; if (request.getReject()) { AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId()); if (StrUtil.equals(request.getFrom(), "app")) { @@ -1339,39 +1338,65 @@ public class TicketController extends ControllerBase { .setUserId(adminUser.getId()) .setUserName(adminUser.getUserName()) .setUserAvatar(adminUser.getAvatar()) - .setCategory("callHangUp") + .setCategory("ticketCallHangUp") .setFrom("admin") ) ) ); ssePushService.sendTicketCallHangUpToApp(request.getTicketId(), request.getFromUserId(), adminUser); -// ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); + flag=ticketCallJoinService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); }else if (StrUtil.equals(request.getFrom(), "admin")) { - uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + adminUser.getId()) - .setReceiverId("admin-uid-" + request.getFromUserId()) - .setSendData(new UniPushMessageBody() - .setTitle("拒绝视频通话") - .setContent(adminUser.getUserName() + "拒绝与您视频通话") - .setPayload(new UniPushMessageCallPayload() - .setTicketId(request.getTicketId()) - .setUserId(adminUser.getId()) - .setUserName(adminUser.getUserName()) - .setUserAvatar(adminUser.getAvatar()) - .setCategory("callHangUp") - .setFrom("admin") - ) - ) - ); - ssePushService.sendTicketCallHangUpToAdmin(request.getTicketId(), request.getFromUserId(), adminUser); -// ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); + if (Objects.equals(request.getFromUserId(), AdminUserUtil.getUserId())){ + Ticket ticket = ticketService.getById(request.getTicketId()); + int handlerId= Integer.parseInt(StrUtil.split(ticket.getHandle(), ",").stream().findFirst().get()); + uniPushService.send(new UniPushMessage() + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + handlerId) + .setSendData(new UniPushMessageBody() + .setTitle("挂断视频通话") + .setContent(adminUser.getUserName() + "挂断了与您的视频通话") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(request.getTicketId()) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCallCancel") + .setFrom("admin") + ) + ) + ); + ssePushService.sendTicketCallCancelToAdmin(request.getTicketId(), handlerId, adminUser); + flag=ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); + }else { + uniPushService.send(new UniPushMessage() + .setSenderId("admin-uid-" + adminUser.getId()) + .setReceiverId("admin-uid-" + request.getFromUserId()) + .setSendData(new UniPushMessageBody() + .setTitle("拒绝视频通话") + .setContent(adminUser.getUserName() + "拒绝与您视频通话") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(request.getTicketId()) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCallHangUp") + .setFrom("admin") + ) + ) + ); + ssePushService.sendTicketCallHangUpToAdmin(request.getTicketId(), request.getFromUserId(), adminUser); + flag=ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, true); + } } }else { -// if (StrUtil.equals(request.getFrom(), "app")) { -// ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); -// }else { -// ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); -// } + if (StrUtil.equals(request.getFrom(), "app") || Objects.equals(request.getFromUserId(), AdminUserUtil.getUserId())) { + flag=ticketCallService.hangUp(request.getTicketId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); + }else { + flag=ticketCallJoinService.hangUp(ticketCall.getId(), AdminUserUtil.getUserId(), Constant.FROM_ADMIN, false); + } + } + if (flag){ + ticketEventPublisher.publishTicketCallEndEvent(request.getTicketId()); } return ApiResult.success(); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java new file mode 100644 index 00000000..25127121 --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java @@ -0,0 +1,48 @@ +package com.nflg.mobilebroken.admin.event; + +import com.nflg.mobilebroken.admin.service.SsePushService; +import com.nflg.mobilebroken.common.constant.TicketState; +import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; +import com.nflg.mobilebroken.repository.service.TicketChatService; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ApplicationEvent; + +import java.time.Instant; + +public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware { + + private final Integer ticketId; + private final String userName; + + private SsePushService ssePushService; + private TicketChatService ticketChatService; + + public TicketCallBeginEvent(Object source, Integer ticketId, String userName) { + super(source); + this.ticketId = ticketId; + this.userName = userName; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.ssePushService = applicationContext.getBean(SsePushService.class); + this.ticketChatService = applicationContext.getBean(TicketChatService.class); + } + + public void send(){ + ChatMessageDTO message = new ChatMessageDTO() + .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) + .setFrom("call") + .setTicketState(TicketState.Processing.getState()) + .setSenderId(0) + .setSenderName("通话助手") + .setContent(userName+"发起了视频通话") + .setCreateTime(Instant.now()); + ticketChatService.addMessage(ticketId, message); + //推送消息 + ssePushService.sendTicketMessageToAdmin(ticketId,message); + ssePushService.sendTicketMessageToApp(ticketId,message); + } +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java new file mode 100644 index 00000000..fbf067cb --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java @@ -0,0 +1,46 @@ +package com.nflg.mobilebroken.admin.event; + +import com.nflg.mobilebroken.admin.service.SsePushService; +import com.nflg.mobilebroken.common.constant.TicketState; +import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; +import com.nflg.mobilebroken.repository.service.TicketChatService; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ApplicationEvent; + +import java.time.Instant; + +public class TicketCallEndEvent extends ApplicationEvent implements ApplicationContextAware { + + private final Integer ticketId; + + private SsePushService ssePushService; + private TicketChatService ticketChatService; + + public TicketCallEndEvent(Object source, Integer ticketId) { + super(source); + this.ticketId = ticketId; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.ssePushService = applicationContext.getBean(SsePushService.class); + this.ticketChatService = applicationContext.getBean(TicketChatService.class); + } + + public void send(){ + ChatMessageDTO message = new ChatMessageDTO() + .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) + .setFrom("call") + .setTicketState(TicketState.Processing.getState()) + .setSenderId(0) + .setSenderName("通话助手") + .setContent("视频通话已结束") + .setCreateTime(Instant.now()); + ticketChatService.addMessage(ticketId, message); + //推送消息 + ssePushService.sendTicketMessageToAdmin(ticketId,message); + ssePushService.sendTicketMessageToApp(ticketId,message); + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/listener/TicketEventListener.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/listener/TicketEventListener.java index e690c7a6..8ed15aac 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/listener/TicketEventListener.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/listener/TicketEventListener.java @@ -1,9 +1,6 @@ package com.nflg.mobilebroken.admin.listener; -import com.nflg.mobilebroken.admin.event.TicketAssignedEvent; -import com.nflg.mobilebroken.admin.event.TicketCloseEvent; -import com.nflg.mobilebroken.admin.event.TicketCompleteEvent; -import com.nflg.mobilebroken.admin.event.TicketReplyEvent; +import com.nflg.mobilebroken.admin.event.*; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; @@ -34,4 +31,16 @@ public class TicketEventListener { public void handleTicketCloseEvent(TicketCloseEvent event) { event.send(); } + + @Async + @EventListener + public void handleTicketCallBeginEvent(TicketCallBeginEvent event) { + event.send(); + } + + @Async + @EventListener + public void handleTicketCallEndEvent(TicketCallEndEvent event) { + event.send(); + } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java index 99d3b781..9707dc30 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java @@ -1,9 +1,6 @@ package com.nflg.mobilebroken.admin.publisher; -import com.nflg.mobilebroken.admin.event.TicketAssignedEvent; -import com.nflg.mobilebroken.admin.event.TicketCloseEvent; -import com.nflg.mobilebroken.admin.event.TicketCompleteEvent; -import com.nflg.mobilebroken.admin.event.TicketReplyEvent; +import com.nflg.mobilebroken.admin.event.*; import com.nflg.mobilebroken.repository.entity.Ticket; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; @@ -44,4 +41,16 @@ public class TicketEventPublisher { event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } + + public void publishTicketCallBeginEvent(Integer ticketId, String userName) { + TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId,userName); + event.setApplicationContext(applicationContext); + eventPublisher.publishEvent(event); + } + + public void publishTicketCallEndEvent(Integer ticketId) { + TicketCallEndEvent event = new TicketCallEndEvent(this, ticketId); + event.setApplicationContext(applicationContext); + eventPublisher.publishEvent(event); + } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java index 61520b3a..cc420f74 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java @@ -37,10 +37,11 @@ public class SsePushService { TicketMessagePushRequest request=new TicketMessagePushRequest() .setTicketId(ticketId) .setMessage(buildMessage(ticketId,message)); + log.debug("发送SSE消息:{}", JSONUtil.toJsonStr(request)); ApiResult result = sendMessage(request,"admin"); - log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result)); + log.debug("发送SSE消息结果:{}", JSONUtil.toJsonStr(result)); } catch (Exception e) { - log.error("发送消息出错", e); + log.error("发送SSE消息出错", e); } } @@ -111,6 +112,7 @@ public class SsePushService { .setType("ticketMessage") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketMessage") .setData(new ChatMessageVO() .setId(message.getId()) .setFrom(message.getFrom()) @@ -146,6 +148,7 @@ public class SsePushService { .setType("ticketMessageWithdraw") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketMessageWithdraw") .setData(messageId) ); } @@ -158,6 +161,7 @@ public class SsePushService { .setType("ticketCall") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketCall") .setData(new UniPushMessageCallPayload() .setTicketId(ticketId) .setUserId(user.getId()) @@ -182,6 +186,7 @@ public class SsePushService { .setType("ticketCall") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketCall") .setData(new UniPushMessageCallPayload() .setTicketId(ticketId) .setUserId(user.getId()) @@ -211,6 +216,7 @@ public class SsePushService { .setType("ticketCallHangUp") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketCallHangUp") .setData(new UniPushMessageCallPayload() .setTicketId(ticketId) .setUserId(user.getId()) @@ -235,6 +241,32 @@ public class SsePushService { .setType("ticketCallHangUp") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketCallHangUp") + .setData(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setUserId(user.getId()) + .setUserName(user.getUserName()) + .setUserAvatar(user.getAvatar()) + .setFrom("admin") + ) + ) + ); + ApiResult result = sendMessageByUser(request, "admin"); + log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result)); + } catch (Exception e) { + log.error("发送消息出错", e); + } + } + + public void sendTicketCallCancelToAdmin(@NotNull Integer ticketId, @NotNull Integer userId, AdminUser user) { + try { + PushUserMessageRequest request = new PushUserMessageRequest() + .setUserId(userId) + .setMessage(new PushMessageDTO() + .setType("ticketCallCancel") + .setData(new PushMessageDataBody() + .setTargetId(ticketId) + .setType("ticketCallCancel") .setData(new UniPushMessageCallPayload() .setTicketId(ticketId) .setUserId(user.getId()) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index d8c2f082..4c6c5437 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.mobilebroken.cfs.publisher.TicketEventPublisher; import com.nflg.mobilebroken.cfs.service.SsePushService; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; @@ -92,11 +93,11 @@ public class TicketController extends ControllerBase { @Resource private UniPushService uniPushService; -// @Resource -// private ITicketCallService ticketCallService; -// -// @Resource -// private ITicketCallJoinService ticketCallJoinService; + @Resource + private ITicketCallService ticketCallService; + + @Resource + private ITicketCallJoinService ticketCallJoinService; /** * 搜索设备 @@ -489,7 +490,7 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(!Objects.equals(AppUserUtil.getUserId(), ticket.getUserId())) .throwMessage("不是工单创建人无权限呼叫"); Integer handlerUserId = Arrays.stream(ticket.getHandle().split(",")).map(Integer::parseInt).findFirst().get(); -// VUtils.trueThrowBusinessError(ticketCallService.isInCall(handlerUserId)).throwMessage("对方正在通话中"); + VUtils.trueThrowBusinessError(ticketCallService.isInCall(handlerUserId)).throwMessage("对方正在通话中"); AppUser appUser = appUserService.getById(ticket.getUserId()); uniPushService.send(new UniPushMessage() .setSenderId("app-uid-" + ticket.getUserId()) @@ -502,13 +503,14 @@ public class TicketController extends ControllerBase { .setUserId(appUser.getId()) .setUserName(appUser.getName()) .setUserAvatar(appUser.getAvatar()) - .setCategory("call") + .setCategory("ticketCall") .setFrom("app") ) ) ); ssePushService.sendTicketCallToAdmin(appUser, handlerUserId, ticketId); -// ticketCallService.add(ticketId, AppUserUtil.getUserId(), handlerUserId, Constant.FROM_APP); + ticketCallService.add(ticketId, AppUserUtil.getUserId(), handlerUserId, Constant.FROM_APP); + ticketEventPublisher.publishTicketCallBeginEvent(ticketId,appUser.getName()); return ApiResult.success(); } @@ -522,9 +524,9 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())) .throwMessage("当前工单状态不允许通话"); -// VUtils.trueThrowBusinessError(ticketCallService.isInCall(AppUserUtil.getUserId())) -// .throwMessage("您已加入别的通话中"); -// ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP); + VUtils.trueThrowBusinessError(ticketCallService.isInCall(AppUserUtil.getUserId())) + .throwMessage("您已加入别的通话中"); + ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP); return ApiResult.success(); } @@ -534,26 +536,54 @@ public class TicketController extends ControllerBase { */ @PostMapping("call/hangUp") public ApiResult hangUp(@Valid @RequestBody TicketCallHangUpRequest request) { + boolean flag=false; if (request.getReject()) { - AppUser appUser = appUserService.getById(AppUserUtil.getUserId()); - uniPushService.send(new UniPushMessage() - .setSenderId("app-uid-" + appUser.getId()) - .setReceiverId("admin-uid-" + request.getFromUserId()) - .setSendData(new UniPushMessageBody() - .setTitle("拒绝视频通话") - .setContent(appUser.getName() + "拒绝与您视频通话") - .setPayload(new UniPushMessageCallPayload() - .setTicketId(request.getTicketId()) - .setUserId(appUser.getId()) - .setUserName(appUser.getName()) - .setUserAvatar(appUser.getAvatar()) - .setCategory("callHangUp") - .setFrom("app") - ) - ) - ); - ssePushService.sendTicketCallHangUpToAdmin(request.getTicketId(), request.getFromUserId(), appUser); -// ticketCallService.hangUp(request.getTicketId(), AppUserUtil.getUserId(), Constant.FROM_APP, true); + if (StrUtil.equals(request.getFrom(), Constant.FROM_APP) && Objects.equals(AppUserUtil.getUserId(), request.getFromUserId())) { + AppUser appUser = appUserService.getById(AppUserUtil.getUserId()); + Ticket ticket = ticketService.getById(request.getTicketId()); + int handlerId= Integer.parseInt(StrUtil.split(ticket.getHandle(), ",").stream().findFirst().get()); + uniPushService.send(new UniPushMessage() + .setSenderId("app-uid-" + appUser.getId()) + .setReceiverId("admin-uid-" + handlerId) + .setSendData(new UniPushMessageBody() + .setTitle("挂断视频通话") + .setContent(appUser.getName() + "挂断了与您的视频通话") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(request.getTicketId()) + .setUserId(appUser.getId()) + .setUserName(appUser.getName()) + .setUserAvatar(appUser.getAvatar()) + .setCategory("ticketCallCancel") + .setFrom("app") + ) + ) + ); + ssePushService.sendTicketCallCancelToAdmin(request.getTicketId(), handlerId, appUser); + flag=ticketCallService.hangUp(request.getTicketId(), AppUserUtil.getUserId(), Constant.FROM_APP, true); + }else { + AppUser appUser = appUserService.getById(AppUserUtil.getUserId()); + uniPushService.send(new UniPushMessage() + .setSenderId("app-uid-" + appUser.getId()) + .setReceiverId("admin-uid-" + request.getFromUserId()) + .setSendData(new UniPushMessageBody() + .setTitle("拒绝视频通话") + .setContent(appUser.getName() + "拒绝与您视频通话") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(request.getTicketId()) + .setUserId(appUser.getId()) + .setUserName(appUser.getName()) + .setUserAvatar(appUser.getAvatar()) + .setCategory("ticketCallHangUp") + .setFrom("app") + ) + ) + ); + ssePushService.sendTicketCallHangUpToAdmin(request.getTicketId(), request.getFromUserId(), appUser); + flag=ticketCallJoinService.hangUp(request.getTicketId(), AppUserUtil.getUserId(), Constant.FROM_APP, true); + } + } + if (flag){ + ticketEventPublisher.publishTicketCallEndEvent(request.getTicketId()); } return ApiResult.success(); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java new file mode 100644 index 00000000..78adcf3f --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java @@ -0,0 +1,48 @@ +package com.nflg.mobilebroken.cfs.event; + +import com.nflg.mobilebroken.cfs.service.SsePushService; +import com.nflg.mobilebroken.common.constant.TicketState; +import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; +import com.nflg.mobilebroken.repository.service.TicketChatService; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ApplicationEvent; + +import java.time.Instant; + +public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware { + + private final Integer ticketId; + private final String userName; + + private SsePushService ssePushService; + private TicketChatService ticketChatService; + + public TicketCallBeginEvent(Object source, Integer ticketId, String userName) { + super(source); + this.ticketId = ticketId; + this.userName = userName; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.ssePushService = applicationContext.getBean(SsePushService.class); + this.ticketChatService = applicationContext.getBean(TicketChatService.class); + } + + public void send(){ + ChatMessageDTO message = new ChatMessageDTO() + .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) + .setFrom("call") + .setTicketState(TicketState.Processing.getState()) + .setSenderId(0) + .setSenderName("通话助手") + .setContent(userName+"发起了视频通话") + .setCreateTime(Instant.now()); + ticketChatService.addMessage(ticketId, message); + //推送消息 + ssePushService.sendTicketMessageToAdmin(ticketId,message); + ssePushService.sendTicketMessageToApp(ticketId,message); + } +} diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java new file mode 100644 index 00000000..943d67c2 --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java @@ -0,0 +1,46 @@ +package com.nflg.mobilebroken.cfs.event; + +import com.nflg.mobilebroken.cfs.service.SsePushService; +import com.nflg.mobilebroken.common.constant.TicketState; +import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; +import com.nflg.mobilebroken.repository.service.TicketChatService; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ApplicationEvent; + +import java.time.Instant; + +public class TicketCallEndEvent extends ApplicationEvent implements ApplicationContextAware { + + private final Integer ticketId; + + private SsePushService ssePushService; + private TicketChatService ticketChatService; + + public TicketCallEndEvent(Object source,Integer ticketId) { + super(source); + this.ticketId = ticketId; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.ssePushService = applicationContext.getBean(SsePushService.class); + this.ticketChatService = applicationContext.getBean(TicketChatService.class); + } + + public void send(){ + ChatMessageDTO message = new ChatMessageDTO() + .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) + .setFrom("call") + .setTicketState(TicketState.Processing.getState()) + .setSenderId(0) + .setSenderName("通话助手") + .setContent("视频通话已结束") + .setCreateTime(Instant.now()); + ticketChatService.addMessage(ticketId, message); + //推送消息 + ssePushService.sendTicketMessageToAdmin(ticketId,message); + ssePushService.sendTicketMessageToApp(ticketId,message); + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/listener/TicketEventListener.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/listener/TicketEventListener.java index 38526f61..a9394044 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/listener/TicketEventListener.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/listener/TicketEventListener.java @@ -37,4 +37,16 @@ public class TicketEventListener { public void handleTicketCloseEvent(TicketCloseEvent event) { event.send(); } + + @Async + @EventListener + public void handleTicketCallBeginEvent(TicketCallBeginEvent event) { + event.send(); + } + + @Async + @EventListener + public void handleTicketCallEndEvent(TicketCallEndEvent event) { + event.send(); + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java index 8beedc7a..cb5bd6cb 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java @@ -52,4 +52,16 @@ public class TicketEventPublisher { event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } + + public void publishTicketCallBeginEvent(Integer ticketId, String userName) { + TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId,userName); + event.setApplicationContext(applicationContext); + eventPublisher.publishEvent(event); + } + + public void publishTicketCallEndEvent(Integer ticketId) { + TicketCallEndEvent event = new TicketCallEndEvent(this, ticketId); + event.setApplicationContext(applicationContext); + eventPublisher.publishEvent(event); + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java index 58e3b9ff..4b2382e6 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java @@ -103,6 +103,7 @@ public class SsePushService { .setType("ticketMessage") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketMessage") .setData(new ChatMessageVO() .setId(message.getId()) .setFrom(message.getFrom()) @@ -136,7 +137,10 @@ public class SsePushService { private PushMessageDTO buildWithdrawMessage(Integer ticketId,String messageId) { return new PushMessageDTO() .setType("ticketMessageWithdraw") - .setData(new PushMessageDataBody().setTargetId(ticketId).setData(messageId)); + .setData(new PushMessageDataBody() + .setType("ticketMessageWithdraw") + .setTargetId(ticketId) + .setData(messageId)); } public void sendTicketCallToAdmin(AppUser appUser, Integer userId, Integer ticketId) { @@ -146,6 +150,7 @@ public class SsePushService { .setType("ticketCall") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketCall") .setData(new UniPushMessageCallPayload() .setTicketId(ticketId) .setUserId(appUser.getId()) @@ -176,6 +181,32 @@ public class SsePushService { .setType("ticketCallHangUp") .setData(new PushMessageDataBody() .setTargetId(ticketId) + .setType("ticketCallHangUp") + .setData(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setUserId(user.getId()) + .setUserName(user.getName()) + .setUserAvatar(user.getAvatar()) + .setFrom("app") + ) + ) + ); + ApiResult result = sendMessageByUser(request, "admin"); + log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result)); + } catch (Exception e) { + log.error("发送消息出错", e); + } + } + + public void sendTicketCallCancelToAdmin(@NotNull Integer ticketId, @NotNull Integer userId, AppUser user) { + try { + PushUserMessageRequest request = new PushUserMessageRequest() + .setUserId(userId) + .setMessage(new PushMessageDTO() + .setType("ticketCallCancel") + .setData(new PushMessageDataBody() + .setTargetId(ticketId) + .setType("ticketCallCancel") .setData(new UniPushMessageCallPayload() .setTicketId(ticketId) .setUserId(user.getId()) diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PushMessageDataBody.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PushMessageDataBody.java index 06d30c51..95b92743 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PushMessageDataBody.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/PushMessageDataBody.java @@ -9,5 +9,10 @@ public class PushMessageDataBody { private Integer targetId; + /** + * 消息类型 + */ + private String type; + private Object data; } diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java index 205001e5..9780e9e5 100644 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java +++ b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java @@ -12,6 +12,8 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @Accessors(chain = true) public class UserSseEmitter extends SseEmitter { + private String from; + private Integer userId; private Integer ticketId; @@ -19,4 +21,8 @@ public class UserSseEmitter extends SseEmitter { public UserSseEmitter(){ super(0L); } + + public String getUser(){ + return from + "-" + userId; + } } diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/config/CorsConfig.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/config/CorsConfig.java deleted file mode 100644 index d423afb3..00000000 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/config/CorsConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.nflg.mobilebroken.push.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class CorsConfig { - - @Bean - public WebMvcConfigurer corsConfigurer() { - return new WebMvcConfigurer() { - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") // 允许所有路径 - .allowedOrigins("*") // 允许所有来源 - .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法 - .allowedHeaders("*") // 允许所有请求头 - .allowCredentials(true) // 允许携带凭证(如cookies) - .maxAge(3600); // 预检请求的缓存时间(秒) - } - }; - } -} diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/controller/SSEController.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/controller/SSEController.java index f0dd5ae3..98bcbce7 100644 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/controller/SSEController.java +++ b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/controller/SSEController.java @@ -6,9 +6,11 @@ import com.nflg.mobilebroken.common.pojo.request.PushUserMessageRequest; import com.nflg.mobilebroken.common.pojo.request.TicketMessagePushRequest; import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.AppUserUtil; +import com.nflg.mobilebroken.common.util.IdUtil; import com.nflg.mobilebroken.push.service.impl.APPSSEManagerService; import com.nflg.mobilebroken.push.service.impl.AdminSSEManagerService; import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -44,11 +46,14 @@ public class SSEController { @PostMapping("app/push/ticket/message") public ApiResult pushToApp(@Valid @RequestBody @NotNull TicketMessagePushRequest request){ try { + MDC.put("traceId", IdUtil.getIdStr()); appsseManagerService.sendTicketMessage(request.getTicketId(),request.getMessage()); return ApiResult.success(); } catch (IOException e) { log.error("发送SSE消息出错", e); return ApiResult.error(STATE.BusinessError,e.getMessage()); + }finally { + MDC.remove("traceId"); } } @@ -59,11 +64,14 @@ public class SSEController { @PostMapping("app/push/user/message") public ApiResult appMessageByUser(@Valid @RequestBody @NotNull PushUserMessageRequest request){ try { + MDC.put("traceId", IdUtil.getIdStr()); appsseManagerService.sendByUser(request.getUserId(),request.getMessage()); return ApiResult.success(); } catch (Exception e) { log.error("发送SSE消息出错", e); return ApiResult.error(STATE.BusinessError,e.getMessage()); + }finally { + MDC.remove("traceId"); } } @@ -82,11 +90,14 @@ public class SSEController { @PostMapping("admin/push/ticket/message") public ApiResult adminPushTicketMessage(@Valid @RequestBody @NotNull TicketMessagePushRequest request){ try { + MDC.put("traceId", IdUtil.getIdStr()); adminSSEManagerService.sendTicketMessage(request.getTicketId(),request.getMessage()); return ApiResult.success(); } catch (IOException e) { log.error("发送SSE消息出错", e); return ApiResult.error(STATE.BusinessError,e.getMessage()); + }finally { + MDC.remove("traceId"); } } @@ -97,11 +108,14 @@ public class SSEController { @PostMapping("admin/push/user/message") public ApiResult adminMessageByUser(@Valid @RequestBody @NotNull PushUserMessageRequest request){ try { + MDC.put("traceId", IdUtil.getIdStr()); adminSSEManagerService.sendByUser(request.getUserId(),request.getMessage()); return ApiResult.success(); } catch (Exception e) { log.error("发送SSE消息出错", e); return ApiResult.error(STATE.BusinessError,e.getMessage()); + }finally { + MDC.remove("traceId"); } } } diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java index b0c34185..7118abaf 100644 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java +++ b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java @@ -57,30 +57,30 @@ public class SSEManagerBase { protected SseEmitter connect(Integer ticketId,Integer userId) { check(); - log.info(from+"SSE连接:用户id:"+userId+",工单id:"+ticketId); - UserSseEmitter emitter = new UserSseEmitter(userId,ticketId); + log.info(from + "SSE连接:用户id:" + userId + ",工单id:" + ticketId); + UserSseEmitter emitter = new UserSseEmitter(from, userId, ticketId); SSE_EMITTERS.add(emitter); ScheduledFuture heartbeatTask = startHeartbeat(emitter); emitter.onError((ex) -> { - remove(userId, emitter,heartbeatTask); - log.error("SSE异常:"+userId, ex); + remove(emitter,heartbeatTask); + log.error("SSE异常({}):{}", ex.getMessage(),emitter.getUser()); }); emitter.onTimeout(() -> { - remove(userId, emitter,heartbeatTask); + remove(emitter,heartbeatTask); log.error("SSE超时:"+userId); }); emitter.onCompletion(() -> { - remove(userId, emitter,heartbeatTask); + remove(emitter,heartbeatTask); log.error("SSE完成:"+userId); }); try { emitter.send(SseEmitter.event().data("已连接").reconnectTime(5000)); }catch (ClientAbortException e){ log.error("客户端断开连接:{}", userId); - emitter.complete(); + emitter.completeWithError(e); } catch (IOException e) { - log.error("sse发送数据出错", e); + log.error("sse发送数据出错:{}", e.getMessage()); emitter.completeWithError(e); } return emitter; @@ -99,10 +99,10 @@ public class SSEManagerBase { try { emitter.send(SseEmitter.event().name(dto.getType()).data(dto.getData())); } catch (ClientAbortException e) { - log.error("客户端断开连接:{}", emitter.getUserId()); - emitter.complete(); + log.error("客户端断开连接:{}", emitter.getUser()); + emitter.completeWithError(e); } catch (IOException e) { - log.error("sse发送数据出错", e); + log.error("sse发送数据出错:{}", e.getMessage()); emitter.completeWithError(e); } }); @@ -111,7 +111,7 @@ public class SSEManagerBase { protected void sendByUser(Integer userId, PushMessageDTO dto) { log.info(StrUtil.format(from + "SSE发送消息,用户id: {},内容: {}", userId, dto)); List emitters = SSE_EMITTERS.stream() - .filter(s -> Objects.equals(s.getUserId(), userId)) + .filter(s -> StrUtil.equals(s.getFrom(), from) && Objects.equals(s.getUserId(), userId)) .collect(Collectors.toList()); if (CollectionUtil.isEmpty(emitters)) { log.info(StrUtil.format(from + "用户未连接:{}", userId)); @@ -122,26 +122,30 @@ public class SSEManagerBase { emitter.send(SseEmitter.event().name(dto.getType()).data(dto.getData())); log.info("发送成功"); } catch (ClientAbortException e) { - log.error("客户端断开连接:{}", emitter.getUserId()); - emitter.complete(); + log.error("客户端断开连接:{}", emitter.getUser()); + emitter.completeWithError(e); }catch (IOException e) { - log.error("sse发送数据出错", e); + log.error("sse发送数据出错:{}", e.getMessage()); emitter.completeWithError(e); } }); } - private void remove(Integer userId,UserSseEmitter emitter,ScheduledFuture heartbeatTask){ - heartbeatTask.cancel(false); + private void remove(UserSseEmitter emitter,ScheduledFuture heartbeatTask){ + heartbeatTask.cancel(true); SSE_EMITTERS.remove(emitter); emitter.complete(); + emitter=null; } private ScheduledFuture startHeartbeat(UserSseEmitter emitter) { return taskScheduler.scheduleAtFixedRate(() -> { try { - emitter.send(SseEmitter.event().data("ping")); + if (Objects.nonNull(emitter)) { + emitter.send(SseEmitter.event().data("ping")); + } } catch (IOException e) { + log.error("sse发送ping数据出错({}):{}", emitter.getUser(),e.getMessage()); emitter.completeWithError(e); } }, 30_000); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java index a0c1dafd..8d20483c 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallJoinService.java @@ -22,7 +22,7 @@ public interface ITicketCallJoinService extends IService { boolean allIsHangUp(Integer callId); - void hangUp(Integer callId, Integer userId, String from, boolean reject); + boolean hangUp(Integer callId, Integer userId, String from, boolean reject); void add(Integer callId, Integer userId, String from); diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallService.java index d5fb0b61..fe460741 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketCallService.java @@ -19,5 +19,5 @@ public interface ITicketCallService extends IService { void add(Integer ticketId, Integer callerUserId, Integer calledUserId, String from); - void hangUp(@NotNull Integer ticketId, Integer userId, String from, boolean reject); + boolean hangUp(@NotNull Integer ticketId, Integer userId, String from, boolean reject); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java index 80bde7c0..22f47fd9 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketCallJoinServiceImpl.java @@ -42,7 +42,7 @@ public class TicketCallJoinServiceImpl extends ServiceImpl diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/CorsConfig.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/CorsConfig.java deleted file mode 100644 index 7d65da0b..00000000 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/CorsConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.nflg.mobilebroken.starter.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class CorsConfig { - - @Bean - public WebMvcConfigurer corsConfigurer() { - return new WebMvcConfigurer() { - @Override - public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/**") // 允许所有路径 - .allowedOrigins("*") // 允许所有来源 - .allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的HTTP方法 - .allowedHeaders("*") // 允许所有请求头 - .allowCredentials(true) // 允许携带凭证(如cookies) - .maxAge(3600); // 预检请求的缓存时间(秒) - } - }; - } -} diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/RedisConfig.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/RedisConfig.java index a57b5ad5..43ad46dd 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/RedisConfig.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/config/RedisConfig.java @@ -43,6 +43,9 @@ public class RedisConfig { template.setKeySerializer(new StringRedisSerializer()); // 设置 Value 的序列化器 template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + // 设置 Hash Key 的序列化器 + template.setHashKeySerializer(new StringRedisSerializer()); + // 设置 Hash Value 的序列化器 template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); return template; } From ecce586407a503c7abc9ac9eb66824f361d81a83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 26 May 2025 13:36:47 +0800 Subject: [PATCH 08/19] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E4=B8=AD?= =?UTF-8?q?=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobilebroken/push/UserSseEmitter.java | 30 +++++++++++++++++-- .../push/service/SSEManagerBase.java | 25 ++++------------ 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java index 9780e9e5..55290553 100644 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java +++ b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/UserSseEmitter.java @@ -1,14 +1,18 @@ package com.nflg.mobilebroken.push; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.TaskScheduler; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; +import java.io.IOException; +import java.util.concurrent.ScheduledFuture; + +@Slf4j @EqualsAndHashCode(callSuper = true) @Data -@AllArgsConstructor @Accessors(chain = true) public class UserSseEmitter extends SseEmitter { @@ -18,11 +22,31 @@ public class UserSseEmitter extends SseEmitter { private Integer ticketId; + private ScheduledFuture heartbeatFuture; + public UserSseEmitter(){ super(0L); } + public UserSseEmitter(String from, Integer userId, Integer ticketId) { + this.from = from; + this.userId = userId; + this.ticketId = ticketId; + } + public String getUser(){ return from + "-" + userId; } -} + + public void startHeartbeat(TaskScheduler taskScheduler) { + heartbeatFuture= taskScheduler.scheduleAtFixedRate(() -> { + try { + send(SseEmitter.event().data("ping")); + } catch (IOException e) { + heartbeatFuture.cancel(true); + log.error("sse发送ping数据出错({}):{}", getUser(),e.getMessage()); + completeWithError(e); + } + }, 30_000); + } +} \ No newline at end of file diff --git a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java index 7118abaf..8b3c682e 100644 --- a/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java +++ b/nflg-mobilebroken-push/src/main/java/com/nflg/mobilebroken/push/service/SSEManagerBase.java @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; -import java.util.concurrent.ScheduledFuture; import java.util.stream.Collectors; @Slf4j @@ -59,18 +58,18 @@ public class SSEManagerBase { check(); log.info(from + "SSE连接:用户id:" + userId + ",工单id:" + ticketId); UserSseEmitter emitter = new UserSseEmitter(from, userId, ticketId); + emitter.startHeartbeat(taskScheduler); SSE_EMITTERS.add(emitter); - ScheduledFuture heartbeatTask = startHeartbeat(emitter); emitter.onError((ex) -> { - remove(emitter,heartbeatTask); + remove(emitter); log.error("SSE异常({}):{}", ex.getMessage(),emitter.getUser()); }); emitter.onTimeout(() -> { - remove(emitter,heartbeatTask); + remove(emitter); log.error("SSE超时:"+userId); }); emitter.onCompletion(() -> { - remove(emitter,heartbeatTask); + remove(emitter); log.error("SSE完成:"+userId); }); try { @@ -131,23 +130,9 @@ public class SSEManagerBase { }); } - private void remove(UserSseEmitter emitter,ScheduledFuture heartbeatTask){ - heartbeatTask.cancel(true); + private void remove(UserSseEmitter emitter){ SSE_EMITTERS.remove(emitter); emitter.complete(); emitter=null; } - - private ScheduledFuture startHeartbeat(UserSseEmitter emitter) { - return taskScheduler.scheduleAtFixedRate(() -> { - try { - if (Objects.nonNull(emitter)) { - emitter.send(SseEmitter.event().data("ping")); - } - } catch (IOException e) { - log.error("sse发送ping数据出错({}):{}", emitter.getUser(),e.getMessage()); - emitter.completeWithError(e); - } - }, 30_000); - } } \ No newline at end of file From 3c7b780fc2fc9ce461bc1bba845dd00633f1394b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 26 May 2025 17:15:04 +0800 Subject: [PATCH 09/19] =?UTF-8?q?feat:=20bug-245=20=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E9=80=9A=E8=AF=9D=E4=BC=98=E5=8C=96=EF=BC=8C=E5=A4=9A=E7=AB=AF?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=EF=BC=8C=E6=9C=89=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=8E=A5=E5=90=AC=E5=90=8E=EF=BC=8C=E7=BB=99?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E8=AE=BE=E5=A4=87=E6=8E=A8=E9=80=81=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=8E=A5=E5=90=AC=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/TicketController.java | 15 +++++++++++++ .../admin/service/SsePushService.java | 22 +++++++++++++++++++ .../cfs/controller/TicketController.java | 17 +++++++++++++- .../cfs/service/SsePushService.java | 22 +++++++++++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) 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 8563da2f..6956f625 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 @@ -1310,6 +1310,21 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(ticketCallService.isInCall(AdminUserUtil.getUserId())) .throwMessage("您已加入别的通话中"); ticketCallJoinService.join(ticketId, AdminUserUtil.getUserId(),Constant.FROM_ADMIN); + ssePushService.sendTicketCallJoinedToAdmin(AdminUserUtil.getUserId(), ticketId); + uniPushService.send(new UniPushMessage() + .setSenderId("admin-uid-" + AdminUserUtil.getUserId()) + .setReceiverId("admin-uid-" + AdminUserUtil.getUserId()) + .setSendData(new UniPushMessageBody() + .setTitle("视频通话") + .setContent("您已加入别的通话中") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setUserId(AdminUserUtil.getUserId()) + .setCategory("ticketCallJoined") + .setFrom("admin") + ) + ) + ); return ApiResult.success(); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java index cc420f74..8cee0ead 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java @@ -282,4 +282,26 @@ public class SsePushService { log.error("发送消息出错", e); } } + + public void sendTicketCallJoinedToAdmin(Integer userId, @Valid @NotNull Integer ticketId) { + try { + PushUserMessageRequest request = new PushUserMessageRequest() + .setUserId(userId) + .setMessage(new PushMessageDTO() + .setType("ticketCallJoined") + .setData(new PushMessageDataBody() + .setTargetId(ticketId) + .setType("ticketCallJoined") + .setData(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setFrom("admin") + ) + ) + ); + ApiResult result = sendMessageByUser(request, "admin"); + log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result)); + } catch (Exception e) { + log.error("发送消息出错", e); + } + } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index 4c6c5437..72d49e8d 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -526,7 +526,22 @@ public class TicketController extends ControllerBase { .throwMessage("当前工单状态不允许通话"); VUtils.trueThrowBusinessError(ticketCallService.isInCall(AppUserUtil.getUserId())) .throwMessage("您已加入别的通话中"); - ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP); + ticketCallJoinService.join(ticketId, AppUserUtil.getUserId(), Constant.FROM_APP); + ssePushService.sendTicketCallJoinedToApp(AppUserUtil.getUserId(), ticketId); + uniPushService.send(new UniPushMessage() + .setSenderId("app-uid-" + AppUserUtil.getUserId()) + .setReceiverId("app-uid-" + AppUserUtil.getUserId()) + .setSendData(new UniPushMessageBody() + .setTitle("视频通话") + .setContent("您已加入别的通话中") + .setPayload(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setUserId(AppUserUtil.getUserId()) + .setCategory("ticketCallJoined") + .setFrom("app") + ) + ) + ); return ApiResult.success(); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java index 4b2382e6..94347f66 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/service/SsePushService.java @@ -222,4 +222,26 @@ public class SsePushService { log.error("发送消息出错", e); } } + + public void sendTicketCallJoinedToApp(Integer userId,@NotNull Integer ticketId) { + try { + PushUserMessageRequest request = new PushUserMessageRequest() + .setUserId(userId) + .setMessage(new PushMessageDTO() + .setType("ticketCallJoined") + .setData(new PushMessageDataBody() + .setTargetId(ticketId) + .setType("ticketCallJoined") + .setData(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setFrom("app") + ) + ) + ); + ApiResult result = sendMessageByUser(request, "app"); + log.debug("发送消息结果:{}", JSONUtil.toJsonStr(result)); + } catch (Exception e) { + log.error("发送消息出错", e); + } + } } \ No newline at end of file From e62cabc22353adaabf7f5fc998272bcd9d9228ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 10 Jun 2025 16:50:24 +0800 Subject: [PATCH 10/19] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E9=A1=B9=E6=98=BE=E7=A4=BA=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/DictionaryItemTranslateMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml index 7b2ab2ed..8b7eb326 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/DictionaryItemTranslateMapper.xml @@ -33,6 +33,7 @@ INNER JOIN dictionary_item di ON d.id=di.dictionary_id LEFT JOIN dictionary_item_translate dit ON di.id=dit.dictionary_item_id AND dit.language_code=#{language} WHERE d.`code`=#{dictionaryCode} + ORDER BY di.id DESC select distinct name,batch_number from product_type - where enable=1 and state!=2 + where enable=1 and state!=2 and series_number=#{seriesNumber} + + + + + +