From 59ae9759fd50568059fa44f43832f5a414edb3e9 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期一, 27 十一月 2023 15:08:23 +0800
Subject: [PATCH] 增加权限控制

---
 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysCommonController.java      |   13 ++
 assess-system/src/main/java/com/gkhy/assess/system/mapper/SysAttachMapper.java            |   18 +++
 assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java       |   17 ++
 assess-common/src/main/java/com/gkhy/assess/common/enums/UserIdentityEnum.java            |    4 
 assess-common/src/main/java/com/gkhy/assess/common/config/BaseSwaggerConfig.java          |    6 
 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysAttachServiceImpl.java |   13 ++
 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java   |   53 ++++++++++
 assess-system/src/main/resources/mapper/system/SysAttachMapper.xml                        |   21 ++++
 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLawController.java         |    5 +
 assess-admin/src/main/java/com/gkhy/assess/admin/config/SwaggerConfig.java                |   11 ++
 assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java           |    4 
 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java |   15 +++
 assess-system/src/main/java/com/gkhy/assess/system/service/SysAttachService.java          |   16 +++
 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysUserController.java        |   11 +
 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLoginController.java       |    5 +
 assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysNoticeController.java      |    6 +
 assess-system/src/main/resources/mapper/system/SysUserMapper.xml                          |   10 +-
 assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java          |    3 
 assess-common/src/main/java/com/gkhy/assess/common/enums/AttachTypeEnum.java              |   29 +++++
 19 files changed, 242 insertions(+), 18 deletions(-)

diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/config/SwaggerConfig.java b/assess-admin/src/main/java/com/gkhy/assess/admin/config/SwaggerConfig.java
new file mode 100644
index 0000000..0b54700
--- /dev/null
+++ b/assess-admin/src/main/java/com/gkhy/assess/admin/config/SwaggerConfig.java
@@ -0,0 +1,11 @@
+package com.gkhy.assess.admin.config;
+
+import com.gkhy.assess.common.config.BaseSwaggerConfig;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
+
+@Configuration
+@EnableSwagger2WebMvc
+public class SwaggerConfig extends BaseSwaggerConfig {
+
+}
diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysCommonController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysCommonController.java
index 22a9cbd..fbfc141 100644
--- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysCommonController.java
+++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysCommonController.java
@@ -20,11 +20,18 @@
     @Autowired
     private SysCommonService commonService;
 
-    @ApiOperation(value = "上传头像")
-    @PostMapping("/uploadIcon")
-    public CommonResult<UploadObjectVO> uploadIcon(MultipartFile file){
+    @ApiOperation(value = "上传图片/文件")
+    @PostMapping("/uploadFile")
+    public CommonResult<UploadObjectVO> uploadFile(MultipartFile file){
         return CommonResult.success(commonService.uploadFile(file));
     }
 
 
+    @ApiOperation(value = "删除图片")
+    @DeleteMapping("/removeFile")
+    public CommonResult removeFile(@RequestParam(required = true) String path){
+        return CommonResult.success(commonService.removeFile(path));
+    }
+
+
 }
diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLawController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLawController.java
index 1a408e1..ef50867 100644
--- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLawController.java
+++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLawController.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -38,6 +39,7 @@
         return CommonResult.success(lawService.getLawById(lawId));
     }
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "新增法律法规")
     @PostMapping("/addLaw")
     public CommonResult addLaw(@Validated @RequestBody SysLaw law){
@@ -45,6 +47,7 @@
     }
 
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "编辑法律法规")
     @PutMapping("/editLaw")
     public CommonResult editLaw(@Validated @RequestBody SysLaw law){
@@ -52,6 +55,7 @@
     }
 
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "删除法律法规")
     @PutMapping("/remove/{lawId}")
     public CommonResult removeLaw(@PathVariable(name = "lawId")Long lawId){
@@ -59,6 +63,7 @@
     }
 
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "法律法规状态修改,停用/启用")
     @PostMapping("/changeStatus")
     public CommonResult changeStatus(SysLaw law)
diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLoginController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLoginController.java
index fc54155..9850ac2 100644
--- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLoginController.java
+++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysLoginController.java
@@ -4,6 +4,8 @@
 import com.gkhy.assess.common.api.CommonResult;
 import com.gkhy.assess.common.domain.vo.LoginBody;
 import com.gkhy.assess.system.service.SysUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -19,17 +21,20 @@
  * @author kzy
  * @since 2023-10-17 14:26:29
  */
+@Api(tags = "用户登录前端控制器")
 @RestController
 @RequestMapping("/account")
 public class SysLoginController {
     @Autowired
     private SysUserService sysUserService;
 
+    @ApiOperation(value = "用户登录")
     @PostMapping("/login")
     public CommonResult login(@RequestBody LoginBody loginBody){
         return CommonResult.success(sysUserService.login(loginBody));
     }
 
+    @ApiOperation(value = "用户退出")
     @PostMapping("/logout")
     public CommonResult logout(){
         sysUserService.logout();
diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysNoticeController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysNoticeController.java
index df91d52..29a2757 100644
--- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysNoticeController.java
+++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysNoticeController.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -38,6 +39,7 @@
         return CommonResult.success(noticeService.getNoticeById(noticeId));
     }
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "新增通知")
     @PostMapping("/addNotice")
     public CommonResult addNotice(@Validated @RequestBody SysNotice notice){
@@ -45,6 +47,7 @@
     }
 
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "编辑通知")
     @PutMapping("/editNotice")
     public CommonResult editNotice(@Validated @RequestBody SysNotice notice){
@@ -52,13 +55,14 @@
     }
 
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "删除通知")
     @PutMapping("/remove/{noticeId}")
     public CommonResult removeNotice(@PathVariable(name = "noticeId")Long noticeId){
         return CommonResult.success(noticeService.deleteNoticeById(noticeId));
     }
 
-
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "通知状态修改,停用/启用")
     @PostMapping("/changeStatus")
     public CommonResult changeStatus(SysNotice notice)
diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysUserController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysUserController.java
index 0c786b7..871800b 100644
--- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysUserController.java
+++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/SysUserController.java
@@ -9,6 +9,8 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -19,6 +21,7 @@
 public class SysUserController {
     @Autowired
     private SysUserService sysUserService;
+
 
     @ApiOperation(value = "监管用户列表(分页)")
     @ApiImplicitParams({
@@ -59,19 +62,21 @@
         return CommonResult.success(sysUserService.agencyRegister(user));
     }
 
-
+    @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR)
     @ApiOperation(value = "创建专家")
     @PostMapping("/addExpert")
     public CommonResult addExpert(@Validated(ExpertGroup.class) @RequestBody SysUser user){
         return CommonResult.success(sysUserService.addExpert(user));
     }
 
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "编辑机构")
     @PutMapping("/editAgency")
     public CommonResult editAgency(@Validated(ExpertGroup.class) @RequestBody SysUser user){
         return CommonResult.success(sysUserService.editAgency(user));
     }
 
+    @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR)
     @ApiOperation(value = "编辑专家")
     @PutMapping("/editExpert")
     public CommonResult editExpert(@Validated(ExpertGroup.class) @RequestBody SysUser user){
@@ -99,6 +104,7 @@
     /**
      * 用户状态修改
      */
+    @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR)
     @ApiOperation(value = "用户状态修改,停用/启用")
     @PostMapping("/changeStatus")
     public CommonResult changeStatus(SysUser user)
@@ -106,7 +112,7 @@
         return CommonResult.success(sysUserService.changeUserStatus(user));
     }
 
-
+    @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "审批状态修改,停用/启用")
     @PostMapping("/changeApprove")
     public CommonResult changeApprove(SysUser user)
