From c66c3eba5a6cab20e3ce7b6b5eb30d4570c6099c Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 20 一月 2025 19:48:57 +0800
Subject: [PATCH] 管理端:企业列表相关接口

---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/PageDTO.java                        |   64 ++++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/NumberUtils.java                    |  148 +++++++++
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/query/MgtCompanyQuery.java           |   24 +
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Checker.java                        |   18 +
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BasePage.java                       |   45 +++
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java            |   51 +++
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/management/MgtCompanyController.java |   42 ++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BeanUtils.java                      |   59 +++
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/vo/MgtCompanyVO.java                 |   99 ++++++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Convert.java                        |    8 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java            |    8 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ArrayUtils.java                     |   54 +++
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java                         |    4 
 ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java                                   |   17 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java                     |   16 +
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/CollUtils.java                      |  145 +++++++++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ObjectUtils.java                    |   84 +++++
 ruoyi-common/ruoyi-common-core/pom.xml                                                                      |   11 
 18 files changed, 883 insertions(+), 14 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java
index a0c113f..6ad6142 100644
--- a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java
@@ -1,6 +1,7 @@
 package com.ruoyi.company.api.domain;
 
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -13,6 +14,8 @@
     /** 主键 */
     @TableId
     private Long id;
+    /** 企业用户id */
+    private Long userId;
 
     /** 公司名称 */
     private String companyName;
@@ -69,5 +72,6 @@
     private LocalDateTime updateTime;
 
     /** 是否删除 */
