feature/simcards_checker #2

Merged
admin merged 5 commits from feature/simcards_checker into develop 2025-06-03 08:29:08 +00:00
7 changed files with 232 additions and 0 deletions
Showing only changes of commit e3870f6680 - Show all commits

View File

@ -0,0 +1,59 @@
package com.imdroid.secapi.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("traffic_cards")
public class TrafficCard {
public static final int STATUS_UNKNOWN = -1; // 未知
public static final int STATUS_WAIT_ACTIVE = 1; // 待激活
public static final int STATUS_ACTIVATED = 2; // 已激活
public static final int STATUS_SUSPENDED = 3; // 停机
public static final int STATUS_CANCELLED = 4; // 注销
public static final int STATUS_IN_STOCK = 5; // 库存
public static final int STATUS_TESTABLE = 6; // 可测试
public static final int STATUS_INVALID = 7; // 失效
public static final int STATUS_NOT_EXIST = 99; // 号码不存在
// 查询状态常量定义
public static final int QUERY_STATUS_NORMAL = 0; // 正常状态
public static final int QUERY_STATUS_NOT_CURRENT_VENDOR = 1; // 非当前卡商
public static final int QUERY_STATUS_OTHER_ERROR = 2; // 其他错误
@TableId(type = IdType.AUTO)
@ExcelProperty("ID")
private Integer id;
@ExcelProperty("ICCID")
private String iccid;
@ExcelProperty("物联卡号码")
private String msisdn;
@ExcelProperty("状态")
private Integer status;
@ExcelProperty("剩余流量(MB)")
private Integer remaining;
@ExcelProperty("总流量(MB)")
private Integer total;
@ExcelProperty("已用流量(MB)")
private Integer used;
@TableField("update_time")
@ExcelProperty("更新时间")
private Date updateTime;
@TableField("query_status")
@ExcelProperty("查询状态")
private Integer queryStatus;
}

View File

@ -0,0 +1,37 @@
package com.imdroid.secapi.dto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@Mapper
public interface TrafficCardMapper extends BaseMapper<TrafficCard> {
@Select("select * from traffic_cards where iccid = #{iccid} limit 1")
TrafficCard findByIccid(String iccid);
@Update("UPDATE traffic_cards SET " +
"update_time = #{updateTime}, " +
"msisdn = #{msisdn}, " +
"status = #{status}, " +
"remaining = #{remaining}, " +
"total = #{total}, " +
"used = #{used} " +
"WHERE iccid = #{iccid}")
int updateCardInfo(TrafficCard trafficCard);
@Update("UPDATE traffic_cards SET query_status = #{queryStatus} WHERE iccid = #{iccid}")
int updateQueryStatus(String iccid,int queryStatus);
@Update("UPDATE traffic_cards SET " +
"update_time = #{updateTime}, " +
"remaining = #{remaining}, " +
"total = #{total}, " +
"used = #{used} " +
"WHERE iccid = #{iccid} AND iccid IS NOT NULL AND iccid != ''")
int updateCardTrafficInfo(TrafficCard trafficCard);
}

View File

@ -0,0 +1,27 @@
package com.imdroid.secapi.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("traffic_device_mappings")
public class TrafficDeviceMapping {
@TableId(type = IdType.AUTO)
private Integer id;
private String deviceid;
private String iccid;
@TableField("start_time")
private Date startTime;
@TableField("end_time")
private Date endTime; // 结束使用时间NULL表示当前正在使用
}

View File

@ -0,0 +1,24 @@
package com.imdroid.secapi.dto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
@Mapper
public interface TrafficDeviceMappingMapper extends BaseMapper<TrafficDeviceMapping> {
@Select("SELECT * FROM traffic_device_mappings WHERE deviceid = #{deviceId} AND end_time IS NULL LIMIT 1")
TrafficDeviceMapping findActiveByDeviceId(String deviceId);
@Select("SELECT * FROM traffic_device_mappings WHERE iccid = #{iccid} AND end_time IS NULL LIMIT 1")
TrafficDeviceMapping findActiveByIccid(String iccid);
@Select("SELECT * FROM traffic_device_mappings WHERE deviceid = #{deviceId} ORDER BY start_time DESC")
List<TrafficDeviceMapping> findHistoryByDeviceId(String deviceId);
@Update("UPDATE traffic_device_mappings SET end_time = NOW() WHERE id = #{id}")
int endMapping(Integer id);
}

