This commit is contained in:
777
2025-12-05 16:14:35 +08:00
parent e55d5b7dc8
commit 84d42a3af2
16 changed files with 491 additions and 0 deletions

View File

@@ -97,6 +97,7 @@ public class CaiLoginManager {
public String login(String username,String password){
User user = userService.getByUsername(username);
if(user == null){
throw new ServiceException("用户不存在或密码错误");
}
String imei = ServletUtils.getImei();

View File

@@ -0,0 +1,93 @@
package com.ruoyi.cai.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.IpBlack;
import com.ruoyi.cai.service.IpBlackService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import java.util.Arrays;
/**
* ip黑名单
*
* @author ruoyi
* @date 2025-12-05
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cai/ipBlack")
public class IpBlackController extends BaseController {
private final IpBlackService ipBlackService;
/**
* 查询ip黑名单列表
*/
@SaCheckPermission("cai:ipBlack:list")
@GetMapping("/list")
public TableDataInfo<IpBlack> list(IpBlack bo, PageQuery pageQuery) {
Page<IpBlack> page = ipBlackService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
return TableDataInfo.build(page);
}
/**
* 导出ip黑名单列表
*/
/* @SaCheckPermission("cai:ipBlack:export")
@Log(title = "ip黑名单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(IpBlackBo bo, HttpServletResponse response) {
List<IpBlackVo> list = ipBlackService.queryList(bo);
ExcelUtil.exportExcel(list, "ip黑名单", IpBlackVo.class, response);
}*/
/**
* 新增ip黑名单
*/
@SaCheckPermission("cai:ipBlack:add")
@Log(title = "ip黑名单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody IpBlack bo) {
return toAjax(ipBlackService.save(bo));
}
/**
* 修改ip黑名单
*/
@SaCheckPermission("cai:ipBlack:edit")
@Log(title = "ip黑名单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody IpBlack bo) {
return toAjax(ipBlackService.updateById(bo));
}
/**
* 删除ip黑名单
*
* @param ids 主键串
*/
@SaCheckPermission("cai:ipBlack:remove")
@Log(title = "ip黑名单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(ipBlackService.removeBatchByIds(Arrays.asList(ids), true));
}
}

View File

@@ -0,0 +1,106 @@
package com.ruoyi.cai.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.IpRecord;
import com.ruoyi.cai.service.IpRecordService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
/**
* ip访问记录
*
* @author ruoyi
* @date 2025-12-05
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/cai/ipRecord")
public class IpRecordController extends BaseController {
private final IpRecordService ipRecordService;
/**
* 查询ip访问记录列表
*/
@SaCheckPermission("cai:ipRecord:list")
@GetMapping("/list")
public TableDataInfo<IpRecord> list(IpRecord bo, PageQuery pageQuery) {
Page<IpRecord> page = ipRecordService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
return TableDataInfo.build(page);
}
/**
* 导出ip访问记录列表
*/
/*@SaCheckPermission("cai:ipRecord:export")
@Log(title = "ip访问记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(IpRecordBo bo, HttpServletResponse response) {
List<IpRecordVo> list = iIpRecordService.queryList(bo);
ExcelUtil.exportExcel(list, "ip访问记录", IpRecordVo.class, response);
}*/
/**
* 获取ip访问记录详细信息
*
* @param id 主键
*/
@SaCheckPermission("cai:ipRecord:query")
@GetMapping("/{id}")
public R<IpRecord> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(ipRecordService.getById(id));
}
/**
* 新增ip访问记录
*/
@SaCheckPermission("cai:ipRecord:add")
@Log(title = "ip访问记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody IpRecord bo) {
return toAjax(ipRecordService.save(bo));
}
/**
* 修改ip访问记录
*/
@SaCheckPermission("cai:ipRecord:edit")
@Log(title = "ip访问记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody IpRecord bo) {
return toAjax(ipRecordService.updateById(bo));
}
/**
* 删除ip访问记录
*
* @param ids 主键串
*/
@SaCheckPermission("cai:ipRecord:remove")
@Log(title = "ip访问记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(ipRecordService.removeBatchByIds(Arrays.asList(ids), true));
}
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.cai.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* ip黑名单对象 cai_ip_black
*
* @author ruoyi
* @date 2025-12-05
*/
@Data
@TableName("cai_ip_black")
public class IpBlack implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 子账户ID
*/
@TableId(value = "id", type = IdType.AUTO)
private String id;
/**
* IP地址
*/
private String ipAddr;
/**
* 是否开启
*/
private Long enableStatus;
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,52 @@
package com.ruoyi.cai.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* ip访问记录对象 cai_ip_record
*
* @author ruoyi
* @date 2025-12-05
*/
@Data
@TableName("cai_ip_record")
public class IpRecord implements Serializable{
private static final long serialVersionUID=1L;
/**
* 子账户ID
*/
@TableId(value = "id",type = IdType.AUTO)
private String id;
/**
* IP地址
*/
private String ipAddr;
/**
* 请求地址
*/
private String pathAddr;
/**
*
*/
private String businessId;
/**
* 备注
*/
private String remark;
/**
* 手机号
*/
private Long number;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.IpBlack;
/**
* ip黑名单Mapper接口
*
* @author ruoyi
* @date 2025-12-05
*/
public interface IpBlackMapper extends BaseMapper<IpBlack> {
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.IpRecord;
/**
* ip访问记录Mapper接口
*
* @author ruoyi
* @date 2025-12-05
*/
public interface IpRecordMapper extends BaseMapper<IpRecord> {
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.IpBlack;
/**
* ip黑名单Service接口
*
* @author ruoyi
* @date 2025-12-05
*/
public interface IpBlackService extends IService<IpBlack> {
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.IpRecord;
/**
* ip访问记录Service接口
*
* @author ruoyi
* @date 2025-12-05
*/
public interface IpRecordService extends IService<IpRecord> {
}

View File

@@ -0,0 +1,20 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.IpBlack;
import com.ruoyi.cai.mapper.IpBlackMapper;
import com.ruoyi.cai.service.IpBlackService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* ip黑名单Service业务层处理
*
* @author ruoyi
* @date 2025-12-05
*/
@RequiredArgsConstructor
@Service
public class IpBlackServiceImpl extends ServiceImpl<IpBlackMapper,IpBlack> implements IpBlackService {
}

View File

@@ -0,0 +1,20 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.IpRecord;
import com.ruoyi.cai.mapper.IpRecordMapper;
import com.ruoyi.cai.service.IpRecordService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* ip访问记录Service业务层处理
*
* @author ruoyi
* @date 2025-12-05
*/
@RequiredArgsConstructor
@Service
public class IpRecordServiceImpl extends ServiceImpl<IpRecordMapper,IpRecord> implements IpRecordService {
}