+    @TableLogic
     private Boolean isDelete;
 }
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/query/MgtCompanyQuery.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/query/MgtCompanyQuery.java
new file mode 100644
index 0000000..075cba4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/query/MgtCompanyQuery.java
@@ -0,0 +1,24 @@
+package com.ruoyi.company.api.domain.query;
+
+import com.ruoyi.common.core.page.BasePage;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2025/1/20
+ */
+@Data
+@Schema(name = "管理端企业列表查询对象")
+public class MgtCompanyQuery extends BasePage {
+    private static final long serialVersionUID = 5429160619805017277L;
+
+    @Schema(name = "企业信息")
+    private String companyInfo;
+
+    @Schema(name = "法人信息")
+    private String legalPersonInfo;
+
+    @Schema(name = "联系信息")
+    private String contactInfo;
+}
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/vo/MgtCompanyVO.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/vo/MgtCompanyVO.java
new file mode 100644
index 0000000..1ed888b
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/vo/MgtCompanyVO.java
@@ -0,0 +1,99 @@
+package com.ruoyi.company.api.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author mitao
+ * @date 2025/1/20
+ */
+@Data
+@Schema(name = "管理端企业信息",description = "管理端企业信息")
+public class MgtCompanyVO {
+    /** 主键 */
+    @TableId
+    @Schema(description = "主键", example = "1")
+    private Long id;
+
+    /** 公司名称 */
+    @Schema(description = "公司名称", example = "某某科技有限公司")
+    private String companyName;
+
+    /** 统一社会信用代码 */
+    @Schema(description = "统一社会信用代码", example = "913100000000123")
+    private String socialCode;
+
+    /** 省份代码 */
+    @Schema(description = "省份代码", example = "01")
+    private String provinceCode;
+
+    /** 城市代码 */
+    @Schema(description = "城市代码", example = "020")
+    private String cityCode;
+
+    /** 区域代码 */
+    @Schema(description = "区域代码", example = "003")
+    private String districtCode;
+
+    /** 经营地址 */
+    @Schema(description = "经营地址", example = "北京市海淀区")
+    private String businessAddress;
+
+    /** 身份证正面照片 */
+    @Schema(description = "身份证正面照片 URL", example = "https://example.com/idcard-front.jpg")
+    private String idCardFrontUrl;
+
+    /** 身份证反面照片 */
+    @Schema(description = "身份证反面照片 URL", example = "https://example.com/idcard-back.jpg")
+    private String idCardBackUrl;
+
+    /** 法人姓名 */
+    @Schema(description = "法人姓名", example = "张三")
+    private String legalPersonName;
+
+    /** 身份证号码 */
+    @Schema(description = "身份证号码", example = "110101199001012345")
+    private String idCardNumber;
+
+    /** 营业执照照片 */
+    @Schema(description = "营业执照照片 URL", example = "https://example.com/business-license.jpg")
+    private String businessLicenseUrl;
+
+    /** 资质类目:1-再生资源回收备案资质 2-家电拆解资质 3-报废机动车回收拆解资质 4-危险废物经营许可证 0-其他证书 */
+    @Schema(description = "资质类目", example = "1", allowableValues = {"0", "1", "2", "3", "4"})
+    private Integer category;
+
+    /** 拆解企业资质证书图片地址 */
+    @Schema(description = "拆解企业资质证书图片地址 URL", example = "https://example.com/certificate.jpg")
+    private String certificateUrl;
+
+    /** 联系人姓名 */
+    @Schema(description = "联系人姓名", example = "李四")
+    private String contactName;
+
+    /** 联系人手机号 */
+    @Schema(description = "联系人手机号", example = "13800138000")
+    private String contactPhone;
+
+    /** 联系人邮箱 */
+    @Schema(description = "联系人邮箱", example = "example@example.com")
+    private String email;
+
+    /** 创建时间 */
+    @Schema(description = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime createTime;
+
+    /** 账号 */
+    @Schema(description = "账号")
+    private String accountName;
+
+    /** 手机号 */
+    @Schema(description = "绑定手机号")
+    private String phone;
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index 4b534b0..3df2ab6 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -136,6 +136,17 @@
             <artifactId>hutool-all</artifactId>
         </dependency>
 
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <!-- SpringDoc webmvc -->
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ArrayUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ArrayUtils.java
new file mode 100644
index 0000000..59dc939
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ArrayUtils.java
@@ -0,0 +1,54 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.util.ArrayUtil;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 数组工具类
+ * @ClassName ArrayUtils
+ * @author wusongsong
+ * @since 2022/7/10 12:02
+ * @version 1.0.0
+ **/
+public class ArrayUtils extends ArrayUtil {
+
+
+
+    /**
+     * 将源数组转换成指定类型的列表
+     *
+     * @param originList  原始列表
+     * @param targetClazz 转换后列表元素的类型
+     * @param <R>         原始列表元素的类型
+     * @param <T>         目标列表元素的类型
+     * @return 目标类型的集合
+     */
+    public static <R, T> List<T> convert(R[] originList, Class<T> targetClazz) {
+       return convert(originList, targetClazz, null);
+
+    }
+
+    /**
+     * 将源数组转换成指定类型的列表
+     *
+     * @param originList  原始列表
+     * @param targetClazz 转换后列表元素的类型
+     * @param convert     转换特殊字段接口
+     * @param <R>         原始列表元素的类型
+     * @param <T>         目标列表元素的类型
+     * @return 目标类型的集合
+     */
+    public static <R, T> List<T> convert(R[] originList, Class<T> targetClazz, Convert<R, T> convert) {
+        if (isEmpty(originList)) {
+            return null;
+        }
+
+        return Arrays.stream(originList)
+                .map(origin -> BeanUtils.copyBean(origin, targetClazz, convert))
+                .collect(Collectors.toList());
+
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BasePage.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BasePage.java
new file mode 100644
index 0000000..0108ddb
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BasePage.java
@@ -0,0 +1,45 @@
+package com.ruoyi.common.core.page;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.io.Serializable;
+
+@Schema(name = "基础查询列表dto")
+public class BasePage implements Serializable {
+
+    private static final long serialVersionUID = -6677391205868835849L;
+    /**
+     * 分页参数,当前页码
+     */
+    @Schema(name = "分页参数,当前页码")
+    private Integer pageCurr = 1;
+    /**
+     * 分页参数,每页数量
+     */
+    @Schema(name = "分页参数,每页数量,默认为10")
+    private Integer pageSize = 10;
+
+    public Integer getPageCurr() {
+        return pageCurr;
+    }
+
+    public void setPageCurr(Integer pageCurr) {
+        this.pageCurr = pageCurr;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    @Override
+    public String toString() {
+        return "BasePage{" +
+                "pageCurr=" + pageCurr +
+                ", pageSize=" + pageSize +
+                '}';
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BeanUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BeanUtils.java
new file mode 100644
index 0000000..76f0fdb
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/BeanUtils.java
@@ -0,0 +1,59 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 继承自 hutool 的BeanUtil,增加了bean转换时自定义转换器的功能
+ */
+public class BeanUtils extends BeanUtil {
+
+    /**
+     * 将原对象转换成目标对象,对于字段不匹配的字段可以使用转换器处理
+     *
+     * @param source  原对象
+     * @param clazz   目标对象的class
+     * @param convert 转换器
+     * @param <R>     原对象类型
+     * @param <T>     目标对象类型
+     * @return 目标对象
+     */
+    public static <R, T> T copyBean(R source, Class<T> clazz, Convert<R, T> convert) {
+        T target = copyBean(source, clazz);
+        if (convert != null) {
+            convert.convert(source, target);
+        }
+        return target;
+    }
+    /**
+     * 将原对象转换成目标对象,对于字段不匹配的字段可以使用转换器处理
+     *
+     * @param source  原对象
+     * @param clazz   目标对象的class
+     * @param <R>     原对象类型
+     * @param <T>     目标对象类型
+     * @return 目标对象
+     */
+    public static <R, T> T copyBean(R source, Class<T> clazz){
+        if (source == null) {
+            return null;
+        }
+        return toBean(source, clazz);
+    }
+
+    public static <R, T> List<T> copyList(List<R> list, Class<T> clazz) {
+        if (list == null || list.size() == 0) {
+            return CollUtils.emptyList();
+        }
+        return copyToList(list, clazz);
+    }
+
+    public static <R, T> List<T> copyList(List<R> list, Class<T> clazz, Convert<R, T> convert) {
+        if (list == null || list.size() == 0) {
+            return CollUtils.emptyList();
+        }
+        return list.stream().map(r -> copyBean(r, clazz, convert)).collect(Collectors.toList());
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Checker.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Checker.java
new file mode 100644
index 0000000..83bb7e7
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Checker.java
@@ -0,0 +1,18 @@
+package com.ruoyi.common.core.page;
+
+/**
+ * 实现后在接口访问时如果接口实现了这个接口
+ * 会被自动自行接口check进行校验
+ **/
+public interface Checker<T> {
+
+    /**
+     * 用于实现validation不能校验的数据逻辑
+     */
+    default void check(){
+
+    }
+
+    default void check(T data){
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/CollUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/CollUtils.java
new file mode 100644
index 0000000..bb0c400
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/CollUtils.java
@@ -0,0 +1,145 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.IterUtil;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 继承自 hutool 的集合工具类
+ */
+public class CollUtils extends CollectionUtil {
+
+    public static <T> List<T> emptyList() {
+        return Collections.emptyList();
+    }
+
+    public static <T> Set<T> emptySet() {
+        return Collections.emptySet();
+    }
+
+    public static <K,V> Map<K, V> emptyMap() {
+        return Collections.emptyMap();
+    }
+
+    public static <T> Set<T> singletonSet(T t) {
+        return Collections.singleton(t);
+    }
+
+    public static <T> List<T> singletonList(T t) {
+        return Collections.singletonList(t);
+    }
+
+    public static List<Integer> convertToInteger(List<String> originList){
+        return CollUtils.isNotEmpty(originList) ? originList.stream().map(NumberUtils::parseInt).collect(Collectors.toList()) : null;
+    }
+
+    public static List<Long> convertToLong(List<String> originLIst){
+        return CollUtils.isNotEmpty(originLIst) ? originLIst.stream().map(NumberUtils::parseLong).collect(Collectors.toList()) : null;
+    }
+
+    /**
+     * 以 conjunction 为分隔符将集合转换为字符串 如果集合元素为数组、Iterable或Iterator,则递归组合其为字符串
+     * @param collection 集合
+     * @param conjunction 分隔符
+     * @param <T> 集合元素类型
+     * @return 连接后的字符串
+     * See Also: IterUtil.join(Iterator, CharSequence)
+     */
+    public static <T> String join(Collection<T> collection, CharSequence conjunction) {
+        if (null == collection || collection.isEmpty()) {
+            return null;
+        }
+        return IterUtil.join(collection.iterator(), conjunction);
+    }
+
+    public static <T> String joinIgnoreNull(Collection<T> collection, CharSequence conjunction) {
+        if (null == collection || collection.isEmpty()) {
+            return null;
+        }
+        StringBuilder sb = new StringBuilder();
+        for (T t : collection) {
+            if(t == null) continue;
+            sb.append(t).append(",");
+        }
+        if(sb.length() <= 0){
+            return null;
+        }
+        return sb.deleteCharAt(sb.length() - 1).toString();
+    }
+
+    /**
+     * 集合校验逻辑
+     *
+     * @param data 要校验的集合
+     * @param checker 校验器
+     * @param <T> 集合元素类型
+     */
+    public static  <T> void  check(List<T> data, Checker<T> checker){
+        if(data == null){
+            return;
+        }
+        for (T t : data){
+            checker.check(t);
+        }
+    }
+
+    /**
+     * 集合校验逻辑
+     *
+     * @param data 要校验的集合
+     * @param <T> 集合元素类型
+     */
+    public static  <T extends Checker<T>> void  check(List<T> data){
+        if(data == null){
+            return;
+        }
+        for (T t : data){
+            t.check();
+        }
+    }
+
+    /**
+     * 将元素加入到集合中,为null的过滤掉
+     *
+     * @param list 集合
+     * @param data 要添加的数据
+     * @param <T> 元素类型
+     */
+    public static <T> void add(Collection<T> list, T... data) {
+        if (list == null || ArrayUtils.isEmpty(data)) {
+            return;
+        }
+        for (T t : data) {
+            if (ObjectUtils.isNotEmpty(t)) {
+                list.add(t);
+            }
+        }
+    }
+    //将两个集合出现次数相加
+    public static Map<Long, Integer> union(Map<Long, Integer> map1, Map<Long, Integer> map2) {
+        if (CollUtils.isEmpty(map1)) {
+            return map2;
+        } else if (CollUtils.isEmpty(map2)) {
+            return map1;
+        }
+        for (Map.Entry<Long, Integer> entry : map1.entrySet()) {
+            Integer num = map2.get(entry.getKey());
+            map2.put(entry.getKey(), NumberUtils.null2Zero(num) + entry.getValue());
+        }
+        return map2;
+    }
+
+    public static <T,R> R getFiledOfFirst(List<T> list, Function<T, R> function) {
+        if (CollUtils.isEmpty(list)) {
+            return null;
+        }
+        return function.apply(list.get(0));
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Convert.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Convert.java
new file mode 100644
index 0000000..5e7e8e9
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/Convert.java
@@ -0,0 +1,8 @@
+package com.ruoyi.common.core.page;
+
+/**
+ * 对原对象进行计算,设置到目标对象中
+ **/
+public interface Convert<R,T>{
+    void convert(R origin, T target);
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/NumberUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/NumberUtils.java
new file mode 100644
index 0000000..a2280ee
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/NumberUtils.java
@@ -0,0 +1,148 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.util.NumberUtil;
+
+import java.math.BigDecimal;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class NumberUtils extends NumberUtil {
+
+
+    /**
+     * 如果number为空,将number转换为0,否则原数字返回
+     *
+     * @param number 原数值
+     * @return 整型数字,0或原数字
+     */
+    public static Integer null2Zero(Integer number){
+        return number == null ? 0 : number;
+    }
+
+    /**
+     * 如果number为空,将number转换为0,否则原数字返回
+     *
+     * @param number 原数值
+     * @return 整型数字,0或原数字
+     */
+    public static Double null2Zero(Double number){
+        return number == null ? 0 : number;
+    }
+
+    /**
+     * 如果number为空,将number转换为0L,否则原数字返回
+     *
+     * @param number  原数值
+     * @return 长整型数字,0L或原数字
+     */
+    public static Long null2Zero(Long number){
+        return number == null ? 0L : number;
+    }
+
+
+    public static Double setScale(Double number) {
+        return new BigDecimal(number)
+                .setScale(2, BigDecimal.ROUND_HALF_UP)
+                .doubleValue();
+    }
+    /**
+     * 比较两个数字是否相同,
+     * @param number1 数值1
+     * @param number2 数值2
+     * @return 是否一致
+     */
+    public static boolean equals(Integer number1, Integer number2) {
+        if(number1 == null || number2 == null){
+            return false;
+        }
+        return number1.equals(number2);
+    }
+
+    /**
+     * 数字除法保留指定小数位
+     * @param num1 被除数
+     * @param num2 除数
+     * @param scale 小数点位数
+     * @return 结果
+     */
+    public static Double divToDouble(Integer num1, Integer num2, int scale){
+        if(num2 == null || num2 ==0 || num1 == null || num1 == 0) {
+            return 0d;
+        }
+        return div(num1, num2, scale).doubleValue();
+    }
+
+    public static  Double max(List<Double> data){
+        if(CollUtils.isEmpty(data)){
+            return null;
+        }
+        return data.stream()
+                .max(Comparator.comparingDouble(num -> num))
+                .orElse(0d);
+    }
+    public static  Double min(List<Double> data){
+        if(CollUtils.isEmpty(data)){
+            return null;
+        }
+        return data.stream()
+                .min(Comparator.comparingDouble(num -> num))
+                .orElse(0d);
+    }
+
+    public static Double average(List<Double> data){
+        if(CollUtils.isEmpty(data)){
+            return 0d;
+        }
+        return data.stream()
+                .collect(Collectors.averagingDouble(Double::doubleValue));
+
+    }
+
+    public static Integer toInt(Object obj) {
+        return obj == null ? null
+                : obj instanceof Integer
+                ? (int) obj : null;
+    }
+
+    /**
+     * 取绝对值,如果为null,返回0
+     * @param number 数值
+     * @return 绝对值
+     */
+    public static int abs(Integer number) {
+        return number == null
+                ? 0
+                : Math.abs(number);
+    }
+
+    /**
+     * 数字格式化字符串,不足位数补0
+     *
+     * @param originNumber 原始数字
+     * @param digit 数字位数
+     * @return 字符串
+     */
+    public static String  repair0(Integer originNumber, Integer digit){
+        StringBuilder number = new StringBuilder(originNumber + "");
+        while (number.length() < digit) {
+            number.insert(0, "0");
+        }
+        return number.toString();
+    }
+
+
+    public static String scaleToStr(Integer num, int offset) {
+        // 1.计算位数
+        int m = (int) Math.pow(10, offset);
+        // 2.计算商
+        int s = num / m;
+        // 3.计算余数
+        int y = num % m;
+        if (y == 0) {
+            return Integer.toString(s);
+        }
+        // 2.计算余数
+        return s + "." + y;
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ObjectUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ObjectUtils.java
new file mode 100644
index 0000000..ecbddc0
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/ObjectUtils.java
@@ -0,0 +1,84 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.util.ObjectUtil;
+
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
+
+/**
+ * Object操作工具
+ **/
+public class ObjectUtils extends ObjectUtil {
+
+    /**
+     * 为object设置默认值,对target中的基本类型进行默认值初始化,
+     * 为null的对象不操作
+     *
+     * @param target 需要初始化的对象
+     */
+    public static void setDefault(Object target) {
+        if (target == null) {
+            return;
+        }
+        Class<?> clazz = target.getClass();
+        Field[] declaredFields = clazz.getDeclaredFields();
+        for (Field field : declaredFields) {
+            setDefault(field, target);
+        }
+
+    }
+
+    /**
+     * 给某个字段设置为默认值
+     *
+     * @param field
+     * @param target
+     */
+    private static void setDefault(Field field, Object target) {
+        field.setAccessible(true);
+        try {
+            Object value = field.get(target);
+            if (value != null) {
+                return;
+            }
+            String type = field.getGenericType().toString();
+            Object defaultValue;
+            switch (type) {
+                case "class java.lang.String":
+                case "class java.lang.Character":
+                    defaultValue = "";
+                    break;
+                case "class java.lang.Double":
+                    defaultValue = 0.0d;
+                    break;
+                case "class java.lang.Long":
+                    defaultValue = 0L;
+                    break;
+                case "class java.lang.Short":
+                    defaultValue = (short) 0;
+                    break;
+                case "class java.lang.Integer":
+                    defaultValue = 0;
+                    break;
+                case "class java.lang.Float":
+                    defaultValue = 0f;
+                    break;
+                case "class java.lang.Byte":
+                    defaultValue = (byte) 0;
+                    break;
+                case "class java.math.BigDecimal":
+                    defaultValue = BigDecimal.ZERO;
+                    break;
+                case "class java.lang.Boolean":
+                    defaultValue = Boolean.FALSE;
+                    break;
+                default:
+                    defaultValue = null;
+
+            }
+            field.set(target, defaultValue);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/PageDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/PageDTO.java
new file mode 100644
index 0000000..44234d8
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/page/PageDTO.java
@@ -0,0 +1,64 @@
+package com.ruoyi.common.core.page;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class PageDTO<T> {
+    protected Long total;
+    protected Long pages;
+    protected List<T> list;
+
+    public static <T> PageDTO<T> empty(Long total, Long pages) {
+        return new PageDTO<>(total, pages, CollUtils.emptyList());
+    }
+    public static <T> PageDTO<T> empty(Page<?> page) {
+        return new PageDTO<>(page.getTotal(), page.getPages(), CollUtils.emptyList());
+    }
+
+    public static <T> PageDTO<T> of(Page<T> page) {
+        if(page == null){
+            return new PageDTO<>();
+        }
+        if (CollUtils.isEmpty(page.getRecords())) {
+            return empty(page);
+        }
+        return new PageDTO<>(page.getTotal(), page.getPages(), page.getRecords());
+    }
+    public static <T,R> PageDTO<T> of(Page<R> page, Function<R, T> mapper) {
+        if(page == null){
+            return new PageDTO<>();
+        }
+        if (CollUtils.isEmpty(page.getRecords())) {
+            return empty(page);
+        }
+        return new PageDTO<>(page.getTotal(), page.getPages(),
+                page.getRecords().stream().map(mapper).collect(Collectors.toList()));
+    }
+    public static <T> PageDTO<T> of(Page<?> page, List<T> list) {
+        return new PageDTO<>(page.getTotal(), page.getPages(), list);
+    }
+
+    public static <T, R> PageDTO<T> of(Page<R> page, Class<T> clazz) {
+        return new PageDTO<>(page.getTotal(), page.getPages(), BeanUtils.copyList(page.getRecords(), clazz));
+    }
+
+    public static <T, R> PageDTO<T> of(Page<R> page, Class<T> clazz, Convert<R, T> convert) {
+        return new PageDTO<>(page.getTotal(), page.getPages(), BeanUtils.copyList(page.getRecords(), clazz, convert));
+    }
+
+    @JsonIgnore
+    public boolean isEmpty(){
+        return list == null || list.size() == 0;
+    }
+}
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java
index 2df8ea0..eda1030 100644
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java
+++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java
@@ -1,7 +1,10 @@
 package com.ruoyi.gateway.config;
 
-import java.util.Set;
-import java.util.stream.Collectors;
+import com.alibaba.nacos.client.naming.event.InstancesChangeEvent;
+import com.alibaba.nacos.common.notify.Event;
+import com.alibaba.nacos.common.notify.NotifyCenter;
+import com.alibaba.nacos.common.notify.listener.Subscriber;
+import com.ruoyi.common.core.utils.StringUtils;
 import org.springdoc.core.AbstractSwaggerUiConfigProperties;
 import org.springdoc.core.SwaggerUiConfigProperties;
 import org.springframework.beans.factory.InitializingBean;
@@ -9,11 +12,9 @@
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.cloud.client.discovery.DiscoveryClient;
 import org.springframework.context.annotation.Configuration;
-import com.alibaba.nacos.client.naming.event.InstancesChangeEvent;
-import com.alibaba.nacos.common.notify.Event;
-import com.alibaba.nacos.common.notify.NotifyCenter;
-import com.alibaba.nacos.common.notify.listener.Subscriber;
-import com.ruoyi.common.core.utils.StringUtils;
+
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * SpringDoc配置类
@@ -51,7 +52,7 @@
     @Autowired
     private DiscoveryClient discoveryClient;
 
-    private final static String[] EXCLUDE_ROUTES = new String[] { "ruoyi-gateway", "ruoyi-auth", "ruoyi-file", "ruoyi-monitor" };
+    private final static String[] EXCLUDE_ROUTES = new String[] { "ruoyi-gateway", /*"ruoyi-auth",*/ "ruoyi-file", "ruoyi-monitor" };
 
     public SwaggerDocRegister(SwaggerUiConfigProperties swaggerUiConfigProperties, DiscoveryClient discoveryClient)
     {
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
similarity index 86%
rename from ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java
rename to ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
index 40a128d..283a7dd 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
@@ -1,24 +1,20 @@
-package com.ruoyi.company.controller;
+package com.ruoyi.company.controller.front;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.security.annotation.InnerAuth;
-import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.company.api.domain.User;
 import com.ruoyi.company.api.model.RegisterUser;
 import com.ruoyi.company.api.model.UserDetail;
 import com.ruoyi.company.service.UserService;
-import io.swagger.v3.oas.annotations.Operation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.time.LocalDateTime;
-
 @RestController
-@RequestMapping("/user")
+@RequestMapping("/front/user")
 @RequiredArgsConstructor
 public class UserController {
     private final UserService userService;
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/management/MgtCompanyController.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/management/MgtCompanyController.java
new file mode 100644
index 0000000..cdd92d2
--- /dev/null
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/management/MgtCompanyController.java
@@ -0,0 +1,42 @@
+package com.ruoyi.company.controller.management;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.page.PageDTO;
+import com.ruoyi.company.api.domain.query.MgtCompanyQuery;
+import com.ruoyi.company.api.domain.vo.MgtCompanyVO;
+import com.ruoyi.company.service.CompanyService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author mitao
+ * @date 2025/1/20
+ */
+@Validated
+@RestController
+@RequestMapping("/mgt/company")
+@Tag(name = "管理端企业列表相关接口")
+@RequiredArgsConstructor
+public class MgtCompanyController {
+    private final CompanyService companyService;
+
+    @Operation(summary = "获取企业列表")
+    @PostMapping("/page")
+    public R<PageDTO<MgtCompanyVO>> queryPage(MgtCompanyQuery query) {
+        return R.ok(companyService.queryPage(query));
+    }
+    @Operation(summary = "获取企业详情")
+    @GetMapping("/{id}")
+    public R<MgtCompanyVO> queryCompanyDetail(@Parameter(name = "id",description = "企业id",required = true) @PathVariable Long id) {
+        return R.ok(companyService.queryCompanyDetail(id));
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java
index 566af85..31db036 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java
@@ -1,7 +1,23 @@
 package com.ruoyi.company.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.PageDTO;
 import com.ruoyi.company.api.domain.Company;
+import com.ruoyi.company.api.domain.query.MgtCompanyQuery;
+import com.ruoyi.company.api.domain.vo.MgtCompanyVO;
 
 public interface CompanyService extends IService<Company> {
+    /**
+     * 获取企业列表
+     * @param query
+     * @return
+     */
+    PageDTO<MgtCompanyVO> queryPage(MgtCompanyQuery query);
+
+    /**
+     * 获取企业详情
+     * @param id
+     * @return
+     */
+    MgtCompanyVO queryCompanyDetail(Long id);
 }
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java
index 8addf56..917df53 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java
@@ -1,11 +1,62 @@
 package com.ruoyi.company.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.BeanUtils;
+import com.ruoyi.common.core.page.PageDTO;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.company.api.domain.Company;
+import com.ruoyi.company.api.domain.User;
+import com.ruoyi.company.api.domain.query.MgtCompanyQuery;
+import com.ruoyi.company.api.domain.vo.MgtCompanyVO;
 import com.ruoyi.company.mapper.CompanyMapper;
 import com.ruoyi.company.service.CompanyService;
+import com.ruoyi.company.service.UserService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 @Service
+@RequiredArgsConstructor
 public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements CompanyService {
+    private final UserService userService;
+    /**
+     * 获取企业列表
+     * @param query
+     * @return
+     */
+    @Override
+    public PageDTO<MgtCompanyVO> queryPage(MgtCompanyQuery query) {
+        Page<Company> page = this.lambdaQuery()
+                .like(StringUtils.isNotBlank(query.getCompanyInfo()), Company::getCompanyName, query.getCompanyInfo())
+                .like(StringUtils.isNotBlank(query.getCompanyInfo()), Company::getSocialCode, query.getCompanyInfo())
+                .like(StringUtils.isNotBlank(query.getLegalPersonInfo()), Company::getLegalPersonName, query.getLegalPersonInfo())
+                .like(StringUtils.isNotBlank(query.getLegalPersonInfo()), Company::getIdCardNumber, query.getLegalPersonInfo())
+                .like(StringUtils.isNotBlank(query.getContactInfo()), Company::getContactName, query.getContactInfo())
+                .like(StringUtils.isNotBlank(query.getContactInfo()), Company::getContactPhone, query.getContactInfo())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        return PageDTO.of(page,MgtCompanyVO.class);
+    }
+
+    /**
+     * 获取企业详情
+     * @param id
+     * @return
+     */
+    @Override
+    public MgtCompanyVO queryCompanyDetail(Long id) {
+        Company company = this.getById(id);
+        MgtCompanyVO mgtCompanyVO = BeanUtils.copyBean(company, MgtCompanyVO.class);
+        if (Objects.isNull(mgtCompanyVO)) {
+            mgtCompanyVO = new MgtCompanyVO();
+            return mgtCompanyVO;
+        }
+        User user = userService.getById(company.getUserId());
+        if (Objects.nonNull(user)) {
+            mgtCompanyVO.setPhone(user.getPhone());
+            mgtCompanyVO.setAccountName(user.getAccountName());
+        }
+        return mgtCompanyVO;
+    }
 }

--
Gitblit v1.7.1