@@ -115,6 +121,7 @@
     }
 
 
+    @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR)
     @ApiOperation(value = "根据id删除用户")
     @DeleteMapping("/remove/{userId}")
     public CommonResult removeUser(@PathVariable(name = "userId") Long userId)
diff --git a/assess-common/src/main/java/com/gkhy/assess/common/config/BaseSwaggerConfig.java b/assess-common/src/main/java/com/gkhy/assess/common/config/BaseSwaggerConfig.java
index de01f87..ba4b375 100644
--- a/assess-common/src/main/java/com/gkhy/assess/common/config/BaseSwaggerConfig.java
+++ b/assess-common/src/main/java/com/gkhy/assess/common/config/BaseSwaggerConfig.java
@@ -51,11 +51,11 @@
         // 用ApiInfoBuilder进行定制
         return new ApiInfoBuilder()
                 // 设置标题
-                .title("xx系统单机版API文档")
+                .title("智慧安评系统API文档")
                 // 描述
-                .description("描述:xx系统单机版API文档")
+                .description("描述:智慧安评系统API文档")
                 // 作者信息
-                .contact(new Contact("nms", null, null))
+                .contact(new Contact("gkhy", null, null))
                 // 版本
                 .version("版本号:1.0")
                 .build();
diff --git a/assess-common/src/main/java/com/gkhy/assess/common/enums/AttachTypeEnum.java b/assess-common/src/main/java/com/gkhy/assess/common/enums/AttachTypeEnum.java
new file mode 100644
index 0000000..096c6e8
--- /dev/null
+++ b/assess-common/src/main/java/com/gkhy/assess/common/enums/AttachTypeEnum.java
@@ -0,0 +1,29 @@
+package com.gkhy.assess.common.enums;
+
+/**
+ * 附件类型
+ *
+ */
+public enum AttachTypeEnum
+{
+    SOCIAL(1, "社保"), MEDICAL(2, "医保"),SALARY(3, "工资单");
+
+    private final Integer code;
+    private final String info;
+
+    AttachTypeEnum(Integer code, String info)
+    {
+        this.code = code;
+        this.info = info;
+    }
+
+    public Integer getCode()
+    {
+        return code;
+    }
+
+    public String getInfo()
+    {
+        return info;
+    }
+}
diff --git a/assess-common/src/main/java/com/gkhy/assess/common/enums/UserIdentityEnum.java b/assess-common/src/main/java/com/gkhy/assess/common/enums/UserIdentityEnum.java
index 02d876f..006cc46 100644
--- a/assess-common/src/main/java/com/gkhy/assess/common/enums/UserIdentityEnum.java
+++ b/assess-common/src/main/java/com/gkhy/assess/common/enums/UserIdentityEnum.java
@@ -26,4 +26,8 @@
     {
         return info;
     }
+
+
+
+
 }
diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java
index 1e30371..eccc136 100644
--- a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java
+++ b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java
@@ -60,6 +60,10 @@
         chain.addPathDefinition("/swagger/**","anon");
         chain.addPathDefinition("/webjars/**", "anon");
         chain.addPathDefinition("/swagger-resources/**","anon");
+        chain.addPathDefinition("/doc.html", "anon");
+        chain.addPathDefinition("/v2/api-docs", "anon");
+        chain.addPathDefinition("/static/**", "anon");
+        chain.addPathDefinition("/error", "anon");
 
         chain.addPathDefinition("/account/login","anon");
       //  chain.addPathDefinition("/api/account/login","anon");
diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java
index 18ba914..84bdc4d 100644
--- a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java
+++ b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java
@@ -1,5 +1,6 @@
 package com.gkhy.assess.framework.shiro.realm;
 
+import com.gkhy.assess.common.enums.UserIdentityEnum;
 import com.gkhy.assess.common.utils.RequestUtil;
 import com.gkhy.assess.common.utils.SpringContextUtils;
 import com.gkhy.assess.framework.shiro.JwtToken;
