瀏覽代碼

员工认证

tjf 2 月之前
父節點
當前提交
1f1d5802f1

+ 2 - 2
pom.xml

@@ -364,11 +364,11 @@
                 <version>${revision}</version>
             </dependency>
 
-<!--            <dependency>
+            <dependency>
                 <groupId>org.dromara</groupId>
                 <artifactId>ruoyi-wuye</artifactId>
                 <version>${revision}</version>
-            </dependency>-->
+            </dependency>
 
         </dependencies>
     </dependencyManagement>

+ 2 - 2
ruoyi-admin/pom.xml

@@ -88,10 +88,10 @@
 <!--        </dependency>-->
 
         <!--物业模块-->
-<!--        <dependency>
+        <dependency>
             <groupId>org.dromara</groupId>
             <artifactId>ruoyi-wuye</artifactId>
-        </dependency>-->
+        </dependency>
 
         <!--  工作流模块  -->
         <dependency>

+ 2 - 1
ruoyi-modules/pom.xml

@@ -11,11 +11,12 @@
 
     <modules>
 <!--        <module>ruoyi-demo</module>-->
-<!--        <module>ruoyi-wuye</module>-->
+        <module>ruoyi-wuye</module>
         <module>ruoyi-generator</module>
         <module>ruoyi-job</module>
         <module>ruoyi-system</module>
         <module>ruoyi-workflow</module>
+        <module>ruoyi-wuye</module>
     </modules>
 
     <artifactId>ruoyi-modules</artifactId>

+ 108 - 0
ruoyi-modules/ruoyi-wuye/pom.xml

@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.dromara</groupId>
+        <artifactId>ruoyi-modules</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-wuye</artifactId>
+
+    <description>
+        物业系统模块
+    </description>
+    <dependencies>
+        <!-- 通用工具-->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-doc</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-mybatis</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-translation</artifactId>
+        </dependency>
+
+        <!-- OSS功能模块 -->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-oss</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-log</artifactId>
+        </dependency>
+
+        <!-- excel-->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-excel</artifactId>
+        </dependency>
+
+        <!-- SMS功能模块 -->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-sms</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-tenant</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-security</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-idempotent</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-sensitive</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-encrypt</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-websocket</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-sse</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-system</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 84 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/common/OcrController.java

@@ -0,0 +1,84 @@
+package org.dromara.controller.common;
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.common.core.domain.IdCardVo;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.IdCardUtil;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * @Author: tjf
+ * @Date: 2024/4/22 14:24
+ * @Describe:
+ */
+@RestController
+@RequestMapping("/ocr")
+public class OcrController {
+
+    /**
+     * 身份证识别
+     *
+     * @return
+     */
+    @PostMapping("/ocrIdCard")
+    @RepeatSubmit(interval = 1000, message = "请求过于频繁")
+    public R<Map<String, Object>> ocrIdCard(@RequestBody IdCardVo idCardVo) {
+        return IdCardUtil.idCard(idCardVo.getImage(), idCardVo.getIdCardSide());
+    }
+
+    /**
+     * 营业执照识别
+     *
+     * @return
+     */
+    @PostMapping("/ocrBusinessLicense")
+    @RepeatSubmit(interval = 1000, message = "请求过于频繁")
+    @SaCheckPermission("wuYe:ocr:ocrBusinessLicense")
+    public R<Map<String, Object>> ocrBusinessLicense(@RequestBody IdCardVo idCardVo) {
+        return IdCardUtil.businessLicense(idCardVo.getImage());
+    }
+
+    /**
+     * 车牌照识别
+     *
+     * @return
+     */
+    @PostMapping("/licensePlate")
+    @RepeatSubmit(interval = 1000, message = "请求过于频繁")
+    @SaCheckPermission("wuYe:ocr:licensePlate")
+    public R<String> licensePlate(@RequestBody IdCardVo idCardVo) {
+        return IdCardUtil.licensePlate(idCardVo.getImage());
+    }
+
+
+    /**
+     * 行驶证识别
+     *
+     * @return
+     */
+    @PostMapping("/vehicleLicense")
+    @RepeatSubmit(interval = 1000, message = "请求过于频繁")
+    @SaCheckPermission("wuYe:ocr:vehicleLicense")
+    public R<Map<String, Object>> vehicleLicense(@RequestBody IdCardVo idCardVo) {
+        return IdCardUtil.vehicleLicense(idCardVo.getImage());
+    }
+
+    /**
+     * 房产证识别
+     *
+     * @return
+     */
+    @PostMapping("/realEstateCertificate")
+    @RepeatSubmit(interval = 1000, message = "请求过于频繁")
+    @SaCheckPermission("wuYe:ocr:realEstateCertificate")
+    public R<Map<String, Object>> realEstateCertificate(@RequestBody IdCardVo idCardVo) {
+        return IdCardUtil.realEstateCertificate(idCardVo.getImage());
+    }
+}

+ 117 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffManage/StaffManageController.java

@@ -0,0 +1,117 @@
+package org.dromara.controller.staffManage;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.domain.staffManage.bo.StaffManageBo;
+import org.dromara.domain.staffManage.vo.StaffManageVo;
+import org.dromara.service.IStaffManageService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 员工管理
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/wuYe/staffManage")
+public class StaffManageController extends BaseController {
+
+    private final IStaffManageService staffManageService;
+
+    /**
+     * 查询员工管理列表
+     */
+    @SaCheckPermission("wuYe:staffManage:list")
+    @GetMapping("/list")
+    public TableDataInfo<StaffManageVo> list(StaffManageBo bo, PageQuery pageQuery) {
+        return staffManageService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出员工管理列表
+     */
+    @SaCheckPermission("wuYe:staffManage:export")
+    @Log(title = "员工管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(StaffManageBo bo, HttpServletResponse response) {
+        List<StaffManageVo> list = staffManageService.queryList(bo);
+        ExcelUtil.exportExcel(list, "员工管理", StaffManageVo.class, response);
+    }
+
+    /**
+     * 获取员工管理详细信息
+     *
+     * @param staffId 主键
+     */
+    @SaCheckPermission("wuYe:staffManage:query")
+    @GetMapping("/{staffId}")
+    public R<StaffManageVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long staffId) {
+        return R.ok(staffManageService.queryById(staffId));
+    }
+
+    /**
+     * 新增员工管理
+     */
+    @SaCheckPermission("wuYe:staffManage:add")
+    @Log(title = "员工管理", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody StaffManageBo bo) {
+        return toAjax(staffManageService.insertByBo(bo));
+    }
+
+    /**
+     * 修改员工管理
+     */
+    @SaCheckPermission("wuYe:staffManage:edit")
+    @Log(title = "员工管理", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/put")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody StaffManageBo bo) {
+        return toAjax(staffManageService.updateByBo(bo));
+    }
+
+    /**
+     * 删除员工管理
+     *
+     * @param staffIds 主键串
+     */
+    @SaCheckPermission("wuYe:staffManage:remove")
+    @Log(title = "员工管理", businessType = BusinessType.DELETE)
+    @GetMapping("/delete/{staffIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] staffIds) {
+        return toAjax(staffManageService.deleteWithValidByIds(List.of(staffIds), true));
+    }
+
+    /**
+     * 员工认证审核
+     *
+     * @param bo 员工信息
+     */
+    @SaCheckPermission("wuYe:staffManage:examine")
+    @PostMapping("/examineStaff")
+    public R<Void> examineStaff(@RequestBody StaffManageBo bo) {
+        return toAjax(staffManageService.examineStaff(bo));
+    }
+}

+ 99 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/staffManage/StaffManage.java

