Browse Source

人员修改

Newspaper 1 year ago
parent
commit
01b62cda63
33 changed files with 613 additions and 1784 deletions
  1. 0 72
      snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/core/pojo/SaBaseClientLoginUser.java
  2. 5 81
      snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/core/pojo/SaBaseLoginUser.java
  3. 6 0
      snowy-plugin/snowy-plugin-biz/pom.xml
  4. 0 99
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/department/entity/Department.java
  5. 2 24
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/org/service/impl/BizOrgServiceImpl.java
  6. 0 160
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/controller/BizPositionController.java
  7. 0 63
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/entity/BizPosition.java
  8. 0 48
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/enums/BizPositionCategoryEnum.java
  9. 0 25
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/mapper/BizPositionMapper.java
  10. 0 6
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/mapper/mapping/BizPositionMapper.xml
  11. 0 55
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionAddParam.java
  12. 0 60
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionEditParam.java
  13. 0 35
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionIdParam.java
  14. 0 56
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionPageParam.java
  15. 0 44
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionSelectorPositionParam.java
  16. 0 104
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/service/BizPositionService.java
  17. 0 260
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/service/impl/BizPositionServiceImpl.java
  18. 36 23
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/controller/BizUserController.java
  19. 15 125
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java
  20. 3 11
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/BizUserService.java
  21. 84 112
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/impl/BizUserServiceImpl.java
  22. 184 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/utils/BizUploadImage.java
  23. 0 1
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/department/entity/SysDepartment.java
  24. 17 2
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/controller/SysUserController.java
  25. 0 86
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/result/SysUserResult.java
  26. 1 1
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java
  27. 45 34
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java
  28. 184 0
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/utils/SysUploadImage.java
  29. 0 184
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/utils/UploadImage.java
  30. 1 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/controller/FeedingThresholdController.java
  31. 1 1
      snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/service/FeedingThresholdService.java
  32. 12 11
      snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/service/impl/FeedingThresholdServiceImpl.java
  33. 17 0
      snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/vo/FeedingThresholdVo2.java

+ 0 - 72
snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/core/pojo/SaBaseClientLoginUser.java