@@ -37,8 +38,17 @@
         Set<String> roles=new HashSet<>();
         Set<String> menus=new HashSet<>();
         SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
-        info.addRole("admin");
-        info.addStringPermission("*:*:*");
+        if(sysUser.getIdentity().equals(UserIdentityEnum.MONITOR.getCode())){
+            info.addRole("monitor");
+            info.addStringPermission("system:assess:monitor");
+        }else if(sysUser.getIdentity().equals(UserIdentityEnum.AGENCY.getCode())){
+            info.addRole("agency");
+            info.addStringPermission("system:assess:agency");
+        }else{
+            info.addRole("expert");
+            info.addStringPermission("system:assess:expert");
+        }
+
         return info;
     }
 
@@ -50,11 +60,12 @@
      */
     @Override
     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+        HttpServletRequest req = SpringContextUtils.getHttpServletRequest();
         SysUser sysUser=null;
         if(authenticationToken instanceof JwtToken){
             String token= (String) authenticationToken.getCredentials();
             if(token==null){
-                HttpServletRequest req = SpringContextUtils.getHttpServletRequest();
+
                 log.info("————————身份认证失败——————————IP地址:  "+ RequestUtil.getRequestIp(req) +",URL:"+req.getRequestURI());
                 throw new AuthenticationException("token为空!");
             }
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/mapper/SysAttachMapper.java b/assess-system/src/main/java/com/gkhy/assess/system/mapper/SysAttachMapper.java
index 18d72e6..2e55e73 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/mapper/SysAttachMapper.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/mapper/SysAttachMapper.java
@@ -3,6 +3,9 @@
 import com.gkhy.assess.system.domain.SysAttach;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +18,19 @@
 @Mapper
 public interface SysAttachMapper extends BaseMapper<SysAttach> {
 
+    /**
+     * 根据用户id获取附件
+     * @param userId
+     * @param type
+     * @return
+     */
+    List<SysAttach> getAttachsByUserId(@Param("userId") Long userId, @Param("type") Integer type);
+
+    /**
+     * 根据用户id删除数据
+     * @param userId
+     * @param type
+     * @return
+     */
+    int deleteAttachsByUserId(Long userId, Integer type);
 }
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/SysAttachService.java b/assess-system/src/main/java/com/gkhy/assess/system/service/SysAttachService.java
index 3027178..13c5f0e 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/SysAttachService.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/SysAttachService.java
@@ -3,6 +3,8 @@
 import com.gkhy.assess.system.domain.SysAttach;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统配置表 服务类
@@ -13,4 +15,18 @@
  */
 public interface SysAttachService extends IService<SysAttach> {
 
+    /**
+     * 根据用户id获取附件
+     * @param userId
+     * @return
+     */
+    List<SysAttach> getAttachsByUserId(Long userId,Integer type);
+
+    /**
+     * 根据用户id删除附件
+     * @param userId
+     * @param type
+     * @return
+     */
+    int deleteAttachsByUserId(Long userId,Integer type);
 }
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java b/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java
index c35b493..4e22674 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java
@@ -11,4 +11,7 @@
      * @return
      */
     public UploadObjectVO uploadFile(MultipartFile file);
+
+
+    public boolean removeFile(String path);
 }
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysAttachServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysAttachServiceImpl.java
index a4098a6..24130a5 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysAttachServiceImpl.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysAttachServiceImpl.java
@@ -6,6 +6,8 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统配置表 服务实现类
@@ -17,4 +19,15 @@
 @Service
 public class SysAttachServiceImpl extends ServiceImpl<SysAttachMapper, SysAttach> implements SysAttachService {
 
+    @Override
+    public List<SysAttach> getAttachsByUserId(Long userId, Integer type) {
+        return baseMapper.getAttachsByUserId(userId,type);
+    }
+
+    @Override
+    public int deleteAttachsByUserId(Long userId, Integer type) {
+        return baseMapper.deleteAttachsByUserId(userId,type);
+    }
+
+
 }
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java
index 9b874f8..e126d7e 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java
@@ -27,6 +27,21 @@
         return uploadObjectVO;
     }
 