@@ -0,0 +1,99 @@
+package org.dromara.domain.staffManage;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 员工管理对象 staff_manage
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("staff_manage")
+public class StaffManage extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 员工管理id
+     */
+    @TableId(value = "staff_id")
+    private Long staffId;
+
+    /**
+     * 员工账号id
+     */
+    private Long userId;
+
+    /**
+     * 员工姓名
+     */
+    private String staffName;
+
+    /**
+     * 员工性别(1男 2女 )
+     */
+    private String gender;
+
+    /**
+     * 员工类别,1:保安 2:维修人员 3:物业管理
+     */
+    private String staffCategory;
+
+    /**
+     * 维修分类,表示维修人员擅长的维修类别
+     */
+    private String maintenanceCategory;
+
+    /**
+     * 手机号码
+     */
+    private String phoneNumber;
+
+    /**
+     * 头像,存储头像的URL或文件路径
+     */
+    private String avatarPhoto;
+
+    /**
+     * 身份证号码
+     */
+    private String idCard;
+
+    /**
+     * 身份证正面
+     */
+    private String idCardFront;
+
+    /**
+     * 身份证反面
+     */
+    private String idCardBack;
+
+    /**
+     * 相关证件
+     */
+    private String certificate;
+
+    /**
+     * 状态,字典值 1:空闲2:忙碌
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 审核状态 1:未审核 2:审核通过 3:审核未通过
+     */
+    private String examine;
+
+}

+ 98 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/staffManage/bo/StaffManageBo.java

@@ -0,0 +1,98 @@
+package org.dromara.domain.staffManage.bo;
+
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.domain.staffManage.StaffManage;
+
+/**
+ * 员工管理业务对象 staff_manage
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = StaffManage.class, reverseConvertGenerate = false)
+public class StaffManageBo extends BaseEntity {
+
+    /**
+     * 员工管理id
+     */
+    @NotNull(message = "员工管理id不能为空", groups = { EditGroup.class })
+    private Long staffId;
+
+    /**
+     * 员工账号id
+     */
+    private Long userId;
+
+    /**
+     * 员工姓名
+     */
+    private String staffName;
+
+    /**
+     * 员工性别(1男 2女 )
+     */
+    private String gender;
+
+    /**
+     * 员工类别,1:保安 2:维修人员 3:物业管理
+     */
+    private String staffCategory;
+
+    /**
+     * 维修分类,表示维修人员擅长的维修类别
+     */
+    private String maintenanceCategory;
+
+    /**
+     * 手机号码
+     */
+    private String phoneNumber;
+
+    /**
+     * 头像,存储头像的URL或文件路径
+     */
+    private String avatarPhoto;
+
+    /**
+     * 身份证号码
+     */
+    private String idCard;
+
+    /**
+     * 身份证正面
+     */
+    private String idCardFront;
+
+    /**
+     * 身份证反面
+     */
+    private String idCardBack;
+
+    /**
+     * 相关证件
+     */
+    private String certificate;
+
+    /**
+     * 状态,字典值 1:空闲2:忙碌
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 审核状态 1:未审核 2:审核通过 3:审核未通过
+     */
+    private String examine;
+}

+ 120 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/domain/staffManage/vo/StaffManageVo.java

@@ -0,0 +1,120 @@
+package org.dromara.domain.staffManage.vo;
+
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.domain.staffManage.StaffManage;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+/**
+ * 员工管理视图对象 staff_manage
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = StaffManage.class)
+public class StaffManageVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 员工管理id
+     */
+    @ExcelProperty(value = "员工管理id")
+    private Long staffId;
+
+    /**
+     * 员工账号id
+     */
+    @ExcelProperty(value = "员工账号id")
+    private Long userId;
+
+    /**
+     * 员工姓名
+     */
+    @ExcelProperty(value = "员工姓名")
+    private String staffName;
+
+    /**
+     * 员工性别(1男 2女 )
+     */
+    @ExcelProperty(value = "员工性别", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "1=男,2=女")
+    private String gender;
+
+    /**
+     * 员工类别,1:保安 2:维修人员 3:物业管理
+     */
+    @ExcelProperty(value = "员工类别,1:保安 2:维修人员 3:物业管理")
+    private String staffCategory;
+
+    /**
+     * 维修分类,表示维修人员擅长的维修类别
+     */
+    @ExcelProperty(value = "维修分类,表示维修人员擅长的维修类别")
+    private String maintenanceCategory;
+
+    /**
+     * 手机号码
+     */
+    @ExcelProperty(value = "手机号码")
+    private String phoneNumber;
+
+    /**
+     * 头像,存储头像的URL或文件路径
+     */
+    @ExcelProperty(value = "头像,存储头像的URL或文件路径")
+    private String avatarPhoto;
+
+    /**
+     * 身份证号码
+     */
+    @ExcelProperty(value = "身份证号码")
+    private String idCard;
+
+    /**
+     * 身份证正面
+     */
+    @ExcelProperty(value = "身份证正面")
+    private String idCardFront;
+
+    /**
+     * 身份证反面
+     */
+    @ExcelProperty(value = "身份证反面")
+    private String idCardBack;
+
+    /**
+     * 相关证件
+     */
+    @ExcelProperty(value = "相关证件")
+    private String certificate;
+
+    /**
+     * 状态,字典值 1:空闲2:忙碌
+     */
+    @ExcelProperty(value = "状态,字典值 1:空闲2:忙碌")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 审核状态 1:未审核 2:审核通过 3:审核未通过
+     */
+    private String examine;
+}