@@ -37,10 +37,6 @@ public abstract class SaBaseClientLoginUser {
     @ApiModelProperty(value = "头像,图片base64", position = 2)
     private String avatar;
 
-    /** 签名 */
-    @ApiModelProperty(value = "签名,图片base64", position = 3)
-    private String signature;
-
     /** 账号 */
     @ApiModelProperty(value = "账号", position = 4)
     private String account;
@@ -57,90 +53,22 @@ public abstract class SaBaseClientLoginUser {
     @ApiModelProperty(value = "性别", position = 7)
     private String gender;
 
-    /** 年龄 */
-    @ApiModelProperty(value = "年龄", position = 8)
-    private String age;
-
-    /** 出生日期 */
-    @ApiModelProperty(value = "出生日期", position = 9)
-    private String birthday;
-
-    /** 民族 */
-    @ApiModelProperty(value = "民族", position = 10)
-    private String nation;
-
-    /** 籍贯 */
-    @ApiModelProperty(value = "籍贯", position = 11)
-    private String nativePlace;
-
     /** 家庭住址 */
     @ApiModelProperty(value = "家庭住址", position = 12)
     private String homeAddress;
 
-    /** 通信地址 */
-    @ApiModelProperty(value = "通信地址", position = 13)
-    private String mailingAddress;
-
-    /** 证件类型 */
-    @ApiModelProperty(value = "证件类型", position = 14)
-    private String idCardType;
-
     /** 证件号码 */
     @ApiModelProperty(value = "证件号码", position = 15)
     private String idCardNumber;
 
-    /** 文化程度 */
-    @ApiModelProperty(value = "文化程度", position = 16)
-    private String cultureLevel;
-
-    /** 政治面貌 */
-    @ApiModelProperty(value = "政治面貌", position = 17)
-    private String politicalOutlook;
-
-    /** 毕业院校 */
-    @ApiModelProperty(value = "毕业院校", position = 18)
-    private String college;
-
-    /** 学历 */
-    @ApiModelProperty(value = "学历", position = 19)
-    private String education;
-
-    /** 学制 */
-    @ApiModelProperty(value = "学制", position = 20)
-    private String eduLength;
-
-    /** 学位 */
-    @ApiModelProperty(value = "学位", position = 21)
-    private String degree;
-
     /** 手机 */
     @ApiModelProperty(value = "手机", position = 22)
     private String phone;
 
-    /** 邮箱 */
-    @ApiModelProperty(value = "邮箱", position = 23)
-    private String email;
-
-    /** 家庭电话 */
-    @ApiModelProperty(value = "家庭电话", position = 24)
-    private String homeTel;
-
-    /** 办公电话 */
-    @ApiModelProperty(value = "办公电话", position = 25)
-    private String officeTel;
-
-    /** 紧急联系人 */
-    @ApiModelProperty(value = "紧急联系人", position = 26)
-    private String emergencyContact;
-
     /** 紧急联系人电话 */
     @ApiModelProperty(value = "紧急联系人电话", position = 27)
     private String emergencyPhone;
 
-    /** 紧急联系人地址 */
-    @ApiModelProperty(value = "紧急联系人地址", position = 28)
-    private String emergencyAddress;
-
     /** 上次登录ip */
     @ApiModelProperty(value = "上次登录ip", position = 29)
     private String lastLoginIp;

+ 5 - 81
snowy-plugin-api/snowy-plugin-auth-api/src/main/java/vip/xiaonuo/auth/core/pojo/SaBaseLoginUser.java

@@ -37,10 +37,6 @@ public abstract class SaBaseLoginUser {
     @ApiModelProperty(value = "头像", position = 3)
     private String avatar;
 
-    /** 签名 */
-    @ApiModelProperty(value = "签名", position = 4)
-    private String signature;
-
     /** 账号 */
     @ApiModelProperty(value = "账号", position = 5)
     private String account;
@@ -57,90 +53,30 @@ public abstract class SaBaseLoginUser {
     @ApiModelProperty(value = "性别", position = 8)
     private String gender;
 
-    /** 年龄 */
-    @ApiModelProperty(value = "年龄", position = 9)
-    private String age;
-
-    /** 出生日期 */
-    @ApiModelProperty(value = "出生日期", position = 10)
-    private String birthday;
-
-    /** 民族 */
-    @ApiModelProperty(value = "民族", position = 11)
-    private String nation;
-
-    /** 籍贯 */
-    @ApiModelProperty(value = "籍贯", position = 12)
-    private String nativePlace;
-
     /** 家庭住址 */
     @ApiModelProperty(value = "家庭住址", position = 13)
     private String homeAddress;
 
     /** 通信地址 */
     @ApiModelProperty(value = "通信地址", position = 14)
-    private String mailingAddress;
+    private String detailAddress;
 
     /** 证件类型 */
     @ApiModelProperty(value = "证件类型", position = 15)
     private String idCardType;
 
-    /** 证件号码 */
-    @ApiModelProperty(value = "证件号码", position = 16)
-    private String idCardNumber;
-
     /** 文化程度 */
     @ApiModelProperty(value = "文化程度", position = 17)
     private String cultureLevel;
 
-    /** 政治面貌 */
-    @ApiModelProperty(value = "政治面貌", position = 18)
-    private String politicalOutlook;
-
-    /** 毕业院校 */
-    @ApiModelProperty(value = "毕业院校", position = 19)
-    private String college;
-
-    /** 学历 */
-    @ApiModelProperty(value = "学历", position = 20)
-    private String education;
-
-    /** 学制 */
-    @ApiModelProperty(value = "学制", position = 21)
-    private String eduLength;
-
-    /** 学位 */
-    @ApiModelProperty(value = "学位", position = 22)
-    private String degree;
-
     /** 手机 */
     @ApiModelProperty(value = "手机", position = 23)
     private String phone;
 
-    /** 邮箱 */
-    @ApiModelProperty(value = "邮箱", position = 24)
-    private String email;
-
-    /** 家庭电话 */
-    @ApiModelProperty(value = "家庭电话", position = 25)
-    private String homeTel;
-
-    /** 办公电话 */
-    @ApiModelProperty(value = "办公电话", position = 26)
-    private String officeTel;
-
-    /** 紧急联系人 */
-    @ApiModelProperty(value = "紧急联系人", position = 27)
-    private String emergencyContact;
-
     /** 紧急联系人电话 */
     @ApiModelProperty(value = "紧急联系人电话", position = 28)
     private String emergencyPhone;
 
-    /** 紧急联系人地址 */
-    @ApiModelProperty(value = "紧急联系人地址", position = 29)
-    private String emergencyAddress;
-
     /** 员工编号 */
     @ApiModelProperty(value = "员工编号", position = 30)
     private String empNo;
@@ -158,24 +94,12 @@ public abstract class SaBaseLoginUser {
     private String orgName;
 
     /** 职位id */
-    @ApiModelProperty(value = "职位id", position = 34)
-    private String positionId;
+    @ApiModelProperty(value = "部门id", position = 34)
+    private String departmentId;
 
     /** 职位名称 */
-    @ApiModelProperty(value = "职位名称", position = 35)
-    private String positionName;
-
-    /** 职级 */
-    @ApiModelProperty(value = "职级", position = 36)
-    private String positionLevel;
-
-    /** 主管id */
-    @ApiModelProperty(value = "主管id", position = 37)
-    private String directorId;
-
-    /** 兼任信息 */
-    @ApiModelProperty(value = "兼任信息", position = 38)
-    private String positionJson;
+    @ApiModelProperty(value = "部门名称", position = 35)
+    private String departmentName;
 
     /** 上次登录ip */
     @ApiModelProperty(value = "上次登录ip", position = 39)

+ 6 - 0
snowy-plugin/snowy-plugin-biz/pom.xml

@@ -38,5 +38,11 @@
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-plugin-dev-api</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.jcraft</groupId>
+            <artifactId>jsch</artifactId>
+            <version>0.1.54</version>
+        </dependency>
     </dependencies>
 </project>

+ 0 - 99
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/department/entity/Department.java

@@ -1,99 +0,0 @@
-/*
- * 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.biz.modular.department.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fhs.core.trans.anno.Trans;
-import com.fhs.core.trans.constant.TransType;
-import com.fhs.core.trans.vo.TransPojo;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-import vip.xiaonuo.common.pojo.CommonEntity;
-
-/**
- * 部门实体
- *
- * @author newspaper
- * @date  2023/12/13 08:44
- **/
-@Getter
-@Setter
-@TableName(value = "department" ,autoResultMap = true)
-public class Department extends CommonEntity implements TransPojo {
-
-    /** ID */
-    @TableId
-    @ApiModelProperty(value = "ID", position = 1)
-    private String id;
-
-    /** 部门名称 */
-    @ApiModelProperty(value = "部门名称", position = 2)
-    private String departmentName;
-
-    /** 部门照片 */
-    @ApiModelProperty(value = "部门照片id", position = 3)
-    private String departmentImgId;
-
-    /** 上级部门ID */
-    @ApiModelProperty(value = "上级部门ID", position = 4)
-    @Trans(type = TransType.SIMPLE, target = Department.class, fields = "departmentName", alias = "parent", ref = "parentName")
-    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)
-    @TableField(fill = FieldFill.INSERT)
-    private String orgId;
-
-    /** 负责人名称 */
-    @ApiModelProperty(value = "负责人", position = 12)
-    @TableField(exist = false)
-    private String managerName;
-
-    /** 上级部门 */
-    @ApiModelProperty(value = "上级部门", position = 13)
-    @TableField(exist = false)
-    private String parentName;
-
-    /** 部门照片 */
-    @ApiModelProperty(value = "部门照片", position = 3)
-    @TableField(exist = false)
-    private String departmentImgUrl;
-}

+ 2 - 24
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/org/service/impl/BizOrgServiceImpl.java

@@ -36,8 +36,6 @@ import vip.xiaonuo.biz.modular.org.enums.BizOrgCategoryEnum;
 import vip.xiaonuo.biz.modular.org.mapper.BizOrgMapper;
 import vip.xiaonuo.biz.modular.org.param.*;
 import vip.xiaonuo.biz.modular.org.service.BizOrgService;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
-import vip.xiaonuo.biz.modular.position.service.BizPositionService;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.service.BizUserService;
 import vip.xiaonuo.common.cache.CommonCacheOperator;
@@ -71,9 +69,6 @@ public class BizOrgServiceImpl extends ServiceImpl<BizOrgMapper, BizOrg> impleme
     private SysRoleApi sysRoleApi;
 
     @Resource
-    private BizPositionService bizPositionService;
-
-    @Resource
     private BizUserService bizUserService;
 
     @Override
@@ -213,28 +208,11 @@ public class BizOrgServiceImpl extends ServiceImpl<BizOrgMapper, BizOrg> impleme
             if(hasOrgUser) {
                 throw new CommonException("请先删除机构下的人员");
             }
-            // 机构下有人不能删除(兼任机构)
-            List<String> positionJsonList = bizUserService.list(new LambdaQueryWrapper<BizUser>()
-                    .isNotNull(BizUser::getPositionJson)).stream().map(BizUser::getPositionJson).collect(Collectors.toList());
-            if(ObjectUtil.isNotEmpty(positionJsonList)) {
-                List<String> positionOrgIdList = CollectionUtil.newArrayList();
-                positionJsonList.forEach(positionJson -> JSONUtil.toList(JSONUtil.parseArray(positionJson), JSONObject.class)
-                        .forEach(jsonObject -> positionOrgIdList.add(jsonObject.getStr("orgId"))));
-                boolean hasPositionUser = CollectionUtil.intersectionDistinct(toDeleteOrgIdList, CollectionUtil.removeNull(positionOrgIdList)).size() > 0;
-                if(hasPositionUser) {
-                    throw new CommonException("请先删除机构下的人员");
-                }
-            }
             // 机构下有角色不能删除
             boolean hasRole = sysRoleApi.orgHasRole(toDeleteOrgIdList);
             if(hasRole) {
                 throw new CommonException("请先删除机构下的角色");
             }
-            // 机构下有岗位不能删除
-            boolean hasPosition = bizPositionService.count(new LambdaQueryWrapper<BizPosition>().in(BizPosition::getOrgId, toDeleteOrgIdList)) > 0;
-            if(hasPosition) {
-                throw new CommonException("请先删除机构下的岗位");
-            }
             // 执行删除
             this.removeByIds(toDeleteOrgIdList);
 
@@ -375,8 +353,8 @@ public class BizOrgServiceImpl extends ServiceImpl<BizOrgMapper, BizOrg> impleme
             return new Page<>();
         }
         // 只查询部分字段
-        lambdaQueryWrapper.select(BizUser::getId, BizUser::getAvatar, BizUser::getOrgId, BizUser::getPositionId, BizUser::getAccount,
-                BizUser::getName, BizUser::getSortCode, BizUser::getGender, BizUser::getEntryDate);
+        lambdaQueryWrapper.select(BizUser::getId, BizUser::getAvatar, BizUser::getOrgId, BizUser::getAccount,
+                BizUser::getName, BizUser::getSortCode, BizUser::getEntryDate);
         if (ObjectUtil.isNotEmpty(bizOrgSelectorUserParam.getOrgId())) {
             // 如果机构id不为空,则查询该机构及其子机构下的所有人
             List<String> childOrgIdList = CollStreamUtil.toList(this.getChildListById(this

+ 0 - 160
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/controller/BizPositionController.java

@@ -1,160 +0,0 @@
-/*
- * 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.biz.modular.position.controller;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.hutool.core.lang.tree.Tree;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.github.xiaoymin.knife4j.annotations.ApiSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
-import vip.xiaonuo.biz.modular.position.param.*;
-import vip.xiaonuo.biz.modular.position.service.BizPositionService;
-import vip.xiaonuo.common.annotation.CommonLog;
-import vip.xiaonuo.common.pojo.CommonResult;
-import vip.xiaonuo.common.pojo.CommonValidList;
-
-import javax.annotation.Resource;
-import javax.validation.Valid;
-import javax.validation.constraints.NotEmpty;
-import java.util.List;
-
-/**
- * 岗位控制器
- *
- * @author xuyuxiang
- * @date 2022/4/25 20:40
- */
-@Api(tags = "岗位控制器")
-@ApiSupport(author = "SNOWY_TEAM", order = 2)
-@RestController
-@Validated
-public class BizPositionController {
-
-    @Resource
-    private BizPositionService bizPositionService;
-
-    /**
-     * 获取岗位分页
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:00
-     */
-    @ApiOperationSupport(order = 1)
-    @ApiOperation("获取岗位分页")
-    @SaCheckPermission("/biz/position/page")
-    @GetMapping("/biz/position/page")
-    public CommonResult<Page<BizPosition>> page(BizPositionPageParam bizPositionPageParam) {
-        return CommonResult.data(bizPositionService.page(bizPositionPageParam));
-    }
-
-    /**
-     * 添加岗位
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:47
-     */
-    @ApiOperationSupport(order = 2)
-    @ApiOperation("添加岗位")
-    @CommonLog("添加岗位")
-    @SaCheckPermission("/biz/position/add")
-    @PostMapping("/biz/position/add")
-    public CommonResult<String> add(@RequestBody @Valid BizPositionAddParam bizPositionAddParam) {
-        bizPositionService.add(bizPositionAddParam);
-        return CommonResult.ok();
-    }
-
-    /**
-     * 编辑岗位
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:47
-     */
-    @ApiOperationSupport(order = 3)
-    @ApiOperation("编辑岗位")
-    @CommonLog("编辑岗位")
-    @SaCheckPermission("/biz/position/edit")
-    @PostMapping("/biz/position/edit")
-    public CommonResult<String> edit(@RequestBody @Valid BizPositionEditParam bizPositionEditParam) {
-        bizPositionService.edit(bizPositionEditParam);
-        return CommonResult.ok();
-    }
-
-    /**
-     * 删除岗位
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:00
-     */
-    @ApiOperationSupport(order = 4)
-    @ApiOperation("删除岗位")
-    @CommonLog("删除岗位")
-    @SaCheckPermission("/biz/position/delete")
-    @PostMapping("/biz/position/delete")
-    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
-                                                   CommonValidList<BizPositionIdParam> bizPositionIdParamList) {
-        bizPositionService.delete(bizPositionIdParamList);
-        return CommonResult.ok();
-    }
-
-    /**
-     * 获取岗位详情
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:00
-     */
-    @ApiOperationSupport(order = 5)
-    @ApiOperation("获取岗位详情")
-    @SaCheckPermission("/biz/position/detail")
-    @GetMapping("/biz/position/detail")
-    public CommonResult<BizPosition> detail(@Valid BizPositionIdParam bizPositionIdParam) {
-        return CommonResult.data(bizPositionService.detail(bizPositionIdParam));
-    }
-
-    /* ====岗位部分所需要用到的选择器==== */
-
-    /**
-     * 获取组织树选择器
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:00
-     */
-    @ApiOperationSupport(order = 6)
-    @ApiOperation("获取组织树选择器")
-    @SaCheckPermission("/biz/position/orgTreeSelector")
-    @GetMapping("/biz/position/orgTreeSelector")
-    public CommonResult<List<Tree<String>>> orgTreeSelector() {
-        return CommonResult.data(bizPositionService.orgTreeSelector());
-    }
-
-    /**
-     * 获取岗位选择器
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:00
-     */
-    @ApiOperationSupport(order = 7)
-    @ApiOperation("获取岗位选择器")
-    @SaCheckPermission("/biz/position/positionSelector")
-    @GetMapping("/biz/position/positionSelector")
-    public CommonResult<Page<BizPosition>> positionSelector(BizPositionSelectorPositionParam bizPositionSelectorPositionParam) {
-        return CommonResult.data(bizPositionService.positionSelector(bizPositionSelectorPositionParam));
-    }
-}

+ 0 - 63
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/entity/BizPosition.java

@@ -1,63 +0,0 @@
-/*
- * 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.biz.modular.position.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fhs.core.trans.vo.TransPojo;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-import vip.xiaonuo.common.pojo.CommonEntity;
-
-/**
- * 岗位实体
- *
- * @author xuyuxiang
- * @date 2022/4/21 16:13
- **/
-@Getter
-@Setter
-@TableName("SYS_POSITION")
-public class BizPosition extends CommonEntity implements TransPojo {
-
-    /** id */
-    @ApiModelProperty(value = "id", position = 1)
-    private String id;
-
-    /** 机构id */
-    @ApiModelProperty(value = "机构id", position = 2)
-    private String orgId;
-
-    /** 名称 */
-    @ApiModelProperty(value = "名称", position = 3)
-    private String name;
-
-    /** 编码 */
-    @ApiModelProperty(value = "编码", position = 4)
-    private String code;
-
-    /** 分类 */
-    @ApiModelProperty(value = "分类", position = 5)
-    private String category;
-
-    /** 排序码 */
-    @ApiModelProperty(value = "排序码", position = 6)
-    private Integer sortCode;
-
-    /** 扩展信息 */
-    @ApiModelProperty(value = "扩展信息", position = 7)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String extJson;
-}

+ 0 - 48
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/enums/BizPositionCategoryEnum.java

@@ -1,48 +0,0 @@
-/*
- * 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.biz.modular.position.enums;
-
-import lombok.Getter;
-import vip.xiaonuo.common.exception.CommonException;
-
-/**
- * 岗位分类枚举
- *
- * @author xuyuxiang
- * @date 2022/4/21 19:56
- **/
-@Getter
-public enum BizPositionCategoryEnum {
-
-    /** 高层 */
-    HIGH("HIGH"),
-
-    /** 中层 */
-    MIDDLE("MIDDLE"),
-
-    /** 基层 */
-    LOW("LOW");
-
-    private final String value;
-
-    BizPositionCategoryEnum(String value) {
-        this.value = value;
-    }
-
-    public static void validate(String value) {
-        boolean flag = HIGH.getValue().equals(value) || MIDDLE.getValue().equals(value) || LOW.getValue().equals(value);
-        if(!flag) {
-            throw new CommonException("不支持的岗位分类:{}", value);
-        }
-    }
-}

+ 0 - 25
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/mapper/BizPositionMapper.java

@@ -1,25 +0,0 @@
-/*
- * 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.biz.modular.position.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
-
-/**
- * 岗位Mapper接口
- *
- * @author xuyuxiang
- * @date 2022/4/21 18:37
- **/
-public interface BizPositionMapper extends BaseMapper<BizPosition> {
-}

+ 0 - 6
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/mapper/mapping/BizPositionMapper.xml

@@ -1,6 +0,0 @@
-<?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.biz.modular.position.mapper.BizPositionMapper">
-
-
-</mapper>

+ 0 - 55
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionAddParam.java

@@ -1,55 +0,0 @@
-/*
- * 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.biz.modular.position.param;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * 岗位添加参数
- *
- * @author xuyuxiang
- * @date 2022/4/21 16:13
- **/
-@Getter
-@Setter
-public class BizPositionAddParam {
-
-    /** 机构id */
-    @ApiModelProperty(value = "机构id", required = true, position = 1)
-    @NotBlank(message = "orgId不能为空")
-    private String orgId;
-
-    /** 名称 */
-    @ApiModelProperty(value = "名称", required = true, position = 2)
-    @NotBlank(message = "name不能为空")
-    private String name;
-
-    /** 分类 */
-    @ApiModelProperty(value = "分类", required = true, position = 3)
-    @NotBlank(message = "category不能为空")
-    private String category;
-
-    /** 排序码 */
-    @ApiModelProperty(value = "排序码", required = true, position = 4)
-    @NotNull(message = "sortCode不能为空")
-    private Integer sortCode;
-
-    /** 扩展JSON */
-    @ApiModelProperty(value = "扩展JSON", position = 5)
-    private String extJson;
-}

+ 0 - 60
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionEditParam.java

@@ -1,60 +0,0 @@
-/*
- * 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.biz.modular.position.param;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * 岗位编辑参数
- *
- * @author xuyuxiang
- * @date 2022/4/21 16:13
- **/
-@Getter
-@Setter
-public class BizPositionEditParam {
-
-    /** id */
-    @ApiModelProperty(value = "id", required = true, position = 1)
-    @NotBlank(message = "id不能为空")
-    private String id;
-
-    /** 机构id */
-    @ApiModelProperty(value = "机构id", required = true, position = 2)
-    @NotBlank(message = "orgId不能为空")
-    private String orgId;
-
-    /** 名称 */
-    @ApiModelProperty(value = "名称", required = true, position = 3)
-    @NotBlank(message = "name不能为空")
-    private String name;
-
-    /** 分类 */
-    @ApiModelProperty(value = "分类", required = true, position = 4)
-    @NotBlank(message = "category不能为空")
-    private String category;
-
-    /** 排序码 */
-    @ApiModelProperty(value = "排序码", required = true, position = 5)
-    @NotNull(message = "sortCode不能为空")
-    private Integer sortCode;
-
-    /** 扩展JSON */
-    @ApiModelProperty(value = "扩展JSON", position = 6)
-    private String extJson;
-}

+ 0 - 35
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionIdParam.java

@@ -1,35 +0,0 @@
-/*
- * 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.biz.modular.position.param;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * 岗位Id参数
- *
- * @author xuyuxiang
- * @date 2022/4/21 16:13
- **/
-@Getter
-@Setter
-public class BizPositionIdParam {
-
-    /** id */
-    @ApiModelProperty(value = "id", required = true)
-    @NotBlank(message = "id不能为空")
-    private String id;
-}

+ 0 - 56
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionPageParam.java

@@ -1,56 +0,0 @@
-/*
- * 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.biz.modular.position.param;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 岗位查询参数
- *
- * @author xuyuxiang
- * @date 2022/4/21 16:13
- **/
-@Getter
-@Setter
-public class BizPositionPageParam {
-
-    /** 当前页 */
-    @ApiModelProperty(value = "当前页码")
-    private Integer current;
-
-    /** 每页条数 */
-    @ApiModelProperty(value = "每页条数")
-    private Integer size;
-
-    /** 排序字段 */
-    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
-    private String sortField;
-
-    /** 排序方式 */
-    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
-    private String sortOrder;
-
-    /** 机构id */
-    @ApiModelProperty(value = "机构id")
-    private String orgId;
-
-    /** 岗位分类 */
-    @ApiModelProperty(value = "岗位分类")
-    private String category;
-
-    /** 名称关键词 */
-    @ApiModelProperty(value = "名称关键词")
-    private String searchKey;
-}

+ 0 - 44
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/param/BizPositionSelectorPositionParam.java

@@ -1,44 +0,0 @@
-/*
- * 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.biz.modular.position.param;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 岗位选择器参数
- *
- * @author xuyuxiang
- * @date 2022/4/21 16:13
- **/
-@Getter
-@Setter
-public class BizPositionSelectorPositionParam {
-
-    /** 当前页 */
-    @ApiModelProperty(value = "当前页码")
-    private Integer current;
-
-    /** 每页条数 */
-    @ApiModelProperty(value = "每页条数")
-    private Integer size;
-
-    /** 机构id */
-    @ApiModelProperty(value = "机构id")
-    private String orgId;
-
-    /** 名称关键词 */
-    @ApiModelProperty(value = "名称关键词")
-    private String searchKey;
-}

+ 0 - 104
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/service/BizPositionService.java

@@ -1,104 +0,0 @@
-/*
- * 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.biz.modular.position.service;
-
-import cn.hutool.core.lang.tree.Tree;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
-import vip.xiaonuo.biz.modular.position.param.*;
-
-import java.util.List;
-
-/**
- * 岗位Service接口
- *
- * @author xuyuxiang
- * @date 2022/4/21 18:35
- **/
-public interface BizPositionService extends IService<BizPosition> {
-
-    /**
-     * 获取岗位分页
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:08
-     */
-    Page<BizPosition> page(BizPositionPageParam bizPositionPageParam);
-
-    /**
-     * 添加岗位
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:48
-     */
-    void add(BizPositionAddParam bizPositionAddParam);
-
-    /**
-     * 编辑岗位
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 21:13
-     */
-    void edit(BizPositionEditParam bizPositionEditParam);
-
-    /**
-     * 删除岗位
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 21:18
-     */
-    void delete(List<BizPositionIdParam> bizPositionIdParamList);
-
-    /**
-     * 获取岗位详情
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 21:18
-     */
-    BizPosition detail(BizPositionIdParam bizPositionIdParam);
-
-    /**
-     * 获取岗位详情
-     *
-     * @author xuyuxiang
-     * @date 2022/7/25 19:42
-     **/
-    BizPosition queryEntity(String id);
-
-    /**
-     * 根据机构id和岗位名称获取岗位id,有则返回,无则创建
-     *
-     * @author xuyuxiang
-     * @date 2022/8/15 14:55
-     **/
-    String getPositionIdByPositionNameWithCreate(String orgId, String positionName);
-
-    /* ====岗位部分所需要用到的选择器==== */
-
-    /**
-     * 获取机构树选择器
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:08
-     */
-    List<Tree<String>> orgTreeSelector();
-
-    /**
-     * 获取岗位选择器
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:08
-     */
-    Page<BizPosition> positionSelector(BizPositionSelectorPositionParam bizPositionSelectorPositionParam);
-}

+ 0 - 260
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/position/service/impl/BizPositionServiceImpl.java

@@ -1,260 +0,0 @@
-/*
- * 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.biz.modular.position.service.impl;
-
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollStreamUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.lang.tree.Tree;
-import cn.hutool.core.lang.tree.TreeNode;
-import cn.hutool.core.lang.tree.TreeUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.RandomUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-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.auth.core.util.StpLoginUserUtil;
-import vip.xiaonuo.biz.core.enums.BizDataTypeEnum;
-import vip.xiaonuo.biz.modular.org.entity.BizOrg;
-import vip.xiaonuo.biz.modular.org.service.BizOrgService;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
-import vip.xiaonuo.biz.modular.position.enums.BizPositionCategoryEnum;
-import vip.xiaonuo.biz.modular.position.mapper.BizPositionMapper;
-import vip.xiaonuo.biz.modular.position.param.*;
-import vip.xiaonuo.biz.modular.position.service.BizPositionService;
-import vip.xiaonuo.biz.modular.user.entity.BizUser;
-import vip.xiaonuo.biz.modular.user.service.BizUserService;
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
-import vip.xiaonuo.common.exception.CommonException;
-import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
-import vip.xiaonuo.common.page.CommonPageRequest;
-
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * 岗位Service接口实现类
- *
- * @author xuyuxiang
- * @date 2022/2/23 18:43
- **/
-@Service
-public class BizPositionServiceImpl extends ServiceImpl<BizPositionMapper, BizPosition> implements BizPositionService {
-
-    @Resource
-    private BizOrgService bizOrgService;
-
-    @Resource
-    private BizUserService bizUserService;
-
-    @Override
-    public Page<BizPosition> page(BizPositionPageParam bizPositionPageParam) {
-        QueryWrapper<BizPosition> queryWrapper = new QueryWrapper<>();
-        // 查询部分字段
-        queryWrapper.lambda().select(BizPosition::getId, BizPosition::getOrgId, BizPosition::getName,
-                BizPosition::getCategory, BizPosition::getSortCode);
-        if(ObjectUtil.isNotEmpty(bizPositionPageParam.getOrgId())) {
-            queryWrapper.lambda().eq(BizPosition::getOrgId, bizPositionPageParam.getOrgId());
-        }
-        if(ObjectUtil.isNotEmpty(bizPositionPageParam.getCategory())) {
-            queryWrapper.lambda().eq(BizPosition::getCategory, bizPositionPageParam.getCategory());
-        }
-        if(ObjectUtil.isAllNotEmpty(bizPositionPageParam.getSortField(), bizPositionPageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(bizPositionPageParam.getSortOrder());
-            queryWrapper.orderBy(true, bizPositionPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(bizPositionPageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(BizPosition::getSortCode);
-        }
-        // 校验数据范围
-        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-        if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            queryWrapper.lambda().in(BizPosition::getOrgId, loginUserDataScope);
-        } else {
-            return new Page<>();
-        }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void add(BizPositionAddParam bizPositionAddParam) {
-        BizPositionCategoryEnum.validate(bizPositionAddParam.getCategory());
-        // 校验数据范围
-        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-        if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            if(!loginUserDataScope.contains(bizPositionAddParam.getOrgId())) {
-                throw new CommonException("您没有权限在该机构下增加岗位,机构id:{}", bizPositionAddParam.getOrgId());
-            }
-        } else {
-            throw new CommonException("您没有权限在该机构下增加岗位,机构id:{}", bizPositionAddParam.getOrgId());
-        }
-        BizPosition bizPosition = BeanUtil.toBean(bizPositionAddParam, BizPosition.class);
-        boolean repeatName = this.count(new LambdaQueryWrapper<BizPosition>().eq(BizPosition::getOrgId, bizPosition.getOrgId())
-                .eq(BizPosition::getName, bizPosition.getName())) > 0;
-        if(repeatName) {
-            throw new CommonException("同机构下存在重复的岗位,名称为:{}", bizPosition.getName());
-        }
-        bizPosition.setCode(RandomUtil.randomString(10));
-        this.save(bizPosition);
-
-        // 发布增加事件
-        CommonDataChangeEventCenter.doAddWithData(BizDataTypeEnum.POSITION.getValue(), JSONUtil.createArray().put(bizPosition));
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void edit(BizPositionEditParam bizPositionEditParam) {
-        BizPositionCategoryEnum.validate(bizPositionEditParam.getCategory());
-        BizPosition bizPosition = this.queryEntity(bizPositionEditParam.getId());
-        // 校验数据范围
-        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-        if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            if(!loginUserDataScope.contains(bizPositionEditParam.getOrgId())) {
-                throw new CommonException("您没有权限编辑该机构下的岗位,机构id:{}", bizPositionEditParam.getOrgId());
-            }
-        } else {
-            if(!bizPositionEditParam.getId().equals(StpUtil.getLoginIdAsString())) {
-                throw new CommonException("您没有权限编辑该机构下的岗位,机构id:{}", bizPositionEditParam.getOrgId());
-            }
-        }
-        BeanUtil.copyProperties(bizPositionEditParam, bizPosition);
-        boolean repeatName = this.count(new LambdaQueryWrapper<BizPosition>().eq(BizPosition::getOrgId, bizPosition.getOrgId())
-                .eq(BizPosition::getName, bizPosition.getName()).ne(BizPosition::getId, bizPosition.getId())) > 0;
-        if(repeatName) {
-            throw new CommonException("同机构下存在重复的岗位,名称为:{}", bizPosition.getName());
-        }
-        this.updateById(bizPosition);
-
-        // 发布更新事件
-        CommonDataChangeEventCenter.doUpdateWithData(BizDataTypeEnum.POSITION.getValue(), JSONUtil.createArray().put(bizPosition));
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void delete(List<BizPositionIdParam> bizPositionIdParamList) {
-        List<String> positionIdList = CollStreamUtil.toList(bizPositionIdParamList, BizPositionIdParam::getId);
-        if(ObjectUtil.isNotEmpty(positionIdList)) {
-            // 获取这些岗位的的机构id集合
-            Set<String> positionOrgIdList = this.listByIds(positionIdList).stream().map(BizPosition::getOrgId).collect(Collectors.toSet());
-            // 校验数据范围
-            List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-            if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-                if(!loginUserDataScope.containsAll(positionOrgIdList)) {
-                    throw new CommonException("您没有权限删除这些机构下的岗位,机构id:{}", positionOrgIdList);
-                }
-            } else {
-                throw new CommonException("您没有权限删除这些机构下的岗位,机构id:{}", positionOrgIdList);
-            }
-            // 岗位下有人不能删除(直属岗位)
-            boolean hasOrgUser = bizUserService.count(new LambdaQueryWrapper<BizUser>().in(BizUser::getPositionId, positionIdList)) > 0;
-            if(hasOrgUser) {
-                throw new CommonException("请先删除岗位下的用户");
-            }
-            // 岗位下有人不能删除(兼任岗位)
-            List<String> positionJsonList = bizUserService.list(new LambdaQueryWrapper<BizUser>()
-                    .isNotNull(BizUser::getPositionJson)).stream().map(BizUser::getPositionJson).collect(Collectors.toList());
-            if(ObjectUtil.isNotEmpty(positionJsonList)) {
-                List<String> extPositionIdList = CollectionUtil.newArrayList();
-                positionJsonList.forEach(positionJson -> JSONUtil.toList(JSONUtil.parseArray(positionJson), JSONObject.class)
-                        .forEach(jsonObject -> extPositionIdList.add(jsonObject.getStr("positionId"))));
-                boolean hasPositionUser = CollectionUtil.intersectionDistinct(positionIdList, CollectionUtil.removeNull(extPositionIdList)).size() > 0;
-                if(hasPositionUser) {
-                    throw new CommonException("请先删除岗位下的用户");
-                }
-            }
-            // 执行删除
-            this.removeByIds(positionIdList);
-
-            // 发布删除事件
-            CommonDataChangeEventCenter.doDeleteWithDataId(BizDataTypeEnum.POSITION.getValue(), positionIdList);
-        }
-    }
-
-    @Override
-    public BizPosition detail(BizPositionIdParam bizPositionIdParam) {
-        return this.queryEntity(bizPositionIdParam.getId());
-    }
-
-    @Override
-    public BizPosition queryEntity(String id) {
-        BizPosition bizPosition = this.getById(id);
-        if(ObjectUtil.isEmpty(bizPosition)) {
-            throw new CommonException("岗位不存在,id值为:{}", id);
-        }
-        return bizPosition;
-    }
-
-    @Override
-    public String getPositionIdByPositionNameWithCreate(String orgId, String positionName) {
-        return null;
-    }
-
-    /* ====岗位部分所需要用到的选择器==== */
-
-    @Override
-    public List<Tree<String>> orgTreeSelector() {
-        LambdaQueryWrapper<BizOrg> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        // 校验数据范围
-        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-        // 定义机构集合
-        Set<BizOrg> bizOrgSet = CollectionUtil.newHashSet();
-        if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            // 获取所有机构
-            List<BizOrg> allOrgList = bizOrgService.list();
-            loginUserDataScope.forEach(orgId -> bizOrgSet.addAll(bizOrgService.getParentListById(allOrgList, orgId, true)));
-            List<String> loginUserDataScopeFullList = bizOrgSet.stream().map(BizOrg::getId).collect(Collectors.toList());
-            lambdaQueryWrapper.in(BizOrg::getId, loginUserDataScopeFullList);
-        } else {
-            return CollectionUtil.newArrayList();
-        }
-        lambdaQueryWrapper.orderByAsc(BizOrg::getSortCode);
-        List<BizOrg> bizOrgList = bizOrgService.list(lambdaQueryWrapper);
-        List<TreeNode<String>> treeNodeList = bizOrgList.stream().map(bizOrg ->
-                new TreeNode<>(bizOrg.getId(), bizOrg.getParentId(), bizOrg.getName(), bizOrg.getSortCode()))
-                .collect(Collectors.toList());
-        return TreeUtil.build(treeNodeList, "0");
-    }
-
-    @Override
-    public Page<BizPosition> positionSelector(BizPositionSelectorPositionParam bizPositionSelectorPositionParam) {
-        LambdaQueryWrapper<BizPosition> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        // 校验数据范围
-        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-        if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            lambdaQueryWrapper.in(BizPosition::getOrgId, loginUserDataScope);
-        } else {
-            return new Page<>();
-        }
-        // 查询部分字段
-        lambdaQueryWrapper.select(BizPosition::getId, BizPosition::getOrgId, BizPosition::getName,
-                BizPosition::getCategory, BizPosition::getSortCode);
-        if(ObjectUtil.isNotEmpty(bizPositionSelectorPositionParam.getOrgId())) {
-            lambdaQueryWrapper.eq(BizPosition::getOrgId, bizPositionSelectorPositionParam.getOrgId());
-        }
-        if(ObjectUtil.isNotEmpty(bizPositionSelectorPositionParam.getSearchKey())) {
-            lambdaQueryWrapper.like(BizPosition::getName, bizPositionSelectorPositionParam.getSearchKey());
-        }
-        lambdaQueryWrapper.orderByAsc(BizPosition::getSortCode);
-        return this.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper);
-    }
-}

+ 36 - 23
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/controller/BizUserController.java

@@ -19,14 +19,12 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.biz.modular.org.entity.BizOrg;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.param.*;
 import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
@@ -82,8 +80,22 @@ public class BizUserController {
     @CommonLog("添加人员")
     @SaCheckPermission("/biz/user/add")
     @PostMapping("/biz/user/add")
-    public CommonResult<String> add(@RequestBody @Valid BizUserAddParam bizUserAddParam) {
-        bizUserService.add(bizUserAddParam);
+    public CommonResult<String> add(@RequestParam @ApiParam(value = "员工编号") String empNo,
+                                    @RequestParam @ApiParam(value = "账号") String account,
+                                    @RequestParam @ApiParam(value = "姓名") String name,
+                                    @RequestParam @ApiParam(value = "组织id") String orgId,
+                                    @RequestParam @ApiParam(value = "部门id") String departmentId,
+                                    @RequestParam @ApiParam(value = "工作地点id") String workLocationId,
+                                    @RequestParam @ApiParam(value = "昵称") String nickname,
+                                    @RequestParam @ApiParam(value = "性别") String gender,
+                                    @RequestParam @ApiParam(value = "家庭住址") String homeAddress,
+                                    @RequestParam @ApiParam(value = "详细住址") String detailAddress,
+                                    @RequestParam @ApiParam(value = "身份证号") String idCardNumber,
+                                    @RequestParam @ApiParam(value = "手机") String phone,
+                                    @RequestParam @ApiParam(value = "紧急联系人电话") String emergencyPhone,
+                                    @RequestParam @ApiParam(value = "入职日期") String entryDate,
+                                    @RequestParam @ApiParam(value = "员工照片") MultipartFile avatar) throws IOException {
+        bizUserService.add(empNo,account,name,orgId,departmentId,workLocationId,nickname,gender,homeAddress,detailAddress,idCardNumber,phone,emergencyPhone,entryDate,avatar);
         return CommonResult.ok();
     }
 
@@ -98,8 +110,23 @@ public class BizUserController {
     @CommonLog("编辑人员")
     @SaCheckPermission("/biz/user/edit")
     @PostMapping("/biz/user/edit")
-    public CommonResult<String> edit(@RequestBody @Valid BizUserEditParam bizUserEditParam) {
-        bizUserService.edit(bizUserEditParam);
+    public CommonResult<String> edit(@RequestParam @ApiParam(value = "id") String id,
+                                     @RequestParam @ApiParam(value = "员工编号") String empNo,
+                                     @RequestParam @ApiParam(value = "账号") String account,
+                                     @RequestParam @ApiParam(value = "姓名") String name,
+                                     @RequestParam @ApiParam(value = "组织id") String orgId,
+                                     @RequestParam @ApiParam(value = "部门id") String departmentId,
+                                     @RequestParam @ApiParam(value = "工作地点id") String workLocationId,
+                                     @RequestParam @ApiParam(value = "昵称") String nickname,
+                                     @RequestParam @ApiParam(value = "性别") String gender,
+                                     @RequestParam @ApiParam(value = "家庭住址") String homeAddress,
+                                     @RequestParam @ApiParam(value = "详细住址") String detailAddress,
+                                     @RequestParam @ApiParam(value = "身份证号") String idCardNumber,
+                                     @RequestParam @ApiParam(value = "手机") String phone,
+                                     @RequestParam @ApiParam(value = "紧急联系人电话") String emergencyPhone,
+                                     @RequestParam @ApiParam(value = "入职日期") String entryDate,
+                                     @RequestParam @ApiParam(value = "员工照片") MultipartFile avatar) throws IOException {
+        bizUserService.edit(id,empNo,account,name,orgId,departmentId,workLocationId,nickname,gender,homeAddress,detailAddress,idCardNumber,phone,emergencyPhone,entryDate,avatar);
         return CommonResult.ok();
     }
 
@@ -273,20 +300,6 @@ public class BizUserController {
     }
 
     /**
-     * 获取岗位选择器
-     *
-     * @author xuyuxiang
-     * @date 2022/4/24 20:00
-     */
-    @ApiOperationSupport(order = 15)
-    @ApiOperation("获取岗位选择器")
-    @SaCheckPermission("/biz/user/positionSelector")
-    @GetMapping("/biz/user/positionSelector")
-    public CommonResult<Page<BizPosition>> positionSelector(BizUserSelectorPositionParam bizUserSelectorPositionParam) {
-        return CommonResult.data(bizUserService.positionSelector(bizUserSelectorPositionParam));
-    }
-
-    /**
      * 获取角色选择器
      *
      * @author xuyuxiang

+ 15 - 125
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/entity/BizUser.java

@@ -22,9 +22,7 @@ import com.fhs.core.trans.vo.TransPojo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
-import vip.xiaonuo.biz.modular.department.entity.Department;
 import vip.xiaonuo.biz.modular.org.entity.BizOrg;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
 import vip.xiaonuo.common.handler.CommonSm4CbcTypeHandler;
 import vip.xiaonuo.common.pojo.CommonEntity;
 
@@ -51,11 +49,6 @@ public class BizUser extends CommonEntity implements TransPojo {
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     private String avatar;
 
-    /** 签名 */
-    @ApiModelProperty(value = "签名", position = 3)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String signature;
-
     /** 账号 */
     @ApiModelProperty(value = "账号", position = 4)
     private String account;
@@ -79,111 +72,32 @@ public class BizUser extends CommonEntity implements TransPojo {
     @Trans(type = TransType.DICTIONARY, key = "GENDER")
     private String gender;
 
-    /** 年龄 */
-    @ApiModelProperty(value = "年龄", position = 9)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String age;
-
-    /** 出生日期 */
-    @ApiModelProperty(value = "出生日期", position = 10)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String birthday;
-
-    /** 民族 */
-    @ApiModelProperty(value = "民族", position = 11)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String nation;
-
-    /** 籍贯 */
-    @ApiModelProperty(value = "籍贯", position = 12)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String nativePlace;
-
     /** 家庭住址 */
     @ApiModelProperty(value = "家庭住址", position = 13)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     private String homeAddress;
 
-    /** 通信地址 */
-    @ApiModelProperty(value = "通信地址", position = 14)
+    /** 详细地址 */
+    @ApiModelProperty(value = "详细地址", position = 14)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String mailingAddress;
+    private String detailAddress;
 
-    /** 证件类型 */
-    @ApiModelProperty(value = "证件类型", position = 15)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String idCardType;
 
     /** 证件号码 */
     @ApiModelProperty(value = "证件号码", position = 16)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED, typeHandler = CommonSm4CbcTypeHandler.class)
     private String idCardNumber;
 
-    /** 文化程度 */
-    @ApiModelProperty(value = "文化程度", position = 17)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String cultureLevel;
-
-    /** 政治面貌 */
-    @ApiModelProperty(value = "政治面貌", position = 18)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String politicalOutlook;
-
-    /** 毕业院校 */
-    @ApiModelProperty(value = "毕业院校", position = 19)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String college;
-
-    /** 学历 */
-    @ApiModelProperty(value = "学历", position = 20)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String education;
-
-    /** 学制 */
-    @ApiModelProperty(value = "学制", position = 21)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String eduLength;
-
-    /** 学位 */
-    @ApiModelProperty(value = "学位", position = 22)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String degree;
-
     /** 手机 */
     @ApiModelProperty(value = "手机", position = 23)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED, typeHandler = CommonSm4CbcTypeHandler.class)
     private String phone;
 
-    /** 邮箱 */
-    @ApiModelProperty(value = "邮箱", position = 24)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String email;
-
-    /** 家庭电话 */
-    @ApiModelProperty(value = "家庭电话", position = 25)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String homeTel;
-
-    /** 办公电话 */
-    @ApiModelProperty(value = "办公电话", position = 26)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String officeTel;
-
-    /** 紧急联系人 */
-    @ApiModelProperty(value = "紧急联系人", position = 27)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String emergencyContact;
-
     /** 紧急联系人电话 */
     @ApiModelProperty(value = "紧急联系人电话", position = 28)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED, typeHandler = CommonSm4CbcTypeHandler.class)
     private String emergencyPhone;
 
-    /** 紧急联系人地址 */
-    @ApiModelProperty(value = "紧急联系人地址", position = 29)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String emergencyAddress;
-
     /** 员工编号 */
     @ApiModelProperty(value = "员工编号", position = 30)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
@@ -194,39 +108,21 @@ public class BizUser extends CommonEntity implements TransPojo {
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     private String entryDate;
 
-    /** 机构id */
-    @ApiModelProperty(value = "机构id", position = 32)
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 32)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     @Trans(type = TransType.SIMPLE, target = BizOrg.class, fields = "name", alias = "org", ref = "orgName")
     private String orgId;
 
-    /** 部门id */
-    @ApiModelProperty(value = "部门id", position = 32)
+    /** 组织id */
+    @ApiModelProperty(value = "部门id", position = 33)
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    @Trans(type = TransType.SIMPLE, target = Department.class, fields = "departmentName", alias = "department", ref = "departmentName")
+//    @Trans(type = TransType.SIMPLE, target = SysDepartment.class, fields = "departmentName", alias = "department", ref = "departmentName")
     private String departmentId;
 
-    /** 岗位id */
-    @ApiModelProperty(value = "岗位id", position = 33)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    @Trans(type = TransType.SIMPLE, target = BizPosition.class, fields = "name", alias = "position", ref = "positionName")
-    private String positionId;
-
-    /** 职级 */
-    @ApiModelProperty(value = "职级", position = 34)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String positionLevel;
-
-    /** 主管id */
-    @ApiModelProperty(value = "主管id", position = 35)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    @Trans(type = TransType.SIMPLE, target = BizUser.class, fields = "name", alias = "director", ref = "directorName")
-    private String directorId;
-
-    /** 兼任信息 */
-    @ApiModelProperty(value = "兼任信息", position = 36)
-    @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
-    private String positionJson;
+    /** 工作地点id */
+    @ApiModelProperty(value = "工作地点id", position = 34)
+    private String workLocationId;
 
     /** 上次登录ip */
     @ApiModelProperty(value = "上次登录ip", position = 37)
@@ -273,19 +169,13 @@ public class BizUser extends CommonEntity implements TransPojo {
     @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
     private String extJson;
 
-    @ApiModelProperty(value = "机构名称", position = 48)
+    /** 组织名称 */
+    @ApiModelProperty(value = "组织名称", position = 48)
     @TableField(exist = false)
     private String orgName;
 
-    @ApiModelProperty(value = "部门名称", position = 48)
+    /** 组织名称 */
+    @ApiModelProperty(value = "部门名称", position = 49)
     @TableField(exist = false)
     private String departmentName;
-
-    @ApiModelProperty(value = "岗位名称", position = 49)
-    @TableField(exist = false)
-    private String positionName;
-
-    @ApiModelProperty(value = "主管名称", position = 50)
-    @TableField(exist = false)
-    private String directorName;
 }

+ 3 - 11
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/BizUserService.java

@@ -15,8 +15,8 @@ package vip.xiaonuo.biz.modular.user.service;
 import cn.hutool.core.lang.tree.Tree;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.biz.modular.org.entity.BizOrg;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.param.*;
 import vip.xiaonuo.biz.modular.user.result.BizUserRoleResult;
@@ -47,7 +47,7 @@ public interface BizUserService extends IService<BizUser> {
      * @author xuyuxiang
      * @date 2022/4/24 20:48
      */
-    void add(BizUserAddParam bizUserAddParam);
+    void add(String empNo, String account, String name, String orgId, String departmentId, String workLocationId, String nickname, String gender, String homeAddress, String detailAddress, String idCardNumber, String phone, String emergencyPhone, String entryDate, MultipartFile avatar) throws IOException;
 
     /**
      * 编辑人员
@@ -55,7 +55,7 @@ public interface BizUserService extends IService<BizUser> {
      * @author xuyuxiang
      * @date 2022/4/24 21:13
      */
-    void edit(BizUserEditParam bizUserEditParam);
+    void edit(String id, String empNo, String account, String name, String orgId, String departmentId, String workLocationId, String nickname, String gender, String homeAddress, String detailAddress, String idCardNumber, String phone, String emergencyPhone, String entryDate, MultipartFile avatar) throws IOException;
 
     /**
      * 删除人员
@@ -156,14 +156,6 @@ public interface BizUserService extends IService<BizUser> {
     Page<BizOrg> orgListSelector(BizUserSelectorOrgListParam bizUserSelectorOrgListParam);
 
     /**
-     * 获取岗位选择器
-     *
-     * @author xuyuxiang
-     * @date 2022/5/13 21:00
-     */
-    Page<BizPosition> positionSelector(BizUserSelectorPositionParam bizUserSelectorPositionParam);
-
-    /**
      * 获取角色选择器
      *
      * @author xuyuxiang

+ 84 - 112
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/user/service/impl/BizUserServiceImpl.java

@@ -30,7 +30,6 @@ import cn.hutool.core.lang.tree.TreeUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.PhoneUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.metadata.data.WriteCellData;
@@ -51,13 +50,12 @@ import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.biz.core.enums.BizBuildInEnum;
 import vip.xiaonuo.biz.core.enums.BizDataTypeEnum;
 import vip.xiaonuo.biz.modular.org.entity.BizOrg;
 import vip.xiaonuo.biz.modular.org.service.BizOrgService;
-import vip.xiaonuo.biz.modular.position.entity.BizPosition;
-import vip.xiaonuo.biz.modular.position.service.BizPositionService;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.enums.BizRoleCategoryEnum;
 import vip.xiaonuo.biz.modular.user.enums.BizUserStatusEnum;
@@ -114,8 +112,8 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
     @Resource
     private BizOrgService bizOrgService;
 
-    @Resource
-    private BizPositionService bizPositionService;
+//    @Resource
+//    private BizUploadImage uploadImage;
 
     @Override
     public Page<BizUser> page(BizUserPageParam bizUserPageParam) {
@@ -151,13 +149,28 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void add(BizUserAddParam bizUserAddParam) {
-        checkParam(bizUserAddParam);
-        BizUser bizUser = BeanUtil.toBean(bizUserAddParam, BizUser.class);
-        if(ObjectUtil.isEmpty(bizUser.getAvatar())) {
-            // 设置默认头像
-            bizUser.setAvatar(CommonAvatarUtil.generateImg(bizUser.getName()));
-        }
+    public void add(String empNo, String account, String name, String orgId, String departmentId, String workLocationId, String nickname, String gender, String homeAddress, String detailAddress, String idCardNumber, String phone, String emergencyPhone, String entryDate, MultipartFile avatar) throws IOException {
+        checkParam(empNo,account,phone,orgId);
+        BizUser bizUser = new BizUser();
+        bizUser.setEmpNo(empNo);
+        bizUser.setAccount(account);
+        bizUser.setName(name);
+        bizUser.setOrgId(orgId);
+        bizUser.setDepartmentId(departmentId);
+        bizUser.setWorkLocationId(workLocationId);
+        bizUser.setNickname(nickname);
+        bizUser.setGender(gender);
+        bizUser.setHomeAddress(homeAddress);
+        bizUser.setDetailAddress(detailAddress);
+        bizUser.setIdCardNumber(idCardNumber);
+        bizUser.setPhone(phone);
+        bizUser.setEmergencyPhone(emergencyPhone);
+        bizUser.setEntryDate(entryDate);
+//        String avatarUrl = uploadImage.getImageCom(avatar);
+//        if (avatarUrl.equals("上传失败")){
+//            throw new CommonException("图片上传失败!");
+//        }
+//        bizUser.setAvatar(avatarUrl);
         // 设置密码
         bizUser.setPassword(CommonCryptogramUtil.doHashValue(devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_PASSWORD_KEY)));
         // 设置状态
@@ -168,92 +181,102 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
         CommonDataChangeEventCenter.doAddWithData(BizDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(bizUser));
     }
 
-    private void checkParam(BizUserAddParam bizUserAddParam) {
+    private void checkParam(String empNo, String account, String phone, String orgId) {
         // 校验数据范围
         List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
         if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            if(!loginUserDataScope.contains(bizUserAddParam.getOrgId())) {
-                throw new CommonException("您没有权限在该机构下增加人员,机构id:{}", bizUserAddParam.getOrgId());
+            if(!loginUserDataScope.contains(orgId)) {
+                throw new CommonException("您没有权限在该机构下增加人员,机构id:{}", orgId);
             }
         } else {
-            throw new CommonException("您没有权限在该机构下增加人员,机构id:{}", bizUserAddParam.getOrgId());
+            throw new CommonException("您没有权限在该机构下增加人员,机构id:{}", orgId);
         }
         if (this.count(new LambdaQueryWrapper<BizUser>()
-                .eq(BizUser::getAccount, bizUserAddParam.getAccount())) > 0) {
-            throw new CommonException("存在重复的账号,账号为:{}", bizUserAddParam.getAccount());
+                .eq(BizUser::getEmpNo, empNo)) > 0) {
+            throw new CommonException("存在重复的工号,工号为:{}", empNo);
         }
-        if(ObjectUtil.isNotEmpty(bizUserAddParam.getPhone())) {
-            if(!PhoneUtil.isMobile(bizUserAddParam.getPhone())) {
-                throw new CommonException("手机号码:{}格式错误", bizUserAddParam.getPhone());
-            }
-            if (this.count(new LambdaQueryWrapper<BizUser>()
-                    .eq(BizUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(bizUserAddParam.getPhone()))) > 0) {
-                throw new CommonException("存在重复的手机号,手机号为:{}", bizUserAddParam.getPhone());
-            }
+        if (this.count(new LambdaQueryWrapper<BizUser>()
+                .eq(BizUser::getAccount, account)) > 0) {
+            throw new CommonException("存在重复的账号,账号为:{}", account);
         }
-        if(ObjectUtil.isNotEmpty(bizUserAddParam.getEmail())) {
-            if(!CommonEmailUtil.isEmail(bizUserAddParam.getEmail())) {
-                throw new CommonException("邮箱:{}格式错误", bizUserAddParam.getEmail());
+        if(ObjectUtil.isNotEmpty(phone)) {
+            if(!PhoneUtil.isMobile(phone)) {
+                throw new CommonException("手机号码:{}格式错误", phone);
             }
             if (this.count(new LambdaQueryWrapper<BizUser>()
-                    .eq(BizUser::getEmail, bizUserAddParam.getEmail())) > 0) {
-                throw new CommonException("存在重复的邮箱,邮箱为:{}", bizUserAddParam.getEmail());
+                    .eq(BizUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(phone))) > 0) {
+                throw new CommonException("存在重复的手机号,手机号为:{}",phone);
             }
         }
     }
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(BizUserEditParam bizUserEditParam) {
-        BizUser bizUser = this.queryEntity(bizUserEditParam.getId());
-        checkParam(bizUserEditParam);
-        boolean updateSuperAdminAccount = bizUser.getAccount().equals(BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue()) &&
-                !bizUserEditParam.getAccount().equals(BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
+    public void edit(String id, String empNo, String account, String name, String orgId, String departmentId, String workLocationId, String nickname, String gender, String homeAddress, String detailAddress, String idCardNumber, String phone, String emergencyPhone, String entryDate, MultipartFile avatar) throws IOException {
+        BizUser bizUser = this.queryEntity(id);
+        checkParam(id,empNo,account,phone,orgId);
+        boolean updateSuperAdminAccount = account.equals(BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue()) &&
+                !account.equals(BizBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
         if(updateSuperAdminAccount) {
             throw new CommonException("不可修改系统内置超管人员账号");
         }
-        BeanUtil.copyProperties(bizUserEditParam, bizUser);
+        bizUser.setEmpNo(empNo);
+        bizUser.setAccount(account);
+        bizUser.setName(name);
+        bizUser.setOrgId(orgId);
+        bizUser.setDepartmentId(departmentId);
+        bizUser.setWorkLocationId(workLocationId);
+        bizUser.setNickname(nickname);
+        bizUser.setGender(gender);
+        bizUser.setHomeAddress(homeAddress);
+        bizUser.setDetailAddress(detailAddress);
+        bizUser.setIdCardNumber(idCardNumber);
+        bizUser.setPhone(phone);
+        bizUser.setEmergencyPhone(emergencyPhone);
+        bizUser.setEntryDate(entryDate);
+//        if (ObjectUtil.isNotEmpty(avatar)){
+//            String avatarUrl = uploadImage.getImageCom(avatar);
+//            if (avatarUrl.equals("上传失败")){
+//                throw new CommonException("图片上传失败!");
+//            }
+//            bizUser.setAvatar(avatarUrl);
+//        }
+
         this.updateById(bizUser);
 
         // 发布更新事件
         CommonDataChangeEventCenter.doUpdateWithData(BizDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(bizUser));
     }
 
-    private void checkParam(BizUserEditParam bizUserEditParam) {
+    private void checkParam(String id, String empNo, String account, String phone, String orgId) {
         // 校验数据范围
         List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
         if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            if(!loginUserDataScope.contains(bizUserEditParam.getOrgId())) {
-                throw new CommonException("您没有权限编辑该机构下的人员,机构id:{}", bizUserEditParam.getOrgId());
+            if(!loginUserDataScope.contains(orgId)) {
+                throw new CommonException("您没有权限编辑该机构下的人员,机构id:{}", orgId);
             }
         } else {
-            if(!bizUserEditParam.getId().equals(StpUtil.getLoginIdAsString())) {
-                throw new CommonException("您没有权限编辑该机构下的人员,机构id:{}", bizUserEditParam.getOrgId());
+            if(!id.equals(StpUtil.getLoginIdAsString())) {
+                throw new CommonException("您没有权限编辑该机构下的人员,机构id:{}", orgId);
             }
         }
         if (this.count(new LambdaQueryWrapper<BizUser>()
-                .eq(BizUser::getAccount, bizUserEditParam.getAccount())
-                .ne(BizUser::getId, bizUserEditParam.getId())) > 0) {
-            throw new CommonException("存在重复的账号,账号为:{}", bizUserEditParam.getAccount());
+                .eq(BizUser::getEmpNo, empNo).eq(BizUser::getOrgId,orgId).ne(BizUser::getId,id)) > 0) {
+            throw new CommonException("存在重复的工号,工号为:{}", empNo);
         }
-        if(ObjectUtil.isNotEmpty(bizUserEditParam.getPhone())) {
-            if(!PhoneUtil.isMobile(bizUserEditParam.getPhone())) {
-                throw new CommonException("手机号码:{}格式错误", bizUserEditParam.getPhone());
-            }
-            if (this.count(new LambdaQueryWrapper<BizUser>()
-                    .eq(BizUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(bizUserEditParam.getPhone()))
-                    .ne(BizUser::getId, bizUserEditParam.getId())) > 0) {
-                throw new CommonException("存在重复的手机号,手机号为:{}", bizUserEditParam.getPhone());
-            }
+        if (this.count(new LambdaQueryWrapper<BizUser>()
+                .eq(BizUser::getAccount, account)
+                .ne(BizUser::getId, id)) > 0) {
+            throw new CommonException("存在重复的账号,账号为:{}", account);
         }
-        if(ObjectUtil.isNotEmpty(bizUserEditParam.getEmail())) {
-            if(!CommonEmailUtil.isEmail(bizUserEditParam.getEmail())) {
-                throw new CommonException("邮箱:{}格式错误", bizUserEditParam.getEmail());
+        if(ObjectUtil.isNotEmpty(phone)) {
+            if(!PhoneUtil.isMobile(phone)) {
+                throw new CommonException("手机号码:{}格式错误", phone);
             }
             if (this.count(new LambdaQueryWrapper<BizUser>()
-                    .eq(BizUser::getEmail, bizUserEditParam.getEmail())
-                    .ne(BizUser::getId, bizUserEditParam.getId())) > 0) {
-                throw new CommonException("存在重复的邮箱,邮箱为:{}", bizUserEditParam.getEmail());
+                    .eq(BizUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(phone))
+                    .ne(BizUser::getId, id)) > 0) {
+                throw new CommonException("存在重复的手机号,手机号为:{}", phone);
             }
         }
     }
@@ -282,24 +305,6 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
                     throw new CommonException("您没有权限删除这些机构下的人员,机构id:{}", userOrgIdList);
                 }
             }
-            // 清除【将这些人员作为主管】的信息
-            this.update(new LambdaUpdateWrapper<BizUser>().in(BizUser::getDirectorId, bizUserIdList).set(BizUser::getDirectorId, null));
-
-            // 清除【将这些人员作为兼任岗位的主管】的信息
-            this.list(new LambdaQueryWrapper<BizUser>() .isNotNull(BizUser::getPositionJson)).forEach(bizUser -> {
-                List<JSONObject> handledJsonObjectList = JSONUtil.toList(JSONUtil.parseArray(bizUser.getPositionJson()),
-                        JSONObject.class).stream().peek(jsonObject -> {
-                    String directorId = jsonObject.getStr("directorId");
-                    if (ObjectUtil.isNotEmpty(directorId) && bizUserIdList.contains(directorId)) {
-                        jsonObject.remove("directorId");
-                    }
-                }).collect(Collectors.toList());
-                this.update(new LambdaUpdateWrapper<BizUser>().eq(BizUser::getId, bizUser.getId())
-                        .set(BizUser::getPositionJson, JSONUtil.toJsonStr(handledJsonObjectList)));
-            });
-
-            // 清除【将这些人员作为主管】的机构的主管信息
-            bizOrgService.update(new LambdaUpdateWrapper<BizOrg>().in(BizOrg::getDirectorId, bizUserIdList).set(BizOrg::getDirectorId, null));
 
             // 执行删除
             this.removeByIds(bizUserIdList);
@@ -560,16 +565,6 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
             ImageEntity imageEntity = new ImageEntity(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
                     .split(avatarBase64, StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG), 120, 160);
             map.put("avatar", imageEntity);
-            if(ObjectUtil.isNotEmpty(bizUser.getBirthday())) {
-                try {
-                    // 年龄
-                    long age = cn.hutool.core.date.DateUtil.betweenYear(cn.hutool.core.date.DateUtil.parseDate(bizUser.getBirthday()), DateTime.now(), true);
-                    if(age != 0) {
-                        map.put("age", age + "岁");
-                    }
-                } catch (Exception ignored) {
-                }
-            }
             // 导出时间
             map.put("exportDateTime", DateUtil.format(DateTime.now(), DatePattern.CHINESE_DATE_PATTERN));
             // 生成doc
@@ -654,29 +649,6 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
         return bizOrgService.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper);
     }
 
-    @Override
-    public Page<BizPosition> positionSelector(BizUserSelectorPositionParam bizUserSelectorPositionParam) {
-        LambdaQueryWrapper<BizPosition> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        // 校验数据范围
-        List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
-        if(ObjectUtil.isNotEmpty(loginUserDataScope)) {
-            lambdaQueryWrapper.in(BizPosition::getOrgId, loginUserDataScope);
-        } else {
-            return new Page<>();
-        }
-        // 查询部分字段
-        lambdaQueryWrapper.select(BizPosition::getId, BizPosition::getOrgId, BizPosition::getName,
-                BizPosition::getCategory, BizPosition::getSortCode);
-        if(ObjectUtil.isNotEmpty(bizUserSelectorPositionParam.getOrgId())) {
-            lambdaQueryWrapper.eq(BizPosition::getOrgId, bizUserSelectorPositionParam.getOrgId());
-        }
-        if(ObjectUtil.isNotEmpty(bizUserSelectorPositionParam.getSearchKey())) {
-            lambdaQueryWrapper.like(BizPosition::getName, bizUserSelectorPositionParam.getSearchKey());
-        }
-        lambdaQueryWrapper.orderByAsc(BizPosition::getSortCode);
-        return bizPositionService.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper);
-    }
-
     @SuppressWarnings("ALL")
     @Override
     public Page<BizUserRoleResult> roleSelector(BizUserSelectorRoleParam bizUserSelectorRoleParam) {
@@ -716,7 +688,7 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
             return new Page<>();
         }
         // 只查询部分字段
-        lambdaQueryWrapper.select(BizUser::getId, BizUser::getAvatar, BizUser::getOrgId, BizUser::getPositionId, BizUser::getAccount,
+        lambdaQueryWrapper.select(BizUser::getId, BizUser::getAvatar, BizUser::getOrgId, BizUser::getAccount,
                 BizUser::getName, BizUser::getSortCode, BizUser::getGender, BizUser::getEntryDate);
         if (ObjectUtil.isNotEmpty(bizUserSelectorUserParam.getOrgId())) {
             // 如果机构id不为空,则查询该机构及其子机构下的所有人

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

@@ -0,0 +1,184 @@
+//package vip.xiaonuo.biz.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 BizUploadImage {
+//
+//    @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 "上传失败";
+//        }
+//    }
+//
+//}
+//
+//
+//

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

@@ -17,7 +17,6 @@ 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;

+ 17 - 2
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/controller/SysUserController.java

@@ -109,8 +109,23 @@ public class SysUserController {
     @ApiOperation("编辑用户")
     @CommonLog("编辑用户")
     @PostMapping("/sys/user/edit")
-    public CommonResult<String> edit(@RequestBody @Valid SysUserEditParam sysUserEditParam) {
-        sysUserService.edit(sysUserEditParam);
+    public CommonResult<String> edit(@RequestParam @ApiParam(value = "id") String id,
+                                     @RequestParam @ApiParam(value = "员工编号") String empNo,
+                                     @RequestParam @ApiParam(value = "账号") String account,
+                                     @RequestParam @ApiParam(value = "姓名") String name,
+                                     @RequestParam @ApiParam(value = "组织id") String orgId,
+                                     @RequestParam @ApiParam(value = "部门id") String departmentId,
+                                     @RequestParam @ApiParam(value = "工作地点id") String workLocationId,
+                                     @RequestParam @ApiParam(value = "昵称") String nickname,
+                                     @RequestParam @ApiParam(value = "性别") String gender,
+                                     @RequestParam @ApiParam(value = "家庭住址") String homeAddress,
+                                     @RequestParam @ApiParam(value = "详细住址") String detailAddress,
+                                     @RequestParam @ApiParam(value = "身份证号") String idCardNumber,
+                                     @RequestParam @ApiParam(value = "手机") String phone,
+                                     @RequestParam @ApiParam(value = "紧急联系人电话") String emergencyPhone,
+                                     @RequestParam @ApiParam(value = "入职日期") String entryDate,
+                                     @RequestParam @ApiParam(value = "员工照片") MultipartFile avatar) {
+        sysUserService.edit(id,empNo,account,name,orgId,departmentId,workLocationId,nickname,gender,homeAddress,detailAddress,idCardNumber,phone,emergencyPhone,entryDate,avatar);
         return CommonResult.ok();
     }
 

+ 0 - 86
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/result/SysUserResult.java

@@ -36,10 +36,6 @@ public class SysUserResult {
     @ApiModelProperty(value = "头像", position = 3)
     private String avatar;
 
-    /** 签名 */
-    @ApiModelProperty(value = "签名", position = 4)
-    private String signature;
-
     /** 账号 */
     @ApiModelProperty(value = "账号", position = 5)
     private String account;
@@ -56,89 +52,25 @@ public class SysUserResult {
     @ApiModelProperty(value = "性别", position = 9)
     private String gender;
 
-    /** 年龄 */
-    @ApiModelProperty(value = "年龄", position = 10)
-    private String age;
-
-    /** 出生日期 */
-    @ApiModelProperty(value = "出生日期", position = 11)
-    private String birthday;
-
-    /** 民族 */
-    @ApiModelProperty(value = "民族", position = 12)
-    private String nation;
-
-    /** 籍贯 */
-    @ApiModelProperty(value = "籍贯", position = 13)
-    private String nativePlace;
-
     /** 家庭住址 */
     @ApiModelProperty(value = "家庭住址", position = 14)
     private String homeAddress;
 
-    /** 通信地址 */
-    @ApiModelProperty(value = "通信地址", position = 15)
-    private String mailingAddress;
-
-    /** 证件类型 */
-    @ApiModelProperty(value = "证件类型", position = 16)
-    private String idCardType;
 
     /** 证件号码 */
     @ApiModelProperty(value = "证件号码", position = 17)
     private String idCardNumber;
 
-    /** 文化程度 */
-    @ApiModelProperty(value = "文化程度", position = 18)
-    private String cultureLevel;
-
-    /** 政治面貌 */
-    @ApiModelProperty(value = "政治面貌", position = 19)
-    private String politicalOutlook;
-
-    /** 毕业院校 */
-    @ApiModelProperty(value = "毕业院校", position = 20)
-    private String college;
-
-    /** 学历 */
-    @ApiModelProperty(value = "学历", position = 21)
-    private String education;
 
-    /** 学制 */
-    @ApiModelProperty(value = "学制", position = 22)
-    private String eduLength;
-
-    /** 学位 */
-    @ApiModelProperty(value = "学位", position = 23)
-    private String degree;
 
     /** 手机 */
     @ApiModelProperty(value = "手机", position = 24)
     private String phone;
 
-    /** 邮箱 */
-    @ApiModelProperty(value = "邮箱", position = 25)
-    private String email;
-
-    /** 家庭电话 */
-    @ApiModelProperty(value = "家庭电话", position = 26)
-    private String homeTel;
-
-    /** 办公电话 */
-    @ApiModelProperty(value = "办公电话", position = 27)
-    private String officeTel;
-
-    /** 紧急联系人 */
-    @ApiModelProperty(value = "紧急联系人", position = 28)
-    private String emergencyContact;
-
     /** 紧急联系人电话 */
     @ApiModelProperty(value = "紧急联系人电话", position = 29)
     private String emergencyPhone;
 
-    /** 紧急联系人地址 */
-    @ApiModelProperty(value = "紧急联系人地址", position = 30)
-    private String emergencyAddress;
 
     /** 员工编号 */
     @ApiModelProperty(value = "员工编号", position = 31)
@@ -152,17 +84,6 @@ public class SysUserResult {
     @ApiModelProperty(value = "组织id", position = 33)
     private String orgId;
 
-    /** 职位id */
-    @ApiModelProperty(value = "职位id", position = 34)
-    private String positionId;
-
-    /** 职级 */
-    @ApiModelProperty(value = "职级", position = 35)
-    private String positionLevel;
-
-    /** 主管id */
-    @ApiModelProperty(value = "主管id", position = 36)
-    private String directorId;
 
     /** 上次登录ip */
     @ApiModelProperty(value = "上次登录ip", position = 37)
@@ -214,11 +135,4 @@ public class SysUserResult {
     @ApiModelProperty(value = "组织名称", position = 48)
     private String orgName;
 
-    /** 职位名称 */
-    @ApiModelProperty(value = "职位名称", position = 49)
-    private String positionName;
-
-    /** 主管名称 */
-    @ApiModelProperty(value = "主管名称", position = 50)
-    private String directorName;
 }

+ 1 - 1
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java

@@ -73,7 +73,7 @@ public interface SysUserService extends IService<SysUser> {
      * @author xuyuxiang
      * @date 2022/4/24 21:13
      */
-    void edit(SysUserEditParam sysUserEditParam);
+    void edit(String id, String empNo, String account, String name, String orgId, String departmentId, String workLocationId, String nickname, String gender, String homeAddress, String detailAddress, String idCardNumber, String phone, String emergencyPhone, String entryDate, MultipartFile avatar);
 
     /**
      * 删除用户

+ 45 - 34
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java

@@ -69,9 +69,7 @@ import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.common.util.*;
 import vip.xiaonuo.dev.api.DevConfigApi;
-import vip.xiaonuo.dev.api.DevEmailApi;
 import vip.xiaonuo.dev.api.DevMessageApi;
-import vip.xiaonuo.dev.api.DevSmsApi;
 import vip.xiaonuo.mobile.api.MobileButtonApi;
 import vip.xiaonuo.mobile.api.MobileMenuApi;
 import vip.xiaonuo.sys.core.enums.SysBuildInEnum;
@@ -98,7 +96,7 @@ import vip.xiaonuo.sys.modular.user.mapper.SysUserMapper;
 import vip.xiaonuo.sys.modular.user.param.*;
 import vip.xiaonuo.sys.modular.user.result.*;
 import vip.xiaonuo.sys.modular.user.service.SysUserService;
-import vip.xiaonuo.sys.modular.user.utils.UploadImage;
+//import vip.xiaonuo.sys.modular.user.utils.SysUploadImage;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
@@ -162,8 +160,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     private MobileButtonApi mobileButtonApi;
 
-    @Resource
-    private UploadImage uploadImage;
+//    @Resource
+//    private SysUploadImage uploadImage;
 
     @Override
     public SysLoginUser getUserById(String id) {
@@ -237,11 +235,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         sysUser.setPhone(phone);
         sysUser.setEmergencyPhone(emergencyPhone);
         sysUser.setEntryDate(entryDate);
-        String avatarUrl = uploadImage.getImageCom(avatar);
-        if (avatarUrl.equals("上传失败")){
-            throw new CommonException("图片上传失败!");
-        }
-        sysUser.setAvatar(avatarUrl);
+//        String avatarUrl = uploadImage.getImageCom(avatar);
+//        if (avatarUrl.equals("上传失败")){
+//            throw new CommonException("图片上传失败!");
+//        }
+//        sysUser.setAvatar(avatarUrl);
         // 设置默认密码
         sysUser.setPassword(CommonCryptogramUtil.doHashValue(devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_PASSWORD_KEY)));
         // 设置状态
@@ -274,35 +272,48 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void edit(SysUserEditParam sysUserEditParam) {
-        SysUser sysUser = this.queryEntity(sysUserEditParam.getId());
-        checkParam(sysUserEditParam);
-        boolean updateSuperAdminAccount = sysUser.getAccount().equals(SysBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue()) &&
-                !sysUserEditParam.getAccount().equals(SysBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
+    public void edit(String id, String empNo, String account, String name, String orgId, String departmentId, String workLocationId, String nickname, String gender, String homeAddress, String detailAddress, String idCardNumber, String phone, String emergencyPhone, String entryDate, MultipartFile avatar) {
+        SysUser sysUser = this.queryEntity(id);
+        checkParam(id,empNo,account,phone,orgId);
+        boolean updateSuperAdminAccount = account.equals(SysBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue()) &&
+                !account.equals(SysBuildInEnum.BUILD_IN_USER_ACCOUNT.getValue());
         if(updateSuperAdminAccount) {
             throw new CommonException("不可修改系统内置超管用户账号");
         }
-        BeanUtil.copyProperties(sysUserEditParam, sysUser);
-        this.updateById(sysUser);
+        sysUser.setEmpNo(empNo);
+        sysUser.setAccount(account);
+        sysUser.setName(name);
+        sysUser.setOrgId(orgId);
+        sysUser.setDepartmentId(departmentId);
+        sysUser.setWorkLocationId(workLocationId);
+        sysUser.setNickname(nickname);
+        sysUser.setGender(gender);
+        sysUser.setHomeAddress(homeAddress);
+        sysUser.setDetailAddress(detailAddress);
+        sysUser.setIdCardNumber(idCardNumber);
+        sysUser.setPhone(phone);
+        sysUser.setEmergencyPhone(emergencyPhone);
+        sysUser.setEntryDate(entryDate);
 
-        // 发布更新事件
-        CommonDataChangeEventCenter.doUpdateWithData(SysDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(sysUser));
+        this.updateById(sysUser);
     }
 
-    private void checkParam(SysUserEditParam sysUserEditParam) {
+    private void checkParam(String id, String empNo, String account, String phone, String orgId) {
         if (this.count(new LambdaQueryWrapper<SysUser>()
-                .eq(SysUser::getAccount, sysUserEditParam.getAccount())
-                .ne(SysUser::getId, sysUserEditParam.getId())) > 0) {
-            throw new CommonException("存在重复的账号,账号为:{}", sysUserEditParam.getAccount());
+                .eq(SysUser::getEmpNo, empNo).eq(SysUser::getOrgId,orgId).ne(SysUser::getId,id)) > 0) {
+            throw new CommonException("存在重复的工号,工号为:{}", empNo);
         }
-        if (ObjectUtil.isNotEmpty(sysUserEditParam.getPhone())) {
-            if (!PhoneUtil.isMobile(sysUserEditParam.getPhone())) {
-                throw new CommonException("手机号码:{}格式错误", sysUserEditParam.getPhone());
+        if (this.count(new LambdaQueryWrapper<SysUser>()
+                .eq(SysUser::getAccount, account).ne(SysUser::getId,id)) > 0) {
+            throw new CommonException("存在重复的账号,账号为:{}", account);
+        }
+        if (ObjectUtil.isNotEmpty(phone)) {
+            if (!PhoneUtil.isMobile(phone)) {
+                throw new CommonException("手机号码:{}格式错误", phone);
             }
             if (this.count(new LambdaQueryWrapper<SysUser>()
-                    .eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(sysUserEditParam.getPhone()))
-                    .ne(SysUser::getId, sysUserEditParam.getId())) > 0) {
-                throw new CommonException("存在重复的手机号,手机号为:{}", sysUserEditParam.getPhone());
+                    .eq(SysUser::getPhone, CommonCryptogramUtil.doSm4CbcEncrypt(phone)).ne(SysUser::getId,id)) > 0) {
+                throw new CommonException("存在重复的手机号,手机号为:{}", phone);
             }
         }
     }
@@ -461,11 +472,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     public void updateAvatar(MultipartFile avatar) throws IOException {
         SysUser sysUser = this.queryEntity(StpUtil.getLoginIdAsString());
-        String avatarUrl = uploadImage.getImageCom(avatar);
-        if (avatarUrl.equals("上传失败")){
-            throw new CommonException("图片上传失败!");
-        }
-        sysUser.setAvatar(avatarUrl);
+//        String avatarUrl = uploadImage.getImageCom(avatar);
+//        if (avatarUrl.equals("上传失败")){
+//            throw new CommonException("图片上传失败!");
+//        }
+//        sysUser.setAvatar(avatarUrl);
         this.updateById(sysUser);
     }
 

+ 184 - 0
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/utils/SysUploadImage.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 SysUploadImage {
+//
+//    @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 "上传失败";
+//        }
+//    }
+//
+//}
+//
+//
+//

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

@@ -1,184 +0,0 @@
-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 "上传失败";
-        }
-    }
-
-}
-
-
-

+ 1 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/controller/FeedingThresholdController.java

@@ -94,7 +94,7 @@ public class FeedingThresholdController {
     @ApiOperation("修改精准饲喂料塔阈值")
     @CommonLog("修改精准饲喂料塔阈值")
     @PostMapping("/feed/feedingthreshold/editFeeding")
-    public CommonResult<String> editFeeding(@RequestBody @Valid FeedingEditParam feedingEditParam) {
+    public CommonResult<String> editFeeding(@RequestBody @Valid FeedingThresholdVo2 feedingEditParam) {
         feedingThresholdService.editFeeding(feedingEditParam);
         return CommonResult.ok();
     }

+ 1 - 1
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/service/FeedingThresholdService.java

@@ -57,6 +57,6 @@ public interface FeedingThresholdService extends IService<FeedingThreshold> {
 
     List<FeedingThresholdVo2> listFeeding(AddFeedingParam feedingParam);
 
-    void editFeeding(FeedingEditParam feedingEditParam);
+    void editFeeding(FeedingThresholdVo2 feedingEditParam);
 
 }

+ 12 - 11
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/service/impl/FeedingThresholdServiceImpl.java

@@ -67,7 +67,7 @@ public class FeedingThresholdServiceImpl extends ServiceImpl<FeedingThresholdMap
     @Override
     public FeedingThresholdVo listFat(String orgId) {
         QueryWrapper<FeedingThreshold> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("org_id", orgId);
+        queryWrapper.eq("org_id", orgId).eq("threshold_type",1);
         FeedingThreshold threshold = thresholdMapper.selectOne(queryWrapper);
         FeedingThresholdVo feedingThresholdVo = new FeedingThresholdVo();
         BeanUtil.copyProperties(threshold, feedingThresholdVo);
@@ -105,22 +105,23 @@ public class FeedingThresholdServiceImpl extends ServiceImpl<FeedingThresholdMap
             thresholdVo2.setFeedingName(threshold.getFeedingName());
             thresholdVo2.setFeedingUnitId(threshold.getFeedingUnitId());
             thresholdVo2.setMarginValue(threshold.getMarginValue());
+            thresholdVo2.setId(threshold.getId().toString());
+            thresholdVo2.setOrgId(threshold.getOrgId());
             list.add(thresholdVo2);
         }
         return list;
     }
 
     @Override
-    public void editFeeding(FeedingEditParam feedingEditParam) {
-        String orgId = feedingEditParam.getOrgId();
-        List<FeedingThresholdVo2> thresholdVo2s = feedingEditParam.getList();
-        for (FeedingThresholdVo2 thresholdVo2 : thresholdVo2s) {
-            QueryWrapper<FeedingThreshold> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("org_id", orgId).eq("feeding_unit_id", thresholdVo2.getFeedingUnitId());
-            FeedingThreshold threshold = thresholdMapper.selectOne(queryWrapper);
-            BeanUtil.copyProperties(thresholdVo2, threshold);
-            thresholdMapper.updateById(threshold);
-        }
+    public void editFeeding(FeedingThresholdVo2 feedingEditParam) {
+        FeedingThreshold feedingThreshold = new FeedingThreshold();
+        feedingThreshold.setFeedingName(feedingEditParam.getFeedingName());
+        feedingThreshold.setFeedingUnitId(feedingEditParam.getFeedingUnitId());
+        feedingThreshold.setMarginValue(feedingEditParam.getMarginValue());
+        feedingThreshold.setOrgId(feedingEditParam.getOrgId());
+        feedingThreshold.setDeleteFlag("NOT_DELETE");
+        feedingThreshold.setId(Integer.valueOf(feedingEditParam.getId()));
+        thresholdMapper.updateById(feedingThreshold);
     }
 
 }

+ 17 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/feed/feedingthreshold/vo/FeedingThresholdVo2.java

@@ -1,5 +1,6 @@
 package vip.xiaonuo.modular.feed.feedingthreshold.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
@@ -8,16 +9,32 @@ public class FeedingThresholdVo2 {
     /**
      * 料塔名称
      */
+    /** 组织id */
+    @ApiModelProperty(value = "料塔名称", position = 8)
     private String feedingName;
 
     /**
      * 采食下限
      */
+    /** 组织id */
+    @ApiModelProperty(value = "采食下限", position = 8)
     private String marginValue;
 
     /**
      * 料塔名称id
      */
+    /** 组织id */
+    @ApiModelProperty(value = "料塔名称id", position = 8)
     private String feedingUnitId;
 
+    /**
+     * 料塔名称id
+     */
+    /** 组织id */
+    @ApiModelProperty(value = "组织id", position = 8)
+    private String orgId;
+
+    @ApiModelProperty(value = "id", position = 8)
+    private String id;
+
 }