Browse Source

Merge remote-tracking branch 'origin/master'

xiao547607 4 years ago
parent
commit
26a3759720

+ 12 - 0
common/src/main/java/com/jpsoft/employment/modules/common/dto/MessageResultBuilder.java

@@ -0,0 +1,12 @@
+package com.jpsoft.employment.modules.common.dto;
+
+public class MessageResultBuilder {
+
+    public static <T>  MessageResult<T> ok(T data){
+            return new MessageResult<T>(true,null,data,200);
+    }
+
+    public static <T>  MessageResult<T> error(String msg){
+        return new MessageResult<T>(false,msg,null,500);
+    }
+}

+ 106 - 0
common/src/main/java/com/jpsoft/employment/modules/common/utils/MapUtils.java

@@ -0,0 +1,106 @@
+package com.jpsoft.employment.modules.common.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+
+
+
+public class MapUtils {
+
+	/**
+	 * 为空串的value设置为null
+	 * @param args
+	 */
+	public static void blankValToNull(Map<String,Object> args){
+		for(String key : args.keySet()){
+			if(args.get(key) instanceof String && StringUtils.isEmpty((String)args.get(key))){
+				args.put(key,null);
+			}
+		}
+	}
+	
+	/**
+	 * 为空串的value设置为null,指定的keys有效
+	 * @param args
+	 */
+    public static void blankValToNull(Map<String,Object> args,String... keys){
+		for(String key : keys){
+			if(args.get(key) instanceof String && StringUtils.isEmpty((String)args.get(key))){
+				args.put(key,null);
+			}
+		}
+	}
+    
+    
+    /**
+     * 字符串时间value转换为Date对象值,指定的keys有效
+     * @param args
+     * @param fields
+     */
+    /*public static void strValToDate(Map<String,Object> args,String... keys){
+		for(String key : keys){
+			if(StringUtils.isNotEmpty((String)args.get(key))){
+				args.put(key,DateUtil.parse((String)args.get(key)));
+			}
+		}
+	}*/
+    
+    /**
+     * 提取部分键值对作为新的Map返回,原Map去掉被提取的键值对
+     * @param <V>
+     * @param srcMap
+     * @param keys
+     * @return
+     */
+    public static <V>  Map<String,V>  trackMap(Map<String,V> srcMap,String... keys){
+		Map<String,V> rtnMap=new HashMap<String,V>(keys.length);
+		for(String key : keys){
+			rtnMap.put(key, srcMap.get(key));
+		}
+		for(String key : keys){
+			srcMap.remove(key);
+		}
+		return rtnMap;
+	}
+	
+    /**
+     * 提取部分键值对作为新的Map返回
+     * @param <V>
+     * @param srcMap
+     * @param keys
+     * @return
+     */
+	public static <V> Map<String,V> clone(Map<String,V> srcMap,String... keys){
+		Map<String,V> rtnMap=new HashMap<String,V>(keys.length);
+		for(String key : keys){
+			rtnMap.put(key, srcMap.get(key));
+		}
+		return rtnMap;
+	}
+	
+	public static Map<String,Object> builder(String... keyVal){
+		if(keyVal==null){
+			return null;
+		}
+		Map<String,Object>  rtnMap=new HashMap<String,Object>();
+		for(int i=0,len=keyVal.length;i<len;i++){
+			rtnMap.put(keyVal[i], (i+1)<len?keyVal[i+1]:null);
+			i+=1;
+		}
+		return rtnMap;
+	}
+	
+	public static Map<String,Object> builder(Object... keyVal){
+		if(keyVal==null){
+			return null;
+		}
+		Map<String,Object>  rtnMap=new HashMap<String,Object>();
+		for(int i=0,len=keyVal.length;i<len;i++){
+			rtnMap.put(keyVal[i].toString(), (i+1)<len?keyVal[i+1]:null);
+			i+=1;
+		}
+		return rtnMap;
+	}
+}

+ 3 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dao/UserBrowseDAO.java

@@ -1,6 +1,8 @@
 package com.jpsoft.employment.modules.job.dao;
 
 import java.util.List;
+
+import com.jpsoft.employment.modules.job.entity.Recruitment;
 import org.springframework.stereotype.Repository;
 import com.jpsoft.employment.modules.job.entity.UserBrowse;
 import java.util.Map;
@@ -15,4 +17,5 @@ public interface UserBrowseDAO {
 	int delete(String id);
 	List<UserBrowse> list();
 	List<UserBrowse> search(Map<String,Object> searchParams,List<Sort> sortList);
+	List<Recruitment> loadUserBrowses(Map<String,Object> searchParams, List<Sort> sortList);
 }

+ 3 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/UserBrowseService.java

@@ -2,6 +2,8 @@ package com.jpsoft.employment.modules.job.service;
 
 import java.util.List;
 import java.util.Map;
+
+import com.jpsoft.employment.modules.job.entity.Recruitment;
 import com.jpsoft.employment.modules.job.entity.UserBrowse;
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.modules.common.dto.Sort;
@@ -14,4 +16,5 @@ public interface UserBrowseService {
 	int delete(String id);
 	List<UserBrowse> list();
 	Page<UserBrowse> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+	Page<Recruitment> loadUserBrowses(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 }

+ 11 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/impl/UserBrowseServiceImpl.java

@@ -4,6 +4,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import javax.annotation.Resource;
+
+import com.jpsoft.employment.modules.job.entity.Recruitment;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import com.jpsoft.employment.modules.job.dao.UserBrowseDAO;
@@ -67,4 +69,13 @@ public class UserBrowseServiceImpl implements UserBrowseService {
         
         return page;
 	}
+
+	@Override
+	public Page<Recruitment> loadUserBrowses(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList) {
+		Page<Recruitment> page = PageHelper.startPage(pageNum, pageSize, count).doSelectPage(() -> {
+			userBrowseDAO.loadUserBrowses(searchParams, sortList);
+		});
+
+		return page;
+	}
 }

+ 44 - 1
common/src/main/resources/mapper/job/UserBrowse.xml

@@ -12,7 +12,38 @@
 			<result property="delFlag" column="del_flag" />
 			<result property="jobUserId" column="job_user_id" />
 			<result property="jobRecruitmentId" column="job_recruitment_id" />
-			</resultMap>
+	</resultMap>
+
+	<resultMap id="RecruitmentMap" type="com.jpsoft.employment.modules.job.entity.Recruitment">
+		<id property="id" column="id_" />
+		<result property="companyId" column="company_id" />
+		<result property="title" column="title_" />
+		<result property="area" column="area_" />
+		<result property="address" column="address_" />
+		<result property="position" column="position_" />
+		<result property="positionMessage" column="position_message" />
+		<result property="requirements" column="requirements_" />
+		<result property="positionNumber" column="position_number" />
+		<result property="workYear" column="work_year" />
+		<result property="education" column="education_" />
+		<result property="positionSex" column="position_sex" />
+		<result property="readTimes" column="read_times" />
+		<result property="wageType" column="wage_type" />
+		<result property="isDiscussPersonally" column="is_discuss_personally" />
+		<result property="contactPerson" column="contact_person" />
+		<result property="tel" column="tel_" />
+		<result property="status" column="status_" />
+		<result property="approveStatus" column="approve_status" />
+		<result property="readingTimes" column="reading_times" />
+		<result property="collectionTimes" column="collection_times" />
+		<result property="deliveryTimes" column="delivery_times" />
+		<result property="createBy" column="create_by" />
+		<result property="createTime" column="create_time" />
+		<result property="updateBy" column="update_by" />
+		<result property="updateTime" column="update_time" />
+		<result property="delFlag" column="del_flag" />
+	</resultMap>
+
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.job.entity.UserBrowse">
 	<!--
 	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
@@ -88,4 +119,16 @@ id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,job_recruit
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+
+	<select id="loadUserBrowses" parameterType="hashmap" resultMap="RecruitmentMap">
+		<![CDATA[
+			select j.* from job_user_browse b inner join job_recruitment j on b.job_recruitment_id=j.id_ and j.del_flag=0
+		]]>
+		<where>
+			and job_user_id = #{searchParams.jobUserId}
+		</where>
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+			${sort.name} ${sort.order}
+		</foreach>
+	</select>
 </mapper>

+ 57 - 0
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/UserBrowseApiController.java

@@ -0,0 +1,57 @@
+package com.jpsoft.employment.modules.mobile.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.common.dto.MessageResult;
+import com.jpsoft.employment.modules.common.dto.MessageResultBuilder;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.utils.MapUtils;
+import com.jpsoft.employment.modules.common.utils.PojoUtils;
+import com.jpsoft.employment.modules.job.entity.Recruitment;
+import com.jpsoft.employment.modules.job.entity.UserBrowse;
+import com.jpsoft.employment.modules.job.service.UserBrowseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/mobile/userBrowseApi")
+@Api(tags = "移动端接口:求职人职位浏览记录")
+@Slf4j
+public class UserBrowseApiController {
+
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private UserBrowseService userBrowseService;
+
+
+    @PostMapping("pagedLoad")
+    @ApiOperation(value = "分页加载职位浏览记录(按浏览时间倒序)")
+    public MessageResult<Map> pagedLoad( @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+                                         @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+                                         @RequestAttribute String subject){
+        try{
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("update_time","desc"));
+            Page<Recruitment> page = userBrowseService.loadUserBrowses(MapUtils.builder("jobUserId",subject),pageIndex,pageSize,true,sortList);
+            return MessageResultBuilder.ok(PojoUtils.pageWrapper(page));
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage());
+            return MessageResultBuilder.error(ex.getMessage());
+        }
+
+    }
+}