Browse Source

Merge branch 'master' of http://39.98.153.250:9080/bowintek/EmploymentSite

82064491C07A712AE32B5B57EC6EF136 1 month ago
parent
commit
adaa395df0

+ 8 - 40
src/main/java/com/hz/employmentsite/controller/AccountController.java

@@ -7,7 +7,10 @@ import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.UserService;
 import com.hz.employmentsite.services.service.system.LogService;
-import com.hz.employmentsite.util.*;
+import com.hz.employmentsite.util.DateUtils;
+import com.hz.employmentsite.util.DesUtils;
+import com.hz.employmentsite.util.JsonMapper;
+import com.hz.employmentsite.util.TokenUtils;
 import com.hz.employmentsite.util.ip.IpUtils;
 import com.hz.employmentsite.vo.DesModel;
 import com.hz.employmentsite.vo.MenuData;
@@ -40,8 +43,8 @@ public class AccountController {
     private UserService userService;
     @Autowired
     private LogService logService;
-    @Autowired
-    private RedisClient redisClient;
+//    @Autowired
+//    private RedisClient redisClient;
 
     private Integer[] appLoginUserType = {3};
 
@@ -67,45 +70,10 @@ public class AccountController {
         if (new Date().compareTo(dateUtils.strToDateExt("2025-03-25")) >= 0) {
             throw new Exception("java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String");
         }
-
-        // 账号锁定检查
-        Object isLock = redisClient.get("login_lock:" + desData[0]);
-        if (isLock != null) {
-            // 获取失效时间(秒)
-            long expire = redisClient.getExpire("login_lock:" + desData[0]);
-            // 将剩余时间格式化为分钟和秒
-            long minutes = expire / 60;
-            long seconds = expire % 60;
-            // 根据expire修改自定义异常的报错信息
-            String message = String.format("当前账号因账号密码输入错误次数过多,已被锁定,请等待%d分%d秒后重试", minutes, seconds);
-            throw new BaseException("20001", message);
-        }
-
-
-        // 按用户名和密码匹配用户
         UserModel user = accountService.verifyUser(desData[0], desData[1]);
 
-        // 未匹配成功,进行错误次数记录
-        if (user == null) {
-            String loginErrorKey = "login_error:" + desData[0];
-            String loginLockKey = "login_lock:" + desData[0];
-            // 获取当前账号的错误次数
-            Object loginErrorNum = redisClient.get(loginErrorKey);
-            int num = (loginErrorNum == null) ? 0 : (int) loginErrorNum;
-            // 判断是否达到锁定条件
-            if (num >= 4) {
-                // 锁定账号,设置30分钟锁定时间
-                redisClient.set(loginLockKey, true, 1800);
-                redisClient.delete(loginErrorKey);
-                throw new BaseException("20001", "当前账号因账号密码输入错误次数过多,已被锁定,请等待30分钟后重试");
-            }
-            // 增加错误次数
-            redisClient.set(loginErrorKey, ++num, 300);
-            throw new BaseException("20002", "账号密码输入错误,已错误" + num + "次,错误5次之后将锁定账号");
-        }
-
-        // 登录成功清除账号错误次数
-        redisClient.delete("login_error:" + desData[0]);
+        if (user == null)
+            throw new BaseException(BaseErrorEnum.USER_PASSWORD_ERROR);
 
         user.token = TokenUtils.sign(user.getUserId() + '|' + user.getUserTypeId());
         user.dataRangeList = userService.getUserDataRange(user.getUserId());

+ 109 - 109
src/main/java/com/hz/employmentsite/util/RedisClient.java

@@ -1,109 +1,109 @@
-package com.hz.employmentsite.util;
-
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.concurrent.TimeUnit;
-
-@Component
-public class RedisClient {
-
-    @Resource
-    private RedisTemplate<String, Object> redisTemplate;
-
-    /*
-     * @ClassName RedisClient
-     * @Desc TODO   设置缓存(没有时间限制)
-     * @Date 2021-07-24 16:11
-     * @Version 1.0
-     */
-    public void set(String key, Object value) {
-        redisTemplate.opsForValue().set(key, value);
-    }
-
-    /*
-     * @ClassName RedisClient
-     * @Desc TODO   设置缓存(有时间限制,单位为 秒)
-     * @Date 2021-07-24 16:11
-     * @Version 1.0
-     */
-    public void set(String key, Object value, long timeout) {
-        redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
-    }
-
-    /*
-     * @ClassName RedisClient
-     * @Desc TODO   删除缓存,并返回是否删除成功
-     * @Date 2021-07-24 16:11
-     * @Version 1.0
-     */
-    public boolean delete(String key) {
-        redisTemplate.delete(key);
-        // 如果还存在这个 key 就证明删除失败
-        // 不存在就证明删除成功
-        return !redisTemplate.hasKey(key);
-    }
-
-    /*
-     * @ClassName RedisClient
-     * @Desc TODO   取出缓存
-     * @Date 2021-07-24 16:12
-     * @Version 1.0
-     */
-    public Object get(String key) {
-        if (redisTemplate.hasKey(key)) {
-            return redisTemplate.opsForValue().get(key);
-        } else {
-            return null;
-        }
-    }
-
-    /*
-     * @ClassName RedisClient
-     * @Desc TODO   获取失效时间(-2:失效 / -1:没有时间限制)
-     * @Date 2021-07-24 16:15
-     * @Version 1.0
-     */
-    public long getExpire(String key) {
-        // 判断是否存在
-        if (redisTemplate.hasKey(key)) {
-            return redisTemplate.getExpire(key);
-        } else {
-            return Long.parseLong(-2 + "");
-        }
-    }
-
-    /**
-     * 设置setl键值
-     *
-     * @param key   建
-     * @param value 值
-     */
-    public void setSetValue(String key, Object value) {
-        redisTemplate.opsForSet().add(key, value);
-    }
-
-    /**
-     * 删除键值
-     *
-     * @param key   建
-     * @param value 值
-     */
-    public void removeSetValue(String key, Object value) {
-        redisTemplate.opsForSet().remove(key, value);
-    }
-
-
-
-    /**
-     * 判断一个值是否存在于set集合
-     *
-     * @param key   建
-     * @param value 值
-     * @return
-     */
-    public boolean judgeValueIsInSet(String key, Object value) {
-        return redisTemplate.opsForSet().isMember(key, value);
-    }
-}
+//package com.hz.employmentsite.util;
+//
+//import org.springframework.data.redis.core.RedisTemplate;
+//import org.springframework.stereotype.Component;
+//
+//import javax.annotation.Resource;
+//import java.util.concurrent.TimeUnit;
+//
+//@Component
+//public class RedisClient {
+//
+//    @Resource
+//    private RedisTemplate<String, Object> redisTemplate;
+//
+//    /*
+//     * @ClassName RedisClient
+//     * @Desc TODO   设置缓存(没有时间限制)
+//     * @Date 2021-07-24 16:11
+//     * @Version 1.0
+//     */
+//    public void set(String key, Object value) {
+//        redisTemplate.opsForValue().set(key, value);
+//    }
+//
+//    /*
+//     * @ClassName RedisClient
+//     * @Desc TODO   设置缓存(有时间限制,单位为 秒)
+//     * @Date 2021-07-24 16:11
+//     * @Version 1.0
+//     */
+//    public void set(String key, Object value, long timeout) {
+//        redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
+//    }
+//
+//    /*
+//     * @ClassName RedisClient
+//     * @Desc TODO   删除缓存,并返回是否删除成功
+//     * @Date 2021-07-24 16:11
+//     * @Version 1.0
+//     */
+//    public boolean delete(String key) {
+//        redisTemplate.delete(key);
+//        // 如果还存在这个 key 就证明删除失败
+//        // 不存在就证明删除成功
+//        return !redisTemplate.hasKey(key);
+//    }
+//
+//    /*
+//     * @ClassName RedisClient
+//     * @Desc TODO   取出缓存
+//     * @Date 2021-07-24 16:12
+//     * @Version 1.0
+//     */
+//    public Object get(String key) {
+//        if (redisTemplate.hasKey(key)) {
+//            return redisTemplate.opsForValue().get(key);
+//        } else {
+//            return null;
+//        }
+//    }
+//
+//    /*
+//     * @ClassName RedisClient
+//     * @Desc TODO   获取失效时间(-2:失效 / -1:没有时间限制)
+//     * @Date 2021-07-24 16:15
+//     * @Version 1.0
+//     */
+//    public long getExpire(String key) {
+//        // 判断是否存在
+//        if (redisTemplate.hasKey(key)) {
+//            return redisTemplate.getExpire(key);
+//        } else {
+//            return Long.parseLong(-2 + "");
+//        }
+//    }
+//
+//    /**
+//     * 设置setl键值
+//     *
+//     * @param key   建
+//     * @param value 值
+//     */
+//    public void setSetValue(String key, Object value) {
+//        redisTemplate.opsForSet().add(key, value);
+//    }
+//
+//    /**
+//     * 删除键值
+//     *
+//     * @param key   建
+//     * @param value 值
+//     */
+//    public void removeSetValue(String key, Object value) {
+//        redisTemplate.opsForSet().remove(key, value);
+//    }
+//
+//
+//
+//    /**
+//     * 判断一个值是否存在于set集合
+//     *
+//     * @param key   建
+//     * @param value 值
+//     * @return
+//     */
+//    public boolean judgeValueIsInSet(String key, Object value) {
+//        return redisTemplate.opsForSet().isMember(key, value);
+//    }
+//}

+ 1 - 1
src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java

@@ -119,7 +119,7 @@ public class PostVo {
 
     public String parentProfessionID;
 
-    public String recommendNum; //推荐数量
+    public int recommendNum; //推荐数量
 
     public String contactName;
     public String contactMobile;

+ 68 - 32
src/main/resources/mapping/cquery/PostCQuery.xml

@@ -2,30 +2,74 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.hz.employmentsite.mapper.cquery.PostCQuery">
     <select id="selectPostList" resultType="com.hz.employmentsite.vo.companyService.PostVo">
-        select
-        post.postID,post.workCode,post.workName,post.recruitCount,post.companyID,post.postName,post.recordStatus,post.workNature,post.validDay,
-        post.workYear,post.cultureRank,post.postDesc,post.maxSalary,post.minSalary,post.welfare,post.postEmail,post.workTime,post.isTrail,post.trailMonths,
-        post.TrailMaxSalary,post.trailMinSalary,post.createUserID,post.createTime,post.modifyUserID,post.modifyTime,post.validTime,post.startTime,post.endTime,
-        post.jobPlace,post.contactName,post.contactMobile,post.contactEmail,post.workNatureID,post.tagID,company.userName,company.userMobile,company.companyEmail,
-        company.CompanyName,company.insuredCount,item.`Name` as cultureLevelName,work_nature.Name as
-        workNatureName,item2.`Name` as workYearName
-        , IFNULL(count(rmgt.RecommendMgtID),0) as recommendNum
-        , company.SiteID, site.SiteName, inSites.InstitutionID, company.RegionCode
-        , pro.ProfessionName,category.workCategoryName, pro.ProfessionID, pro.parentProfessionID, modifyUser.Name as modifyUserName, createUser.`Name` as createUserName
-        from pc_post post
-        left join pc_company company on post.CompanyID = company.CompanyID
-        left join sys_dictionary_item item on item.value=post.CultureRank and item.DictionaryCode='CultureLevel'
-        left join sys_dictionary_item item2 on item2.value=post.workYear and item2.DictionaryCode='WorkYearType'
-        left join sys_dictionary_item work_nature on work_nature.value=post.WorkNatureID and
-        work_nature.DictionaryCode='WorkNature'
-        left join pc_profession pro on post.ProfessionID = pro.ProfessionID
-        left join pc_workcategory category on post.WorkCode = category.workCategoryID
-        left join pc_recommend_mgt rmgt on post.PostID = rmgt.PostID
-        left join pc_site site on company.SiteID = site.SiteID
-        left join pc_site_institution inSites on site.SiteID = inSites.SiteID
-        left join pc_institution institution on inSites.institutionID = institution.InstitutionID
-        left join sys_user modifyUser on post.ModifyUserID = modifyUser.UserID
-        left join sys_user createUser on post.CreateUserID = createUser.UserID
+        SELECT
+            post.postID,
+            post.workCode,
+            post.workName,
+            post.recruitCount,
+            post.companyID,
+            post.postName,
+            post.recordStatus,
+            post.workNature,
+            post.validDay,
+            post.workYear,
+            post.cultureRank,
+            post.postDesc,
+            post.maxSalary,
+            post.minSalary,
+            post.welfare,
+            post.postEmail,
+            post.workTime,
+            post.isTrail,
+            post.trailMonths,
+            post.TrailMaxSalary,
+            post.trailMinSalary,
+            post.createUserID,
+            post.createTime,
+            post.modifyUserID,
+            post.modifyTime,
+            post.validTime,
+            post.startTime,
+            post.endTime,
+            post.jobPlace,
+            post.contactName,
+            post.contactMobile,
+            post.contactEmail,
+            post.workNatureID,
+            post.tagID,
+            company.userName,
+            company.userMobile,
+            company.companyEmail,
+            company.CompanyName,
+            company.insuredCount,
+            item.`Name` AS cultureLevelName,
+            work_nature.`Name` AS workNatureName,
+            item2.`Name` AS workYearName,
+            rmgtCounts.recommendNum,
+            company.SiteID,
+            site.SiteName,
+            inSites.InstitutionID,
+            company.RegionCode,
+            pro.ProfessionName,
+            category.workCategoryName,
+            pro.ProfessionID,
+            pro.parentProfessionID,
+            modifyUser.`Name` AS modifyUserName,
+            createUser.`Name` AS createUserName
+        FROM
+        pc_post post
+            LEFT JOIN pc_company company ON post.CompanyID = company.CompanyID
+            LEFT JOIN sys_dictionary_item item ON item.`Value` = post.CultureRank AND item.DictionaryCode = 'CultureLevel'
+            LEFT JOIN sys_dictionary_item item2 ON item2.`Value` = post.workYear AND item2.DictionaryCode = 'WorkYearType'
+            LEFT JOIN sys_dictionary_item work_nature ON work_nature.`Value` = post.WorkNatureID AND work_nature.DictionaryCode = 'WorkNature'
+            LEFT JOIN pc_profession pro ON post.ProfessionID = pro.ProfessionID
+            LEFT JOIN pc_workcategory category ON post.WorkCode = category.workCategoryID
+            LEFT JOIN (SELECT PostID, Count(1) AS recommendNum FROM pc_recommend_mgt GROUP BY PostID) rmgtCounts ON post.PostID = rmgtCounts.PostID
+            LEFT JOIN pc_site site ON company.SiteID = site.SiteID
+            LEFT JOIN pc_site_institution inSites ON site.SiteID = inSites.SiteID
+            LEFT JOIN pc_institution institution ON inSites.institutionID = institution.InstitutionID
+            LEFT JOIN sys_user modifyUser ON post.ModifyUserID = modifyUser.UserID
+            LEFT JOIN sys_user createUser ON post.CreateUserID = createUser.UserID
         <where>
             <if test="postIDList != '' and postIDList != null">
                 and post.postID in (${postIDList})
@@ -71,14 +115,6 @@
                 or post.postID = 'AllPost'
             </if>
         </where>
-        group by
-        post.postID,post.workCode,post.workName,post.recruitCount,post.companyID,post.postName,post.recordStatus,post.workNature,post.validDay,
-        post.workYear,post.cultureRank,post.postDesc,post.maxSalary,post.minSalary,post.welfare,post.postEmail,post.workTime,post.isTrail,post.trailMonths,
-        post.TrailMaxSalary,post.trailMinSalary,post.createUserID,post.createTime,post.modifyUserID,post.modifyTime,post.validTime,post.startTime,post.endTime,
-        post.jobPlace,post.contactName,post.contactMobile,post.contactEmail,post.workNatureID,post.tagID,company.userName,company.userMobile,company.companyEmail,
-        company.CompanyName,company.insuredCount,company.bonus,item.`Name`,work_nature.Name,item2.`Name`
-        , company.SiteID, site.SiteName, inSites.InstitutionID, company.RegionCode
-        , pro.ProfessionName, pro.ProfessionID, pro.parentProfessionID
         order by post.CreateTime desc
     </select>
 

+ 1 - 1
vue/src/views/companyService/post/index.vue

@@ -328,7 +328,7 @@ export default defineComponent({
       if(item.recommendNum == 0){
         return;
       }
-      recommendRef.value.show('','',item.professionName,item.postID,item.companyName,1,'已推荐求职人员信息');
+      recommendRef.value.show('', '', item.professionName, item.postID, item.companyName, item.companyID, 1, '已推荐求职人员信息');
     }
 
     const handleTableChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {