Commit d1d89f8c by tutingyin

refactor: 功能策略恢复-添加

parent 41635fed
package com.skr.mdm.bean.vo.equipment;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
@ClassName:DeviceEquipmentInfo
@Author:Tty
@Description:设备详细信息
@Date:2020/9/1 17:55
@Version:1.0
*/
@Data
@ApiModel("设备详细信息")
public class DeviceEquipmentInfo2VO {
@ApiModelProperty("设备名称")
private String equipmentName;
@ApiModelProperty("用户名称")
private String userName;
@ApiModelProperty("激活时间")
private String activationTime;
@ApiModelProperty("部门名称")
private String departmentName;
@ApiModelProperty("离线时间")
private String offlineTime;
@ApiModelProperty("固件版本")
private String firmwareVersion;
@ApiModelProperty("版本型号")
private String modelNumber;
@ApiModelProperty("版本号码")
private String versionNumber;
@ApiModelProperty("CPU 架构")
private String cpuArch;
@ApiModelProperty("CPU 制造厂商")
private String cpuMaker;
@ApiModelProperty("CPU 型号")
private String cpuModel;
@ApiModelProperty("CPU 额定主频")
private String cpuNominalMainFrequency;
@ApiModelProperty("CPU 核心数量")
private Integer cpuCore;
@ApiModelProperty("CPU 对虚拟化的支持")
private String cpuVirtualization;
@ApiModelProperty("物理内存总大小")
private String totalPhyMem;
@ApiModelProperty("物理内存使用率")
private String phyMemRate;
@ApiModelProperty("物理内存使用大小")
private String usedPhyMem;
@ApiModelProperty("实际可用的物理内存大小")
private String availPhyMem;
@ApiModelProperty("实际空闲的物理内存大小")
private String freePhyMem;
@ApiModelProperty("所有应用申请的虚拟内存总量")
private String totalVirtualMem;
@ApiModelProperty("系统中 Swap 分区总大小")
private String totalSwapSpace;
@ApiModelProperty("Swap 分区使用率")
private String swapRate;
@ApiModelProperty("Swap 分区使用量")
private String usedSwap;
@ApiModelProperty("Swap 分区空闲大小")
private String freeSwap;
@ApiModelProperty("CPU 瞬时使用率")
private String cpuPeak;
@ApiModelProperty("开机时长")
private String upTime;
@ApiModelProperty("系统架构信息")
private String sysArch;
@ApiModelProperty("系统名称")
private String sysName;
@ApiModelProperty("系统版本号")
private String sysVersion;
@ApiModelProperty("内核版本号")
private String sysKernelVersion;
@ApiModelProperty("当前登录用户的用户名")
private String sysLoginUser;
@ApiModelProperty("操作系统项目编号名")
private String osProjectNumName;
@ApiModelProperty("操作系统项目子编号名")
private String osSubProjectNumName;
@ApiModelProperty("操作系统产品标识码")
private String osProductId;
@ApiModelProperty("操作系统宿主机的虚拟机类型")
private String osHostVmType;
@ApiModelProperty("操作系统宿主机的云平台类型")
private String osCloudPlatformType;
@ApiModelProperty("操作系统是否为专用机系统")
private String osIsDedicatedSystem;
@ApiModelProperty("系统分辨率信息")
private String sysResolution;
@ApiModelProperty("系统硬件版本类别")
private String sysHwVersionType;
@ApiModelProperty("系统版本号/补丁版本号")
private String sysPatchVersion;
@ApiModelProperty("厂商信息")
private String biosVendor;
@ApiModelProperty("最后更新时间")
private Date updateTime;
}
\ No newline at end of file
......@@ -79,14 +79,27 @@ public class DeviceEquipmentVO {
*/
@ApiModelProperty("设备型号")
private String equipmentModel;
private String uuid;
private String oaid;
private String imei;
@ApiModelProperty("手机号")
private String phoneNumber;
private String serialNumber;
/**
* 主板名称信息
*/
private String motherboard;
/**
* 生产日期
*/
private String productionDate;
/**
* 厂商信息
*/
private String vendor;
@ApiModelProperty("纬度信息")
private String latitude;
@ApiModelProperty("经度信息")
private String longitude;
......@@ -95,9 +108,7 @@ public class DeviceEquipmentVO {
*/
@ApiModelProperty("最后在线时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date offlineTime;
@ApiModelProperty(value = "机卡绑定(0:未绑定 1:绑定)")
private Integer isCardBinding;
@ApiModelProperty(value = "解绑密码")
......@@ -106,8 +117,8 @@ public class DeviceEquipmentVO {
private String offlineUnlockCode;
@ApiModelProperty(value = "卸载码")
private String uninstallCode;
@ApiModelProperty(value = "锁定/已恢复插卡/已解绑")
private String simState;
@ApiModelProperty(value = "客户端版本")
private String clientVersionCode;
@ApiModelProperty(value = "绑定状态 (0:绑定 1:未绑定)")
......
ip: localhost
server:
port: 8069
port: 8072
websocket:
port: 8070
port: 8073
spring:
application:
name: MDMClient
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mdm_byod?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
url: jdbc:mysql://localhost:3306/mdm_pc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
druid:
......
......@@ -30,18 +30,18 @@ spring:
pathmatch:
matching-strategy: ant_path_matcher
server:
ssl:
key-store: classpath:key/mdm.keystore #表示密钥文件名
key-alias: mdmKeystore #表示密钥别名
key-store-password: tkmdm999 #就是在cmd命令执行过程中输入的密码
enabled: true
client-auth: need
# 持有ssl证书的信任存储库
trust-store: classpath:key/mdm.keystore
trust-store-password: tkmdm999
key-store-type: JKS
trust-store-type: JKS
#server:
# ssl:
# key-store: classpath:key/mdm.keystore #表示密钥文件名
# key-alias: mdmKeystore #表示密钥别名
# key-store-password: tkmdm999 #就是在cmd命令执行过程中输入的密码
# enabled: true
# client-auth: need
# # 持有ssl证书的信任存储库
# trust-store: classpath:key/mdm.keystore
# trust-store-password: tkmdm999
# key-store-type: JKS
# trust-store-type: JKS
token:
expire:
......@@ -67,4 +67,4 @@ mybatis-plus:
db-column-underline: true
db-config:
id-type: auto
mapper-locations: classpath:mapper/*.xml
mapper-locations: classpath:mapper/*.xml
\ No newline at end of file
package com.skr.mdm.service.impl.equipment;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.skr.mdm.annotation.CmdHandler;
import com.skr.mdm.constant.CmdTypeConstants;
import com.skr.mdm.dao.DeviceEquipmentDao;
import com.skr.mdm.dto.EquipmentCardBindDTO;
import com.skr.mdm.entity.DeviceEquipmentDO;
import com.skr.mdm.result.ResponseResult;
import com.skr.mdm.service.CmdHandlerService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 机卡绑定
* @author nfq
* @date 2021/2/4 14:38
*/
@Slf4j
@CmdHandler(cmdType = CmdTypeConstants.CARD_BIND_UNBIND)
public class EquipmentCardBindServiceImpl implements CmdHandlerService {
@Autowired
private DeviceEquipmentDao equipmentDao;
@Override
public ResponseResult cmdHandler(Integer equipmentId, String data) {
try {
EquipmentCardBindDTO equipmentCardBindDTO = JSONUtil.toBean(data, EquipmentCardBindDTO.class);
new LambdaUpdateChainWrapper<>(equipmentDao)
.set(DeviceEquipmentDO::getIsCardBinding, equipmentCardBindDTO.getBindState())
.set(equipmentCardBindDTO.getBindState() == 1, DeviceEquipmentDO::getCardUnbindPassword, equipmentCardBindDTO.getUnbindPassword())
.set(StringUtils.isNotBlank(equipmentCardBindDTO.getRandomCode()), DeviceEquipmentDO::getOfflineUnlockCode, equipmentCardBindDTO.getRandomCode())
.set(StringUtils.isNotBlank(equipmentCardBindDTO.getPhoneNumber()), DeviceEquipmentDO::getPhoneNumber, equipmentCardBindDTO.getPhoneNumber())
.set(StringUtils.isNotBlank(equipmentCardBindDTO.getIccid()), DeviceEquipmentDO::getIccid, equipmentCardBindDTO.getIccid())
.eq(DeviceEquipmentDO::getId, equipmentId)
.update();
return ResponseResult.success(equipmentCardBindDTO.getCid());
} catch (Exception e) {
log.error("机卡绑定异常: " + equipmentId + data, e);
return ResponseResult.failure();
}
}
}
\ No newline at end of file
package com.skr.mdm.service.impl.equipment;
import com.skr.mdm.annotation.CmdHandler;
import com.skr.mdm.constant.CmdTypeConstants;
import com.skr.mdm.dao.DeviceEquipmentDao;
import com.skr.mdm.dto.EquipmentCardBindStateDTO;
import com.skr.mdm.entity.DeviceEquipmentDO;
import com.skr.mdm.result.ResponseResult;
import com.skr.mdm.service.CmdHandlerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 获取机卡绑定状态
*
* @author nfq
* @date 2023-03-07 17:26
*/
@Slf4j
@CmdHandler(cmdType = CmdTypeConstants.CARD_BIND_STATE)
public class EquipmentCardBindStateServiceImpl implements CmdHandlerService {
@Autowired
private DeviceEquipmentDao equipmentDao;
@Override
public ResponseResult cmdHandler(Integer equipmentId, String data) {
try {
DeviceEquipmentDO equipmentDO = equipmentDao.selectById(equipmentId);
EquipmentCardBindStateDTO equipmentCardBindStateDTO = EquipmentCardBindStateDTO.builder()
.bindState(equipmentDO.getIsCardBinding())
.iccid(equipmentDO.getIccid())
.build();
return ResponseResult.success(equipmentCardBindStateDTO);
} catch (Exception e) {
log.error("查询机卡绑定状态异常: " + equipmentId + data, e);
return ResponseResult.failure();
}
}
}
\ No newline at end of file
......@@ -49,18 +49,18 @@ public class EquipmentInfoServiceImpl implements CmdHandlerService {
.eq(DeviceEquipmentDO::getId, equipmentId)
.update();
}
equipmentInfoDO.setImei2(getImei2(equipmentInfoDO.getImei2(), equipmentId, loginUserDTO.getImei()));
equipmentInfoDO.setImei2(getImei2(equipmentInfoDO.getImei2(), equipmentId, loginUserDTO.getSerialNumber()));
DeviceEquipmentInfoDO deviceEquipmentInfoDO = new LambdaQueryChainWrapper<>(equipmentInfoDao)
.eq(DeviceEquipmentInfoDO::getEquipmentId, equipmentId)
.one();
if (deviceEquipmentInfoDO == null) {
// 添加设备信息
equipmentInfoDao.insert(equipmentInfoDO);
new LambdaUpdateChainWrapper<>(equipmentDao)
.set(DeviceEquipmentDO::getOaid, equipmentInfoDTO.getOaid())
.set(DeviceEquipmentDO::getUuid, equipmentInfoDTO.getUuid())
.eq(DeviceEquipmentDO::getId, equipmentId)
.update();
// new LambdaUpdateChainWrapper<>(equipmentDao)
// .set(DeviceEquipmentDO::getOaid, equipmentInfoDTO.getOaid())
// .set(DeviceEquipmentDO::getUuid, equipmentInfoDTO.getUuid())
// .eq(DeviceEquipmentDO::getId, equipmentId)
// .update();
return ResponseResult.success();
}
// 修改设备信息
......@@ -90,7 +90,7 @@ public class EquipmentInfoServiceImpl implements CmdHandlerService {
if (StringUtils.isBlank(imeiLogin)) {
// 同步IMEI1
new LambdaUpdateChainWrapper<>(equipmentDao)
.set(DeviceEquipmentDO::getImei, imeiFirst)
.set(DeviceEquipmentDO::getSerialNumber, imeiFirst)
.eq(DeviceEquipmentDO::getId, equipmentId)
.update();
return imeiEnd;
......
......@@ -105,4 +105,4 @@ public class UserLocationInfoServiceImpl implements CmdHandlerService {
}
}
}
}
\ No newline at end of file
......@@ -11,7 +11,6 @@ public class CmdTypeConstants {
*/
public static final short APP_STRATEGY = 0x384;
public static final short APP_CONFIG = 0x385;
public static final short CARD_BIND_STATE = 0x386;
public static final short INSTALLWHITE = 0x387;
public static final short RMOVESTRACB = 0x388;
public static final short UPDATEPWD = 0x389;
......@@ -255,10 +254,6 @@ public class CmdTypeConstants {
*/
public static final short ALARM_INFORM_LIST = 0x3D6;
/**
* 机卡绑定解绑
*/
public static final short CARD_BIND_UNBIND = 0x3D7;
/**
* sim变动记录
*/
public static final short SIM_CHANGE_RECORD = 0x3D8;
......@@ -361,4 +356,4 @@ public class CmdTypeConstants {
public static final short URL_CALL_BACK = 0x3F0;
}
}
\ No newline at end of file
package com.skr.mdm.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author nfq
* @date 2020/9/18 11:59
*/
@Getter
@AllArgsConstructor
public enum StrategyCmdEnum {
/**
* 策略指令
*/
ISSUED_RAIL_STRATEGY("围栏策略下发","issuedRailStrategy"),
ISSUED_CONFIG_STRATEGY("配置策略下发", "issuedConfigStrategy"),
ISSUED_COMPLIANCE_STRATEGY("合规策略下发", "issuedComplianceStrategy"),
DELETE_RAIL_STRATEGY("围栏策略删除下发", "deleteRailStrategy"),
DELETE_CONFIG_STRATEGY("配置策略删除下发", "deleteConfigStrategy"),
DELETE_COMPLIANCE_STRATEGY("合规策略删除下发", "deleteComplianceStrategy"),
ENABLE_RAIL_STRATEGY("启用围栏策略", "enableRailStrategy"),
DISABLE_RAIL_STRATEGY("禁用围栏策略", "disableRailStrategy"),
ENABLE_CONFIG_STRATEGY("启用配置策略", "enableConfigStrategy"),
DISABLE_CONFIG_STRATEGY("禁用配置策略", "disableConfigStrategy"),
ENABLE_COMPLIANCE_STRATEGY("启用合规策略", "enableComplianceStrategy"),
DISABLE_COMPLIANCE_STRATEGY("禁用合规策略", "disableComplianceStrategy");
private final String cmdType;
private final String cmd;
}
package com.skr.mdm.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author nfq
* @date 2020/9/2 16:03
*/
@Getter
@AllArgsConstructor
public enum StrategyTypeEnum {
/**
* 策略类型
*/
FUNCTION_STRATEGY(1, "功能策略"),
CONFIG_STRATEGY(2, "配置策略"),
URL_STRATEGY(3, "网址策略"),
SYSTEM_COMPLIANCE_STRATEGY(1, "系统合规策略"),
APP_COMPLIANCE_STRATEGY(2, "应用合规策略"),
NETWORK_COMPLIANCE_STRATEGY(3, "网络合规策略"),
CALL_WHITELIST_STRATEGY(1, "通话白名单策略"),
CALLER_ID_STRATEGY(2, "来电显示策略");
private Integer strategyType;
private String strategyName;
}
package com.skr.mdm.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum StrategyUrlEnum {
DELETE_URL("删除网址策略", "deleteUrl"),
ENABLE_URL("启用网址策略", "enableUrl"),
DISABLE_URL("禁用网址策略", "disableUr"),
ISSUED_URL("下发网址策略", "issuedUrl");
private final String cmdType;
private final String cmd;
}
......@@ -132,14 +132,8 @@ public class GaodeMapAPIUtil {
private static String getTerminalName(GaodeTerminalQO gaodeTerminalQO, String desc) {
StringBuilder name = new StringBuilder();
if (StringUtils.isNotBlank(gaodeTerminalQO.getImei())) {
name.append("imei-").append(gaodeTerminalQO.getImei())
.append("_").append(desc);
} else if (StringUtils.isNotBlank(gaodeTerminalQO.getOaid())) {
name.append("oaid-").append(gaodeTerminalQO.getOaid())
.append("_").append(desc);
} else if (StringUtils.isNotBlank(gaodeTerminalQO.getUuid())) {
name.append("uuid-").append(gaodeTerminalQO.getUuid())
if (StringUtils.isNotBlank(gaodeTerminalQO.getSerialNum())) {
name.append("serialNum-").append(gaodeTerminalQO.getSerialNum())
.append("_").append(desc);
}
return name.toString();
......@@ -453,4 +447,4 @@ public class GaodeMapAPIUtil {
GaodeMapAPIUtil.KEY = KEY;
}
}
}
\ No newline at end of file
package com.skr.mdm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.skr.mdm.bean.qo.BaseQueryQO;
import com.skr.mdm.bean.vo.strategy.StrategyUrlConfigVO;
import com.skr.mdm.entity.StrategyUrlConfigDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 网址配置(StrategyUrl)表数据库访问层
*
* @author nfq
* @since 2022-03-18 10:47:50
*/
@Repository
public interface StrategyUrlConfigDao extends BaseMapper<StrategyUrlConfigDO> {
/**
* 根据公司ID删除
* @param companyId 公司ID
*/
void deleteByCompanyId(@Param("companyId") Integer companyId);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<StrategyUrl> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<StrategyUrlConfigDO> entities);
List<StrategyUrlConfigVO> listStrategyUrlVO(@Param("param") BaseQueryQO baseQueryQO, @Param("companyId") Integer companyId);
}
\ No newline at end of file
package com.skr.mdm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.skr.mdm.bean.bo.StrategyIssuedBO;
import com.skr.mdm.bean.qo.StrategyQueryQO;
import com.skr.mdm.bean.vo.strategy.StrategyVO;
import com.skr.mdm.entity.StrategyUrlDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 网址白名单策略(StrategyUrlWhitelist)表数据库访问层
*
* @author nfq
* @since 2022-03-18 15:00:16
*/
@Repository
public interface StrategyUrlDao extends BaseMapper<StrategyUrlDO> {
/**
* 根据公司ID删除
* @param companyId 公司ID
*/
void deleteByCompanyId(@Param("companyId") Integer companyId);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<StrategyUrlWhitelist> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<StrategyUrlDO> entities);
/**
* 获取未禁用设备网址策略
* @param equipmentId
* @param state
* @return
*/
List<StrategyIssuedBO> listStrategyIdByEquipmentId(@Param("equipmentId") Integer equipmentId, @Param("state") Integer state, @Param("issuedState") Integer issuedState);
/**
* 策略列表
* @param strategyQueryQO
* @return
*/
List<StrategyVO> listStrategy(StrategyQueryQO strategyQueryQO);
}
package com.skr.mdm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.skr.mdm.bean.so.strategy.StrategyUrlInfoSO;
import com.skr.mdm.bean.vo.strategy.StrategyUrlInfoVO;
import com.skr.mdm.entity.StrategyUrlMapDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 网址白名单策略和网址关系表(StrategyUrlMap)表数据库访问层
*
* @author nfq
* @since 2022-03-18 15:00:07
*/
@Repository
public interface StrategyUrlMapDao extends BaseMapper<StrategyUrlMapDO> {
/**
* 根据公司ID删除
* @param companyId 公司ID
*/
void deleteByCompanyId(@Param("companyId") Integer companyId);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<StrategyUrlMap> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<StrategyUrlMapDO> entities);
List<StrategyUrlInfoSO> listStrategyUrlWhitelistInfoSO(@Param("strategyId") Integer strategyId);
List<StrategyUrlInfoVO> listStrategyUrlWhitelistInfoVO(@Param("strategyId") Integer strategyId);
}
\ No newline at end of file
package com.skr.mdm.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.skr.mdm.bean.vo.strategy.StrategyUserVO;
import com.skr.mdm.entity.StrategyUrlUserDO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* 策略用户中间表(StrategyUrlWhitelistUser)表数据库访问层
*
* @author nfq
* @since 2022-03-18 15:00:16
*/
@Repository
public interface StrategyUrlUserDao extends BaseMapper<StrategyUrlUserDO> {
/**
* 根据设备ID删除
* @param equipmentIdList 设备ID集合
*/
void deleteByEquipmentIdList(@Param("equipmentIdList") List<Integer> equipmentIdList);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<StrategyUrlWhitelistUser> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<StrategyUrlUserDO> entities);
/**
* 网址白名单策略设备id
*
* @param list
* @return
*/
List<Integer> listEquipmentIdByStrategyIds(@Param("list") List<Integer> list);
List<StrategyUserVO> listStrategyUser(@Param("strategyId") Integer strategyId,
@Param("searchType") Integer searchType,
@Param("searchValue") String searchValue);
}
\ No newline at end of file
......@@ -41,7 +41,7 @@ public class DeviceEquipmentDO implements Serializable {
private Integer isDelete;
/**
* 设备类型 1:手机 2:手环 3:记录仪
* 设备类型 1:pc
*/
private Integer equipmentType;
......@@ -81,21 +81,25 @@ public class DeviceEquipmentDO implements Serializable {
private String equipmentModel;
/**
* imei
* 主板名称信息
*/
private String imei;
private String motherboard;
/**
* uuid
* 生产日期
*/
private String uuid;
private String productionDate;
/**
* oaid
* 序列号
*/
private String oaid;
private String serialNumber;
/**
* 厂商信息
*/
private String vendor;
/**
* 高德猎鹰终端id
*/
private Integer tid;
......@@ -164,22 +168,24 @@ public class DeviceEquipmentDO implements Serializable {
* 内网环境的上一次心跳毫秒值
*/
private Date heartbeatTime;
/**
* 机卡绑定(0:未绑定 1:绑定)
*/
private Integer isCardBinding;
/**
* 解绑密码
*/
private String cardUnbindPassword;
// /**
// * 机卡绑定(0:未绑定 1:绑定)
// */
// private Integer isCardBinding;
// /**
// * 解绑密码
// */
// private String cardUnbindPassword;
/**
* 离线解锁码
*/
private String offlineUnlockCode;
/**
* iccid
*/
private String iccid;
// /**
// * iccid
// */
// private String iccid;
/**
* 创建时间
......@@ -191,4 +197,5 @@ public class DeviceEquipmentDO implements Serializable {
*/
private Date updateTime;
}
\ No newline at end of file
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
/**
* 策略信息表(RailStrategy)实体类
*
* @author nfq
* @since 2020-08-24 17:58:38
*/
@Data
@Builder
@TableName(value = "rail_strategy")
public class RailStrategyDO {
private static final long serialVersionUID = 866490960639800082L;
private Integer id;
/**
* 策略名称
*/
private String strategyName;
/**
* 策略状态(1:保存未下发 2:已下发(启用)3:禁用)
*/
private Integer state;
/**
* 作用域 0: 无 1:个人域 2:工作域 3:个人域和工作域
*/
private Integer actionScope;
/**
* 1: 有围栏策略 0:无围栏策略
*/
@TableField(value = "is_rail")
private Integer rail;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
/**
* 自定义范围
*/
private String locs;
/**
* 半径
*/
private String radius;
/**
* 操作人
*/
private String operator;
/**
* 操作时间
*/
private Date operateTime;
/**
* 公司的id
*/
private Integer companyId;
/**
* 全局类型( 1:公司全局 2:部门全局 3:个人)
*/
private Integer globalType;
/**
* 部门全局ID数组
*/
private String departmentIds;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
}
\ No newline at end of file
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 策略详情表(RailStrategyInfo)实体类
*
* @author nfq
* @since 2020-08-24 17:58:40
*/
@Data
@TableName(value = "rail_strategy_info")
public class RailStrategyInfoDO {
private static final long serialVersionUID = 509360419704436736L;
/**
* 主键id(cj)
*/
private Integer id;
/**
* 策略id
*/
private Integer strategyId;
/**
* 0:法定节假日 1-7:(周一到周日,中间用逗号隔开)
*/
private String workDate;
/**
* 有无时间限制(0:否 1:是)
*/
private Integer isTimeLimit;
/**
* 同一时间段开始时间
*/
private Date beginDate;
/**
* 同一时间段结束时间
*/
private Date endDate;
/**
* 开始时间
*/
private Date beginTime;
/**
* 结束时间
*/
private Date endTime;
/**
* USB存储:0:非禁用
1:禁用
*/
private Integer usbConnection;
/**
* USB调试:0:非禁用
1:禁用
*/
private Integer usbDebugging;
/**
* 录音:0:非禁用
1:禁用
*/
private Integer record;
/**
* 摄像头:0:非禁用
1:禁用
*/
private Integer camera;
/**
* 0:非禁用
1:禁用
*/
private Integer wifi;
/**
* 0:非禁用
1:禁用
*/
private Integer bluetooth;
/**
* 移动数据:0:非禁用
1:禁用
*/
private Integer mobileData;
/**
* 0:非禁用
1:禁用
*/
private Integer gps;
/**
* 0:首先选择IP发送,离线状态短信发送;1:始终短信发送
*/
private Integer sentType;
/**
* 通话 '0:非禁用\n1:禁用'
*/
private Integer conversation;
/**
* 短信 '0:非禁用;1:禁用'
*/
private Integer sms;
/**
* 状态:0:已启用;1:已停用;2:已过期
*/
private Integer status;
/**
* sd卡:0:非禁用
1:禁用
*/
private Integer sdCard;
/**
* 热点共享:0:非禁用
1:禁用
*/
private Integer hotShared;
/**
* NFC:0:非禁用
1:禁用
*/
private Integer nfc;
/**
* 任务键:0:非禁用
1:禁用
*/
private Integer task;
/**
* HOME键:0:非禁用
1:禁用
*/
private Integer homeKey;
/**
* 下拉菜单:0:非禁用
1:禁用
*/
private Integer stateMenu;
/**
* 返回键:0:非禁用
1:禁用
*/
private Integer backKey;
/**
* 一键拷贝:0:非禁用
1:禁用
*/
private Integer usbOtg;
/**
* 安全模式:0:非禁用
1:禁用
*/
private Integer safeMode;
/**
* 第二卡槽:0:非禁用1:禁用
*/
private Integer secondCardSlot;
/**
* 系统截屏(0:非禁用1:禁用)
*/
private Integer sysScreenCapture;
/**
* 系统录屏(0:非禁用1:禁用)
*/
private Integer sysScreenRecorder;
/**
* 剪切板(0:非禁用1:禁用)
*/
private Integer shearPlate;
/**
* 系统升级(0:非禁用1:禁用)
*/
private Integer sysUpgrade;
/**
* APN(0:非禁用1:禁用)
*/
private Integer apn;
/**
* 卡槽2数据业务(0:非禁用1:禁用)
*/
private Integer secondCardWork;
/**
* VPN(0:非禁用1:禁用)
*/
private Integer vpn;
/**
* 无线网络和WLAN定位设置菜单(0:非禁用1:禁用)
*/
private Integer networkSetting;
/**
* 位置来源应用安装设置(0:非禁用1:禁用)
*/
private Integer apkSourceInstallation;
/**
* 恢复出厂设置(0:非禁用1:禁用)
*/
private Integer recoveryStage;
/**
* 添加多用户(0:非禁用1:禁用)
*/
private Integer addUsers;
/**
* 强行停止系统签名(0:非禁用1:禁用)
*/
private Integer stopSign;
/**
* setting应用(0:非禁用1:禁用)
*/
private Integer settingApp;
/**
* 系统预装浏览器(0:非禁用1:禁用)
*/
private Integer sysInstallBrowser;
/**
* 漫游数据业务(0:非禁用1:禁用)
*/
private Integer roamingData;
/**
* 网络共享菜单(0:非禁用1:禁用)
*/
private Integer networkSharingMenu;
/**
* 编辑WLAN设置(0:非禁用1:禁用)
*/
private Integer editWlanSetting;
/**
* 蓝牙网络共享菜单(0:非禁用1:禁用)
*/
private Integer bluetoothNetworkSharingMenu;
/**
* 密码可见(0:非禁用1:禁用)
*/
private Integer visiblePassword;
/**
* usb网络共享菜单(0:非禁用1:禁用)
*/
private Integer usbNetworkSharingMenu;
/**
* 更改系统时间跟时间设置(0:非禁用1:禁用)
*/
private Integer changeSysTime;
/**
* 修改墙纸 (0:非禁用1:禁用)
*/
private Integer changeWallPaper;
/**
* 安装未知来源的应用 (0:非禁用1:禁用)
*/
private Integer installUnknownSourceApp;
/**
* 卸载应用 (0:非禁用1:禁用)
*/
private Integer uninstallApp;
/**
* 安装应用 (0:非禁用1:禁用)
*/
private Integer installApp;
/**
* 微信-摇一摇 (0:非禁用1:禁用)
*/
private Integer wechatShake;
/**
* 微信-附近的人 (0:非禁用1:禁用)
*/
private Integer wechatNearbyPeople;
/**
* QQ-查看附近 (0:非禁用1:禁用)
*/
private Integer qqViewNearby;
/**
* 墙纸
*/
private String wallpaper;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
}
\ No newline at end of file
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 策略用户中间表(RailStrategyUser)实体类
*
* @author nfq
* @since 2020-08-03 16:02:21
*/
@Data
@TableName("rail_strategy_user")
@Builder
public class RailStrategyUserDO implements Serializable {
private static final long serialVersionUID = -56236598549153210L;
private Integer id;
/**
* 策略id
*/
private Integer strategyId;
private Integer equipmentId;
/**
* 状态 1:下发中 2:下发成功 3:执行中 4:执行成功
*/
private Integer state;
/**
* 1:管控中 2:未管控
*/
private Integer mdmStatus;
/**
* 下发时间
*/
private Date issuedTime;
private Date createTime;
private Date updateTime;
}
\ No newline at end of file
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
/**
* 策略信息主表(StrategyConfig)实体类
*
* @author nfq
* @since 2020-08-26 10:26:49
*/
@Data
@Builder
@TableName(value = "strategy_config")
public class StrategyConfigDO {
private static final long serialVersionUID = -20005608658511249L;
private Integer id;
/**
* 策略名称
*/
private String strategyName;
/**
* 策略状态(1:保存未下发 2:已下发(启用)3:禁用)
*/
private Integer state;
/**
* 作用域 0: 无 1:个人域 2:工作域 3:个人域和工作域
*/
private Integer actionScope;
/**
* 1: 有围栏策略 0:无围栏策略
*/
@TableField(value = "is_rail")
private Integer rail;
/**
* 经度
*/
private String longitude;
/**
* 纬度
*/
private String latitude;
/**
* 自定义范围
*/
private String locs;
/**
* 半径
*/
private String radius;
/**
* 操作人
*/
private String operator;
/**
* 操作时间
*/
private Date operateTime;
/**
* 公司id
*/
private Integer companyId;
/**
* 全局类型( 1:公司全局 2:部门全局 3:个人)
*/
private Integer globalType;
/**
* 部门全局ID数组
*/
private String departmentIds;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
}
\ No newline at end of file
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 网址配置(StrategyUrl)实体类
*
* @author nfq
* @since 2022-03-18 10:47:51
*/
@Data
@Builder
@TableName(value = "strategy_url_config")
public class StrategyUrlConfigDO implements Serializable {
private static final long serialVersionUID = -23750829860251703L;
private Integer id;
/**
* 网址标题
*/
private String urlTitle;
/**
* 网址
*/
private String url;
private Integer companyId;
private Date createTime;
private Date updateTime;
}
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 网址白名单策略(StrategyUrlWhitelist)实体类
*
* @author nfq
* @since 2022-03-18 15:00:16
*/
@Data
@Builder
@TableName(value = "strategy_url")
public class StrategyUrlDO implements Serializable {
private static final long serialVersionUID = 358972675730390147L;
private Integer id;
private String strategyName;
/**
* 策略状态(1:保存未下发 2:已下发(启用)3:禁用)
*/
private Integer state;
/**
* 策略类型(1:网址白名单 2:网址黑名单)
*/
private String strategyType;
private String operator;
private Date operateTime;
/**
* 全局类型( 1:公司全局 2:部门全局 3:个人)
*/
private Integer globalType;
/**
* 部门全局ID数组
*/
private String departmentIds;
private Integer companyId;
private Date createTime;
private Date updateTime;
}
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 网址白名单策略和网址关系表(StrategyUrlMap)实体类
*
* @author nfq
* @since 2022-03-18 15:00:09
*/
@Data
@Builder
@TableName(value = "strategy_url_map")
public class StrategyUrlMapDO implements Serializable {
private static final long serialVersionUID = -62696047037869403L;
private Integer id;
/**
* 网址白名单策略id
*/
private Integer strategyId;
/**
* 网址id
*/
private Integer urlId;
private Integer companyId;
private Date createTime;
private Date updateTime;
}
package com.skr.mdm.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 策略用户中间表(StrategyUrlWhitelistUser)实体类
*
* @author nfq
* @since 2022-03-18 15:00:16
*/
@Data
@Builder
@TableName(value = "strategy_url_user")
public class StrategyUrlUserDO implements Serializable {
private static final long serialVersionUID = 460613016518410748L;
private Integer id;
/**
* 策略id
*/
private Integer strategyId;
private Integer equipmentId;
/**
* 状态 1:下发中 2:下发成功 3:执行中 4:执行成功
*/
private Object state;
/**
* 1:管控中 2:未管控
*/
private Integer mdmStatus;
/**
* 下发时间
*/
private Date issuedTime;
private Integer companyId;
private Date createTime;
private Date updateTime;
}
......@@ -271,11 +271,12 @@
we.bound_state,
we.equipment_model,
au.phone_number,
we.imei,
we.serial_number,
we.vendor,
we.production_date,
we.motherboard,
we.is_card_binding,
we.card_unbind_password,
we.uuid,
we.oaid,
we.tid,
we.trid,
we.uninstall_code,
......
package com.skr.mdm.manager;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.skr.mdm.bean.so.strategy.RailStrategyInfoSO;
import com.skr.mdm.bean.so.strategy.RailStrategySO;
import com.skr.mdm.dao.RailStrategyDao;
import com.skr.mdm.dao.RailStrategyInfoDao;
import com.skr.mdm.entity.RailStrategyDO;
import com.skr.mdm.entity.RailStrategyInfoDO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 功能策略通用处理
* @author nfq
* @date 2022-10-21 16:42
*/
@Component
public class FunctionStrategyManager {
@Autowired
private RailStrategyDao railStrategyDao;
@Autowired
private RailStrategyInfoDao railStrategyInfoDao;
/**
* 获取下发数据
*
* @param strategyIdList
* @param currentTime
* @return
*/
public List<RailStrategySO> getRailStrategySOList(List<Integer> strategyIdList, Long currentTime) {
List<RailStrategyDO> railStrategyDOList = railStrategyDao.selectBatchIds(strategyIdList);
List<RailStrategySO> railStrategySOList = new ArrayList<>(railStrategyDOList.size());
if (CollectionUtils.isNotEmpty(railStrategyDOList)) {
railStrategyDOList.forEach(railStrategyDO -> {
RailStrategySO railStrategySO = new RailStrategySO();
BeanUtils.copyProperties(railStrategyDO, railStrategySO);
railStrategySO.setOperateTime(railStrategyDO.getOperateTime().getTime());
railStrategySO.setSendTime(currentTime);
List<RailStrategyInfoDO> railStrategyInfoDOList = new LambdaQueryChainWrapper<>(railStrategyInfoDao)
.eq(RailStrategyInfoDO::getStrategyId, railStrategyDO.getId())
.list();
List<RailStrategyInfoSO> railStrategyInfoSOList = new ArrayList<>(railStrategyInfoDOList.size());
if (CollectionUtils.isNotEmpty(railStrategyInfoDOList)) {
railStrategyInfoDOList.forEach(railStrategyInfoDO -> {
RailStrategyInfoSO railStrategyInfoSO = new RailStrategyInfoSO();
BeanUtils.copyProperties(railStrategyInfoDO, railStrategyInfoSO);
railStrategyInfoSOList.add(railStrategyInfoSO);
});
}
railStrategySO.setRailStrategyInfoSOList(railStrategyInfoSOList);
railStrategySOList.add(railStrategySO);
});
}
return railStrategySOList;
}
}
\ No newline at end of file
package com.skr.mdm.manager;
import com.google.common.collect.Lists;
import com.skr.mdm.enums.ResultCodeEnum;
import com.skr.mdm.result.ResponseResult;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
/**
* @author nfq
* @date 2022-10-20 14:09
*/
public class ResponseResultManager {
private static List<ResponseResult> responseResultList;
public static boolean add(ResponseResult responseResult) {
if (CollectionUtils.isEmpty(responseResultList)) {
responseResultList = Lists.newArrayListWithExpectedSize(5);
}
return responseResultList.add(responseResult);
}
public static ResponseResult get() {
if (CollectionUtils.isNotEmpty(responseResultList)) {
ResponseResult responseResult = responseResultList.stream()
.filter(result -> !ResultCodeEnum.SUCCESS.getCode().equals(result.getCode()))
.findFirst()
.orElse(ResponseResult.success());
responseResultList.clear();
return responseResult;
}
return ResponseResult.success();
}
}
package com.skr.mdm.manager;
import com.skr.mdm.bean.qo.StrategyTypeQO;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author nfq
* @date 2022-10-20 13:55
*/
public class StrategyManager {
public static List<Integer> getStrategyIdList(List<StrategyTypeQO> strategyTypeQOList, Integer strategyType) {
return strategyTypeQOList.stream().filter(strategyTypeQO ->
strategyType.equals(strategyTypeQO.getStrategyType()))
.map(StrategyTypeQO::getStrategyId)
.collect(Collectors.toList());
}
}
......@@ -13,10 +13,10 @@ public class EquipmentImportData {
@ExcelProperty(value = "手机号")
private String phoneNumber;
@ExcelProperty(value = "IMEI")
private String imei;
@ExcelProperty(value = "serialNum")
private String serialNum;
@ExcelProperty(value = "设备名")
private String equipmentName;
}
}
\ No newline at end of file
......@@ -111,7 +111,7 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
private static boolean checkExcelHead(Map<Integer, String> headMap) {
return !headMap.containsKey(0) || !headMap.containsKey(1) || !headMap.containsKey(2)
|| !headMap.get(0).equals("手机号") || !headMap.get(1).equals("IMEI") || !headMap.get(2).equals("设备名");
|| !headMap.get(0).equals("手机号") || !headMap.get(1).equals("序列号") || !headMap.get(2).equals("设备名");
}
private void initData() {
......@@ -130,7 +130,7 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
.list();
if (CollectionUtils.isNotEmpty(deviceEquipmentDOList)) {
this.imeiSet = deviceEquipmentDOList.stream()
.map(DeviceEquipmentDO::getImei)
.map(DeviceEquipmentDO::getSerialNumber)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
this.equipmentNameMap = deviceEquipmentDOList.stream()
......@@ -188,12 +188,12 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
return;
}
// imei查重
if (CollectionUtils.isNotEmpty(imeiSet) && imeiSet.contains(data.getImei())) {
if (CollectionUtils.isNotEmpty(imeiSet) && imeiSet.contains(data.getSerialNum())) {
equipmentImportFailDTOList.add(covertEquipmentImportFailDTO(data, "IMEI与系统中重复"));
failCount++;
return;
}
imeiSet.add(data.getImei());
imeiSet.add(data.getSerialNum());
// 如果存在设备名进行查重 不存在自动生成设备名
AuUserDO userDO = userDOMap.get(data.getPhoneNumber());
String equipmentName = data.getEquipmentName();
......@@ -272,7 +272,7 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
equipmentDO.setUserId(userDO.getId());
equipmentDO.setUserName(userDO.getUserName());
equipmentDO.setEquipmentType(1);
equipmentDO.setImei(data.getImei());
equipmentDO.setSerialNumber(data.getSerialNum());
equipmentDO.setDepartmentId(userDO.getDepartmentId());
equipmentDO.setDepartmentName(userDO.getDepartmentName());
equipmentDO.setCompanyId(companyId);
......@@ -290,9 +290,9 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
.userName(equipmentDO.getUserName())
.departmentName(equipmentDO.getDepartmentName())
.companyName(companyName)
.imei(equipmentDO.getImei())
.serialNum(equipmentDO.getSerialNumber())
.build();
RegisterEquipmentUtil.registerGaodeTerminal(gaodeTerminalQO, equipmentDO);
// RegisterEquipmentUtil.registerGaodeTerminal(gaodeTerminalQO, equipmentDO);
}
}
......@@ -309,7 +309,7 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
equipmentImportFailDTOList.add(covertEquipmentImportFailDTO(data, "手机号格式错误"));
return true;
}
if (!Pattern.matches(RegexConstants.IMEI_REGEX, data.getImei()) && !Pattern.matches(RegexConstants.IMEI_NUMBER_REGEX, data.getImei())) {
if (!Pattern.matches(RegexConstants.IMEI_REGEX, data.getSerialNum()) && !Pattern.matches(RegexConstants.IMEI_NUMBER_REGEX, data.getSerialNum())) {
equipmentImportFailDTOList.add(covertEquipmentImportFailDTO(data, "IMEI格式错误"));
return true;
}
......@@ -325,7 +325,7 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
equipmentImportFailDTOList.add(covertEquipmentImportFailDTO(data, "手机号不能为空"));
return true;
}
if (StringUtils.isBlank(data.getImei())) {
if (StringUtils.isBlank(data.getSerialNum())) {
equipmentImportFailDTOList.add(covertEquipmentImportFailDTO(data, "IMEI不能为空"));
return true;
}
......@@ -347,7 +347,7 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
private EquipmentImportFailDTO covertEquipmentImportFailDTO(EquipmentImportData userImportData, String failInfo) {
return EquipmentImportFailDTO.builder()
.phoneNumber(userImportData.getPhoneNumber())
.imei(userImportData.getImei())
.imei(userImportData.getSerialNum())
.equipmentName(userImportData.getEquipmentName())
.failInfo(failInfo)
.build();
......@@ -386,4 +386,4 @@ public class EquipmentImportDataListener extends AnalysisEventListener<Equipment
return currentEquipmentCount >= allowUseNumber;
}
}
}
\ No newline at end of file
......@@ -16,15 +16,10 @@ import com.skr.mdm.api.equipment.service.EquipmentService;
import com.skr.mdm.api.license.MdmLicenseVerify;
import com.skr.mdm.api.system.service.DepartmentService;
import com.skr.mdm.bean.dto.EquipmentExportDTO;
import com.skr.mdm.bean.qo.BaseQueryQO;
import com.skr.mdm.bean.qo.GaodeTerminalQO;
import com.skr.mdm.bean.qo.equipment.EquipmentAddUpdateQO;
import com.skr.mdm.bean.qo.equipment.EquipmentPageQO;
import com.skr.mdm.bean.vo.equipment.AppFlowStatisticsVO;
import com.skr.mdm.bean.vo.equipment.DeviceEquipmentVO;
import com.skr.mdm.bean.vo.equipment.DeviceSimRecordVO;
import com.skr.mdm.bean.vo.equipment.EquipmentAppUseStatisticsVO;
import com.skr.mdm.bean.vo.statistics.AppUseDurationVO;
import com.skr.mdm.constant.RegexConstants;
import com.skr.mdm.dao.*;
import com.skr.mdm.dto.LoginAdminDTO;
......@@ -103,9 +98,7 @@ public class EquipmentServiceImpl implements EquipmentService {
.userName(equipmentDO.getUserName())
.departmentName(equipmentDO.getDepartmentName())
.companyName(companyDO.getCompanyName())
.imei(equipmentDO.getImei())
.oaid(equipmentDO.getOaid())
.uuid(equipmentDO.getUuid())
.serialNum(equipmentDO.getSerialNumber())
.build();
RegisterEquipmentUtil.registerGaodeTerminal(gaodeTerminalQO, equipmentDO);
}
......@@ -190,49 +183,21 @@ public class EquipmentServiceImpl implements EquipmentService {
if (countEquipmentName > 0) {
throw new ServiceException("该用户设备名称已存在!");
}
if (StringUtils.isNotBlank(equipmentAddUpdateQO.getImei())) {
if (!Pattern.matches(RegexConstants.IMEI_REGEX, equipmentAddUpdateQO.getImei()) &&
!Pattern.matches(RegexConstants.IMEI_NUMBER_REGEX, equipmentAddUpdateQO.getImei())) {
if (StringUtils.isNotBlank(equipmentAddUpdateQO.getSerialNum())) {
if (!Pattern.matches(RegexConstants.IMEI_REGEX, equipmentAddUpdateQO.getSerialNum()) &&
!Pattern.matches(RegexConstants.IMEI_NUMBER_REGEX, equipmentAddUpdateQO.getSerialNum())) {
throw new ServiceException("IMEI格式错误!");
}
Long countPhoneNumber = new LambdaQueryChainWrapper<>(equipmentDao)
.eq(DeviceEquipmentDO::getIsDelete, DeleteStateEnum.NON_DELETE.getState())
.eq(DeviceEquipmentDO::getCompanyId, companyId)
.eq(DeviceEquipmentDO::getImei, equipmentAddUpdateQO.getImei())
.eq(DeviceEquipmentDO::getSerialNumber, equipmentAddUpdateQO.getSerialNum())
.ne(equipmentAddUpdateQO.getId() != null, DeviceEquipmentDO::getId, equipmentAddUpdateQO.getId())
.count();
if (countPhoneNumber > 0) {
throw new ServiceException("设备IMEI已存在!");
}
}
if (StringUtils.isNotBlank(equipmentAddUpdateQO.getOaid())) {
if (equipmentAddUpdateQO.getOaid().length() > 32) {
throw new ServiceException("OAID格式错误!");
}
Long countPhoneNumber = new LambdaQueryChainWrapper<>(equipmentDao)
.eq(DeviceEquipmentDO::getIsDelete, DeleteStateEnum.NON_DELETE.getState())
.eq(DeviceEquipmentDO::getCompanyId, companyId)
.eq(DeviceEquipmentDO::getOaid, equipmentAddUpdateQO.getOaid())
.ne(equipmentAddUpdateQO.getId() != null, DeviceEquipmentDO::getId, equipmentAddUpdateQO.getId())
.count();
if (countPhoneNumber > 0) {
throw new ServiceException("设备OAID已存在!");
}
}
if (StringUtils.isNotBlank(equipmentAddUpdateQO.getUuid())) {
if (equipmentAddUpdateQO.getUuid().length() > 32) {
throw new ServiceException("UUID格式错误!");
}
Long countPhoneNumber = new LambdaQueryChainWrapper<>(equipmentDao)
.eq(DeviceEquipmentDO::getIsDelete, DeleteStateEnum.NON_DELETE.getState())
.eq(DeviceEquipmentDO::getCompanyId, companyId)
.eq(DeviceEquipmentDO::getUuid, equipmentAddUpdateQO.getUuid())
.ne(equipmentAddUpdateQO.getId() != null, DeviceEquipmentDO::getId, equipmentAddUpdateQO.getId())
.count();
if (countPhoneNumber > 0) {
throw new ServiceException("设备UUID已存在!");
}
}
}
@Override
......@@ -248,9 +213,7 @@ public class EquipmentServiceImpl implements EquipmentService {
new LambdaUpdateChainWrapper<>(equipmentDao)
.set(DeviceEquipmentDO::getEquipmentName, equipmentAddUpdateQO.getEquipmentName())
.set(DeviceEquipmentDO::getEquipmentType, equipmentAddUpdateQO.getEquipmentType())
.set(StringUtils.isNotBlank(equipmentAddUpdateQO.getImei()), DeviceEquipmentDO::getImei, equipmentAddUpdateQO.getImei())
.set(StringUtils.isNotBlank(equipmentAddUpdateQO.getOaid()), DeviceEquipmentDO::getOaid, equipmentAddUpdateQO.getOaid())
.set(StringUtils.isNotBlank(equipmentAddUpdateQO.getUuid()), DeviceEquipmentDO::getUuid, equipmentAddUpdateQO.getUuid())
.set(StringUtils.isNotBlank(equipmentAddUpdateQO.getSerialNum()), DeviceEquipmentDO::getSerialNumber, equipmentAddUpdateQO.getSerialNum())
.set(DeviceEquipmentDO::getUserId, equipmentAddUpdateQO.getUserId())
.set(DeviceEquipmentDO::getUserName, userDO.getUserName())
.set(DeviceEquipmentDO::getDepartmentId, userDO.getDepartmentId())
......@@ -266,9 +229,7 @@ public class EquipmentServiceImpl implements EquipmentService {
.userName(equipmentDO.getUserName())
.departmentName(equipmentDO.getDepartmentName())
.companyName(companyDO.getCompanyName())
.imei(equipmentDO.getImei())
.oaid(equipmentDO.getOaid())
.uuid(equipmentDO.getUuid())
.serialNum(equipmentDO.getSerialNumber())
.build();
GaodeMapAPIUtil.updateTerminal(gaodeTerminalQO, equipmentDO.getTid());
}
......
......@@ -35,4 +35,4 @@ public class GaodeLieyingTerminalUserStrategyServiceImpl implements UserStrategy
}
return ResponseResult.success(GaodeMapAPIUtil.getTerminal(companyDO.getSid(), equipmentDO.getTid()));
}
}
}
\ No newline at end of file
package com.skr.mdm.api.strategy.controller;
import com.skr.mdm.api.strategy.service.FunctionStrategyService;
import com.skr.mdm.bean.qo.StrategyUserQO;
import com.skr.mdm.bean.qo.strategy.RailStrategyQO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author nfq
* @date 2022/10/18 17:36
*/
@Validated
@RestController
@RequestMapping("strategy/function")
@Api(tags = "功能策略")
public class FunctionStrategyController {
@Autowired
private FunctionStrategyService functionStrategyService;
@PostMapping("add")
@ApiOperation(value = "创建")
@PreAuthorize("hasAnyAuthority('sys:strategy:rail:add')")
public ResponseResult addStrategy(@RequestBody @Valid RailStrategyQO railStrategyQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return functionStrategyService.addStrategy(railStrategyQO, loginAdminDTO);
}
@PostMapping("update")
@ApiOperation(value = "编辑")
@PreAuthorize("hasAnyAuthority('sys:strategy:update')")
public ResponseResult updateStrategy(@RequestBody @Valid RailStrategyQO railStrategyQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return functionStrategyService.updateStrategy(railStrategyQO, loginAdminDTO);
}
@PostMapping("user/list")
@ApiOperation(value = "作用人列表")
@PreAuthorize("hasAnyAuthority('sys:strategy:user:list')")
public ResponseResult listStrategyUser(@RequestBody @Valid StrategyUserQO strategyUserQO) {
return functionStrategyService.listStrategyUser(strategyUserQO);
}
@PostMapping("user/delete")
@ApiOperation(value = "作用人删除")
@PreAuthorize("hasAnyAuthority('sys:strategy:user:delete')")
public ResponseResult deleteStrategyUser(@RequestParam @NotNull(message = "策略ID不能为空") Integer strategyId,
@RequestParam @NotEmpty(message = "设备ID不能为空") List<Integer> equipmentIdList,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return functionStrategyService.deleteStrategyUser(strategyId, equipmentIdList, loginAdminDTO);
}
@PostMapping("state/change")
@ApiOperation(value = "启用禁用")
@PreAuthorize("hasAnyAuthority('sys:strategy:able')")
public ResponseResult updateStrategyState(@RequestParam @NotNull(message = "策略ID不能为空") Integer strategyId,
@RequestParam @NotNull(message = "策略状态不能为空") Integer state,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return functionStrategyService.updateStrategyState(strategyId, state, loginAdminDTO);
}
@PostMapping("info")
@ApiOperation(value = "详细信息")
@PreAuthorize("hasAnyAuthority('sys:strategy:list')")
public ResponseResult strategyInfo(@RequestParam @NotNull(message = "策略ID不能为空") Integer strategyId) {
return functionStrategyService.strategyInfo(strategyId);
}
@ApiOperation("上传墙纸")
@PostMapping("upload/wallpaper")
@PreAuthorize("hasAnyAuthority('sys:strategy:rail:add')")
public ResponseResult uploadWallpaper(MultipartFile file, @ApiIgnore Authentication authentication) throws Exception {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return functionStrategyService.uploadWallPaper(file, loginAdminDTO);
}
}
\ No newline at end of file
package com.skr.mdm.api.strategy.controller;
import com.skr.mdm.api.strategy.service.StrategyService;
import com.skr.mdm.bean.qo.StrategyQueryQO;
import com.skr.mdm.bean.qo.StrategyTypeIssuedQO;
import com.skr.mdm.bean.qo.StrategyTypeQO;
import com.skr.mdm.bean.vo.strategy.StrategyVO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.validation.annotation.Validated;
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 springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.util.List;
/**
* @author nfq
* @date 2020/8/27 14:25
*/
@Validated
@RestController
@RequestMapping("strategy")
@Api(tags = "常规策略管理")
public class StrategyController {
@Autowired
private StrategyService strategyService;
@ApiOperation("策略列表")
@PostMapping("list")
@PreAuthorize("hasAnyAuthority('sys:strategy:list')")
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = StrategyVO.class)
})
public ResponseResult list(@RequestBody @Valid StrategyQueryQO strategyQueryQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyService.listStrategy(strategyQueryQO, loginAdminDTO);
}
@ApiOperation("删除策略")
@PostMapping("delete")
@PreAuthorize("hasAnyAuthority('sys:strategy:delete')")
public ResponseResult deleteStrategy(@RequestBody @Valid List<StrategyTypeQO> strategyTypeQOList,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyService.delete(strategyTypeQOList, loginAdminDTO);
}
@ApiOperation("策略下发")
@PostMapping("issued")
@PreAuthorize("hasAnyAuthority('sys:strategy:issued')")
public ResponseResult issuedStrategy(@RequestBody @Valid StrategyTypeIssuedQO strategyTypeIssuedQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyService.issued(strategyTypeIssuedQO, loginAdminDTO);
}
}
\ No newline at end of file
package com.skr.mdm.api.strategy.controller;
import com.skr.mdm.api.strategy.service.StrategyUrlConfigService;
import com.skr.mdm.bean.qo.BaseQueryQO;
import com.skr.mdm.bean.qo.strategy.StrategyUrlConfigQO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.io.IOException;
import java.util.List;
/**
* @author nfq
* @date 2022/03/18 10:58
*/
@Validated
@RequestMapping("strategy/url/config")
@RestController
@Api(tags = "网址配置")
public class StrategyUrlConfigController {
@Autowired
private StrategyUrlConfigService strategyUrlConfigService;
@ApiOperation("添加")
@PostMapping("add")
@PreAuthorize("hasAnyAuthority('sys:strategy:url:add')")
public ResponseResult add(@RequestBody @Valid StrategyUrlConfigQO strategyUrlConfigQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyUrlConfigService.add(strategyUrlConfigQO, loginAdminDTO);
}
@ApiOperation("编辑")
@PostMapping("update")
@PreAuthorize("hasAnyAuthority('sys:strategy:url:add')")
public ResponseResult update(@RequestBody @Valid StrategyUrlConfigQO strategyUrlConfigQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyUrlConfigService.update(strategyUrlConfigQO, loginAdminDTO);
}
@ApiOperation("删除")
@PostMapping("delete")
@PreAuthorize("hasAnyAuthority('sys:strategy:url:add')")
public ResponseResult delete(@RequestParam @NotEmpty(message = "ID不能为空") List<Integer> idList,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyUrlConfigService.delete(idList, loginAdminDTO);
}
@ApiOperation("列表")
@PostMapping("list")
@PreAuthorize("hasAnyAuthority('sys:strategy:url:add')")
public ResponseResult list(@RequestBody @Valid BaseQueryQO baseQueryQO, @ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyUrlConfigService.list(baseQueryQO, loginAdminDTO);
}
@ApiOperation(value = "导入")
@PostMapping("import")
@PreAuthorize("hasAnyAuthority('sys:strategy:url:add')")
public ResponseResult importExcel(MultipartFile file, @ApiIgnore Authentication authentication) throws IOException {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return strategyUrlConfigService.importExcel(file, loginAdminDTO);
}
}
\ No newline at end of file
package com.skr.mdm.api.strategy.controller;
import com.skr.mdm.api.strategy.service.UrlStrategyService;
import com.skr.mdm.bean.qo.StrategyUserQO;
import com.skr.mdm.bean.qo.strategy.StrategyUrlQO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author nfq
* @date 2022/0/18 17:36
*/
@Validated
@RestController
@RequestMapping("strategy/url")
@Api(tags = "网址策略")
public class UrlStrategyController {
@Autowired
private UrlStrategyService urlStrategyService;
@PostMapping("add")
@ApiOperation(value = "创建")
@PreAuthorize("hasAnyAuthority('sys:strategy:config:add')")
public ResponseResult addStrategy(@RequestBody @Valid StrategyUrlQO strategyUrlQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return urlStrategyService.addStrategy(strategyUrlQO, loginAdminDTO);
}
@PostMapping("update")
@ApiOperation(value = "编辑")
@PreAuthorize("hasAnyAuthority('sys:strategy:update')")
public ResponseResult updateStrategy(@RequestBody @Valid StrategyUrlQO strategyUrlQO,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return urlStrategyService.updateStrategy(strategyUrlQO, loginAdminDTO);
}
@PostMapping("user/list")
@ApiOperation(value = "作用人列表")
@PreAuthorize("hasAnyAuthority('sys:strategy:user:list')")
public ResponseResult listStrategyUser(@RequestBody @Valid StrategyUserQO strategyUserQO) {
return urlStrategyService.listStrategyUser(strategyUserQO);
}
@PostMapping("user/delete")
@ApiOperation(value = "作用人删除")
@PreAuthorize("hasAnyAuthority('sys:strategy:user:delete')")
public ResponseResult deleteStrategyUser(@RequestParam @NotNull(message = "策略ID不能为空") Integer strategyId,
@RequestParam @NotEmpty(message = "设备ID不能为空") List<Integer> equipmentIdList,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return urlStrategyService.deleteStrategyUser(strategyId, equipmentIdList, loginAdminDTO);
}
@PostMapping("state/change")
@ApiOperation(value = "启用禁用")
@PreAuthorize("hasAnyAuthority('sys:strategy:able')")
public ResponseResult updateStrategyState(@RequestParam @NotNull(message = "策略ID不能为空") Integer strategyId,
@RequestParam @NotNull(message = "策略状态不能为空") Integer state,
@ApiIgnore Authentication authentication) {
LoginAdminDTO loginAdminDTO = (LoginAdminDTO) authentication.getPrincipal();
return urlStrategyService.updateStrategyState(strategyId, state, loginAdminDTO);
}
@PostMapping("info")
@ApiOperation(value = "详细信息")
@PreAuthorize("hasAnyAuthority('sys:strategy:list')")
public ResponseResult strategyInfo(@RequestParam @NotNull(message = "策略ID不能为空") Integer strategyId) {
return urlStrategyService.strategyInfo(strategyId);
}
}
\ No newline at end of file
package com.skr.mdm.api.strategy.excel;
import lombok.Data;
/**
* @author nfq
* @date 2022/03/01 18:31
*/
@Data
public class UrlImportData {
private String urlTitle;
private String url;
}
package com.skr.mdm.api.strategy.excel;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.google.common.collect.Sets;
import com.skr.mdm.dao.StrategyUrlConfigDao;
import com.skr.mdm.entity.StrategyUrlConfigDO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author nfq
* @date 2021/10/22 10:41
*/
@Slf4j
public class UrlImportDataListener extends AnalysisEventListener<UrlImportData> {
private static final int BATCH_COUNT = 100;
private final StrategyUrlConfigDao strategyUrlConfigDao;
private final Integer companyId;
/**
* 缓存的数据
*/
private Set<UrlImportData> list = Sets.newHashSetWithExpectedSize(BATCH_COUNT);
public UrlImportDataListener(StrategyUrlConfigDao strategyUrlConfigDao, Integer companyId) {
this.strategyUrlConfigDao = strategyUrlConfigDao;
this.companyId = companyId;
}
/**
* 这个每一条数据解析都会来调用
*
* @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()}
* @param context
*/
@Override
public void invoke(UrlImportData data, AnalysisContext context) {
log.info("解析到一条数据:{}", JSONUtil.toJsonStr(data));
list.add(data);
if (list.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
list = Sets.newHashSetWithExpectedSize(BATCH_COUNT);
}
}
/**
* 所有数据解析完成了 都会来调用
*
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
log.info("所有数据解析完成!");
}
private void saveData() {
log.info("{}条数据,开始存储数据库!", list.size());
List<StrategyUrlConfigDO> strategyUrlDOList;
if (CollectionUtils.isNotEmpty(list)) {
// 判重
List<String> urlList = list.stream().map(urlImportData -> urlImportData.getUrl()).collect(Collectors.toList());
List<StrategyUrlConfigDO> strategyUrlDOS = new LambdaQueryChainWrapper<>(strategyUrlConfigDao)
.eq(StrategyUrlConfigDO::getCompanyId, companyId)
.in(StrategyUrlConfigDO::getUrl, urlList)
.list();
if (CollectionUtils.isNotEmpty(strategyUrlDOS)) {
List<String> repeatUrlList = strategyUrlDOS.stream().map(StrategyUrlConfigDO::getUrl).collect(Collectors.toList());
list = list.stream().filter(urlImportData -> !repeatUrlList.contains(urlImportData.getUrl())).collect(Collectors.toSet());
}
// 保存
if (CollectionUtils.isNotEmpty(list)) {
strategyUrlDOList = list.stream().map(urlImportData -> {
return StrategyUrlConfigDO.builder().urlTitle(urlImportData.getUrlTitle()).url(urlImportData.getUrl()).companyId(companyId).build();
}).collect(Collectors.toList());
strategyUrlConfigDao.insertBatch(strategyUrlDOList);
}
}
log.info("存储数据库成功!");
}
}
package com.skr.mdm.api.strategy.service;
import com.skr.mdm.api.template.DefaultStrategyService;
import com.skr.mdm.bean.qo.StrategyQueryQO;
import com.skr.mdm.bean.vo.strategy.StrategyVO;
import java.util.List;
public interface ConfigStrategyService extends DefaultStrategyService {
List<StrategyVO> listStrategy(StrategyQueryQO strategyQueryQO);
}
package com.skr.mdm.api.strategy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.skr.mdm.entity.RailStrategyInfoDO;
/**
* @author nfq
* @date 2022-10-18 15:14
*/
public interface FunctionInfoStrategyService extends IService<RailStrategyInfoDO> {
}
package com.skr.mdm.api.strategy.service;
import com.skr.mdm.api.template.DefaultStrategyService;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import org.springframework.web.multipart.MultipartFile;
public interface FunctionStrategyService extends DefaultStrategyService {
ResponseResult uploadWallPaper(MultipartFile file, LoginAdminDTO loginAdminDTO) throws Exception;
}
package com.skr.mdm.api.strategy.service;
import com.skr.mdm.bean.qo.StrategyQueryQO;
import com.skr.mdm.bean.qo.StrategyTypeIssuedQO;
import com.skr.mdm.bean.qo.StrategyTypeQO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import java.util.List;
public interface StrategyService {
ResponseResult listStrategy(StrategyQueryQO strategyQueryQO, LoginAdminDTO loginAdminDTO);
ResponseResult issued(StrategyTypeIssuedQO strategyTypeIssuedQO, LoginAdminDTO loginAdminDTO);
ResponseResult delete(List<StrategyTypeQO> strategyTypeQOList, LoginAdminDTO loginAdminDTO);
}
package com.skr.mdm.api.strategy.service;
import com.skr.mdm.bean.qo.BaseQueryQO;
import com.skr.mdm.bean.qo.strategy.StrategyUrlConfigQO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
public interface StrategyUrlConfigService {
ResponseResult list(BaseQueryQO baseQueryQO, LoginAdminDTO loginAdminDTO);
ResponseResult add(StrategyUrlConfigQO strategyUrlConfigQO, LoginAdminDTO loginAdminDTO);
ResponseResult update(StrategyUrlConfigQO strategyUrlConfigQO, LoginAdminDTO loginAdminDTO);
ResponseResult delete(List<Integer> idList, LoginAdminDTO loginAdminDTO);
ResponseResult importExcel(MultipartFile file, LoginAdminDTO loginAdminDTO) throws IOException;
}
\ No newline at end of file
package com.skr.mdm.api.strategy.service;
import com.skr.mdm.api.template.DefaultStrategyService;
import com.skr.mdm.bean.qo.StrategyQueryQO;
import com.skr.mdm.bean.vo.strategy.StrategyVO;
import java.util.List;
public interface UrlStrategyService extends DefaultStrategyService {
List<StrategyVO> listStrategy(StrategyQueryQO strategyQueryQO);
}
package com.skr.mdm.api.strategy.service.impl;
import com.github.pagehelper.PageHelper;
import com.skr.mdm.api.strategy.service.ConfigStrategyService;
import com.skr.mdm.api.strategy.service.FunctionStrategyService;
import com.skr.mdm.api.strategy.service.StrategyService;
import com.skr.mdm.api.strategy.service.UrlStrategyService;
import com.skr.mdm.bean.qo.StrategyQueryQO;
import com.skr.mdm.bean.qo.StrategyTypeIssuedQO;
import com.skr.mdm.bean.qo.StrategyTypeQO;
import com.skr.mdm.dao.RailStrategyDao;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.enums.StrategyTypeEnum;
import com.skr.mdm.manager.ResponseResultManager;
import com.skr.mdm.manager.StrategyManager;
import com.skr.mdm.result.ResponseResult;
import com.skr.mdm.util.PageUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author nfq
* @date 2022-10-20 9:59
*/
@Service
public class StrategyServiceImpl implements StrategyService {
@Autowired
private RailStrategyDao strategyDao;
@Autowired
private FunctionStrategyService functionStrategyService;
@Autowired
private ConfigStrategyService configStrategyService;
@Autowired
private UrlStrategyService urlStrategyService;
@Override
public ResponseResult listStrategy(StrategyQueryQO strategyQueryQO, LoginAdminDTO loginAdminDTO) {
strategyQueryQO.setCompanyId(loginAdminDTO.getCompanyId());
PageHelper.startPage(strategyQueryQO.getPageNum(), strategyQueryQO.getPageSize());
if (StrategyTypeEnum.FUNCTION_STRATEGY.getStrategyType().equals(strategyQueryQO.getStrategyType())) {
return ResponseResult.success(PageUtil.getPageResult(strategyDao.listStrategy(strategyQueryQO)));
}
if (StrategyTypeEnum.CONFIG_STRATEGY.getStrategyType().equals(strategyQueryQO.getStrategyType())) {
return ResponseResult.success(PageUtil.getPageResult(configStrategyService.listStrategy(strategyQueryQO)));
}
if (StrategyTypeEnum.URL_STRATEGY.getStrategyType().equals(strategyQueryQO.getStrategyType())) {
return ResponseResult.success(PageUtil.getPageResult(urlStrategyService.listStrategy(strategyQueryQO)));
}
return ResponseResult.success();
}
@Override
public ResponseResult issued(StrategyTypeIssuedQO strategyTypeIssuedQO, LoginAdminDTO loginAdminDTO) {
List<StrategyTypeQO> strategyTypeQOList = strategyTypeIssuedQO.getStrategyTypeQOList();
if (CollectionUtils.isNotEmpty(strategyTypeQOList)) {
ResponseResultManager.add(functionStrategyService.issuedStrategy(
StrategyManager.getStrategyIdList(strategyTypeQOList, StrategyTypeEnum.FUNCTION_STRATEGY.getStrategyType()),
strategyTypeIssuedQO, loginAdminDTO));
ResponseResultManager.add(configStrategyService.issuedStrategy(
StrategyManager.getStrategyIdList(strategyTypeQOList, StrategyTypeEnum.CONFIG_STRATEGY.getStrategyType()),
strategyTypeIssuedQO, loginAdminDTO));
ResponseResultManager.add(urlStrategyService.issuedStrategy(
StrategyManager.getStrategyIdList(strategyTypeQOList, StrategyTypeEnum.URL_STRATEGY.getStrategyType()),
strategyTypeIssuedQO, loginAdminDTO));
}
return ResponseResultManager.get();
}
@Override
public ResponseResult delete(List<StrategyTypeQO> strategyTypeQOList, LoginAdminDTO loginAdminDTO) {
if (CollectionUtils.isNotEmpty(strategyTypeQOList)) {
ResponseResultManager.add(functionStrategyService.deleteStrategy(StrategyManager.getStrategyIdList(strategyTypeQOList,
StrategyTypeEnum.FUNCTION_STRATEGY.getStrategyType()), loginAdminDTO));
ResponseResultManager.add(configStrategyService.deleteStrategy(StrategyManager.getStrategyIdList(strategyTypeQOList,
StrategyTypeEnum.CONFIG_STRATEGY.getStrategyType()), loginAdminDTO));
ResponseResultManager.add(urlStrategyService.deleteStrategy(StrategyManager.getStrategyIdList(strategyTypeQOList,
StrategyTypeEnum.URL_STRATEGY.getStrategyType()), loginAdminDTO));
}
return ResponseResultManager.get();
}
}
package com.skr.mdm.api.strategy.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.pagehelper.PageHelper;
import com.skr.mdm.api.strategy.excel.UrlImportData;
import com.skr.mdm.api.strategy.excel.UrlImportDataListener;
import com.skr.mdm.api.strategy.service.StrategyUrlConfigService;
import com.skr.mdm.bean.qo.BaseQueryQO;
import com.skr.mdm.bean.qo.strategy.StrategyUrlConfigQO;
import com.skr.mdm.dao.StrategyUrlConfigDao;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.entity.StrategyUrlConfigDO;
import com.skr.mdm.result.ResponseResult;
import com.skr.mdm.util.PageUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
* @author nfq
* @date 2022/03/18 10:57
*/
@Service
public class StrategyUrlConfigServiceImpl implements StrategyUrlConfigService {
@Autowired
private StrategyUrlConfigDao strategyUrlConfigDao;
@Override
public ResponseResult list(BaseQueryQO baseQueryQO, LoginAdminDTO loginAdminDTO) {
PageHelper.startPage(baseQueryQO.getPageNum(), baseQueryQO.getPageSize());
return ResponseResult.success(PageUtil.getPageResult(strategyUrlConfigDao.listStrategyUrlVO(baseQueryQO, loginAdminDTO.getCompanyId())));
}
@Override
public ResponseResult add(StrategyUrlConfigQO strategyUrlConfigQO, LoginAdminDTO loginAdminDTO) {
if (checkDuplicateUrl(strategyUrlConfigQO, loginAdminDTO) > 0) {
return ResponseResult.failure("网址已存在");
}
StrategyUrlConfigDO strategyUrlConfigDO = getStrategyUrlConfigDO(strategyUrlConfigQO, loginAdminDTO);
strategyUrlConfigDao.insert(strategyUrlConfigDO);
return ResponseResult.success();
}
@Override
public ResponseResult update(StrategyUrlConfigQO strategyUrlConfigQO, LoginAdminDTO loginAdminDTO) {
if (checkDuplicateUrl(strategyUrlConfigQO, loginAdminDTO) > 0) {
return ResponseResult.failure("网址已存在");
}
StrategyUrlConfigDO strategyUrlConfigDO = getStrategyUrlConfigDO(strategyUrlConfigQO, loginAdminDTO);
strategyUrlConfigDao.updateById(strategyUrlConfigDO);
return ResponseResult.success();
}
@Override
@Transactional
public ResponseResult delete(List<Integer> idList, LoginAdminDTO loginAdminDTO) {
if (CollectionUtils.isNotEmpty(idList)) {
strategyUrlConfigDao.deleteBatchIds(idList);
}
return ResponseResult.success();
}
@Override
public ResponseResult importExcel(MultipartFile file, LoginAdminDTO loginAdminDTO) throws IOException {
UrlImportDataListener urlImportDataListener = new UrlImportDataListener(strategyUrlConfigDao, loginAdminDTO.getCompanyId());
EasyExcel.read(file.getInputStream(), UrlImportData.class, urlImportDataListener).sheet().doRead();
return ResponseResult.success();
}
private long checkDuplicateUrl(StrategyUrlConfigQO strategyUrlConfigQO, LoginAdminDTO loginAdminDTO) {
return new LambdaQueryChainWrapper<>(strategyUrlConfigDao)
.eq(StrategyUrlConfigDO::getCompanyId, loginAdminDTO.getCompanyId())
.eq(StrategyUrlConfigDO::getUrl, strategyUrlConfigQO.getUrl())
.ne(strategyUrlConfigQO.getId() != null, StrategyUrlConfigDO::getId, strategyUrlConfigQO.getId())
.count();
}
private StrategyUrlConfigDO getStrategyUrlConfigDO(StrategyUrlConfigQO strategyUrlConfigQO, LoginAdminDTO loginAdminDTO) {
StrategyUrlConfigDO strategyUrlConfigDO = StrategyUrlConfigDO.builder()
.companyId(loginAdminDTO.getCompanyId())
.build();
BeanUtils.copyProperties(strategyUrlConfigQO, strategyUrlConfigDO);
return strategyUrlConfigDO;
}
}
\ No newline at end of file
ip: localhost
server:
port: 8080
port: 8071
spring:
application:
name: MDMCloud
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${ip}:3306/mdm_byod?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
url: jdbc:mysql://${ip}:3306/mdm_pc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
druid:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment