新增地区限制访问列表管理
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
}
|
@@ -1,6 +1,7 @@
|
|||||||
package com.accompany.admin.vo.ip;
|
package com.accompany.admin.vo.ip;
|
||||||
|
|
||||||
import com.accompany.business.model.ip.IpRegionWhite;
|
import com.accompany.business.model.ip.IpRegionWhite;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -38,6 +39,7 @@ public class IpRegionWhiteAdminVo extends IpRegionWhite {
|
|||||||
* 注册时间
|
* 注册时间
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty("注册时间")
|
@ApiModelProperty("注册时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date signTime;
|
private Date signTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,10 +48,4 @@ public class IpRegionWhiteAdminVo extends IpRegionWhite {
|
|||||||
@ApiModelProperty("身份")
|
@ApiModelProperty("身份")
|
||||||
private String roleName;
|
private String roleName;
|
||||||
|
|
||||||
/**
|
|
||||||
* 最近一次访问
|
|
||||||
*/
|
|
||||||
@ApiModelProperty("最近一次访问")
|
|
||||||
private Date lastTime;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
}
|
@@ -1,9 +1,37 @@
|
|||||||
package com.accompany.admin.service.ip;
|
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
|
* @author: liaozetao
|
||||||
* @date: 2023/11/20 15:27
|
* @date: 2023/11/20 15:27
|
||||||
* @description:
|
* @description:
|
||||||
*/
|
*/
|
||||||
public interface IpRegionLimitRecordAdminService {
|
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);
|
||||||
}
|
}
|
||||||
|
@@ -1,9 +1,19 @@
|
|||||||
package com.accompany.admin.service.ip.impl;
|
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.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 lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: liaozetao
|
* @author: liaozetao
|
||||||
* @date: 2023/11/20 15:27
|
* @date: 2023/11/20 15:27
|
||||||
@@ -12,4 +22,37 @@ import org.springframework.stereotype.Service;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class IpRegionLimitRecordAdminServiceImpl implements IpRegionLimitRecordAdminService {
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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>
|
@@ -1,5 +1,16 @@
|
|||||||
package com.accompany.admin.controller.ip;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@@ -8,8 +19,57 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
* @date: 2023/11/20 15:25
|
* @date: 2023/11/20 15:25
|
||||||
* @description:
|
* @description:
|
||||||
*/
|
*/
|
||||||
|
@Api(tags = "地区限制访问列表管理")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/admin/ip/region/limit/record")
|
@RequestMapping("/admin/ip/region/limit/record")
|
||||||
public class IpRegionLimitRecordAdminController {
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,8 @@ import com.accompany.core.mybatis.typehandler.StringListTypeHandler;
|
|||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -17,11 +19,32 @@ public class IpRegionLimitRecord {
|
|||||||
|
|
||||||
@TableId(type = IdType.AUTO)
|
@TableId(type = IdType.AUTO)
|
||||||
private Long uid;
|
private Long uid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("手机号")
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
|
@ApiModelProperty("进入访问限制时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date lastCheckTime;
|
private Date lastCheckTime;
|
||||||
|
|
||||||
private String lastCheckIp;
|
private String lastCheckIp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最近一次访问地点
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("最近一次访问地点")
|
||||||
private String lastCheckIpRegion;
|
private String lastCheckIpRegion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 访问设备
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("访问设备")
|
||||||
@TableField(typeHandler = StringListTypeHandler.class)
|
@TableField(typeHandler = StringListTypeHandler.class)
|
||||||
private List<String> deviceIds;
|
private List<String> deviceIds;
|
||||||
|
|
||||||
|
@@ -2,6 +2,8 @@ package com.accompany.business.model.ip;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -15,18 +17,40 @@ public class IpRegionWhite {
|
|||||||
@TableId(type = IdType.AUTO)
|
@TableId(type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
private Long uid;
|
private Long uid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户手机号
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("用户手机号")
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进入白名单时间
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("进入白名单时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 最近一次访问
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("最近一次访问")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date lastCheckTime;
|
private Date lastCheckTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进入白名单来源 1 手动添加 2 手机号申请通过 3 限制访问记录添加
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("进入白名单来源 1 手动添加 2 手机号申请通过 3 限制访问记录添加")
|
||||||
private Byte source;
|
private Byte source;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public enum Source {
|
public enum Source {
|
||||||
|
|
||||||
ADMIN((byte)1, "手动添加"),
|
ADMIN((byte) 1, "手动添加"),
|
||||||
PHONE((byte)2, "手机号申请通过"),
|
PHONE((byte) 2, "手机号申请通过"),
|
||||||
LIMIT((byte)3, "限制访问记录添加"),
|
LIMIT((byte) 3, "限制访问记录添加"),
|
||||||
;
|
;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
Reference in New Issue
Block a user