View File

@ -0,0 +1,26 @@
package com.imdroid.secapi.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("traffic_records")
public class TrafficRecord {
@TableId(type = IdType.AUTO)
private Integer id;
private String iccid;
@TableField("record_time")
private Date recordTime;
private Integer remaining; // 剩余流量(MB×1000)
private Integer used; // 已用流量(MB×1000)
private Integer total; // 总流量(MB×1000)
}

View File

@ -0,0 +1,10 @@
package com.imdroid.secapi.dto;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TrafficRecordMapper extends BaseMapper<TrafficRecord> {
}

View File

@ -396,3 +396,52 @@ CREATE TABLE IF NOT EXISTS `ehmconfig` (
`calcstathours` int DEFAULT NULL COMMENT '数据分析周期',
PRIMARY KEY (`updatetime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/***
*/
CREATE TABLE IF NOT EXISTS `traffic_cards` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,唯一',
`iccid` VARCHAR(20) NOT NULL COMMENT 'ICCID号唯一标识SIM卡',
`msisdn` VARCHAR(20) NOT NULL COMMENT '物联卡号码',
`status` INT DEFAULT -1 COMMENT 'SIM卡状态-1:未知, 1:待激活, 2:已激活, 3:停机, 4:注销, 5:库存, 6:可测试, 7:失效, 99:号码不存在)',
`remaining` INT DEFAULT 0 COMMENT '剩余流量单位MB为避免小数存储值为实际值的1000倍',
`total` INT DEFAULT 0 COMMENT '总流量单位MB同上',
`used` INT DEFAULT 0 COMMENT '已用流量单位MB同上',
`update_time` DATETIME DEFAULT NULL COMMENT '最后更新时间',
`query_status` TINYINT DEFAULT 0 COMMENT 'SIM卡查询状态0=正常1=非当前卡商2=其他错误',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_iccid` (`iccid`),
INDEX `idx_status` (`status`),
INDEX `idx_query_status` (`query_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流量卡信息表';
/***
-SIM卡映射表
*/
CREATE TABLE IF NOT EXISTS `traffic_device_mappings` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,唯一',
`deviceid` VARCHAR(20) NOT NULL COMMENT '设备ID',
`iccid` VARCHAR(20) NOT NULL COMMENT 'SIM卡ICCID',
`start_time` DATETIME NOT NULL COMMENT '开始使用时间',
`end_time` DATETIME DEFAULT NULL COMMENT '结束使用时间NULL表示当前正在使用',
PRIMARY KEY (`id`),
KEY `idx_deviceid` (`deviceid`),
KEY `idx_iccid` (`iccid`),
KEY `idx_start_time` (`start_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备-SIM卡映射表';
/***
使
*/
CREATE TABLE IF NOT EXISTS `traffic_records` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,唯一',
`iccid` VARCHAR(20) NOT NULL COMMENT 'SIM卡ICCID',
`record_time` DATETIME NOT NULL COMMENT '记录时间',
`remaining` INT DEFAULT NULL COMMENT '剩余流量单位MB为避免小数存储值为实际值的1000倍',
`used` INT DEFAULT NULL COMMENT '已用流量单位MB为避免小数存储值为实际值的1000倍',
`total` INT DEFAULT NULL COMMENT '总流量单位MB为避免小数存储值为实际值的1000倍',
PRIMARY KEY (`id`),
KEY `idx_iccid` (`iccid`),
KEY `idx_record_time` (`record_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流量使用记录表';