+ 16 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/mapper/StaffManageMapper.java

@@ -0,0 +1,16 @@
+package org.dromara.mapper;
+
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.domain.staffManage.StaffManage;
+import org.dromara.domain.staffManage.vo.StaffManageVo;
+
+/**
+ * 员工管理Mapper接口
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+public interface StaffManageMapper extends BaseMapperPlus<StaffManage, StaffManageVo> {
+
+}

+ 76 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffManageService.java

@@ -0,0 +1,76 @@
+package org.dromara.service;
+
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.domain.staffManage.bo.StaffManageBo;
+import org.dromara.domain.staffManage.vo.StaffManageVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 员工管理Service接口
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+public interface IStaffManageService {
+
+    /**
+     * 查询员工管理
+     *
+     * @param staffId 主键
+     * @return 员工管理
+     */
+    StaffManageVo queryById(Long staffId);
+
+    /**
+     * 分页查询员工管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 员工管理分页列表
+     */
+    TableDataInfo<StaffManageVo> queryPageList(StaffManageBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的员工管理列表
+     *
+     * @param bo 查询条件
+     * @return 员工管理列表
+     */
+    List<StaffManageVo> queryList(StaffManageBo bo);
+
+    /**
+     * 新增员工管理
+     *
+     * @param bo 员工管理
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(StaffManageBo bo);
+
+    /**
+     * 修改员工管理
+     *
+     * @param bo 员工管理
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(StaffManageBo bo);
+
+    /**
+     * 校验并批量删除员工管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    /**
+     * 员工申请审核
+     * @param bo
+     * @return
+     */
+    Boolean examineStaff(StaffManageBo bo);
+}

+ 194 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java

