From bc9f31db13d3fca609349dd234e4f2de36f92fa5 Mon Sep 17 00:00:00 2001 From: dx <1242347652@qq.com> Date: Sat, 18 Jan 2025 17:07:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97,=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=AE=A1=E8=BE=96=E9=83=A8=E9=97=A8=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/EnterpriseController.java | 4 +- .../system/EnterprisesController.java | 12 +- .../src/main/resources/application-druid.yml | 4 +- .../src/main/resources/application.yml | 9 +- .../ruoyi/common/annotation/PrimaryKey.java | 17 +++ .../common/core/domain/entity/SysRole.java | 8 +- .../common/core/domain/entity/SysUser.java | 2 + .../com/ruoyi/common/utils/EntityUtils.java | 57 +++++++++ .../aspectj/FieldChangeLogAspect.java | 118 ++++++++++++++++++ .../framework/aspectj/LogDeleteOperation.java | 73 +++++++++++ .../com/ruoyi/system/domain/Enterprises.java | 108 ++++++++++++---- .../system/domain/SysFieldChangeLog.java | 66 ++++++++++ .../com/ruoyi/system/domain/SysUserDept.java | 7 ++ .../com/ruoyi/system/mapper/CommonMapper.java | 16 +++ .../mapper/SysFieldChangeLogMapper.java | 20 +++ .../system/mapper/SysUserDeptMapper.java | 17 +++ .../ruoyi/system/service/CommonService.java | 7 ++ .../system/service/IEnterprisesService.java | 4 +- .../system/service/ISysUserDeptService.java | 8 ++ .../service/SysFieldChangeLogService.java | 7 ++ .../service/impl/CommonServiceImpl.java | 21 ++++ .../service/impl/EnterprisesServiceImpl.java | 18 ++- .../impl/SysFieldChangeLogServiceImpl.java | 37 ++++++ .../service/impl/SysUserDeptServiceImpl.java | 23 ++++ 24 files changed, 617 insertions(+), 46 deletions(-) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/PrimaryKey.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/EntityUtils.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/FieldChangeLogAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogDeleteOperation.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysFieldChangeLog.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserDept.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/CommonMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysFieldChangeLogMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserDeptMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/CommonService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/SysFieldChangeLogService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CommonServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysFieldChangeLogServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/EnterpriseController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/EnterpriseController.java index 61743ee..6eedd47 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/EnterpriseController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/EnterpriseController.java @@ -41,7 +41,7 @@ public class EnterpriseController extends BaseController{ public TableDataInfo list(Enterprises enterprises) { startPage(); - List list = enterprisesService.selectEnterprisesList(enterprises); + List list = enterprisesService.selectAppEnterprisesList(enterprises); return getDataTable(list); } @@ -101,7 +101,7 @@ public class EnterpriseController extends BaseController{ @PreAuthorize("@ss.hasPermi('system:enterprises:remove')") @Log(title = "企业", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) + public AjaxResult remove(@PathVariable List ids) { return toAjax(enterprisesService.deleteEnterprisesByIds(ids)); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/EnterprisesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/EnterprisesController.java index c72cf0c..041e064 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/EnterprisesController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/EnterprisesController.java @@ -127,7 +127,7 @@ public class EnterprisesController extends BaseController @PreAuthorize("@ss.hasPermi('system:enterprises:remove')") @Log(title = "企业", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) + public AjaxResult remove(@PathVariable List ids) { return toAjax(enterprisesService.deleteEnterprisesByIds(ids)); } @@ -139,4 +139,14 @@ public class EnterprisesController extends BaseController enterprisesService.addEnterpriseUsers(enterpriseUserInsertVo); return success("添加成功!"); } + + + @PreAuthorize("@ss.hasPermi('system:enterprises:query')") + @GetMapping("/getQualification") + public AjaxResult getQualification(@PathVariable("id") Long id) + { + return success(enterprisesService.selectEnterprisesById(id)); + } + + } diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 11558a8..defb086 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -6,9 +6,9 @@ spring: druid: # 主库数据源 master: - url: jdbc:mysql://192.168.2.5:3306/hb_java?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://192.168.2.101:3306/hb_java?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: jingke@123 + password: 123456 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index c5d58e6..530babb 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -13,13 +13,6 @@ ruoyi: # 验证码类型 math 数字计算 char 字符验证 captchaType: math -security: - # 防止XSS攻击 - xss: - enabled: true - excludeUrls: - - /api/system/enterprises - # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 @@ -158,6 +151,6 @@ xss: # 过滤开关 enabled: true # 排除链接(多个用逗号分隔) - excludes: /system/notice + excludes: /system/notice,/system/enterprises # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/PrimaryKey.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/PrimaryKey.java new file mode 100644 index 0000000..0a794c8 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/PrimaryKey.java @@ -0,0 +1,17 @@ +package com.ruoyi.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface PrimaryKey { + + + /** + * 主键类型,默认是 Long + */ + Class type() default Long.class; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java index 488d49c..4f99b82 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java @@ -4,6 +4,10 @@ import java.util.Set; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; @@ -12,9 +16,11 @@ import com.ruoyi.common.core.domain.BaseEntity; /** * 角色表 sys_role - * + * * @author ruoyi */ +@Data +@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知字段 public class SysRole extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index 1893084..414a567 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -6,6 +6,7 @@ import javax.validation.constraints.*; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -141,6 +142,7 @@ public class SysUser extends BaseEntity this.userId = userId; } + @JsonIgnore public boolean isAdmin() { return isAdmin(this.userId); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/EntityUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/EntityUtils.java new file mode 100644 index 0000000..2d098f9 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/EntityUtils.java @@ -0,0 +1,57 @@ +package com.ruoyi.common.utils; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.PrimaryKey; + +import java.lang.reflect.Field; + +public class EntityUtils { + + /** + * 获取实体类的主键值 + * + * @param entity 实体对象 + * @return 主键值 + */ + public static Long getPrimaryKeyValue(Object entity) { + for (Field field : entity.getClass().getDeclaredFields()) { + if (field.isAnnotationPresent(PrimaryKey.class)) { + field.setAccessible(true); + try { + return (Long) field.get(entity); // 假设主键类型为 Long + } catch (IllegalAccessException e) { + throw new RuntimeException("无法访问主键字段的值", e); + } + } + } + throw new RuntimeException("实体类中未找到 @PrimaryKey 标记的字段"); + } + + /** + * 获取实体类对应的表名 + * + * @param entity 实体对象 + * @return 表名 + */ + public static String getTableName(Object entity) { + TableName tableNameAnnotation = entity.getClass().getAnnotation(TableName.class); + return tableNameAnnotation != null ? tableNameAnnotation.value() : entity.getClass().getSimpleName(); + } + + + /** + * 判断实体类是否包含 @PrimaryKey 注解的字段 + * + * @param entity 实体对象 + * @return 是否包含主键注解 + */ + public static boolean hasPrimaryKeyAnnotation(Object entity) { + for (Field field : entity.getClass().getDeclaredFields()) { + if (field.isAnnotationPresent(PrimaryKey.class)) { + return true; // 找到带有 @PrimaryKey 的字段 + } + } + return false; // 未找到 + } +} + diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/FieldChangeLogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/FieldChangeLogAspect.java new file mode 100644 index 0000000..a317a94 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/FieldChangeLogAspect.java @@ -0,0 +1,118 @@ +package com.ruoyi.framework.aspectj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.utils.EntityUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.domain.SysFieldChangeLog; +import com.ruoyi.system.service.CommonService; +import com.ruoyi.system.service.SysFieldChangeLogService; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.util.Date; +import java.util.Map; +import java.util.Objects; + +@Aspect +@Component +public class FieldChangeLogAspect { + + @Autowired + private SysFieldChangeLogService fieldChangeLogService; + + @Autowired + private CommonService commonService; + + // 拦截 update 方法 + @Pointcut("execution(* com.ruoyi.*.service.*.update*(..))") + public void updatePointCut() {} + + @Around("updatePointCut()") + public Object logFieldChanges(ProceedingJoinPoint point) throws Throwable { + Object[] args = point.getArgs(); + if (args.length == 0 || args[0] == null) { + return point.proceed(); // 跳过无效参数 + } + Object updatedEntity = args[0]; + + // 判断是否包含 @PrimaryKey 注解 + if (!EntityUtils.hasPrimaryKeyAnnotation(updatedEntity)) { + return point.proceed(); // 如果没有主键注解,跳过日志记录 + } + + // 使用工具类获取主键值和表名 + Long recordId = EntityUtils.getPrimaryKeyValue(updatedEntity); + String tableName = EntityUtils.getTableName(updatedEntity); + + // 动态查询原始记录 + Map originalRecord = commonService.findById(tableName, recordId); + + // 记录字段变更日志 + saveFieldChangeLogs(originalRecord, updatedEntity, tableName, recordId); + + return point.proceed(); // 执行原方法 + } + + + private void saveFieldChangeLogs(Map original, Object updatedEntity, String tableName, Long recordId) { + Long userId = SecurityUtils.getLoginUser().getUserId(); + String username = SecurityUtils.getLoginUser().getUsername(); + + for (Field field : updatedEntity.getClass().getDeclaredFields()) { + field.setAccessible(true); + + try { + String fieldName = field.getName(); + + String dbFieldName = toUnderlineCase(fieldName); // 将驼峰命名转换为下划线命名 + + + Object oldValue = original.get(dbFieldName); // 获取原始值 + Object newValue = field.get(updatedEntity); // 获取新值 + + // 如果原值和新值相等,则跳过 + if ((newValue == null) || (oldValue != null && oldValue.equals(newValue))) { + continue; + } + + if (!Objects.equals(oldValue, newValue)) { + SysFieldChangeLog log = new SysFieldChangeLog(); + log.setTableName(tableName); + log.setRecordId(recordId); + log.setFieldName(fieldName); + log.setOldValue(oldValue != null ? oldValue.toString() : null); + log.setNewValue(newValue != null ? newValue.toString() : null); + log.setUserId(userId); + log.setUsername(username); + log.setOperationType("修改"); + log.setCreateTime(new Date()); + fieldChangeLogService.save(log); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + + /** + * 将驼峰命名转换为下划线命名 + * + * @param camelCase 驼峰格式字符串(如 contactName) + * @return 下划线格式字符串(如 contact_name) + */ + public static String toUnderlineCase(String camelCase) { + if (camelCase == null || camelCase.isEmpty()) { + return ""; + } + // 使用正则表达式匹配驼峰命名的规则 + return camelCase.replaceAll("([a-z])([A-Z])", "$1_$2").toLowerCase(); + } + +} + diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogDeleteOperation.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogDeleteOperation.java new file mode 100644 index 0000000..1a9ee87 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogDeleteOperation.java @@ -0,0 +1,73 @@ +package com.ruoyi.framework.aspectj; + +import com.ruoyi.common.utils.EntityUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.domain.SysFieldChangeLog; +import com.ruoyi.system.service.CommonService; +import com.ruoyi.system.service.SysFieldChangeLogService; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.Map; +@Aspect +@Component +public class LogDeleteOperation { + + @Autowired + private CommonService commonService; + + @Autowired + private SysFieldChangeLogService fieldChangeLogService; + + @Around("execution(* com.ruoyi.*.service.*.delete*(..))") + public Object logDeleteOperation(ProceedingJoinPoint point) throws Throwable { + Object[] args = point.getArgs(); + if (args.length == 0) { + return point.proceed(); + } + + Object entityToDelete = args[0]; + + // 判断是否包含 @PrimaryKey 注解 + if (!EntityUtils.hasPrimaryKeyAnnotation(entityToDelete)) { + return point.proceed(); // 如果没有主键注解,跳过日志记录 + } + + + // 使用工具类获取主键值和表名 + Long recordId = EntityUtils.getPrimaryKeyValue(entityToDelete); + String tableName = EntityUtils.getTableName(entityToDelete ); + + // 动态查询记录 + Map originalRecord = commonService.findById(tableName, recordId); + + // 保存删除日志 + saveDeleteLogs(originalRecord, tableName, recordId); + + return point.proceed(); + } + + private void saveDeleteLogs(Map original, String tableName, Long recordId) { + Long userId = SecurityUtils.getLoginUser().getUserId(); + String username = SecurityUtils.getLoginUser().getUsername(); + + for (Map.Entry entry : original.entrySet()) { + SysFieldChangeLog log = new SysFieldChangeLog(); + log.setTableName(tableName); + log.setRecordId(recordId); + log.setFieldName(entry.getKey()); + log.setOldValue(entry.getValue() != null ? entry.getValue().toString() : null); + log.setNewValue(null); // 删除操作,新值为空 + log.setUserId(userId); + log.setUsername(username); + log.setOperationType("删除"); + log.setCreateTime(new Date()); + fieldChangeLogService.save(log); + } + } + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Enterprises.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Enterprises.java index 0e801f9..45da52f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/Enterprises.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/Enterprises.java @@ -2,8 +2,10 @@ package com.ruoyi.system.domain; import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.PrimaryKey; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -20,48 +22,102 @@ import com.ruoyi.common.core.domain.BaseEntity; @TableName("enterprises") public class Enterprises extends BaseEntity { - private static final long serialVersionUID = 1L; - - /** 企业ID,主键 */ + /** + * 企业ID,主键 + */ + @PrimaryKey private Long id; - /** 所属部门ID */ - @Excel(name = "所属部门ID") + /** + * 所属部门ID + */ + @TableField("department_id") private Long departmentId; - /** 管辖人员ID */ - @Excel(name = "管辖人员ID") + /** + * 管辖人员ID + */ + @TableField("user_id") private Long userId; - /** 企业类型:1.大型、2.中型、3.小型、4.环保重点 */ - @Excel(name = "企业类型:1.大型、2.中型、3.小型、4.环保重点") - private String type; + /** + * 企业类型:1.大型、2.中型、3.小型、4.环保重点 + */ + private Integer type; - /** 企业所属区域:1.东区、2.西区、3.北区、4.南区 */ - @Excel(name = "企业所属区域:1.东区、2.西区、3.北区、4.南区") - private String region; + /** + * 企业所属区域:1.东区、2.西区、3.北区、4.南区 + */ + private Integer region; - /** 企业名称 */ - @Excel(name = "企业名称") + /** + * 企业名称 + */ + @TableField("enterprises_name") private String enterprisesName; - /** 企业地址 */ - @Excel(name = "企业地址") + /** + * 企业地址 + */ private String address; - /** 企业注册号 */ - @Excel(name = "企业注册号") + /** + * 企业环保负责人联系电话 + */ + @TableField("environmental_contact_phone") + private String environmentalContactPhone; + + /** + * 企业环保负责人姓名 + */ + @TableField("contact_name") + private String contactName; + + /** + * 企业注册号 + */ + @TableField("registration_number") private String registrationNumber; - /** 企业图文介绍 */ - @Excel(name = "企业图文介绍") + /** + * 企业图文介绍 + */ private String introduction; - /** 企业成立时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "企业成立时间", width = 30, dateFormat = "yyyy-MM-dd") + /** + * 企业成立时间 + */ + @TableField("establishment_date") private Date establishmentDate; - /** 删除标志(0代表存在 2代表删除) */ - private String delFlag; + /** + * 企业经纬度 + */ + @TableField("gps_location") + private String gpsLocation; + + /** + * 创建人 + */ + private String createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 修改人 + */ + private String updateBy; + + /** + * 是否删除 + */ + private Boolean delFlag; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysFieldChangeLog.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysFieldChangeLog.java new file mode 100644 index 0000000..4ad4e21 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysFieldChangeLog.java @@ -0,0 +1,66 @@ +package com.ruoyi.system.domain; + +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字段变更日志表 + * @TableName sys_field_change_log + */ +@Data +public class SysFieldChangeLog implements Serializable { + /** + * 日志ID + */ + private Long id; + + /** + * 表名 + */ + private String tableName; + + /** + * 字段名 + */ + private String fieldName; + + /** + * 修改前值或删除前的值 + */ + private String oldValue; + + /** + * 修改后值(删除时为空) + */ + private String newValue; + + /* + 记录的主键值 + */ + private Long recordId; + + /** + * 操作用户ID + */ + private Long userId; + + /** + * 操作用户名 + */ + private String username; + + /** + * 操作时间 + */ + private Date createTime; + + /** + * 操作类型 + */ + private String operationType; + + private static final long serialVersionUID = 1L; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserDept.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserDept.java new file mode 100644 index 0000000..9e6abf9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserDept.java @@ -0,0 +1,7 @@ +package com.ruoyi.system.domain; + +import lombok.Data; + +@Data +public class SysUserDept { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/CommonMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/CommonMapper.java new file mode 100644 index 0000000..3e54542 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/CommonMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.Map; +import java.util.Objects; + +@Mapper +public interface CommonMapper { + + @Select("SELECT * FROM `${tableName}` WHERE id = #{id}") + Map selectById(@Param("tableName") String tableName, @Param("id") Long id); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysFieldChangeLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysFieldChangeLogMapper.java new file mode 100644 index 0000000..34ad71f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysFieldChangeLogMapper.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.Enterprises; +import com.ruoyi.system.domain.SysFieldChangeLog; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 操作日志Mapper接口 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Mapper +public interface SysFieldChangeLogMapper extends BaseMapper +{ + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserDeptMapper.java new file mode 100644 index 0000000..3295abf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserDeptMapper.java @@ -0,0 +1,17 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.SysUserDept; +import org.apache.ibatis.annotations.Mapper; + +/** + * 操作日志Mapper接口 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Mapper +public interface SysUserDeptMapper extends BaseMapper +{ + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/CommonService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/CommonService.java new file mode 100644 index 0000000..5583df9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/CommonService.java @@ -0,0 +1,7 @@ +package com.ruoyi.system.service; + +import java.util.Map; + +public interface CommonService { + Map findById(String tableName, Long id); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IEnterprisesService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IEnterprisesService.java index 5c8170e..3499ad0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IEnterprisesService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IEnterprisesService.java @@ -53,7 +53,7 @@ public interface IEnterprisesService extends IService * @param ids 需要删除的企业主键集合 * @return 结果 */ - public int deleteEnterprisesByIds(Long[] ids); + public int deleteEnterprisesByIds(List ids); /** * 删除企业信息 @@ -66,4 +66,6 @@ public interface IEnterprisesService extends IService public void addEnterpriseUsers(EnterpriseUserInsertVo enterpriseUserInsertVo); public List simpleList(Enterprises enterprises); + + List selectAppEnterprisesList(Enterprises enterprises); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java new file mode 100644 index 0000000..79d676a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java @@ -0,0 +1,8 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.domain.SysFieldChangeLog; +import com.ruoyi.system.domain.SysUserDept; + +public interface ISysUserDeptService extends IService { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysFieldChangeLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysFieldChangeLogService.java new file mode 100644 index 0000000..db1dad8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysFieldChangeLogService.java @@ -0,0 +1,7 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.domain.SysFieldChangeLog; + +public interface SysFieldChangeLogService extends IService { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CommonServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CommonServiceImpl.java new file mode 100644 index 0000000..1d73ba6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CommonServiceImpl.java @@ -0,0 +1,21 @@ +package com.ruoyi.system.service.impl; + +import com.ruoyi.system.mapper.CommonMapper; +import com.ruoyi.system.service.CommonService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Service +public class CommonServiceImpl implements CommonService +{ + + @Autowired + private CommonMapper commonMapper; + + @Override + public Map findById(String tableName, Long id) { + return commonMapper.selectById(tableName, id); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EnterprisesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EnterprisesServiceImpl.java index 93d1a89..65d8b83 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EnterprisesServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EnterprisesServiceImpl.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.exception.ServiceException; @@ -63,7 +64,9 @@ public class EnterprisesServiceImpl extends ServiceImpl selectEnterprisesList(Enterprises enterprises) { - return enterprisesMapper.selectEnterprisesList(enterprises); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("del_flag", "0"); + return enterprisesMapper.selectList(wrapper); } /** @@ -75,8 +78,7 @@ public class EnterprisesServiceImpl extends ServiceImpl ids) { - return enterprisesMapper.deleteEnterprisesByIds(ids); + return enterprisesMapper.deleteByIds(ids); } /** @@ -158,4 +160,10 @@ public class EnterprisesServiceImpl extends ServiceImpl selectAppEnterprisesList(Enterprises enterprises) { + //根据角色和部门等级查询相关企业 + return null; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysFieldChangeLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysFieldChangeLogServiceImpl.java new file mode 100644 index 0000000..b56dd16 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysFieldChangeLogServiceImpl.java @@ -0,0 +1,37 @@ +package com.ruoyi.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.system.domain.EnterpriseUsers; +import com.ruoyi.system.domain.Enterprises; +import com.ruoyi.system.domain.SysFieldChangeLog; +import com.ruoyi.system.domain.vo.EnterpriseUserInsertVo; +import com.ruoyi.system.domain.vo.LabelValueVo; +import com.ruoyi.system.mapper.EnterpriseUsersMapper; +import com.ruoyi.system.mapper.EnterprisesMapper; +import com.ruoyi.system.mapper.SysFieldChangeLogMapper; +import com.ruoyi.system.service.IEnterprisesService; +import com.ruoyi.system.service.SysFieldChangeLogService; +import lombok.extern.slf4j.Slf4j; +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.bind.annotation.RequestBody; + +import java.util.ArrayList; +import java.util.List; + +/** + * 企业Service业务层处理 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Service +@Slf4j +public class SysFieldChangeLogServiceImpl extends ServiceImpl implements SysFieldChangeLogService +{ +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java new file mode 100644 index 0000000..43504f2 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java @@ -0,0 +1,23 @@ +package com.ruoyi.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.domain.SysFieldChangeLog; +import com.ruoyi.system.domain.SysUserDept; +import com.ruoyi.system.mapper.SysFieldChangeLogMapper; +import com.ruoyi.system.mapper.SysUserDeptMapper; +import com.ruoyi.system.service.ISysUserDeptService; +import com.ruoyi.system.service.SysFieldChangeLogService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 企业Service业务层处理 + * + * @author ruoyi + * @date 2025-01-08 + */ +@Service +@Slf4j +public class SysUserDeptServiceImpl extends ServiceImpl implements ISysUserDeptService +{ +}