+    @Override
+    public boolean removeFile(String path) {
+        String systemDir=System.getProperty("user.dir");
+        String filePath=systemDir+File.separator+path;
+        File dirFile=new File(filePath);
+        if(!dirFile.isFile()){
+            throw new ApiException("非文件,不能删除");
+        }
+        if(!dirFile.exists()){
+            throw new ApiException("文件不存在");
+        }
+        dirFile.delete();
+        return true;
+    }
+
     public UploadObjectVO doUpload(MultipartFile file){
         String filename=file.getOriginalFilename();
         String subfix=filename.substring(filename.lastIndexOf("."));
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
index 6ceaac1..a1ca5d8 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
@@ -7,6 +7,7 @@
 import com.gkhy.assess.common.constant.CacheConstant;
 import com.gkhy.assess.common.domain.vo.AccountVO;
 import com.gkhy.assess.common.domain.vo.LoginBody;
+import com.gkhy.assess.common.enums.AttachTypeEnum;
 import com.gkhy.assess.common.enums.UserIdentityEnum;
 import com.gkhy.assess.common.enums.UserTypeEnum;
 import com.gkhy.assess.common.exception.ApiException;
@@ -17,6 +18,7 @@
 import com.gkhy.assess.system.domain.*;
 import com.gkhy.assess.system.mapper.SysAgencyMapper;
 import com.gkhy.assess.system.mapper.SysUserMapper;
+import com.gkhy.assess.system.service.SysAttachService;
 import com.gkhy.assess.system.service.SysConfigService;
 import com.gkhy.assess.system.utils.ShiroUtils;
 import com.gkhy.assess.system.service.SysUserService;
@@ -30,6 +32,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Validator;
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -55,11 +58,14 @@
     @Autowired
     private SysAgencyMapper agencyMapper;
 
+    @Autowired
+    private SysAttachService attachService;
+
 
     @Override
     public AccountVO login(LoginBody loginBody) {
         // 验证码校验
-        validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid());
+       // validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid());
         UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), loginBody.getPassword(), false);
         Subject subject= SecurityUtils.getSubject();
         String msg ;
@@ -202,6 +208,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = RuntimeException.class)
     public int addExpert(SysUser user) {
         //校验用户信息
         if(!checkUsernameUnique(new SysUser().setUsername(user.getUsername()))){
@@ -216,6 +223,26 @@
         if(!b){
             throw new ApiException("创建专家信息失败");
         }
+        List<SysAttach> socialAttach=user.getSocialAttach();
+        List<SysAttach> medicalAttach=user.getMedicalAttach();
+        List<SysAttach> salaryAttach=user.getSalaryAttach();
+        List<SysAttach> attaches=new ArrayList<>();
+        for(SysAttach attach:socialAttach){
+            attach.setType(AttachTypeEnum.SOCIAL.getCode());
+            attach.setUserId(user.getId());
+            attaches.add(attach);
+        }
+        for(SysAttach attach:medicalAttach){
+            attach.setType(AttachTypeEnum.MEDICAL.getCode());
+            attach.setUserId(user.getId());
+            attaches.add(attach);
+        }
+        for(SysAttach attach:salaryAttach){
+            attach.setType(AttachTypeEnum.SALARY.getCode());
+            attach.setUserId(user.getId());
+            attaches.add(attach);
+        }
+        attachService.saveBatch(attaches);
         return 1;
     }
 
@@ -281,6 +308,30 @@
         if(!b){
             throw new ApiException("更新专家信息失败");
         }
+        //刪除旧数据
+        attachService.deleteAttachsByUserId(user.getId(),null);
+
+        List<SysAttach> socialAttach=user.getSocialAttach();
+        List<SysAttach> medicalAttach=user.getMedicalAttach();
+        List<SysAttach> salaryAttach=user.getSalaryAttach();
+        List<SysAttach> attaches=new ArrayList<>();
+        for(SysAttach attach:socialAttach){
+            attach.setType(AttachTypeEnum.SOCIAL.getCode());
+            attach.setUserId(user.getId());
+            attaches.add(attach);
+        }
+        for(SysAttach attach:medicalAttach){
+            attach.setType(AttachTypeEnum.MEDICAL.getCode());
+            attach.setUserId(user.getId());
+            attaches.add(attach);
+        }
+        for(SysAttach attach:salaryAttach){
+            attach.setType(AttachTypeEnum.SALARY.getCode());
+            attach.setUserId(user.getId());
+            attaches.add(attach);
+        }
+        attachService.saveBatch(attaches);
+
         return 1;
     }
 
