Browse Source

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper into master

seyason 2 years ago
parent
commit
bc12866a35

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractDocumentController.java

@@ -14,6 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * <p>
@@ -38,7 +39,7 @@ public class ContractDocumentController {
      * @return
      */
     @RequestMapping("/fileUpload")
-    public HttpRespMsg fileUpload (HttpServletRequest request, @RequestParam Integer ContractId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile files){
+    public HttpRespMsg fileUpload (HttpServletRequest request, @RequestParam Integer ContractId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile[] files){
         return contractDocumentService.fileUpload(request,ContractId,folderId,files);
     }
 

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -1848,6 +1848,12 @@ public class WeiXinCorpController {
         return msg;
     }
 
+    //企业微信用户扫码登录
+    @RequestMapping(value = "/corpWeiXinScanningCodeLogin", method = RequestMethod.GET)
+    public HttpRespMsg corpWeiXinScanningCodeLogin(String code) {
+       return userService.corpWeiXinScanningCodeLogin(code);
+    }
+
     //获取企业微信考勤打卡统计数据
     @RequestMapping("/getUserCheckInDayData")
     public HttpRespMsg getUserCheckInDayData(int companyId, String userId, String startDate, String endDate) {

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractDocumentService.java

@@ -19,7 +19,7 @@ import javax.servlet.http.HttpServletResponse;
  * @since 2022-12-09
  */
 public interface ContractDocumentService extends IService<ContractDocument> {
-    HttpRespMsg fileUpload(HttpServletRequest request, @RequestParam Integer ContractId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile files);
+    HttpRespMsg fileUpload(HttpServletRequest request, @RequestParam Integer ContractId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile[] files);
 
     HttpRespMsg fileDown(HttpServletRequest request, HttpServletResponse response, Integer folderId, Integer contractId,Integer fileId);
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -75,4 +75,6 @@ public interface UserService extends IService<User> {
     HttpRespMsg loginAdminByThirdParty(String jobNumber, String token);
 
     HttpRespMsg importMonthCost(MultipartFile file, String ymonth, HttpServletRequest request);
+
+    HttpRespMsg corpWeiXinScanningCodeLogin(String code);
 }

+ 53 - 51
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractDocumentServiceImpl.java

@@ -56,66 +56,68 @@ public class ContractDocumentServiceImpl extends ServiceImpl<ContractDocumentMap
      * @param request
      * @param ContractId
      * @param folderId
-     * @param file
+     * @param files
      * @return
      */
     @Override
-    public HttpRespMsg fileUpload(HttpServletRequest request, @RequestParam Integer ContractId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile file) {
+    public HttpRespMsg fileUpload(HttpServletRequest request, @RequestParam Integer ContractId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile[] files) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部合同");
         if(functionContractList.size() <= 0){
             msg.setError(MessageUtils.message("access.operationError"));
             return msg;
         }
-        ContractDocument record = new ContractDocument();
-        record.setCreatorId(user.getId());
-        record.setCreatorName(user.getName());
-        record.setDocumentName(file.getOriginalFilename());
-        record.setFolderId(folderId);
-        record.setContractId(ContractId);
-        if (file != null && !file.isEmpty()) {
-            //截取文件后缀
-            String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
-            record.setDocumentType(DocumentTypeUtil.DocumentType(fileSuffix));
-            //处理文件
-            File dir = new File(path);
-            if (!dir.exists()) {
-                dir.mkdir();
-            }
-            String fileName= "";
-            if (file!=null && !file.isEmpty()) {
-                fileName = file.getOriginalFilename();
+        for (MultipartFile file : files) {
+            ContractDocument record = new ContractDocument();
+            record.setCreatorId(user.getId());
+            record.setCreatorName(user.getName());
+            record.setDocumentName(file.getOriginalFilename());
+            record.setFolderId(folderId);
+            record.setContractId(ContractId);
+            if (file != null && !file.isEmpty()) {
+                //截取文件后缀
+                String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+                record.setDocumentType(DocumentTypeUtil.DocumentType(fileSuffix));
+                //处理文件
+                File dir = new File(path);
+                if (!dir.exists()) {
+                    dir.mkdir();
+                }
+                String fileName= "";
+                if (file!=null && !file.isEmpty()) {
+                    fileName = file.getOriginalFilename();
 
-                int pos = fileName.lastIndexOf(".");
-                String suffix = fileName.substring(pos).toLowerCase();
-                //用uuid替换原始的文件名
-                String purFName = UUID.randomUUID().toString().replaceAll("-", "");
-                fileName = purFName + suffix;
-                File saveFile = new File(dir, fileName);
-                try {
-                    saveFile.createNewFile();
-                    file.transferTo(saveFile);
-                    //计算文件大小
-                    long fileSize = saveFile.length();
-                    String fileLength = FileUtil.getReadableFileSize(fileSize);
-                    record.setServerName(path + fileName);
-                    record.setSize(fileLength);
-                    String pathPrefix = "/upload/";
-                    record.setUrl(pathPrefix + fileName);
-                    contractDocumentMapper.insert(record);
-                    msg.data = record;
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    fileName = null;
-                    msg.setError(e.getMessage()+", path="+dir.getAbsolutePath());
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    fileName = null;
-                    msg.setError(e.getMessage()+", path="+dir.getAbsolutePath());
+                    int pos = fileName.lastIndexOf(".");
+                    String suffix = fileName.substring(pos).toLowerCase();
+                    //用uuid替换原始的文件名
+                    String purFName = UUID.randomUUID().toString().replaceAll("-", "");
+                    fileName = purFName + suffix;
+                    File saveFile = new File(dir, fileName);
+                    try {
+                        saveFile.createNewFile();
+                        file.transferTo(saveFile);
+                        //计算文件大小
+                        long fileSize = saveFile.length();
+                        String fileLength = FileUtil.getReadableFileSize(fileSize);
+                        record.setServerName(path + fileName);
+                        record.setSize(fileLength);
+                        String pathPrefix = "/upload/";
+                        record.setUrl(pathPrefix + fileName);
+                        contractDocumentMapper.insert(record);
+                        msg.data = record;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                        fileName = null;
+                        msg.setError(e.getMessage()+", path="+dir.getAbsolutePath());
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        fileName = null;
+                        msg.setError(e.getMessage()+", path="+dir.getAbsolutePath());
+                    }
+                } else {
+                    msg.setError(MessageUtils.message("file.nonExistentError"));
                 }
-            } else {
-                msg.setError(MessageUtils.message("file.nonExistentError"));
             }
         }
         return msg;
@@ -134,7 +136,7 @@ public class ContractDocumentServiceImpl extends ServiceImpl<ContractDocumentMap
     public HttpRespMsg fileDown(HttpServletRequest request, HttpServletResponse response, Integer folderId, Integer contractId,Integer fileId) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部合同");
         if(functionContractList.size() <= 0){
             msg.setError(MessageUtils.message("access.viewError"));
             return msg;
@@ -203,7 +205,7 @@ public class ContractDocumentServiceImpl extends ServiceImpl<ContractDocumentMap
     public HttpRespMsg fileDelete(HttpServletRequest request, ContractFileDelVO contractFileDelVo) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部合同");
         if(functionContractList.size() <= 0){
             msg.setError(MessageUtils.message("access.deleteError"));
             return msg;

+ 11 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java

@@ -83,7 +83,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         try {
             String token = request.getHeader("token");
             User user = userMapper.selectById(token);
-            List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看合同");
+            List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部合同");
             if(functionContractList.size() <= 0){
                 httpRespMsg.setError(MessageUtils.message("access.viewError"));
                 return httpRespMsg;
@@ -183,6 +183,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     public HttpRespMsg ExportContract(HttpServletRequest request, String number, String name, String typeName, Integer status, String startDate, String endDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "导出合同");
+        if(functionContractList.size() <= 0){
+            httpRespMsg.setError(MessageUtils.message("access.operationError"));
+            return httpRespMsg;
+        }
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
         HttpRespMsg contractPage = getContractPage(request, null, null, number, name, typeName, status, startDate, endDate);
         HashMap<String, Object> resultDate = (HashMap<String, Object>) contractPage.data;
@@ -249,7 +254,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     public HttpRespMsg addContract(HttpServletRequest request, Contract contract) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "新增合同");
         if(functionContractList.size() <= 0){
             httpRespMsg.setError(MessageUtils.message("access.operationError"));
             return httpRespMsg;
@@ -296,7 +301,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     public HttpRespMsg editContract(HttpServletRequest request, Contract contract) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部合同");
         if(functionContractList.size() <= 0){
             httpRespMsg.setError(MessageUtils.message("access.operationError"));
             return httpRespMsg;
@@ -341,7 +346,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "导入合同");
         if(functionContractList.size() <= 0){
             msg.setError(MessageUtils.message("access.operationError"));
             return msg;
@@ -561,7 +566,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部合同");
         if(functionContractList.size() <= 0){
             msg.setError(MessageUtils.message("access.viewError"));
             return msg;
@@ -593,7 +598,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部合同");
         if(functionContractList.size() <= 0){
             msg.setError(MessageUtils.message("access.deleteError"));
             return msg;

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractTypeServiceImpl.java

@@ -54,7 +54,7 @@ public class ContractTypeServiceImpl extends ServiceImpl<ContractTypeMapper, Con
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String token = request.getHeader("token");
         User user = userMapper.selectById(token);
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部合同");
         if(functionContractList.size() <= 0){
             return httpRespMsg;
         }
@@ -74,7 +74,7 @@ public class ContractTypeServiceImpl extends ServiceImpl<ContractTypeMapper, Con
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String token = request.getHeader("token");
         User user = userMapper.selectById(token);
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "合同类型管理");
         if(functionContractList.size() <= 0){
             httpRespMsg.setError(MessageUtils.message("access.operationError"));
             return httpRespMsg;
@@ -116,7 +116,7 @@ public class ContractTypeServiceImpl extends ServiceImpl<ContractTypeMapper, Con
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         String token = request.getHeader("token");
         User user = userMapper.selectById(token);
-        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "编辑合同");
+        List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "合同类型管理");
         if(functionContractList.size() <= 0){
             httpRespMsg.setError(MessageUtils.message("access.deleteError"));
             return httpRespMsg;

+ 79 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -72,6 +72,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private String providerSecret;
     public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
     public static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openId&lang=zh_CN";
+    //扫码获取企业内部用户信息
+    public static final String GET_CORP_SCANNING_CODE_LOGININFO_URL = " https://qyapi.weixin.qq.com/cgi-bin/service/get_login_info?access_token=PROVIDER_ACCESS_TOKEN";
 
     //用于控制线程锁
     public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
@@ -416,6 +418,83 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return msg;
     }
 
+    @Override
+    public HttpRespMsg corpWeiXinScanningCodeLogin(String code) {
+        HttpRespMsg msg = new HttpRespMsg();
+
+        String url = null;
+        try {
+            url = GET_CORP_SCANNING_CODE_LOGININFO_URL.replace("PROVIDER_ACCESS_TOKEN", getProviderAccessToken());
+        } catch (Exception exception) {
+            exception.printStackTrace();
+            msg.setError(exception.getMessage());
+            return msg;
+        }
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        JSONObject reqParam = new JSONObject();
+        reqParam.put("auth_code", code);
+        HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
+        if (responseEntity.getStatusCode() == HttpStatus.OK) {
+            String resp = responseEntity.getBody();
+            System.err.println(resp);
+            JSONObject obj = JSONObject.parseObject(resp);
+            if (obj.getIntValue("errcode") == 0) {
+                JSONObject userInfo = obj.getJSONObject("user_info");
+                String wxUserId = userInfo.getString("open_userid");
+                List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("corpwx_userid", wxUserId));
+                if (userList.size() > 0) {
+                    //该用户已存在
+                    User curUser = userList.get(0);
+
+                    //写死进行测试
+//            if (curUser.getName().equals("屈跃庭")) {
+//                curUser = userMapper.selectById("7913998191517310976");
+//            }
+                    Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", curUser.getCompanyId()));
+                    WxCorpInfo info = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", curUser.getCompanyId()));
+                    curUser.setUserNameNeedTranslate(info.getSaasSyncContact());
+                    //检测密码正确时
+                    UserVO userVO = new UserVO().setCompanyName(company.getCompanyName());
+                    userVO.setCompany(company);
+                    BeanUtils.copyProperties(curUser, userVO);
+                    if (userVO.getRoleId() == null || userVO.getRoleId() == 0) {
+                        //msg.setError("请先联系管理员为您分配角色");
+                        msg.setError(MessageUtils.message("user.noRole"));
+                        return msg;
+                    }
+                    //还要多返回一个公司名字
+                    userVO.setPassword("");
+                    LocalDateTime remainingTime = company.getExpirationDate() == null ? LocalDateTime.now() : company.getExpirationDate();
+                    userVO.setRemainingTime(remainingTime.toInstant(ZoneOffset.of("+8")).toEpochMilli() -
+                            LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli());
+                    //检测是否是项目经理,项目经理有审核功能权限
+                    userVO.setLeader(judgeIsLeader(userVO.getId()));
+                    userVO.setTimeType(timeTypeMapper.selectById(company.getId()));
+                    List<Department> manageDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", userVO.getId()));
+                    List<Integer> deptIds = manageDeptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+                    int num = 0;
+                    if (deptIds.size() > 0) {
+                        num = auditWorkflowTimeSettingMapper.selectCount(new QueryWrapper<AuditWorkflowTimeSetting>().in("audit_dept_id", deptIds));
+                    }
+                    userVO.setHasAuditDept(num>0);
+                    setUserRoleMenu(userVO);
+                    msg.data = userVO;
+                } else {
+                    //msg.setError("该用户尚未绑定企业微信,需要通过账号密码登录");
+                    msg.setError(MessageUtils.message("wx.bindError"));
+                }
+            }else{
+                System.err.println("====================用户信息获取获取失败======================");
+            }
+        }
+        return msg;
+    }
+
 
     public void setUserRoleMenu(UserVO user) {
         Integer roleId = user.getRoleId();