소스 검색

人员修改

Newspaper 1 년 전
부모
커밋
fcc5749abd
12개의 변경된 파일878개의 추가작업 그리고 0개의 파일을 삭제
  1. 111 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/controller/SysDepartmentController.java
  2. 106 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/entity/SysDepartment.java
  3. 34 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/enums/DepartmentEnum.java
  4. 25 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/mapper/SysDepartmentMapper.java
  5. 5 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/mapper/mapping/SysDepartmentMapper.xml
  6. 74 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentAddParam.java
  7. 79 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentEditParam.java
  8. 35 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentIdParam.java
  9. 51 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentPageParam.java
  10. 80 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/service/SysDepartmentService.java
  11. 94 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/service/impl/SysDepartmentServiceImpl.java
  12. 184 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/utils/UploadImage.java

+ 111 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/controller/SysDepartmentController.java

@@ -0,0 +1,111 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 部门控制器
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ */
+@Api(tags = "部门控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+public class SysDepartmentController {
+
+//    @Resource
+//    private DepartmentService departmentService;
+//
+//    /**
+//     * 获取部门分页
+//     *
+//     * @author newspaper
+//     * @date  2024/01/22 19:30
+//     */
+//    @ApiOperationSupport(order = 1)
+//    @ApiOperation("获取部门分页")
+//    @SaCheckPermission("/sys/department/page")
+//    @GetMapping("/sys/department/page")
+//    public CommonResult<Page<Department>> page(DepartmentPageParam departmentPageParam) {
+//        return CommonResult.data(departmentService.page(departmentPageParam));
+//    }
+//
+//    /**
+//     * 添加部门
+//     *
+//     * @author newspaper
+//     * @date  2024/01/22 19:30
+//     */
+//    @ApiOperationSupport(order = 2)
+//    @ApiOperation("添加部门")
+//    @CommonLog("添加部门")
+//    @SaCheckPermission("/sys/department/add")
+//    @PostMapping("/sys/department/add")
+//    public CommonResult<String> add(@RequestBody @Valid DepartmentAddParam departmentAddParam) {
+//        departmentService.add(departmentAddParam);
+//        return CommonResult.ok();
+//    }
+//
+//    /**
+//     * 编辑部门
+//     *
+//     * @author newspaper
+//     * @date  2024/01/22 19:30
+//     */
+//    @ApiOperationSupport(order = 3)
+//    @ApiOperation("编辑部门")
+//    @CommonLog("编辑部门")
+//    @SaCheckPermission("/sys/department/edit")
+//    @PostMapping("/sys/department/edit")
+//    public CommonResult<String> edit(@RequestBody @Valid DepartmentEditParam departmentEditParam) {
+//        departmentService.edit(departmentEditParam);
+//        return CommonResult.ok();
+//    }
+//
+//    /**
+//     * 删除部门
+//     *
+//     * @author newspaper
+//     * @date  2024/01/22 19:30
+//     */
+//    @ApiOperationSupport(order = 4)
+//    @ApiOperation("删除部门")
+//    @CommonLog("删除部门")
+//    @SaCheckPermission("/sys/department/delete")
+//    @PostMapping("/sys/department/delete")
+//    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+//                                                   CommonValidList<DepartmentIdParam> departmentIdParamList) {
+//        departmentService.delete(departmentIdParamList);
+//        return CommonResult.ok();
+//    }
+//
+//    /**
+//     * 获取部门详情
+//     *
+//     * @author newspaper
+//     * @date  2024/01/22 19:30
+//     */
+//    @ApiOperationSupport(order = 5)
+//    @ApiOperation("获取部门详情")
+//    @SaCheckPermission("/sys/department/detail")
+//    @GetMapping("/sys/department/detail")
+//    public CommonResult<Department> detail(@Valid DepartmentIdParam departmentIdParam) {
+//        return CommonResult.data(departmentService.detail(departmentIdParam));
+//    }
+}

+ 106 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/entity/SysDepartment.java

@@ -0,0 +1,106 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fhs.core.trans.vo.TransPojo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import sun.plugin2.message.transport.Transport;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 部门实体
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Getter
+@Setter
+@TableName("department")
+public class SysDepartment implements TransPojo {
+
+    /** ID */
+    @TableId
+    @ApiModelProperty(value = "ID", position = 1)
+    private String id;
+
+    /** 部门名称 */
+    @ApiModelProperty(value = "部门名称", position = 2)
+    private String departmentName;
+
+    /** 部门照片 */
+    @ApiModelProperty(value = "部门照片", position = 3)
+    private String departmentImgUrl;
+
+    /** 上级部门ID */
+    @ApiModelProperty(value = "上级部门ID", position = 4)
+    private String parentId;
+
+    /** 所在区域 */
+    @ApiModelProperty(value = "所在区域", position = 5)
+    private String departmentRegion;
+
+    /** 详细地址 */
+    @ApiModelProperty(value = "详细地址", position = 6)
+    private String detailLocation;
+
+    /** 部门电话 */
+    @ApiModelProperty(value = "部门电话", position = 7)
+    private String departmentPhone;
+
+    /** 部门负责人ID */
+    @ApiModelProperty(value = "部门负责人ID", position = 8)
+    private String departmentManager;
+
+    /** 描述 */
+    @ApiModelProperty(value = "描述", position = 9)
+    private String remarks;
+
+    /** 排序码 */
+    @ApiModelProperty(value = "排序码", position = 10)
+    private Integer sortCode;
+
+    /** 组织ID */
+    @ApiModelProperty(value = "组织ID", position = 11)
+    private String orgId;
+
+    /** 删除标志 */
+    @ApiModelProperty(value = "删除标志", position = 12)
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private String deleteFlag;
+
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间", position = 13)
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 创建用户 */
+    @ApiModelProperty(value = "创建用户", position = 14)
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    /** 修改时间 */
+    @ApiModelProperty(value = "修改时间", position = 15)
+    @TableField(fill = FieldFill.UPDATE)
+    private Date updateTime;
+
+    /** 修改用户 */
+    @ApiModelProperty(value = "修改用户", position = 16)
+    @TableField(fill = FieldFill.UPDATE)
+    private String updateUser;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/enums/DepartmentEnum.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.enums;
+
+import lombok.Getter;
+
+/**
+ * 部门枚举
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Getter
+public enum DepartmentEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    DepartmentEnum(String value) {
+        this.value = value;
+    }
+}

+ 25 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/mapper/SysDepartmentMapper.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import vip.xiaonuo.sys.modular.department.entity.SysDepartment;
+
+/**
+ * 部门Mapper接口
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+public interface SysDepartmentMapper extends BaseMapper<SysDepartment> {
+}

+ 5 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/mapper/mapping/SysDepartmentMapper.xml

@@ -0,0 +1,5 @@
+<?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="vip.xiaonuo.sys.modular.department.mapper.SysDepartmentMapper">
+
+</mapper>

+ 74 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentAddParam.java

@@ -0,0 +1,74 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 部门添加参数
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Getter
+@Setter
+public class DepartmentAddParam {
+
+    /** 部门名称 */
+    @ApiModelProperty(value = "部门名称", position = 2)
+    private String departmentName;
+
+    /** 部门照片 */
+    @ApiModelProperty(value = "部门照片", position = 3)
+    private String departmentImgUrl;
+
+    /** 上级部门ID */
+    @ApiModelProperty(value = "上级部门ID", position = 4)
+    private String parentId;
+
+    /** 所在区域 */
+    @ApiModelProperty(value = "所在区域", position = 5)
+    private String departmentRegion;
+
+    /** 详细地址 */
+    @ApiModelProperty(value = "详细地址", position = 6)
+    private String detailLocation;
+
+    /** 部门电话 */
+    @ApiModelProperty(value = "部门电话", position = 7)
+    private String departmentPhone;
+
+    /** 部门负责人ID */
+    @ApiModelProperty(value = "部门负责人ID", position = 8)
+    private String departmentManager;
+
+    /** 描述 */
+    @ApiModelProperty(value = "描述", position = 9)
+    private String remarks;
+
+    /** 排序码 */
+    @ApiModelProperty(value = "排序码", position = 10)
+    private Integer sortCode;
+
+    /** 组织ID */
+    @ApiModelProperty(value = "组织ID", position = 11)
+    private String orgId;
+
+}

