From 7865018df5e547fbdad9c9b9aeb33cd2a25920b3 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Fri, 13 Dec 2024 18:53:00 +0800 Subject: [PATCH] feat: update cdr info --- sql/wfc_user_db/wfc_user_db.sql | 11 +- .../org/wfc/user/api/RemoteUUserService.java | 9 +- .../org/wfc/user/api/domain/bo/UClientBo.java | 33 +++++ .../factory/RemoteUUserFallbackFactory.java | 6 + .../wfc/auth/controller/TokenController.java | 9 ++ .../wfc/user/controller/UCdrController.java | 34 +++++- ...roller.java => UCdrHistoryController.java} | 6 +- .../user/controller/UClientController.java | 18 +++ .../main/java/org/wfc/user/domain/UCdr.java | 4 + .../{UCdrDetail.java => UCdrHistory.java} | 18 +-- .../java/org/wfc/user/domain/UClient.java | 4 + .../java/org/wfc/user/domain/UDevice.java | 7 +- .../org/wfc/user/domain/bo/UCdrClientBo.java | 14 +++ .../org/wfc/user/domain/vo/UCdrClientVo.java | 22 ++++ .../org/wfc/user/domain/vo/UCdrUserVo.java | 18 +++ ...tailMapper.java => UCdrHistoryMapper.java} | 6 +- .../java/org/wfc/user/mapper/UCdrMapper.java | 12 +- ...lService.java => IUCdrHistoryService.java} | 6 +- .../org/wfc/user/service/IUCdrService.java | 11 +- .../org/wfc/user/service/IUClientService.java | 5 +- .../service/impl/UCdrDetailServiceImpl.java | 20 --- .../service/impl/UCdrHistoryServiceImpl.java | 20 +++ .../user/service/impl/UCdrServiceImpl.java | 114 ++++++++++-------- .../user/service/impl/UClientServiceImpl.java | 22 +++- ...DetailMapper.xml => UCdrHistoryMapper.xml} | 2 +- .../main/resources/mapper/user/UCdrMapper.xml | 70 +++++++++++ .../test/java/org/wfc/user/UClientTest.java | 2 +- 27 files changed, 400 insertions(+), 103 deletions(-) create mode 100644 wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/domain/bo/UClientBo.java rename wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/{UCdrDetailController.java => UCdrHistoryController.java} (73%) rename wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/{UCdrDetail.java => UCdrHistory.java} (71%) create mode 100644 wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/bo/UCdrClientBo.java create mode 100644 wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrClientVo.java create mode 100644 wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrUserVo.java rename wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/{UCdrDetailMapper.java => UCdrHistoryMapper.java} (57%) rename wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/{IUCdrDetailService.java => IUCdrHistoryService.java} (57%) delete mode 100644 wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrDetailServiceImpl.java create mode 100644 wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrHistoryServiceImpl.java rename wfc-modules/wfc-modules-user/src/main/resources/mapper/user/{UCdrDetailMapper.xml => UCdrHistoryMapper.xml} (72%) diff --git a/sql/wfc_user_db/wfc_user_db.sql b/sql/wfc_user_db/wfc_user_db.sql index 42a0d40..6f957d8 100644 --- a/sql/wfc_user_db/wfc_user_db.sql +++ b/sql/wfc_user_db/wfc_user_db.sql @@ -75,14 +75,14 @@ CREATE TABLE `u_cdr` ( -- ---------------------------- -- Table structure for u_cdr_detail -- ---------------------------- -DROP TABLE IF EXISTS `u_cdr_detail`; -CREATE TABLE `u_cdr_detail` ( +DROP TABLE IF EXISTS `u_cdr_history`; +CREATE TABLE `u_cdr_history` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'CDR Detail ID', `cdr_id` bigint(20) NULL DEFAULT NULL COMMENT 'CDR ID', `traffic_down` bigint(20) NULL DEFAULT NULL COMMENT 'Downstream traffic (Byte)', `traffic_up` bigint(20) NULL DEFAULT NULL COMMENT 'Upstream traffic (Byte)', - `start_time` datetime NULL DEFAULT NULL COMMENT 'Start time', - `end_time` datetime NULL DEFAULT NULL COMMENT 'End time', + `start_time` bigint(20) NULL DEFAULT NULL COMMENT 'Start time', + `end_time` bigint(20) NULL DEFAULT NULL COMMENT 'End time', `duration` bigint(20) NULL DEFAULT NULL COMMENT 'Duration(s)', `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '0' COMMENT 'delete flag', `create_by` bigint(20) NULL DEFAULT NULL COMMENT 'creater', @@ -90,7 +90,7 @@ CREATE TABLE `u_cdr_detail` ( `update_by` bigint(20) NULL DEFAULT NULL COMMENT 'updater', `update_time` datetime NULL DEFAULT NULL COMMENT 'update time', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户平台_话单明细表' ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户平台_话单历史表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for u_client @@ -175,7 +175,6 @@ INSERT INTO `u_dept` VALUES (101, 100, '0,100', 'No.1', 1, 'system', '123456', ' DROP TABLE IF EXISTS `u_device`; CREATE TABLE `u_device` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Device ID', - `user_id` bigint(20) NULL DEFAULT NULL COMMENT 'User ID link to u_user', `device_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'Device Name', `device_ip` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'Device ip', `device_mac` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'Device mac', diff --git a/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/RemoteUUserService.java b/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/RemoteUUserService.java index 78e2d40..854cd9c 100644 --- a/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/RemoteUUserService.java +++ b/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/RemoteUUserService.java @@ -14,6 +14,7 @@ import org.wfc.common.core.domain.LoginUser; import org.wfc.common.core.domain.R; import org.wfc.common.core.web.page.TableDataInfo; import org.wfc.user.api.domain.UUser; +import org.wfc.user.api.domain.bo.UClientBo; import org.wfc.user.api.factory.RemoteUUserFallbackFactory; /** @@ -75,6 +76,12 @@ public interface RemoteUUserService /** * 添加话单信息通过OmadaApi */ - @GetMapping("/user/uCdr/addCdrInfo") + @GetMapping("/cdr/addCdrInfo") public R addCdrInfoByOmadaApi(); + + /** + * + */ + @GetMapping("/user/uClient/recordClientUser") + public R recordClientUser(@RequestBody UClientBo clientBo); } diff --git a/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/domain/bo/UClientBo.java b/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/domain/bo/UClientBo.java new file mode 100644 index 0000000..f1062e5 --- /dev/null +++ b/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/domain/bo/UClientBo.java @@ -0,0 +1,33 @@ +package org.wfc.user.api.domain.bo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *

+ * 用户平台_用户设备bo + *

+ * + * @author cyc + * @since 2024-12-09 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class UClientBo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long userId; + + private String clientName; + + private String clientDeviceType; + + private String clientMac; +} diff --git a/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/factory/RemoteUUserFallbackFactory.java b/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/factory/RemoteUUserFallbackFactory.java index 7a81891..d77f0bc 100644 --- a/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/factory/RemoteUUserFallbackFactory.java +++ b/wfc-api/wfc-api-user/src/main/java/org/wfc/user/api/factory/RemoteUUserFallbackFactory.java @@ -10,6 +10,7 @@ import org.wfc.common.core.domain.R; import org.wfc.common.core.web.page.TableDataInfo; import org.wfc.user.api.RemoteUUserService; import org.wfc.user.api.domain.UUser; +import org.wfc.user.api.domain.bo.UClientBo; import java.util.Collections; @@ -65,6 +66,11 @@ public class RemoteUUserFallbackFactory implements FallbackFactory addCdrInfoByOmadaApi() { return R.fail("添加话单信息失败:" + throwable.getMessage()); } + + @Override + public R recordClientUser(UClientBo clientBo) { + return R.fail("根据设备mac保存或更新设备信息失败:" + throwable.getMessage()); + } }; } } diff --git a/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java b/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java index 0d94da3..adc0040 100644 --- a/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java +++ b/wfc-auth/src/main/java/org/wfc/auth/controller/TokenController.java @@ -18,7 +18,9 @@ import org.wfc.common.security.auth.AuthUtil; import org.wfc.common.security.service.TokenService; import org.wfc.common.security.utils.SecurityUtils; import org.wfc.system.api.domain.SysUser; +import org.wfc.user.api.RemoteUUserService; import org.wfc.user.api.domain.UUser; +import org.wfc.user.api.domain.bo.UClientBo; import javax.servlet.http.HttpServletRequest; @@ -38,6 +40,9 @@ public class TokenController { @Autowired private ULoginService uLoginService; + @Autowired + private RemoteUUserService remoteUUserService; + @PostMapping("login") public R login(@RequestBody LoginBody form) { if ("u".equals(form.getAuthType())) { @@ -48,6 +53,10 @@ public class TokenController { // 用户登录 LoginUser userInfo = uLoginService.login(form.getUsername(), form.getPassword()); userInfo.setWanFiRedirectParams(wanFiRedirectParams); + // 记录设备所属用户信息 + UClientBo uClientBo = UClientBo.builder().clientMac(wanFiRedirectParams.getClientMac()) + .userId(userInfo.getUserid()).build(); + remoteUUserService.recordClientUser(uClientBo); // 获取登录token return R.ok(tokenService.createToken(userInfo)); } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrController.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrController.java index 05e4338..0369cc8 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrController.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrController.java @@ -5,8 +5,15 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.wfc.common.core.domain.R; +import org.wfc.common.core.web.controller.BaseController; +import org.wfc.common.core.web.page.TableDataInfo; +import org.wfc.user.domain.bo.UCdrClientBo; +import org.wfc.user.domain.vo.UCdrClientVo; +import org.wfc.user.domain.vo.UCdrUserVo; import org.wfc.user.service.IUCdrService; +import java.util.List; + /** *

* 用户平台_用户话单表 前端控制器 @@ -16,8 +23,8 @@ import org.wfc.user.service.IUCdrService; * @since 2024-12-09 */ @RestController -@RequestMapping("/user/uCdr") -public class UCdrController { +@RequestMapping("/cdr") +public class UCdrController extends BaseController { @Autowired private IUCdrService cdrService; @@ -31,4 +38,27 @@ public class UCdrController { return R.ok(true); } + /** + * 根据用户查询话单 + * + * @return 结果 + */ + @GetMapping("/getByUser") + public R getByUser() { + UCdrUserVo result = cdrService.getByUser(); + return R.ok(result); + } + + /** + * 根据设备查询话单 + * + * @return 结果 + */ + @GetMapping("/getByClient") + public TableDataInfo getByClient(UCdrClientBo clientBo) { + startPage(); + List result = cdrService.getByClient(clientBo); + return getDataTable(result); + } + } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrDetailController.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrHistoryController.java similarity index 73% rename from wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrDetailController.java rename to wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrHistoryController.java index c3c11fe..491f0ab 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrDetailController.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UCdrHistoryController.java @@ -9,10 +9,10 @@ import org.springframework.web.bind.annotation.RestController; *

* * @author cyc - * @since 2024-12-09 + * @since 2024-12-12 */ @RestController -@RequestMapping("/user/uCdrDetail") -public class UCdrDetailController { +@RequestMapping("/user/uCdrHistory") +public class UCdrHistoryController { } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UClientController.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UClientController.java index 4475c13..5e63704 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UClientController.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/controller/UClientController.java @@ -1,7 +1,13 @@ package org.wfc.user.controller; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.wfc.common.core.domain.R; +import org.wfc.user.api.domain.bo.UClientBo; +import org.wfc.user.service.IUClientService; /** *

@@ -15,4 +21,16 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/user/uClient") public class UClientController { + @Autowired + private IUClientService clientService; + + /** + * 根据设备mac保存或更新 + */ + @PostMapping("/recordClientUser") + public R recordClientUser(@RequestBody UClientBo clientBo) { + boolean result = clientService.recordClientUser(clientBo); + return R.ok(result); + } + } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdr.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdr.java index 57c873f..4324355 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdr.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdr.java @@ -2,9 +2,11 @@ package org.wfc.user.domain; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import org.wfc.common.mybatis.domain.BaseData; /** @@ -17,6 +19,8 @@ import org.wfc.common.mybatis.domain.BaseData; */ @Data @EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor @Builder @TableName("u_cdr") @Schema(name = "UCdr", description = "用户平台_用户话单表") diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdrDetail.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdrHistory.java similarity index 71% rename from wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdrDetail.java rename to wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdrHistory.java index 75f5536..126ffdb 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdrDetail.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UCdrHistory.java @@ -2,27 +2,29 @@ package org.wfc.user.domain; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import org.wfc.common.mybatis.domain.BaseData; -import java.util.Date; - /** *

* 用户平台_话单明细表 *

* * @author cyc - * @since 2024-12-09 + * @since 2024-12-12 */ @Data @EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor @Builder -@TableName("u_cdr_detail") -@Schema(name = "UCdrDetail", description = "用户平台_话单明细表") -public class UCdrDetail extends BaseData { +@TableName("u_cdr_history") +@Schema(name = "UCdrHistory", description = "用户平台_话单明细表") +public class UCdrHistory extends BaseData { private static final long serialVersionUID = 1L; @@ -36,10 +38,10 @@ public class UCdrDetail extends BaseData { private Long trafficUp; @Schema(description = "Start time") - private Date startTime; + private Long startTime; @Schema(description = "End time") - private Date endTime; + private Long endTime; @Schema(description = "Duration(s)") private Long duration; diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UClient.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UClient.java index 7737f3f..e8c6661 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UClient.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UClient.java @@ -2,9 +2,11 @@ package org.wfc.user.domain; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import org.wfc.common.mybatis.domain.BaseData; /** @@ -17,6 +19,8 @@ import org.wfc.common.mybatis.domain.BaseData; */ @Data @EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor @Builder @TableName("u_client") @Schema(name = "UClient", description = "用户平台_用户设备表") diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UDevice.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UDevice.java index 98fd3c2..1ad05e7 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UDevice.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/UDevice.java @@ -2,9 +2,11 @@ package org.wfc.user.domain; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import org.wfc.common.mybatis.domain.BaseData; /** @@ -17,6 +19,8 @@ import org.wfc.common.mybatis.domain.BaseData; */ @Data @EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor @Builder @TableName("u_device") @Schema(name = "UDevice", description = "用户平台_AP设备表") @@ -24,9 +28,6 @@ public class UDevice extends BaseData { private static final long serialVersionUID = 1L; - @Schema(description = "User ID link to u_user") - private Long userId; - @Schema(description = "Device Name") private String deviceName; diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/bo/UCdrClientBo.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/bo/UCdrClientBo.java new file mode 100644 index 0000000..f3220ea --- /dev/null +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/bo/UCdrClientBo.java @@ -0,0 +1,14 @@ +package org.wfc.user.domain.bo; + +import lombok.Data; + +/** + * @description: 话单设备bo + * @author: cyc + * @since: 2024-12-13 + */ +@Data +public class UCdrClientBo { + private String clientName; + private String clientMac; +} diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrClientVo.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrClientVo.java new file mode 100644 index 0000000..f26a967 --- /dev/null +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrClientVo.java @@ -0,0 +1,22 @@ +package org.wfc.user.domain.vo; + +import lombok.Data; + +/** + * @description: 话单设备vo + * @author: cyc + * @since: 2024-12-13 + */ +@Data +public class UCdrClientVo { + private Long id; + private String clientName; + private String clientMac; + private String clientDeviceType; + private Long userId; + private Long startTime; + private Long endTime; + private Long duration; + private Long trafficDown; + private Long trafficUp; +} diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrUserVo.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrUserVo.java new file mode 100644 index 0000000..81ef0fd --- /dev/null +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/domain/vo/UCdrUserVo.java @@ -0,0 +1,18 @@ +package org.wfc.user.domain.vo; + +import lombok.Data; + +/** + * @description: 话单用户vo + * @author: cyc + * @since: 2024-12-13 + */ +@Data +public class UCdrUserVo { + private Long id; + private Long startTime; + private Long endTime; + private Long duration; + private Long trafficDown; + private Long trafficUp; +} diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrDetailMapper.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrHistoryMapper.java similarity index 57% rename from wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrDetailMapper.java rename to wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrHistoryMapper.java index 7e677fc..c22106b 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrDetailMapper.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrHistoryMapper.java @@ -1,7 +1,7 @@ package org.wfc.user.mapper; -import org.wfc.user.domain.UCdrDetail; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.wfc.user.domain.UCdrHistory; /** *

@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; *

* * @author cyc - * @since 2024-12-09 + * @since 2024-12-12 */ -public interface UCdrDetailMapper extends BaseMapper { +public interface UCdrHistoryMapper extends BaseMapper { } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrMapper.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrMapper.java index 6bb5f2f..784c08d 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrMapper.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/mapper/UCdrMapper.java @@ -1,7 +1,13 @@ package org.wfc.user.mapper; -import org.wfc.user.domain.UCdr; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.wfc.user.domain.UCdr; +import org.wfc.user.domain.bo.UCdrClientBo; +import org.wfc.user.domain.vo.UCdrClientVo; +import org.wfc.user.domain.vo.UCdrUserVo; + +import java.util.List; /** *

@@ -13,4 +19,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface UCdrMapper extends BaseMapper { + List getByUser(@Param("userId") Long userId); + + List getByClient(@Param("client") UCdrClientBo client); + } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrDetailService.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrHistoryService.java similarity index 57% rename from wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrDetailService.java rename to wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrHistoryService.java index a8d0903..ed0a895 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrDetailService.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrHistoryService.java @@ -1,7 +1,7 @@ package org.wfc.user.service; -import org.wfc.user.domain.UCdrDetail; import com.baomidou.mybatisplus.extension.service.IService; +import org.wfc.user.domain.UCdrHistory; /** *

@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.extension.service.IService; *

* * @author cyc - * @since 2024-12-09 + * @since 2024-12-12 */ -public interface IUCdrDetailService extends IService { +public interface IUCdrHistoryService extends IService { } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrService.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrService.java index dff8706..b062ac0 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrService.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUCdrService.java @@ -1,7 +1,12 @@ package org.wfc.user.service; -import org.wfc.user.domain.UCdr; import com.baomidou.mybatisplus.extension.service.IService; +import org.wfc.user.domain.UCdr; +import org.wfc.user.domain.bo.UCdrClientBo; +import org.wfc.user.domain.vo.UCdrClientVo; +import org.wfc.user.domain.vo.UCdrUserVo; + +import java.util.List; /** *

@@ -13,6 +18,10 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IUCdrService extends IService { + UCdrUserVo getByUser(); + + List getByClient(UCdrClientBo client); + void addCdrInfoByOmadaApi(); } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUClientService.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUClientService.java index 3b8b518..e8a0eec 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUClientService.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/IUClientService.java @@ -1,7 +1,8 @@ package org.wfc.user.service; -import org.wfc.user.domain.UClient; import com.baomidou.mybatisplus.extension.service.IService; +import org.wfc.user.api.domain.bo.UClientBo; +import org.wfc.user.domain.UClient; /** *

@@ -13,4 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IUClientService extends IService { + boolean recordClientUser(UClientBo uClientBo); + } diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrDetailServiceImpl.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrDetailServiceImpl.java deleted file mode 100644 index e14961c..0000000 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrDetailServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.wfc.user.service.impl; - -import org.wfc.user.domain.UCdrDetail; -import org.wfc.user.mapper.UCdrDetailMapper; -import org.wfc.user.service.IUCdrDetailService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 用户平台_话单明细表 服务实现类 - *

- * - * @author cyc - * @since 2024-12-09 - */ -@Service -public class UCdrDetailServiceImpl extends ServiceImpl implements IUCdrDetailService { - -} diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrHistoryServiceImpl.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrHistoryServiceImpl.java new file mode 100644 index 0000000..700bbe2 --- /dev/null +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrHistoryServiceImpl.java @@ -0,0 +1,20 @@ +package org.wfc.user.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.wfc.user.domain.UCdrHistory; +import org.wfc.user.mapper.UCdrHistoryMapper; +import org.wfc.user.service.IUCdrHistoryService; + +/** + *

+ * 用户平台_话单明细表 服务实现类 + *

+ * + * @author cyc + * @since 2024-12-12 + */ +@Service +public class UCdrHistoryServiceImpl extends ServiceImpl implements IUCdrHistoryService { + +} diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrServiceImpl.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrServiceImpl.java index 9129884..7f3bc03 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrServiceImpl.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UCdrServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.wfc.common.core.domain.LoginUser; +import org.wfc.common.security.utils.SecurityUtils; import org.wfc.omada.api.client.OmadaClientApi; import org.wfc.omada.api.client.OmadaClientInsightApi; import org.wfc.omada.api.client.model.ClientHistoryInfo; @@ -19,16 +21,18 @@ import org.wfc.omada.api.organization.OmadaSiteApi; import org.wfc.omada.api.organization.model.OperationResponseGridVoSiteSummaryInfo; import org.wfc.omada.api.organization.model.SiteSummaryInfo; import org.wfc.user.domain.UCdr; -import org.wfc.user.domain.UCdrDetail; +import org.wfc.user.domain.UCdrHistory; import org.wfc.user.domain.UClient; import org.wfc.user.domain.UDevice; +import org.wfc.user.domain.bo.UCdrClientBo; +import org.wfc.user.domain.vo.UCdrClientVo; +import org.wfc.user.domain.vo.UCdrUserVo; import org.wfc.user.mapper.UCdrMapper; -import org.wfc.user.service.IUCdrDetailService; +import org.wfc.user.service.IUCdrHistoryService; import org.wfc.user.service.IUCdrService; import org.wfc.user.service.IUClientService; import org.wfc.user.service.IUDeviceService; -import java.util.Date; import java.util.List; /** @@ -61,7 +65,19 @@ public class UCdrServiceImpl extends ServiceImpl implements IU private IUClientService clientService; @Autowired - private IUCdrDetailService cdrDetailService; + private IUCdrHistoryService cdrHistoryService; + + @Override + public UCdrUserVo getByUser() { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List cdrUsers = this.baseMapper.getByUser(loginUser.getUserid()); + return cdrUsers.stream().findFirst().orElse(null); + } + + @Override + public List getByClient(UCdrClientBo client) { + return this.baseMapper.getByClient(client); + } @Override public void addCdrInfoByOmadaApi() { @@ -80,78 +96,82 @@ public class UCdrServiceImpl extends ServiceImpl implements IU List clients = clientResp.getBody().getResult().getData(); for (ClientInfo client : clients) { // 添加用户设备 - Long clientId = addClient(client); + UClient hasClient = addClient(client); // 添加话单 - Long cdrId = addCdr(client, clientId); - // 添加话单明细 - addCdrDetail(site, client, cdrId); + Long cdrId = addCdr(client, hasClient); + // 添加话单历史 + addCdrHistory(site, client, cdrId); } } } - private void addCdrDetail(SiteSummaryInfo site, ClientInfo client, Long cdrId) { - // 话单明细 + private void addCdrHistory(SiteSummaryInfo site, ClientInfo client, Long cdrId) { + // 话单历史 ResponseEntity pastConnResp = omadaClientInsightApi.getGridPastConnections(site.getSiteId(), 1, 1000, client.getMac()); if (ObjectUtil.isNull(pastConnResp.getBody())) { return; } List pastConns = pastConnResp.getBody().getResult().getData(); for (ClientHistoryInfo pastConn : pastConns) { - UCdrDetail uCdrDetail = cdrDetailService.getOne(Wrappers.lambdaQuery().eq(UCdrDetail::getCdrId, cdrId).eq(UCdrDetail::getStartTime, pastConn.getFirstSeen()), false); - if (ObjectUtil.isNotNull(uCdrDetail)) { + UCdrHistory hasCdrHistory = cdrHistoryService.getOne(Wrappers.lambdaQuery().eq(UCdrHistory::getCdrId, cdrId).eq(UCdrHistory::getStartTime, pastConn.getFirstSeen()), false); + if (ObjectUtil.isNotNull(hasCdrHistory)) { continue; } - UCdrDetail uCdrDetail1 = UCdrDetail.builder().cdrId(cdrId).startTime(new Date(pastConn.getFirstSeen())) - .endTime(new Date(pastConn.getLastSeen())) + UCdrHistory uCdrHistory = UCdrHistory.builder().cdrId(cdrId).startTime(pastConn.getFirstSeen()) + .endTime(pastConn.getLastSeen()) .trafficUp(pastConn.getUpload()) .trafficDown(pastConn.getDownload()) .duration(pastConn.getDuration()) .build(); - cdrDetailService.save(uCdrDetail1); + cdrHistoryService.save(uCdrHistory); } } - private Long addCdr(ClientInfo client, Long clientId) { + private Long addCdr(ClientInfo client, UClient hasClient) { // 话单 - UCdr hasUCdr = this.getOne(Wrappers.lambdaQuery().eq(UCdr::getClientId, clientId), false); - Long cdrId; - if (ObjectUtil.isNull(hasUCdr)) { - UDevice hasDevice = deviceService.getOne(Wrappers.lambdaQuery().eq(UDevice::getDeviceMac, client.getApMac()), false); - UCdr uCdr = UCdr.builder().clientId(clientId) - .deviceId(hasDevice.getId()) - .ssid(client.getSsid()) - .rxRate(client.getRxRate()) - .txRate(client.getTxRate()) - .lastSeenTime(client.getLastSeen()) - .upTime(client.getUptime()) - .upPacket(client.getUpPacket()) - .downPacket(client.getDownPacket()) - .trafficDown(client.getTrafficDown()) - .trafficUp(client.getTrafficUp()) - .build(); - this.save(uCdr); - cdrId = uCdr.getId(); - } else { + UCdr hasUCdr = this.getOne(Wrappers.lambdaQuery() + .eq(ObjectUtil.isNotNull(hasClient.getUserId()), UCdr::getUserId, hasClient.getUserId()) + .eq(UCdr::getClientId, hasClient.getId()), false); + Long cdrId = null; + if (ObjectUtil.isNotNull(hasUCdr)) { cdrId = hasUCdr.getId(); } - return cdrId; + UDevice hasDevice = deviceService.getOne(Wrappers.lambdaQuery().eq(UDevice::getDeviceMac, client.getApMac()), false); + UCdr uCdr = UCdr.builder().clientId(hasClient.getId()) + .userId(hasClient.getUserId()) + .deviceId(hasDevice.getId()) + .ssid(client.getSsid()) + .rxRate(client.getRxRate()) + .txRate(client.getTxRate()) + .lastSeenTime(client.getLastSeen()) + .upTime(client.getUptime()) + .upPacket(client.getUpPacket()) + .downPacket(client.getDownPacket()) + .trafficDown(client.getTrafficDown()) + .trafficUp(client.getTrafficUp()) + .build(); + uCdr.setId(cdrId); + this.saveOrUpdate(uCdr); + return uCdr.getId(); } - private Long addClient(ClientInfo client) { + private UClient addClient(ClientInfo client) { // 用户设备 UClient hasClient = clientService.getOne(Wrappers.lambdaQuery().eq(UClient::getClientMac, client.getMac()), false); - Long clientId; - if (ObjectUtil.isNull(hasClient)) { - UClient uClient = UClient.builder().clientMac(client.getMac()) - .clientName(client.getName()) - .clientDeviceType(client.getDeviceType()) - .build(); - clientService.save(uClient); - clientId = uClient.getId(); - } else { + Long clientId = null; + Long userId = null; + if (ObjectUtil.isNotNull(hasClient)) { clientId = hasClient.getId(); + userId = hasClient.getUserId(); } - return clientId; + UClient uClient = UClient.builder().clientMac(client.getMac()) + .userId(userId) + .clientName(client.getName()) + .clientDeviceType(client.getDeviceType()) + .build(); + uClient.setId(clientId); + clientService.saveOrUpdate(uClient); + return uClient; } private void addDevices(List sites) { diff --git a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UClientServiceImpl.java b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UClientServiceImpl.java index 2e26036..8c1c062 100644 --- a/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UClientServiceImpl.java +++ b/wfc-modules/wfc-modules-user/src/main/java/org/wfc/user/service/impl/UClientServiceImpl.java @@ -1,10 +1,14 @@ package org.wfc.user.service.impl; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.wfc.user.api.domain.bo.UClientBo; import org.wfc.user.domain.UClient; import org.wfc.user.mapper.UClientMapper; import org.wfc.user.service.IUClientService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; /** *

@@ -17,4 +21,18 @@ import org.springframework.stereotype.Service; @Service public class UClientServiceImpl extends ServiceImpl implements IUClientService { + @Override + public boolean recordClientUser(UClientBo uClientBo) { + if (StrUtil.isBlank(uClientBo.getClientMac())) { + return false; + } + UClient hasUClient = this.getOne(Wrappers.lambdaQuery() + .eq(UClient::getClientMac, uClientBo.getClientMac()), false); + UClient uClient = new UClient(); + BeanUtils.copyProperties(uClientBo, uClient); + if (hasUClient != null) { + uClient.setId(hasUClient.getId()); + } + return this.saveOrUpdate(uClient); + } } diff --git a/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrDetailMapper.xml b/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrHistoryMapper.xml similarity index 72% rename from wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrDetailMapper.xml rename to wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrHistoryMapper.xml index c8a7b88..2462723 100644 --- a/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrDetailMapper.xml +++ b/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrHistoryMapper.xml @@ -1,5 +1,5 @@ - + diff --git a/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrMapper.xml b/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrMapper.xml index 2fd9a7f..3efd102 100644 --- a/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrMapper.xml +++ b/wfc-modules/wfc-modules-user/src/main/resources/mapper/user/UCdrMapper.xml @@ -2,4 +2,74 @@ + + + diff --git a/wfc-modules/wfc-modules-user/src/test/java/org/wfc/user/UClientTest.java b/wfc-modules/wfc-modules-user/src/test/java/org/wfc/user/UClientTest.java index 2cf3476..11c9f93 100644 --- a/wfc-modules/wfc-modules-user/src/test/java/org/wfc/user/UClientTest.java +++ b/wfc-modules/wfc-modules-user/src/test/java/org/wfc/user/UClientTest.java @@ -18,6 +18,6 @@ public class UClientTest { @Test public void test() { - + cdrService.addCdrInfoByOmadaApi(); } }