@@ -0,0 +1,194 @@
+package org.dromara.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.tenant.helper.TenantHelper;
+import org.dromara.domain.staffManage.StaffManage;
+import org.dromara.domain.staffManage.bo.StaffManageBo;
+import org.dromara.domain.staffManage.vo.StaffManageVo;
+import org.dromara.mapper.StaffManageMapper;
+import org.dromara.service.IStaffManageService;
+import org.dromara.system.domain.SysRole;
+import org.dromara.system.domain.SysUserTenant;
+import org.dromara.system.domain.bo.SysUserBo;
+import org.dromara.system.domain.vo.SysRoleVo;
+import org.dromara.system.mapper.SysRoleMapper;
+import org.dromara.system.mapper.SysUserTenantMapper;
+import org.dromara.system.service.ISysUserService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import static org.dromara.common.core.constant.Constants.TWO;
+
+/**
+ * 员工管理Service业务层处理
+ *
+ * @author boman
+ * @date 2025-04-10
+ */
+@RequiredArgsConstructor
+@Service
+public class StaffManageServiceImpl implements IStaffManageService {
+
+    private final StaffManageMapper baseMapper;
+    private final SysUserTenantMapper sysUserTenantMapper;
+    private final SysRoleMapper sysRoleMapper;
+    private final ISysUserService sysUserService;
+    /**
+     * 查询员工管理
+     *
+     * @param staffId 主键
+     * @return 员工管理
+     */
+    @Override
+    public StaffManageVo queryById(Long staffId){
+        return baseMapper.selectVoById(staffId);
+    }
+
+    /**
+     * 分页查询员工管理列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 员工管理分页列表
+     */
+    @Override
+    public TableDataInfo<StaffManageVo> queryPageList(StaffManageBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<StaffManage> lqw = buildQueryWrapper(bo);
+        Page<StaffManageVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的员工管理列表
+     *
+     * @param bo 查询条件
+     * @return 员工管理列表
+     */
+    @Override
+    public List<StaffManageVo> queryList(StaffManageBo bo) {
+        LambdaQueryWrapper<StaffManage> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<StaffManage> buildQueryWrapper(StaffManageBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<StaffManage> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(StaffManage::getStaffId);
+        lqw.eq(bo.getUserId() != null, StaffManage::getUserId, bo.getUserId());
+        lqw.like(StringUtils.isNotBlank(bo.getStaffName()), StaffManage::getStaffName, bo.getStaffName());
+        lqw.eq(StringUtils.isNotBlank(bo.getGender()), StaffManage::getGender, bo.getGender());
+        lqw.eq(StringUtils.isNotBlank(bo.getStaffCategory()), StaffManage::getStaffCategory, bo.getStaffCategory());
+        lqw.eq(StringUtils.isNotBlank(bo.getMaintenanceCategory()), StaffManage::getMaintenanceCategory, bo.getMaintenanceCategory());
+        lqw.eq(StringUtils.isNotBlank(bo.getPhoneNumber()), StaffManage::getPhoneNumber, bo.getPhoneNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getAvatarPhoto()), StaffManage::getAvatarPhoto, bo.getAvatarPhoto());
+        lqw.eq(StringUtils.isNotBlank(bo.getIdCard()), StaffManage::getIdCard, bo.getIdCard());
+        lqw.eq(StringUtils.isNotBlank(bo.getIdCardFront()), StaffManage::getIdCardFront, bo.getIdCardFront());
+        lqw.eq(StringUtils.isNotBlank(bo.getIdCardBack()), StaffManage::getIdCardBack, bo.getIdCardBack());
+        lqw.eq(StringUtils.isNotBlank(bo.getCertificate()), StaffManage::getCertificate, bo.getCertificate());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), StaffManage::getStatus, bo.getStatus());
+        return lqw;
+    }
+
+    /**
+     * 新增员工管理
+     *
+     * @param bo 员工管理
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(StaffManageBo bo) {
+        StaffManage add = MapstructUtils.convert(bo, StaffManage.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setStaffId(add.getStaffId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改员工管理
+     *
+     * @param bo 员工管理
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(StaffManageBo bo) {
+        StaffManage update = MapstructUtils.convert(bo, StaffManage.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(StaffManage entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除员工管理信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+
+
+    /**
+     * 员工申请审核
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean examineStaff(StaffManageBo bo) {
+        StaffManage examineStaffManage = MapstructUtils.convert(bo, StaffManage.class);
+        //判断是否审核通过
+        if (TWO.equals(examineStaffManage.getExamine())) {
+            SysUserBo sysUser = new SysUserBo();
+            if (TenantHelper.isEnable()) {
+                //把租户id更新到sys_user表/sys_user_tenant表中
+                sysUser.setTenantId(examineStaffManage.getTenantId());
+                sysUserService.updateUserById(sysUser);
+                SysUserTenant sysUserTenant = new SysUserTenant();
+                sysUserTenant.setUserId(examineStaffManage.getUserId());
+                sysUserTenant.setTenantId(examineStaffManage.getTenantId());
+                sysUserTenantMapper.insert(sysUserTenant);
+            }
+            //组装sysUser
+            //给该userId赋予角色
+            // 新增用户与角色管理
+            sysUser.setUserId(bo.getUserId());
+            //根据权限字符去查询角色id
+            Long[] roles;
+            SysRoleVo sysRoleVo = sysRoleMapper.selectVoOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleKey, examineStaffManage.getStaffCategory()));
+            if (sysRoleVo != null) {
+                roles = new Long[]{sysRoleVo.getRoleId()};
+                sysUser.setRoleIds(roles);
+            }
+            sysUserService.insertUserRole(sysUser, false);
+        } else {
+            return baseMapper.updateById(examineStaffManage) > 0;
+        }
+        return true;
+    }
+}

+ 7 - 0
ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/StaffManageMapper.xml

@@ -0,0 +1,7 @@
+<?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="org.dromara.mapper.StaffManageMapper">
+
+</mapper>