diff --git a/assess-system/src/main/resources/mapper/system/SysAttachMapper.xml b/assess-system/src/main/resources/mapper/system/SysAttachMapper.xml
index c9a9cca..91733c0 100644
--- a/assess-system/src/main/resources/mapper/system/SysAttachMapper.xml
+++ b/assess-system/src/main/resources/mapper/system/SysAttachMapper.xml
@@ -1,5 +1,26 @@
 <?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="com.gkhy.assess.system.mapper.SysAttachMapper">
+    <delete id="deleteAttachsByUserId">
+        delete from sys_attach
+        <where>
+            and user_id=#{user_id}
+            <if test="type!=null and type!=''">
+                and type=#{type}
+            </if>
+            <if test="type==null">
+                and type in (1,2,3)
+            </if>
+        </where>
+    </delete>
 
+    <select id="getAttachsByUserId" resultType="com.gkhy.assess.system.domain.SysAttach">
+        select * from sys_attach
+        <where>
+            and user_id=#{userId}
+            <if test="type!=null and type!=''">
+               and type=#{type}
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/assess-system/src/main/resources/mapper/system/SysUserMapper.xml b/assess-system/src/main/resources/mapper/system/SysUserMapper.xml
index 63b3dc9..7b7b107 100644
--- a/assess-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/assess-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -61,7 +61,7 @@
     </delete>
 
     <select id="getUserByUsername" resultMap="SysUserResult">
-        select id,username,name,password,salt,status,del_flag from sys_user
+        select id,username,name,password,salt,identity,status,del_flag from sys_user
         where username=#{username} and del_flag=0
     </select>
 
@@ -119,17 +119,17 @@
 
 
     <select id="getUserByPhone" resultMap="SysUserResult">
-        select id,username,name,password,salt,status,del_flag from sys_user
+        select id,username,name,password,salt,identity,status,del_flag from sys_user
         where phone=#{phone} and del_flag=0
     </select>
 
     <select id="getUserByEmail" resultMap="SysUserResult">
-        select id,username,name,password,salt,status,del_flag from sys_user
+        select id,username,name,password,salt,identity,status,del_flag from sys_user
         where email=#{email} and del_flag=0
     </select>
 
     <select id="getUserById" resultMap="SysUserResult">
-        select id,username,name,password,salt,status,del_flag from sys_user
+        select id,username,name,password,salt,identity,status,del_flag from sys_user
         where id=#{userId}
     </select>
 
@@ -146,7 +146,7 @@
     </select>
 
     <select id="getUserByUsernamePhone" resultType="com.gkhy.assess.system.domain.SysUser">
-        select id,username,name,password,salt,status,del_flag from sys_user
+        select id,username,name,password,salt,identity,status,del_flag from sys_user
         where (username=#{username} or phone=#{username}) and del_flag=0
     </select>
 

--
Gitblit v1.9.2