+ 79 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentEditParam.java

@@ -0,0 +1,79 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 部门编辑参数
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Getter
+@Setter
+public class DepartmentEditParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true, position = 1)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 部门名称 */
+    @ApiModelProperty(value = "部门名称", position = 2)
+    private String departmentName;
+
+    /** 部门照片 */
+    @ApiModelProperty(value = "部门照片", position = 3)
+    private String departmentImgUrl;
+
+    /** 上级部门ID */
+    @ApiModelProperty(value = "上级部门ID", position = 4)
+    private String parentId;
+
+    /** 所在区域 */
+    @ApiModelProperty(value = "所在区域", position = 5)
+    private String departmentRegion;
+
+    /** 详细地址 */
+    @ApiModelProperty(value = "详细地址", position = 6)
+    private String detailLocation;
+
+    /** 部门电话 */
+    @ApiModelProperty(value = "部门电话", position = 7)
+    private String departmentPhone;
+
+    /** 部门负责人ID */
+    @ApiModelProperty(value = "部门负责人ID", position = 8)
+    private String departmentManager;
+
+    /** 描述 */
+    @ApiModelProperty(value = "描述", position = 9)
+    private String remarks;
+
+    /** 排序码 */
+    @ApiModelProperty(value = "排序码", position = 10)
+    private Integer sortCode;
+
+    /** 组织ID */
+    @ApiModelProperty(value = "组织ID", position = 11)
+    private String orgId;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 部门Id参数
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Getter
+@Setter
+public class DepartmentIdParam {
+
+    /** ID */
+    @ApiModelProperty(value = "ID", required = true)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 51 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/param/DepartmentPageParam.java

@@ -0,0 +1,51 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 部门查询参数
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Getter
+@Setter
+public class DepartmentPageParam {
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @ApiModelProperty(value = "关键词")
+    private String searchKey;
+
+}

+ 80 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/service/SysDepartmentService.java

@@ -0,0 +1,80 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.sys.modular.department.entity.SysDepartment;
+import vip.xiaonuo.sys.modular.department.param.DepartmentAddParam;
+import vip.xiaonuo.sys.modular.department.param.DepartmentEditParam;
+import vip.xiaonuo.sys.modular.department.param.DepartmentIdParam;
+import vip.xiaonuo.sys.modular.department.param.DepartmentPageParam;
+
+import java.util.List;
+
+/**
+ * 部门Service接口
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+public interface SysDepartmentService extends IService<SysDepartment> {
+
+    /**
+     * 获取部门分页
+     *
+     * @author newspaper
+     * @date  2024/01/22 19:30
+     */
+    Page<SysDepartment> page(DepartmentPageParam departmentPageParam);
+
+    /**
+     * 添加部门
+     *
+     * @author newspaper
+     * @date  2024/01/22 19:30
+     */
+    void add(DepartmentAddParam departmentAddParam);
+
+    /**
+     * 编辑部门
+     *
+     * @author newspaper
+     * @date  2024/01/22 19:30
+     */
+    void edit(DepartmentEditParam departmentEditParam);
+
+    /**
+     * 删除部门
+     *
+     * @author newspaper
+     * @date  2024/01/22 19:30
+     */
+    void delete(List<DepartmentIdParam> departmentIdParamList);
+
+    /**
+     * 获取部门详情
+     *
+     * @author newspaper
+     * @date  2024/01/22 19:30
+     */
+    SysDepartment detail(DepartmentIdParam departmentIdParam);
+
+    /**
+     * 获取部门详情
+     *
+     * @author newspaper
+     * @date  2024/01/22 19:30
+     **/
+    SysDepartment queryEntity(String id);
+}

