diff --git a/src/main/java/com/dreamchaser/depository_manage/config/PublicConfig.java b/src/main/java/com/dreamchaser/depository_manage/config/PublicConfig.java index 79069488..bca0a80a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/config/PublicConfig.java +++ b/src/main/java/com/dreamchaser/depository_manage/config/PublicConfig.java @@ -31,6 +31,11 @@ public class PublicConfig { // public static String external_url = "http://127.0.0.1:39168"; public static String external_url_6666 = "http://kpi.hxgk.group/kpiapi"; + // 外网地址,用于接收验证 + public static String external_url_extranet = ""; + + + // 高权限部门列表 public static List roleAdminorgList = Arrays.asList(361L, 102L, 268L); @@ -41,7 +46,7 @@ public class PublicConfig { // 定义redis加锁的名称 public static String redis_Lock_name = "Wms_redis_lock"; - public static int availableVirtualMachine = Runtime.getRuntime().availableProcessors(); + public static int availableVirtualMachine = Runtime.getRuntime().availableProcessors(); /** * 获取相应部门的部门负责人 @@ -615,10 +620,11 @@ public class PublicConfig { /** * 绩效考核系统的登录接口 + * * @param map * @return */ - public static JSONObject baseLogin(Map map){ + public static JSONObject baseLogin(Map map) { String url = PublicConfig.external_url_6666 + "/base/login"; String jsonString = JSONObject.toJSONString(map); JSONObject paramObject = JSONObject.parseObject(jsonString); diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/EncryptionAlgorithm.java b/src/main/java/com/dreamchaser/depository_manage/entity/EncryptionAlgorithm.java new file mode 100644 index 00000000..1a4559f9 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/entity/EncryptionAlgorithm.java @@ -0,0 +1,69 @@ +package com.dreamchaser.depository_manage.entity; + +import lombok.Data; +import lombok.extern.log4j.Log4j2; +import org.apache.commons.codec.digest.DigestUtils; + +import java.util.HashMap; +import java.util.Map; + + +/** + * 加密算法 + *

+ * 1、分解步骤 + * one = md5(CodeString)+md5(AppKey) + * two = md5(one)+AppKey + * therr = md5(two) + * 2、合并 + * md5(md5(md5(CodeString)+md5(AppKey))+AppKey) + */ +@Log4j2 +@Data +public class EncryptionAlgorithm { + private static String CONSTANT_CONFIG_AppKey = "heng_xin_gao_ke_AppKey"; //应用程序密钥 + + private String code; + private String appkey; + + + public EncryptionAlgorithm(String code) { + this.code = code; + this.appkey = CONSTANT_CONFIG_AppKey; + } + + public String Algorithm() { + String keyMd5 = DigestUtils.md5Hex(this.appkey); + String codeMd51 = DigestUtils.md5Hex(this.code); + String one = codeMd51 + keyMd5; + String oneMd5 = DigestUtils.md5Hex(one); + String two = oneMd5 + this.appkey; + return DigestUtils.md5Hex(two); + } + + /** + * 用于获取当前用户的key与token + * @param userByPort 待获取用户 + * @return + */ + public Map getUserKeyAndUserToken(UserByPort userByPort) { + Map result = new HashMap<>(); + if(userByPort == null){ + return null; + } + EncryptionAlgorithm md5EncryptionForNumber = new EncryptionAlgorithm(userByPort.getNumber()); + String userKey = md5EncryptionForNumber.Algorithm(); + + EncryptionAlgorithm md5Encryption = new EncryptionAlgorithm(CONSTANT_CONFIG_AppKey); + String sha1Str = userKey + userByPort.getNumber() + userByPort.getPassword() + md5Encryption.Algorithm(); + String userToken = DigestUtils.sha1Hex(sha1Str); + + + result.put("userKey", userKey); + result.put("userToken", userToken); + return result; + } + + +} + diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/Md5Encryption.java b/src/main/java/com/dreamchaser/depository_manage/entity/Md5Encryption.java deleted file mode 100644 index ab3b451c..00000000 --- a/src/main/java/com/dreamchaser/depository_manage/entity/Md5Encryption.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.dreamchaser.depository_manage.entity; - -import lombok.Data; -import lombok.extern.log4j.Log4j2; -import org.apache.commons.codec.digest.DigestUtils; - -import java.util.Map; - - -/** - * 加密算法 - */ -@Log4j2 -@Data -public class Md5Encryption { - private static String CONSTANT_CONFIG_AppKey = "heng_xin_gao_ke_AppKey"; //应用程序密钥 - - private String code; - private String appkey; - - public String Md5EncryptionAlgorithm(){ - if(this.appkey == ""){ - Md5EncryptionInit(this.code); - } - String keyMd5 = DigestUtils.md5Hex(this.appkey); - String codeMd1 = DigestUtils.md5Hex(this.code); - String yiCeng = codeMd1 + keyMd5; - String yiCengMd5 = DigestUtils.md5Hex(yiCeng); - String erCeng = yiCengMd5 + this.appkey; - String md5Val = DigestUtils.md5Hex(erCeng); - return md5Val; - } - - public String Md5EncryptionAlgorithmFj(){ - if(this.appkey == ""){ - Md5EncryptionInit(this.code); - } - log.info("Code ===> "+this.code); - log.info("AppKey ===> "+this.appkey); - - String keyMd5 = DigestUtils.md5Hex(this.appkey); - log.info("Step1:--AppKey-加密->"+keyMd5); - String codeMd1 = DigestUtils.md5Hex(this.code); - log.info("Step2:--CodeString-加密->"+codeMd1); - String yiCeng = codeMd1 + keyMd5; - log.info("Step3:--CodeString+AppKey-->"+yiCeng); - String yiCengMd5 = DigestUtils.md5Hex(yiCeng); - log.info("Step4:--one-加密->"+yiCengMd5); - String erCeng = yiCengMd5 + this.appkey; - log.info("Step5:--one + AppKey->"+erCeng); - String erCengMd5 = DigestUtils.md5Hex(erCeng); - log.info("Step6:--therr--加密-->\n",erCengMd5); - return erCengMd5; - } - - /** - * 初始化程序 - * @param code - */ - public void Md5EncryptionInit(String code){ - this.code = code; - this.appkey = CONSTANT_CONFIG_AppKey; - } -} - diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/Post.java b/src/main/java/com/dreamchaser/depository_manage/entity/Post.java index 2f633793..6ee0c2bd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/Post.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/Post.java @@ -57,6 +57,11 @@ public class Post { */ private Long department; + /** + * 部门 + */ + private Long adminorg; + /** * 名称 */ diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java b/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java index fe589ef1..960584c1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java @@ -133,7 +133,7 @@ public class UserByPort { /** * 角色 */ - private Integer role; + private String role; /** * 身份证号 diff --git a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.java b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.java index 647d4983..32fc985a 100644 --- a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.java @@ -2,9 +2,13 @@ package com.dreamchaser.depository_manage.hrNew_mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.dreamchaser.depository_manage.entity.Administration; +import com.dreamchaser.depository_manage.pojo.AdministrationP; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Map; + @Mapper @Repository @DS("hr_new") @@ -15,4 +19,13 @@ public interface AdministrativeMapper { * @return */ Administration findAdministrationById(Long id); + + /** + * 获取所有行政组织 + * @return + */ + List findAdministrationsAll(); + + + List findAdministrationPByCondition(Map map); } diff --git a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.xml b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.xml index 0393424c..d808c5c8 100644 --- a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/AdministrativeMapper.xml @@ -13,14 +13,69 @@ + + + + + + + + + + + id,number,name,superior,organization_type,abbreviation,state,time,wechat_organization_id + + id,number,name,superior,type,level,state,typename + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/PostMapper.java b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/PostMapper.java new file mode 100644 index 00000000..b97669d5 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/PostMapper.java @@ -0,0 +1,16 @@ +package com.dreamchaser.depository_manage.hrNew_mapper; + +import com.dreamchaser.depository_manage.entity.Post; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Repository +@Mapper +public interface PostMapper { + /** + * 根据岗位id获取岗位信息 + * @param postId + * @return + */ + Post findPostById(Long postId); +} diff --git a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/PostMapper.xml b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/PostMapper.xml new file mode 100644 index 00000000..6d4a6c25 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/PostMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id,number,name,duties,time,state,superior,perincha,department,adm_org,duties_name,duties_number,job_name + + + + + + \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.java b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.java index a7bb5bd6..9bdee4dd 100644 --- a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.java +++ b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.java @@ -11,6 +11,7 @@ import java.util.Map; /** * 关于用户的mapper接口 + * * @author Dreamchaser */ @Repository @@ -19,6 +20,7 @@ import java.util.Map; public interface UserMapper { /** * 通过id获取用户信息 + * * @param id 待获取用户id * @return */ @@ -26,8 +28,41 @@ public interface UserMapper { /** * 通过工号获取用户信息 + * * @param number 待获取用户工号 * @return */ UserByPort findUserByNumber(String number); + + + /** + * 获取当前部门的部门负责人 + * + * @param departmentId 待获取部门Id + * @return + */ + List findDepartmentHeaders(Long departmentId); + + + /** + * 根据企业微信或微信id获取用户信息 + * + * @param workWechat 企业微信id + * @return + */ + UserByPort findUserByWorkWechat(String workWechat); + + /** + * 根据条件查询用户信息 + * @param map 待查询条件 + * @return + */ + List findUserByCondition(Map map); + + /** + * 根据条件查询用户数量 + * @param map 待查询条件 + * @return + */ + Integer findUserCountByCondition(Map map); } diff --git a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.xml b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.xml index 555c253c..6e3e9157 100644 --- a/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.xml +++ b/src/main/java/com/dreamchaser/depository_manage/hrNew_mapper/UserMapper.xml @@ -78,4 +78,122 @@ from man_cont where number = #{number} + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/dreamchaser/depository_manage/service/AdministrativeService.java b/src/main/java/com/dreamchaser/depository_manage/service/AdministrativeService.java new file mode 100644 index 00000000..51edc9d9 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/AdministrativeService.java @@ -0,0 +1,39 @@ +package com.dreamchaser.depository_manage.service; + +import com.dreamchaser.depository_manage.entity.Administration; +import com.dreamchaser.depository_manage.entity.UserByPort; + +import java.util.List; + +public interface AdministrativeService { + + /** + * 根据id获取行政组织 + * @param id 待获取行政组织id + * @return + */ + Administration findAdministrationById(Long id); + + /** + * 获取所有行政组织 + * @return + */ + List findAdministrationsAll(); + + /** + * 获取当前用户所处部门 + * + * @param userByPort 待获取用户 + * @return + */ + public Administration getDepartmentByUser(UserByPort userByPort); + + + /** + * 获取当前用户所处的部门id(高科)_ + * @param departmentId 待获取部门id + * @return + */ + public Administration getDepartmentForHXGK(Long departmentId); + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/UserService.java b/src/main/java/com/dreamchaser/depository_manage/service/UserService.java index 5767a31a..a004d18d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/UserService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/UserService.java @@ -1,7 +1,10 @@ package com.dreamchaser.depository_manage.service; +import com.dreamchaser.depository_manage.entity.Administration; import com.dreamchaser.depository_manage.entity.UserByPort; +import java.util.List; + /** * user的service层 */ @@ -21,4 +24,13 @@ public interface UserService { */ UserByPort findUserByNumber(String number); + + /** + * 获取当前部门的部门负责人 + * + * @param administration 待获取部门 + * @return + */ + public List getDepartmentHeaderById(Administration administration); + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/AdministrativeServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/AdministrativeServiceImpl.java new file mode 100644 index 00000000..e39f731b --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/AdministrativeServiceImpl.java @@ -0,0 +1,86 @@ +package com.dreamchaser.depository_manage.service.impl; + +import com.dreamchaser.depository_manage.entity.Administration; +import com.dreamchaser.depository_manage.entity.UserByPort; +import com.dreamchaser.depository_manage.hrNew_mapper.AdministrativeMapper; +import com.dreamchaser.depository_manage.service.AdministrativeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class AdministrativeServiceImpl implements AdministrativeService { + + @Autowired + private AdministrativeMapper administrativeMapper; + + /** + * 根据id获取行政组织 + * @param id 待获取行政组织id + * @return + */ + @Override + public Administration findAdministrationById(Long id) { + return administrativeMapper.findAdministrationById(id); + } + + /** + * 获取所有行政组织 + * @return + */ + @Override + public List findAdministrationsAll() { + return administrativeMapper.findAdministrationsAll(); + } + + + /** + * 获取当前用户所处部门 + * + * @param userByPort 待获取用户 + * @return + */ + public Administration getDepartmentByUser(UserByPort userByPort) { + Long maindeparment = userByPort.getMaindeparment(); + if (Long.compare(309, maindeparment) == 0) { + // 如果是顶级 + return getDepartmentForHXGK(userByPort.getAdminorg()); + } + return administrativeMapper.findAdministrationById(maindeparment); + + } + + /** + * 获取当前用户所处的部门id(高科)_ + * @param departmentId 待获取部门id + * @return + */ + public Administration getDepartmentForHXGK(Long departmentId) { + List administrationsAll = administrativeMapper.findAdministrationsAll(); + return getDepartmentForRecursion(departmentId, administrationsAll); + } + + /** + * 用于递归获取高科部门级行政组织 + * @param departmentId 当前行政组织id + * @param administrationList 行政组织列表 + * @return + */ + public Administration getDepartmentForRecursion(Long departmentId,List administrationList){ + for (Administration administration : administrationList) { + Long administrationId = administration.getId(); + if(Long.compare(administrationId,departmentId) == 0){ + Long superior = administration.getSuperior(); + if(Long.compare(superior,309) == 0){ + return administration; + }else{ + return getDepartmentForRecursion(superior,administrationList); + } + } + } + return null; + } + +} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java index e5d5631d..dc34706e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java @@ -1,10 +1,16 @@ package com.dreamchaser.depository_manage.service.impl; +import com.dreamchaser.depository_manage.entity.Administration; import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.hrNew_mapper.UserMapper; import com.dreamchaser.depository_manage.service.UserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + +@Service public class UserServiceImpl implements UserService { @Autowired @@ -31,5 +37,29 @@ public class UserServiceImpl implements UserService { } + /** + * 获取当前部门的部门负责人 + * + * @param administration 待获取部门 + * @return + */ + public List getDepartmentHeaderById(Administration administration) { + + // 用于存储结果集 + List userByPortList = new ArrayList<>(); + // 查询数据库中当前部门的负责人 + List departmentHeaders = userMapper.findDepartmentHeaders(administration.getId()); + for (UserByPort departmentHeader : departmentHeaders) { + // 获取当前人员的雇佣关系 + Integer emptype = departmentHeader.getEmptype(); + if(emptype > 10){ + // 如果是离职状态,则不加入 + continue; + } + userByPortList.add(departmentHeader); + } + return userByPortList; + } + } diff --git a/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java b/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java index 19fc52a7..72f6d5b7 100644 --- a/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java @@ -2,6 +2,7 @@ package com.dreamchaser.depository_manage; import com.dreamchaser.depository_manage.entity.Administration; import com.dreamchaser.depository_manage.entity.UserByPort; +import com.dreamchaser.depository_manage.hrNew_mapper.AdministrativeMapper; import com.dreamchaser.depository_manage.hrNew_mapper.UserMapper; import org.junit.Test; import org.junit.runner.RunWith; @@ -9,8 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import java.util.ArrayList; -import java.util.List; +import java.util.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) @@ -18,27 +18,108 @@ public class MoreDatasourceTest { @Autowired UserMapper userMapper; + @Autowired + AdministrativeMapper administrativeMapper; + @Test public void test() { UserByPort userById = userMapper.findUserById(6235L); - System.out.println(userById); } + /** - * 获取当前部门的部门负责人 + * 获取当前用户所处部门 + * + * @param userByPort 待获取用户 + * @return + */ + public Administration getUserDepartmentId(UserByPort userByPort) { + Long maindeparment = userByPort.getMaindeparment(); + if (Long.compare(309, maindeparment) == 0) { + // 如果是顶级 + return getDepartmentId(userByPort.getAdminorg()); + } + return administrativeMapper.findAdministrationById(maindeparment); + + } + + + /** + * 获取当前用户所处的部门id * * @param departmentId 待获取部门id * @return */ - public List findDepartmentHeaderById(Integer departmentId) { + public Administration getDepartmentId(Long departmentId) { + List administrationsAll = administrativeMapper.findAdministrationsAll(); + return getDepartmentForRecursion(departmentId, administrationsAll); + } - List userByPortList = new ArrayList<>(); + /** + * 用于递归获取高科部门级行政组织 + * + * @param departmentId 当前行政组织id + * @param administrationList 行政组织列表 + * @return + */ + public Administration getDepartmentForRecursion(Long departmentId, List administrationList) { + for (Administration administration : administrationList) { + Long administrationId = administration.getId(); + if (Long.compare(administrationId, departmentId) == 0) { + Long superior = administration.getSuperior(); + if (Long.compare(superior, 309) == 0) { + return administration; + } else { + return getDepartmentForRecursion(superior, administrationList); + } + } + } + return null; + } + + /** + * 获取当前部门的部门负责人 + * + * @param administration 待获取部门 + * @return + */ + public List getDepartmentHeaderById(Administration administration) { + + // 用于存储结果集 + List userByPortList = new ArrayList<>(); + // 查询数据库中当前部门的负责人 + List departmentHeaders = userMapper.findDepartmentHeaders(administration.getId()); + for (UserByPort departmentHeader : departmentHeaders) { + // 获取当前人员的雇佣关系 + Integer emptype = departmentHeader.getEmptype(); + if (emptype > 10) { + // 如果是离职状态,则不加入 + continue; + } + userByPortList.add(departmentHeader); + } return userByPortList; } - public Administration findTopAdministrationById(Long id){ + /** + * 根据id获取行政组织 + * + * @param id 待获取id + * @return + */ + public Administration findTopAdministrationById(Long id) { + return administrativeMapper.findAdministrationById(id); + } + + + public UserByPort getUserByWorkWechat(String workWechat) { + return null; } + + + + }