新增地区限制访问列表管理

This commit is contained in:
liaozetao
2023-11-20 17:28:34 +08:00
committed by khalil
parent afbcbd5873
commit 8731932420
9 changed files with 282 additions and 9 deletions

View File

@@ -0,0 +1,51 @@
package com.accompany.admin.vo.ip;
import com.accompany.business.model.ip.IpRegionLimitRecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author: liaozetao
* @date: 2023/11/20 17:04
* @description:
*/
@Data
@ApiModel
public class IpRegionLimitRecordAdminVo extends IpRegionLimitRecord {
/**
* 用户ID
*/
@ApiModelProperty("用户ID")
private Long erbanNo;
/**
* 昵称
*/
@ApiModelProperty("昵称")
private String nick;
/**
* 注册时间
*/
@ApiModelProperty("注册时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signTime;
/**
* 注册设备
*/
@ApiModelProperty("注册设备")
private String signDeviceId;
/**
* 邀请码
*/
@ApiModelProperty("邀请码")
private String inviteCode;
}

View File

@@ -1,6 +1,7 @@
package com.accompany.admin.vo.ip;
import com.accompany.business.model.ip.IpRegionWhite;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -38,6 +39,7 @@ public class IpRegionWhiteAdminVo extends IpRegionWhite {
* 注册时间
*/
@ApiModelProperty("注册时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signTime;
/**
@@ -46,10 +48,4 @@ public class IpRegionWhiteAdminVo extends IpRegionWhite {
@ApiModelProperty("身份")
private String roleName;
/**
* 最近一次访问
*/
@ApiModelProperty("最近一次访问")
private Date lastTime;
}

View File

@@ -0,0 +1,22 @@
package com.accompany.admin.mapper.ip;
import com.accompany.admin.vo.ip.IpRegionLimitRecordAdminVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
* @author: liaozetao
* @date: 2023/11/20 17:00
* @description:
*/
public interface IpRegionLimitRecordAdminMapper {
/**
* 分页列表
*
* @param page
* @param userErBanNo
* @return
*/
Page<IpRegionLimitRecordAdminVo> page(Page<IpRegionLimitRecordAdminVo> page, @Param("userErBanNo") String userErBanNo);
}

View File

@@ -1,9 +1,37 @@
package com.accompany.admin.service.ip;
import com.accompany.admin.vo.ip.IpRegionLimitRecordAdminVo;
import com.accompany.common.model.PageReq;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* @author: liaozetao
* @date: 2023/11/20 15:27
* @description:
*/
public interface IpRegionLimitRecordAdminService {
/**
* 分页列表
*
* @param userErBanNo
* @param currentPage
* @param pageSize
* @return
*/
Page<IpRegionLimitRecordAdminVo> page(String userErBanNo, Integer currentPage, Integer pageSize);
/**
* 解除限制
*
* @param id
*/
void relieve(Long id);
/**
* 加入白名单
*
* @param id
*/
void addWhite(Long id);
}

View File

@@ -1,9 +1,19 @@
package com.accompany.admin.service.ip.impl;
import com.accompany.admin.mapper.ip.IpRegionLimitRecordAdminMapper;
import com.accompany.admin.service.ip.IpRegionLimitRecordAdminService;
import com.accompany.admin.vo.ip.IpRegionLimitRecordAdminVo;
import com.accompany.business.model.ip.IpRegionLimitRecord;
import com.accompany.business.model.ip.IpRegionWhite;
import com.accompany.business.service.ip.IpRegionLimitRecordService;
import com.accompany.business.service.ip.IpRegionWhiteService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* @author: liaozetao
* @date: 2023/11/20 15:27
@@ -12,4 +22,37 @@ import org.springframework.stereotype.Service;
@Slf4j
@Service
public class IpRegionLimitRecordAdminServiceImpl implements IpRegionLimitRecordAdminService {
@Autowired
private IpRegionLimitRecordAdminMapper ipRegionLimitRecordAdminMapper;
@Autowired
private IpRegionLimitRecordService ipRegionLimitRecordService;
@Autowired
private IpRegionWhiteService ipRegionWhiteService;
@Override
public Page<IpRegionLimitRecordAdminVo> page(String userErBanNo, Integer currentPage, Integer pageSize) {
return ipRegionLimitRecordAdminMapper.page(new Page<>(currentPage, pageSize), userErBanNo);
}
@Override
public void relieve(Long id) {
ipRegionLimitRecordService.removeById(id);
}
@Override
public void addWhite(Long id) {
IpRegionLimitRecord record = ipRegionLimitRecordService.getById(id);
if (record == null) {
return;
}
IpRegionWhite ipRegionWhite = new IpRegionWhite();
ipRegionWhite.setUid(record.getUid());
ipRegionWhite.setPhone(record.getPhone());
ipRegionWhite.setLastCheckTime(record.getLastCheckTime());
ipRegionWhite.setCreateTime(new Date());
ipRegionWhite.setSource(IpRegionWhite.Source.LIMIT.getSource());
}
}

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.accompany.admin.mapper.ip.IpRegionLimitRecordAdminMapper">
<select id="page" resultType="com.accompany.admin.vo.ip.IpRegionLimitRecordAdminVo">
select
irlr.id,
irlr.uid,
irlr.phone,
irlr.create_time as createTime,
irlr.device_ids as deviceIds,
irlr.last_check_ip_region as lastCheckIpRegion,
a.sign_time as signTime,
a.device_id as signDeviceId,
u.nick,
u.invite_code as inviteCode
from ip_region_limit_record as irlr
left join users as u on u.uid = irlr.uid
left join account as a on a.uid = irlr.uid
<where>
<if test="userErBanNo != null">
and u.erban_no = #{userErBanNo}
</if>
</where>
order by irlr.create_time desc
</select>
</mapper>

View File

@@ -1,5 +1,16 @@
package com.accompany.admin.controller.ip;
import com.accompany.admin.service.ip.IpRegionLimitRecordAdminService;
import com.accompany.admin.vo.ip.IpRegionLimitRecordAdminVo;
import com.accompany.common.model.PageReq;
import com.accompany.common.result.BusiResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -8,8 +19,57 @@ import org.springframework.web.bind.annotation.RestController;
* @date: 2023/11/20 15:25
* @description:
*/
@Api(tags = "地区限制访问列表管理")
@RestController
@RequestMapping("/admin/ip/region/limit/record")
public class IpRegionLimitRecordAdminController {
@Autowired
private IpRegionLimitRecordAdminService ipRegionLimitRecordAdminService;
/**
* 分页列表
*
* @param userErBanNo
* @param req
* @return
*/
@ApiImplicitParams({
@ApiImplicitParam(name = "userErBanNo", value = "用户平台ID"),
@ApiImplicitParam(name = "page", value = "当前页", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页显示数", required = true),
})
@GetMapping("page")
public BusiResult<Page<IpRegionLimitRecordAdminVo>> page(String userErBanNo, PageReq req) {
return BusiResult.success(ipRegionLimitRecordAdminService.page(userErBanNo, req.getPage(), req.getPageSize()));
}
/**
* 解除限制
*
* @param id
* @return
*/
@ApiImplicitParam(name = "id", value = "数据ID主键")
@ApiOperation("解除限制")
@GetMapping("relieve")
public BusiResult<Void> relieve(Long id) {
ipRegionLimitRecordAdminService.relieve(id);
return BusiResult.success();
}
/**
* 加入白名单
*
* @param id
* @return
*/
@ApiImplicitParam(name = "id", value = "数据ID主键")
@ApiOperation("加入白名单")
@GetMapping("addWhite")
public BusiResult<Void> addWhite(Long id) {
ipRegionLimitRecordAdminService.addWhite(id);
return BusiResult.success();
}
}

View File

@@ -5,6 +5,8 @@ import com.accompany.core.mybatis.typehandler.StringListTypeHandler;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -17,11 +19,32 @@ public class IpRegionLimitRecord {
@TableId(type = IdType.AUTO)
private Long uid;
/**
* 手机号
*/
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("进入访问限制时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastCheckTime;
private String lastCheckIp;
/**
* 最近一次访问地点
*/
@ApiModelProperty("最近一次访问地点")
private String lastCheckIpRegion;
/**
* 访问设备
*/
@ApiModelProperty("访问设备")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> deviceIds;

View File

@@ -2,6 +2,8 @@ package com.accompany.business.model.ip;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
@@ -15,9 +17,31 @@ public class IpRegionWhite {
@TableId(type = IdType.AUTO)
private Long id;
private Long uid;
/**
* 用户手机号
*/
@ApiModelProperty("用户手机号")
private String phone;
/**
* 进入白名单时间
*/
@ApiModelProperty("进入白名单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 最近一次访问
*/
@ApiModelProperty("最近一次访问")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastCheckTime;
/**
* 进入白名单来源 1 手动添加 2 手机号申请通过 3 限制访问记录添加
*/
@ApiModelProperty("进入白名单来源 1 手动添加 2 手机号申请通过 3 限制访问记录添加")
private Byte source;
@AllArgsConstructor