+ 94 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/service/impl/SysDepartmentServiceImpl.java

@@ -0,0 +1,94 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.sys.modular.department.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.sys.modular.department.entity.SysDepartment;
+import vip.xiaonuo.sys.modular.department.mapper.SysDepartmentMapper;
+import vip.xiaonuo.sys.modular.department.param.DepartmentAddParam;
+import vip.xiaonuo.sys.modular.department.param.DepartmentEditParam;
+import vip.xiaonuo.sys.modular.department.param.DepartmentIdParam;
+import vip.xiaonuo.sys.modular.department.param.DepartmentPageParam;
+import vip.xiaonuo.sys.modular.department.service.SysDepartmentService;
+
+import java.util.List;
+
+/**
+ * 部门Service接口实现类
+ *
+ * @author newspaper
+ * @date  2024/01/22 19:30
+ **/
+@Service
+public class SysDepartmentServiceImpl extends ServiceImpl<SysDepartmentMapper, SysDepartment> implements SysDepartmentService {
+
+    @Override
+    public Page<SysDepartment> page(DepartmentPageParam departmentPageParam) {
+        QueryWrapper<SysDepartment> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isAllNotEmpty(departmentPageParam.getSortField(), departmentPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(departmentPageParam.getSortOrder());
+            queryWrapper.orderBy(true, departmentPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(departmentPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(SysDepartment::getSortCode);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(DepartmentAddParam departmentAddParam) {
+        SysDepartment department = BeanUtil.toBean(departmentAddParam, SysDepartment.class);
+        this.save(department);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(DepartmentEditParam departmentEditParam) {
+        SysDepartment department = this.queryEntity(departmentEditParam.getId());
+        BeanUtil.copyProperties(departmentEditParam, department);
+        this.updateById(department);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<DepartmentIdParam> departmentIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(departmentIdParamList, DepartmentIdParam::getId));
+    }
+
+    @Override
+    public SysDepartment detail(DepartmentIdParam departmentIdParam) {
+        return this.queryEntity(departmentIdParam.getId());
+    }
+
+    @Override
+    public SysDepartment queryEntity(String id) {
+        SysDepartment department = this.getById(id);
+        if(ObjectUtil.isEmpty(department)) {
+            throw new CommonException("部门不存在,id值为:{}", id);
+        }
+        return department;
+    }
+}

+ 184 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/utils/UploadImage.java

@@ -0,0 +1,184 @@
+package vip.xiaonuo.sys.modular.user.utils;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.UUID;
+import com.jcraft.jsch.*;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.Date;
+
+@Component
+public class UploadImage {
+
+    @Value("${img.basePath}")
+    private   String basePath;
+
+    @Value("${img.ip}")
+    private    String ip ;
+//    private   String ip = "36.134.209.211";
+//    private   String ip = "192.168.0.13";
+
+    @Value("${img.user}")
+    private  String user ;
+
+//    private   String password = "!Hm537e@1";
+
+    @Value("${img.password}")
+    private   String password ;
+
+    @Value("${img.port}")
+    public   Integer port ;
+
+    @Value("${img.url}")
+    public   String url ;
+
+
+
+    /**
+     * 利用JSch包实现SFTP上传文件
+     * @param bytes  文件字节流
+     * @param fileName  文件名
+     * @throws Exception
+     */
+    public   void sshSftp(byte[] bytes,String path,String fileName) throws Exception{
+
+        // 服务器保存路径
+        String filepath = basePath +path ;
+        Session session = null;
+        Channel channel = null;
+
+        JSch jSch = new JSch();
+
+        if(port <=0){
+            //连接服务器,采用默认端口
+            session = jSch.getSession(user, ip);
+        }else{
+            //采用指定的端口连接服务器
+            session = jSch.getSession(user, ip ,port);
+        }
+
+        //如果服务器连接不上,则抛出异常
+        if (session == null) {
+            throw new Exception("session is null");
+        }
+
+        //设置登陆主机的密码
+        session.setPassword(password);//设置密码
+        //设置第一次登陆的时候提示,可选值:(ask | yes | no)
+        session.setConfig("userauth.gssapi-with-mic","no");
+        session.setConfig("StrictHostKeyChecking", "no");
+        //设置登陆超时时间
+        session.connect(30000);
+
+        OutputStream outstream = null;
+        try {
+            //创建sftp通信通道
+            channel = (Channel) session.openChannel("sftp");
+            channel.connect(1000);
+            ChannelSftp sftp = (ChannelSftp) channel;
+
+            //进入服务器指定的文件夹
+            sftp.cd(basePath);
+
+            SftpATTRS attrs = null;
+            try {
+                attrs = sftp.stat(filepath);
+            } catch (Exception e) {
+                // TODO: handle exception
+            }
+            if (attrs == null) {
+                sftp.mkdir(filepath);
+                System.out.println(("创建子目录:" + filepath));
+            }
+            sftp.cd(filepath);
+
+            //以下代码实现从本地上传一个文件到服务器,如果要实现下载,对换一下流就可以了
+            outstream = sftp.put(fileName);
+            outstream.write(bytes);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            //关流操作
+            if (outstream != null) {
+                outstream.flush();
+                outstream.close();
+            }
+            if (session != null) {
+                session.disconnect();
+            }
+            if (channel != null) {
+                channel.disconnect();
+            }
+            System.out.println("上传成功!");
+        }
+    }
+
+    //上传压缩的图片
+    public  String getImageCom(MultipartFile image) throws IOException {
+        //获取文件输入流
+        InputStream inputStream = image.getInputStream();
+        String originalFilename = image.getOriginalFilename();
+        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
+        String path = DateUtil.format(new Date(), "yyyy-MM");
+
+        try {
+            // 把图片读入到内存中
+            BufferedImage bufImg = ImageIO.read(inputStream);
+            // 压缩代码,存储图片文件byte数组
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            //防止图片变红,这一步非常重要
+            BufferedImage bufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB);
+            bufferedImage.createGraphics().drawImage(bufImg,0,0, Color.WHITE,null);
+            //先转成jpg格式来压缩,然后在通过OSS来修改成源文件本来的后缀格式
+            ImageIO.write(bufferedImage,"jpg",bos);
+            byte[] bytes = bos.toByteArray();
+            String imgname = UUID.randomUUID() + "." + filenameExtension;
+            sshSftp(bytes, path, imgname);
+            return url+ path + "/" + imgname;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "上传失败";
+        } finally {
+            inputStream.close();
+        }
+    }
+
+
+    //上传原图
+    public  String uploadImg( MultipartFile image ) {
+        String originalFilename = image.getOriginalFilename();
+        String filenameExtension = StringUtils.getFilenameExtension(originalFilename);
+        String path = DateUtil.format(new Date(), "yyyy-MM");
+        try {
+            InputStream inputStream = image.getInputStream();
+            BufferedInputStream in = new BufferedInputStream(inputStream);
+            ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
+
+            byte[] temp = new byte[1024];
+            int size = 0;
+            while ((size = in.read(temp)) != -1) {
+                out.write(temp, 0, size);
+            }
+            in.close();
+            byte[] content = out.toByteArray();
+            String imgname = UUID.randomUUID() + "." + filenameExtension;
+            sshSftp(content, path, imgname);
+            return url + path + "/" + imgname;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "上传失败";
+        }
+    }
+
+}
+
+
+