Sfoglia il codice sorgente

Merge branch 'master' of http://47.92.161.104:10080/shuzhan/jp-employment-server

chenwen 4 anni fa
parent
commit
73e4454f95
32 ha cambiato i file con 719 aggiunte e 450 eliminazioni
  1. 1 0
      common/src/main/java/com/jpsoft/employment/modules/base/entity/City.java
  2. 3 0
      common/src/main/java/com/jpsoft/employment/modules/job/dao/UserBrowseDAO.java
  3. 1 5
      common/src/main/java/com/jpsoft/employment/modules/job/entity/JobUser.java
  4. 68 90
      common/src/main/java/com/jpsoft/employment/modules/job/entity/Recruitment.java
  5. 5 0
      common/src/main/java/com/jpsoft/employment/modules/job/entity/Resume.java
  6. 2 2
      common/src/main/java/com/jpsoft/employment/modules/job/entity/ResumeEducationExperience.java
  7. 2 2
      common/src/main/java/com/jpsoft/employment/modules/job/entity/ResumeWorkExperience.java
  8. 3 3
      common/src/main/java/com/jpsoft/employment/modules/job/entity/UserBrowseHr.java
  9. 3 0
      common/src/main/java/com/jpsoft/employment/modules/job/service/UserBrowseService.java
  10. 1 0
      common/src/main/java/com/jpsoft/employment/modules/sys/service/UserService.java
  11. 5 2
      common/src/main/resources/mapper/base/City.xml
  12. 1 1
      common/src/main/resources/mapper/base/EnterpriseCertificationApprove.xml
  13. 1 1
      common/src/main/resources/mapper/base/ResumeApprove.xml
  14. 1 1
      common/src/main/resources/mapper/base/ServiceApprove.xml
  15. 3 8
      common/src/main/resources/mapper/job/JobUser.xml
  16. 55 36
      common/src/main/resources/mapper/job/Recruitment.xml
  17. 12 1
      common/src/main/resources/mapper/job/Resume.xml
  18. 5 4
      common/src/main/resources/mapper/job/ResumeEducationExperience.xml
  19. 5 5
      common/src/main/resources/mapper/job/ResumeWorkExperience.xml
  20. 11 11
      common/src/main/resources/mapper/job/UserBrowseHr.xml
  21. 1 1
      common/src/main/resources/mapper/job/WorkCategory.xml
  22. 5 1
      web/src/main/java/com/jpsoft/employment/config/WebMvcConfig.java
  23. 43 1
      web/src/main/java/com/jpsoft/employment/modules/base/controller/CityController.java
  24. 20 0
      web/src/main/java/com/jpsoft/employment/modules/base/controller/CompanyController.java
  25. 96 23
      web/src/main/java/com/jpsoft/employment/modules/job/controller/RecruitmentController.java
  26. 12 16
      web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeDeliverController.java
  27. 13 0
      web/src/main/java/com/jpsoft/employment/modules/job/controller/WorkCategoryController.java
  28. 10 9
      web/src/main/java/com/jpsoft/employment/modules/mobile/controller/JobUserApiController.java
  29. 0 208
      web/src/main/java/com/jpsoft/employment/modules/mobile/controller/PersonalApiController.java
  30. 13 4
      web/src/main/java/com/jpsoft/employment/modules/mobile/controller/RecruitmentApiController.java
  31. 261 15
      web/src/main/java/com/jpsoft/employment/modules/mobile/controller/ResumeApiController.java
  32. 57 0
      web/src/main/java/com/jpsoft/employment/modules/mobile/controller/UserBrowseApiController.java

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/base/entity/City.java

@@ -24,4 +24,5 @@ public class City {
     private Integer type;
         @ApiModelProperty(value = "")
     private Integer pid;
+    private String parentId;
 }

+ 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);
 }

+ 1 - 5
common/src/main/java/com/jpsoft/employment/modules/job/entity/JobUser.java

@@ -71,7 +71,7 @@ public class JobUser {
 	private String headImageUrl;
 
 	@ApiModelProperty(value = "是否认证")
-	private Boolean isAuthentication;
+	private String isAuthentication;
 
 	@ApiModelProperty(value = "身份证号")
 	private String idCard;
@@ -79,8 +79,4 @@ public class JobUser {
 	@ApiModelProperty(value = "身份证照片")
 	private String idCardUrl;
 
-	@ApiModelProperty(value = "工作状态(是否上班")
-	private String jobStatus;
-	
-
 }

+ 68 - 90
common/src/main/java/com/jpsoft/employment/modules/job/entity/Recruitment.java

@@ -4,102 +4,80 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
 
 /**
   描述:job_recruitment的实体类
  */
 @Data
+@ApiModel(value = "job_recruitment的实体类")
 public class Recruitment {
-
-	@ApiModelProperty(value = "ID")
-	private String id;
-
-	@ApiModelProperty(value = "企业ID")
-	private String companyId;
-
-	@ApiModelProperty(value = "标题")
-	private String title;
-
-	@ApiModelProperty(value = "招聘所属地区")
-	private String area;
-
-	@ApiModelProperty(value = "地址")
-	private String address;
-
-	@ApiModelProperty(value = "职位")
-	private String position;
-
-	@ApiModelProperty(value = "职位描述")
-	private String positionMessage;
-
-	@ApiModelProperty(value = "任职要求")
-	private String requirements;
-
-
-	@ApiModelProperty(value = "求职人数")
-	private Integer positionNumber;
-
-	@ApiModelProperty(value = "工作年限")
-	private String workYear;
-
-	@ApiModelProperty(value = "学历要求")
-	private String education;
-
-	@ApiModelProperty(value = "性别要求")
-	private String positionSex;
-
-	@ApiModelProperty(value = "性别要求")
-	private Integer readTimes;
-
-	@ApiModelProperty(value = "薪资")
-	private String wageType;
-
-	@ApiModelProperty(value = "是否面议")
-	private Boolean isDiscussPersonally;
-
-	@ApiModelProperty(value = "联系人")
-	private String contactPerson;
-
-	@ApiModelProperty(value = "联系方式")
-	private String tel;
-
-	@ApiModelProperty(value = "状态(关闭,开启等)")
-	private String status;
-
-	@ApiModelProperty(value = "审批状态")
-	private String approveStatus;
-
-	@ApiModelProperty(value = "阅读次数")
-	private Integer readingTimes;
-
-	@ApiModelProperty(value = "收藏次数")
-	private Integer collectionTimes;
-
-	@ApiModelProperty(value = "投递次数")
-	private Integer deliveryTimes;
-
-	@ApiModelProperty(value = "创建人")
-	private String createBy;
-
-	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	@ApiModelProperty(value = "创建时间")
-	private Date createTime;
-
-	@ApiModelProperty(value = "更新人")
-	private String updateBy;
-
-	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
-	@ApiModelProperty(value = "更新时间")
-	private Date updateTime;
-
-	@ApiModelProperty(value = "是否删除")
-	private Boolean delFlag;
-
+        @ApiModelProperty(value = "")
+    private String id;
+        @ApiModelProperty(value = "企业ID ")
+    private String companyId;
+    private String companyName;
+        @ApiModelProperty(value = "标题")
+    private String title;
+        @ApiModelProperty(value = "招聘所属地区")
+    private String area;
+        @ApiModelProperty(value = "地址")
+    private String address;
+        @ApiModelProperty(value = "职位")
+    private String position;
+        @ApiModelProperty(value = "职位描述")
+    private String positionMessage;
+        @ApiModelProperty(value = "任职要求")
+    private String requirements;
+        @ApiModelProperty(value = "求职人数")
+    private Integer positionNumber;
+        @ApiModelProperty(value = "工作年限")
+    private String workYear;
+    private String workYearName;
+        @ApiModelProperty(value = "学历要求")
+    private String education;
+    private String educationName;
+        @ApiModelProperty(value = "性别要求")
+    private String positionSex;
+        @ApiModelProperty(value = "")
+    private Integer readTimes;
+        @ApiModelProperty(value = "薪资")
+    private String wageType;
+    private String wageTypeName;
+        @ApiModelProperty(value = "是否面议")
+    private Boolean isDiscussPersonally;
+        @ApiModelProperty(value = "联系人")
+    private String contactPerson;
+        @ApiModelProperty(value = "联系方式")
+    private String tel;
+        @ApiModelProperty(value = "状态(关闭,开启等)")
+    private String status;
+        @ApiModelProperty(value = "审批状态")
+    private String approveStatus;
+        @ApiModelProperty(value = "阅读次数")
+    private Integer readingTimes;
+        @ApiModelProperty(value = "收藏次数")
+    private Integer collectionTimes;
+        @ApiModelProperty(value = "投递次数")
+    private Integer deliveryTimes;
+        @ApiModelProperty(value = "创建人")
+    private String createBy;
+        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+        @ApiModelProperty(value = "")
+    private String updateBy;
+        @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+	    @ApiModelProperty(value = "")
+    private Date updateTime;
+        @ApiModelProperty(value = "删除标示")
+    private Boolean delFlag;
+    @ApiModelProperty(value = "岗位分类ID")
+    private String workCategoryId;
 }

+ 5 - 0
common/src/main/java/com/jpsoft/employment/modules/job/entity/Resume.java

@@ -74,4 +74,9 @@ public class Resume {
 	@ApiModelProperty(value = "审批状态")
 	private String approveStatus;
 
+	@ApiModelProperty(value = "工作状态(字典:工作在职状态")
+	private String jobStatus;
+
+	@ApiModelProperty(value = "附件,逗号分割")
+	private String resumeUrls;
 }

+ 2 - 2
common/src/main/java/com/jpsoft/employment/modules/job/entity/ResumeEducationExperience.java

@@ -45,10 +45,10 @@ public class ResumeEducationExperience {
 
 
 	@ApiModelProperty(value = "在校时间-起")
-	private Date startTime;
+	private String startTime;
 
 	@ApiModelProperty(value = "在校时间-止")
-	private Date endTime;
+	private String endTime;
 
 	@ApiModelProperty(value = "学校名称")
 	private String schoolName;

+ 2 - 2
common/src/main/java/com/jpsoft/employment/modules/job/entity/ResumeWorkExperience.java

@@ -45,10 +45,10 @@ public class ResumeWorkExperience {
 	private Integer sortNo;
 
 	@ApiModelProperty(value = "工作年限-起")
-	private Date startTime;
+	private String startTime;
 
 	@ApiModelProperty(value = "工作年限-止")
-	private Date endTime;
+	private String endTime;
 
 	@ApiModelProperty(value = "工作企业")
 	private String companyName;

+ 3 - 3
common/src/main/java/com/jpsoft/employment/modules/job/entity/UserBrowseHr.java

@@ -37,10 +37,10 @@ public class UserBrowseHr {
 	@ApiModelProperty(value = "是否删除")
 	private Boolean delFlag;
 
-	@ApiModelProperty(value = "用户ID")
-	private String jobUserId;
+	@ApiModelProperty(value = "HR用户ID")
+	private String sysUserId;
 
 	@ApiModelProperty(value = "招聘ID")
-	private String jobRecruitmentId;
+	private String jobResumeId;
 
 }

+ 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);
 }

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/sys/service/UserService.java

@@ -2,6 +2,7 @@ package com.jpsoft.employment.modules.sys.service;
 
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.job.entity.JobUser;
 import com.jpsoft.employment.modules.sys.entity.User;
 
 import java.util.List;

+ 5 - 2
common/src/main/resources/mapper/base/City.xml

@@ -60,8 +60,11 @@ id_,city_name,type_,pid_		from base_city where id_=#{0}
 			select * from base_city
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			<if test="searchParams.type != null">
+				and type_ = #{searchParams.type}
+			</if>
+			<if test="searchParams.pid != null">
+				and pid_ = #{searchParams.pid}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 1 - 1
common/src/main/resources/mapper/base/EnterpriseCertificationApprove.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
-<mapper namespace="com.jpsoft.employment.dao.EnterpriseCertificationApproveDAO">
+<mapper namespace="com.jpsoft.employment.modules.base.dao.EnterpriseCertificationApproveDAO">
 	<resultMap id="EnterpriseCertificationApproveMap" type="com.jpsoft.employment.modules.base.entity.EnterpriseCertificationApprove">
 		<id property="id" column="id_" />
 			<result property="createBy" column="create_by" />

+ 1 - 1
common/src/main/resources/mapper/base/ResumeApprove.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
-<mapper namespace="com.jpsoft.employment.dao.ResumeApproveDAO">
+<mapper namespace="com.jpsoft.employment.modules.base.dao.ResumeApproveDAO">
 	<resultMap id="ResumeApproveMap" type="com.jpsoft.employment.modules.base.entity.ResumeApprove">
 		<id property="id" column="id_" />
 			<result property="createBy" column="create_by" />

+ 1 - 1
common/src/main/resources/mapper/base/ServiceApprove.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
-<mapper namespace="com.jpsoft.employment.dao.ServiceApproveDAO">
+<mapper namespace="com.jpsoft.employment.modules.base.dao.ServiceApproveDAO">
 	<resultMap id="ServiceApproveMap" type="com.jpsoft.employment.modules.base.entity.ServiceApprove">
 		<id property="id" column="id_" />
 			<result property="serviceId" column="service_id" />

+ 3 - 8
common/src/main/resources/mapper/job/JobUser.xml

@@ -23,7 +23,6 @@
 			<result property="isAuthentication" column="is_authentication" />
 			<result property="idCard" column="id_card" />
 			<result property="idCardUrl" column="id_card_url" />
-			<result property="jobStatus" column="job_status" />
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.job.entity.JobUser">
 	<!--
@@ -33,7 +32,7 @@
 	-->
 	<![CDATA[
 		insert into job_jobuser
-	    (id_,create_by,create_time,update_by,update_time,del_flag,user_name,password_,real_name,open_id,tel_,sex_,birthday_,address_,first_job_time,head_image_url,is_authentication,id_card,id_card_url,job_status)
+	    (id_,create_by,create_time,update_by,update_time,del_flag,user_name,password_,real_name,open_id,tel_,sex_,birthday_,address_,first_job_time,head_image_url,is_authentication,id_card,id_card_url)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -52,10 +51,9 @@
 ,#{address,jdbcType=VARCHAR}
 ,#{firstJobTime,jdbcType= TIMESTAMP }
 ,#{headImageUrl,jdbcType=VARCHAR}
-,#{isAuthentication,jdbcType= NUMERIC }
+,#{isAuthentication,jdbcType= VARCHAR }
 ,#{idCard,jdbcType=VARCHAR}
 ,#{idCardUrl,jdbcType= NUMERIC }
-,#{jobStatus,jdbcType=VARCHAR}
 		)
 	]]>
 	</insert>
@@ -111,16 +109,13 @@
 		head_image_url=#{headImageUrl,jdbcType=VARCHAR},
 		</if>
 				<if test="isAuthentication!=null">
-		is_authentication=#{isAuthentication,jdbcType= NUMERIC },
+		is_authentication=#{isAuthentication,jdbcType= VARCHAR },
 		</if>
 				<if test="idCard!=null">
 		id_card=#{idCard,jdbcType=VARCHAR},
 		</if>
 				<if test="idCardUrl!=null">
 		id_card_url=#{idCardUrl,jdbcType= NUMERIC },
-		</if>
-				<if test="jobStatus!=null">
-		job_status=#{jobStatus,jdbcType=VARCHAR},
 		</if>
 		</set>
 	where id_=#{id}

+ 55 - 36
common/src/main/resources/mapper/job/Recruitment.xml

@@ -5,33 +5,34 @@
 <mapper namespace="com.jpsoft.employment.modules.job.dao.RecruitmentDAO">
 	<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>
+		<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" />
+		<result property="workCategoryId" column="work_category_id" />
+	</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.job.entity.Recruitment">
 	<!--
 	<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">
@@ -40,7 +41,7 @@
 	-->
 	<![CDATA[
 		insert into job_recruitment
-	    (id_,company_id,title_,area_,address_,position_,position_message,requirements_,position_number,work_year,education_,position_sex,read_times,wage_type,is_discuss_personally,contact_person,tel_,status_,approve_status,reading_times,collection_times,delivery_times,create_by,create_time,update_by,update_time,del_flag)
+	    (id_,company_id,title_,area_,address_,position_,position_message,requirements_,position_number,work_year,education_,position_sex,read_times,wage_type,is_discuss_personally,contact_person,tel_,status_,approve_status,reading_times,collection_times,delivery_times,create_by,create_time,update_by,update_time,del_flag,work_category_id)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -70,6 +71,7 @@
 ,#{updateBy,jdbcType=VARCHAR}
 ,#{updateTime,jdbcType= TIMESTAMP }
 ,#{delFlag,jdbcType= NUMERIC }
+,#{workCategoryId,jdbcType= VARCHAR }
 		)
 	]]>
 	</insert>
@@ -157,11 +159,15 @@
 				<if test="delFlag!=null">
 		del_flag=#{delFlag,jdbcType= NUMERIC },
 		</if>
+			<if test="workCategoryId!=null">
+				work_category_id=#{workCategoryId,jdbcType= VARCHAR },
+			</if>
 		</set>
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="RecruitmentMap">
-		select * from job_recruitment where id_=#{0}
+		select 
+id_,company_id,title_,area_,address_,position_,position_message,requirements_,position_number,work_year,education_,position_sex,read_times,wage_type,is_discuss_personally,contact_person,tel_,status_,approve_status,reading_times,collection_times,delivery_times,create_by,create_time,update_by,update_time,del_flag,work_category_id		from job_recruitment where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from job_recruitment where id_=#{0}
@@ -174,15 +180,14 @@
 			select * from job_recruitment
 		]]>
 		<where>
-			del_flag = 0
 			<if test="searchParams.id != null">
 				and ID_ like #{searchParams.id}
 			</if>
-			<if test="searchParams.relevantTitle != null">
-				and title_ like #{searchParams.relevantTitle}
+			<if test="searchParams.status != null">
+				and status_ = #{searchParams.status}
 			</if>
-			<if test="searchParams.notrelevantId != null">
-				and id_ != #{searchParams.notrelevantId}
+			<if test="searchParams.approveStatus != null">
+				and approve_status = #{searchParams.approveStatus}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
@@ -200,7 +205,8 @@
 				bc.logo_ AS logo,
 				bc.name_ AS name,
 				sdd.name_ AS scaleName,
-				bci.city_name AS cityName
+				bci.city_name AS cityName,
+				jwc.name_ AS code
 			FROM
 				job_recruitment AS jr
 			INNER JOIN base_company AS bc
@@ -209,6 +215,7 @@
 			INNER JOIN job_work_category AS jwc ON jr.company_id = bc.id_
 			AND bc.scale_ = sdd.id_
 			AND jr.area_ = bci.id_
+			AND jr.position_ = jwc.id_
 		]]>
 		<where>
 			<if test="searchParams.id != null">
@@ -227,7 +234,19 @@
 				and jr.education_ like #{searchParams.education}
 			</if>
 			<if test="searchParams.recruitmentPosition != null">
-				and jwc.id_ like #{searchParams.recruitmentPosition}
+				and jr.position_ like #{searchParams.recruitmentPosition}
+			</if>
+			<if test="searchParams.relevantTitle != null">
+				and jr.title_ like #{searchParams.relevantTitle}
+			</if>
+			<if test="searchParams.notrelevantId != null">
+				and jr.id_ != #{searchParams.notrelevantId}
+			</if>
+			<if test="searchParams.status != null">
+				and jr.status_ = #{searchParams.status}
+			</if>
+			<if test="searchParams.approveStatus != null">
+				and jr.approve_status = #{searchParams.approveStatus}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 12 - 1
common/src/main/resources/mapper/job/Resume.xml

@@ -21,6 +21,8 @@
 			<result property="introduction" column="introduction_" />
 			<result property="status" column="status_" />
 			<result property="approveStatus" column="approve_status" />
+			<result property="jobStatus" column="job_status" />
+			<result property="resumeUrls" column="resume_urls" />
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.job.entity.Resume">
 	<!--
@@ -30,7 +32,8 @@
 	-->
 	<![CDATA[
 		insert into job_resume
-	    (id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,sex_,position_category_id,work_exp,education_,dream_money,dream_add,birthday_,introduction_,status_,approve_status)
+	    (id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,sex_,position_category_id,work_exp,education_,dream_money,dream_add,birthday_,introduction_,status_,approve_status,
+	    job_status,resume_urls)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -50,6 +53,8 @@
 ,#{introduction,jdbcType=VARCHAR}
 ,#{status,jdbcType=VARCHAR}
 ,#{approveStatus,jdbcType=VARCHAR}
+,#{jobStatus,jdbcType=VARCHAR}
+,#{resumeUrls,jdbcType=VARCHAR}
 		)
 	]]>
 	</insert>
@@ -107,6 +112,12 @@
 				<if test="approveStatus!=null">
 		approve_status=#{approveStatus,jdbcType=VARCHAR},
 		</if>
+			<if test="jobStatus!=null">
+				job_status=#{jobStatus,jdbcType=VARCHAR},
+			</if>
+			<if test="resumeUrls!=null">
+				resume_urls=#{resumeUrls,jdbcType=VARCHAR},
+			</if>
 		</set>
 	where id_=#{id}
 	</update>

+ 5 - 4
common/src/main/resources/mapper/job/ResumeEducationExperience.xml

@@ -37,8 +37,8 @@
 ,#{delFlag,jdbcType= NUMERIC }
 ,#{resumeId,jdbcType=VARCHAR}
 ,#{sortNo,jdbcType= NUMERIC }
-,#{startTime,jdbcType= TIMESTAMP }
-,#{endTime,jdbcType= TIMESTAMP }
+,#{startTime,jdbcType= VARCHAR }
+,#{endTime,jdbcType= VARCHAR }
 ,#{schoolName,jdbcType=VARCHAR}
 ,#{education,jdbcType=VARCHAR}
 ,#{major,jdbcType=VARCHAR}
@@ -73,10 +73,10 @@
 		sort_no=#{sortNo,jdbcType= NUMERIC },
 		</if>
 				<if test="startTime!=null">
-		start_time=#{startTime,jdbcType= TIMESTAMP },
+		start_time=#{startTime,jdbcType= VARCHAR },
 		</if>
 				<if test="endTime!=null">
-		end_time=#{endTime,jdbcType= TIMESTAMP },
+		end_time=#{endTime,jdbcType= VARCHAR },
 		</if>
 				<if test="schoolName!=null">
 		school_name=#{schoolName,jdbcType=VARCHAR},
@@ -119,5 +119,6 @@
 		job_resume_education_experience
 		where del_flag = 0
 		and resume_id = #{resumeId}
+		order by sort_no
 	</select>
 </mapper>

+ 5 - 5
common/src/main/resources/mapper/job/ResumeWorkExperience.xml

@@ -37,8 +37,8 @@
 ,#{delFlag,jdbcType= NUMERIC }
 ,#{resumeId,jdbcType=VARCHAR}
 ,#{sortNo,jdbcType= NUMERIC }
-,#{startTime,jdbcType= TIMESTAMP }
-,#{endTime,jdbcType= TIMESTAMP }
+,#{startTime,jdbcType= VARCHAR }
+,#{endTime,jdbcType= VARCHAR }
 ,#{companyName,jdbcType=VARCHAR}
 ,#{job,jdbcType=VARCHAR}
 ,#{content,jdbcType= VARCHAR }
@@ -73,10 +73,10 @@
 		sort_no=#{sortNo,jdbcType= NUMERIC },
 		</if>
 				<if test="startTime!=null">
-		start_time=#{startTime,jdbcType= TIMESTAMP },
+		start_time=#{startTime,jdbcType= VARCHAR },
 		</if>
 				<if test="endTime!=null">
-		end_time=#{endTime,jdbcType= TIMESTAMP },
+		end_time=#{endTime,jdbcType= VARCHAR },
 		</if>
 				<if test="companyName!=null">
 		company_name=#{companyName,jdbcType=VARCHAR},
@@ -120,6 +120,6 @@
 		job_resume_work_experience
 		where del_flag = 0
 		and resume_id = #{resumeId}
-		limit 1
+		order by sort_no
 	</select>
 </mapper>

+ 11 - 11
common/src/main/resources/mapper/job/UserBrowseHr.xml

@@ -10,8 +10,8 @@
 			<result property="updateBy" column="update_by" />
 			<result property="updateTime" column="update_time" />
 			<result property="delFlag" column="del_flag" />
-			<result property="jobUserId" column="job_user_id" />
-			<result property="jobRecruitmentId" column="job_recruitment_id" />
+			<result property="sysUserId" column="sys_user_id" />
+			<result property="jobResumeId" column="job_resume_id" />
 			</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.employment.modules.job.entity.UserBrowseHr">
 	<!--
@@ -21,7 +21,7 @@
 	-->
 	<![CDATA[
 		insert into job_user_browse_hr
-	    (id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,job_recruitment_id)
+	    (id_,create_by,create_time,update_by,update_time,del_flag,sys_user_id,job_resume_id)
 		values
 		(
 #{id,jdbcType=VARCHAR}
@@ -30,8 +30,8 @@
 ,#{updateBy,jdbcType=VARCHAR}
 ,#{updateTime,jdbcType= TIMESTAMP }
 ,#{delFlag,jdbcType= NUMERIC }
-,#{jobUserId,jdbcType=VARCHAR}
-,#{jobRecruitmentId,jdbcType=VARCHAR}
+,#{sysUserId,jdbcType=VARCHAR}
+,#{jobResumeId,jdbcType=VARCHAR}
 		)
 	]]>
 	</insert>
@@ -56,18 +56,17 @@
 				<if test="delFlag!=null">
 		del_flag=#{delFlag,jdbcType= NUMERIC },
 		</if>
-				<if test="jobUserId!=null">
-		job_user_id=#{jobUserId,jdbcType=VARCHAR},
+				<if test="sysUserId!=null">
+					sys_user_id=#{sysUserId,jdbcType=VARCHAR},
 		</if>
-				<if test="jobRecruitmentId!=null">
-		job_recruitment_id=#{jobRecruitmentId,jdbcType=VARCHAR},
+				<if test="jobResumeId!=null">
+					job_resume_id=#{jobResumeId,jdbcType=VARCHAR},
 		</if>
 		</set>
 	where id_=#{id}
 	</update>
 	<select id="get" parameterType="string" resultMap="UserBrowseHrMap">
-		select 
-id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,job_recruitment_id		from job_user_browse_hr where id_=#{0}
+		select * from job_user_browse_hr where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from job_user_browse_hr where id_=#{0}
@@ -80,6 +79,7 @@ id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,job_recruit
 			select * from job_user_browse_hr
 		]]>
 		<where>
+			del_flag = 0
 			<if test="searchParams.id != null">
 				and ID_ like #{searchParams.id}
 			</if>

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

@@ -92,7 +92,7 @@
 		select count(*) from job_work_category where id_=#{0}
 	</select>
 	<select id="list" resultMap="WorkCategoryMap">
-		select * from job_work_category
+		select * from job_work_category where del_flag=0
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="WorkCategoryMap">
 		<![CDATA[

+ 5 - 1
web/src/main/java/com/jpsoft/employment/config/WebMvcConfig.java

@@ -53,13 +53,17 @@ public class WebMvcConfig implements WebMvcConfigurer {
 						"/doc.html",
                         "/v2/**",
                         "/mobileApi/**")
+                .excludePathPatterns("/wechat/**")
 				.excludePathPatterns("/mobile/jobUserApi/findByOpenId")
 				.excludePathPatterns("/mobile/jobUserApi/wechatLogin")
 				.excludePathPatterns("/mobile/jobUserApi/validateCode")
 				.excludePathPatterns("/mobile/jobUserApi/getVerifyCode")
 				.excludePathPatterns("/mobile/jobUserApi/passwordLogin")
 				.excludePathPatterns("/mobile/recruitmentApi/getRecruitmentList")
-				.excludePathPatterns("/mobile/recruitmentApi/getScreenList");
+				.excludePathPatterns("/mobile/recruitmentApi/getScreenList")
+				.excludePathPatterns("/mobile/sysUserApi/wechatLogin")
+				.excludePathPatterns("/mobile/sysUserApi/passwordLogin")
+		;
 
 
 	}

+ 43 - 1
web/src/main/java/com/jpsoft/employment/modules/base/controller/CityController.java

@@ -6,6 +6,7 @@ import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.base.entity.City;
 import com.jpsoft.employment.modules.base.service.CityService;
+import com.jpsoft.employment.modules.sys.entity.Menu;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
@@ -19,7 +20,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 
 @RestController
-@RequestMapping("/city")
+@RequestMapping("/base/city")
 @Api(description = "city")
 public class CityController {
     private Logger logger = LoggerFactory.getLogger(getClass());
@@ -82,4 +83,45 @@ public class CityController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="区域列表")
+    @RequestMapping(value = "findListByParams",method = RequestMethod.POST)
+    public MessageResult<List> findListByParams(String type, String pid){
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+        if (StringUtils.isNotEmpty(type)) {
+            searchParams.put("type",type);
+        }
+        if (StringUtils.isNotEmpty(pid)) {
+            searchParams.put("pid",pid);
+        }
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("id_","asc"));
+
+        Page<City> page = cityService.pageSearch(searchParams,1,10000,false,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(page.getResult());
+
+        return msgResult;
+    }
+
+    @ApiOperation(value = "列表")
+    @RequestMapping(value = "list", method = RequestMethod.POST)
+    public MessageResult<List> list() {
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        List<City> cityList = cityService.list();
+        for(City city : cityList){
+            if(city.getPid() != null)
+                city.setParentId(city.getPid().toString());
+        }
+
+        msgResult.setResult(true);
+        msgResult.setData(cityList);
+
+        return msgResult;
+    }
 }

+ 20 - 0
web/src/main/java/com/jpsoft/employment/modules/base/controller/CompanyController.java

@@ -1,6 +1,7 @@
 package com.jpsoft.employment.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.employment.modules.base.entity.City;
 import com.jpsoft.employment.modules.base.entity.Company;
 import com.jpsoft.employment.modules.base.service.CompanyService;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
@@ -247,4 +248,23 @@ public class CompanyController {
 
         return msgResult;
     }
+
+    @ApiOperation(value = "列表")
+    @RequestMapping(value = "list", method = RequestMethod.POST)
+    public MessageResult<List> list() {
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("sort_no","asc"));
+        sortList.add(new Sort("create_time","asc"));
+
+        Page<Company> companyPage = companyService.pageSearch(searchParams,1,1000,false, sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(companyPage.getResult());
+
+        return msgResult;
+    }
 }

+ 96 - 23
web/src/main/java/com/jpsoft/employment/modules/job/controller/RecruitmentController.java

@@ -1,11 +1,16 @@
 package com.jpsoft.employment.modules.job.controller;
 
 import com.github.pagehelper.Page;
-import com.jpsoft.employment.modules.common.dto.MessageResult;
-import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.base.entity.Company;
+import com.jpsoft.employment.modules.base.service.CompanyService;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.job.entity.Recruitment;
 import com.jpsoft.employment.modules.job.service.RecruitmentService;
+import com.jpsoft.employment.modules.sys.entity.DataDictionary;
+import com.jpsoft.employment.modules.sys.service.DataDictionaryService;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -19,20 +24,41 @@ import java.util.*;
 
 @RestController
 @RequestMapping("/job/recruitment")
+@Api(description = "recruitment")
 public class RecruitmentController {
     private Logger logger = LoggerFactory.getLogger(getClass());
 
     @Autowired
     private RecruitmentService recruitmentService;
+    @Autowired
+    private CompanyService companyService;
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
+    @ApiOperation(value="创建空记录")
+    @GetMapping("create")
+    public MessageResult<Recruitment> create(){
+        MessageResult<Recruitment> msgResult = new MessageResult<>();
+
+        Recruitment recruitment = new Recruitment();
+
+        msgResult.setData(recruitment);
+        msgResult.setResult(true);
 
+        return msgResult;
+    }
+    
     @ApiOperation(value="添加信息")
     @PostMapping("add")
-    public MessageResult<Recruitment> add(@ModelAttribute Recruitment recruitment){
+    public MessageResult<Recruitment> add(@RequestBody Recruitment recruitment,@RequestAttribute String subject){
         MessageResult<Recruitment> msgResult = new MessageResult<>();
 
         try {
             recruitment.setId(UUID.randomUUID().toString());
-
+            recruitment.setDelFlag(false);
+            recruitment.setCreateBy(subject);
+            recruitment.setCreateTime(new Date());
+            
             int affectCount = recruitmentService.insert(recruitment);
 
             if (affectCount > 0) {
@@ -54,8 +80,8 @@ public class RecruitmentController {
     }
 
     @ApiOperation(value="获取信息")
-    @GetMapping("detail/{id}")
-    public MessageResult<Recruitment> detail(@PathVariable("id") String id){
+    @GetMapping("edit/{id}")
+    public MessageResult<Recruitment> edit(@PathVariable("id") String id){
         MessageResult<Recruitment> msgResult = new MessageResult<>();
 
         try {
@@ -81,10 +107,13 @@ public class RecruitmentController {
 
     @ApiOperation(value="更新用户")
     @PostMapping("update")
-    public MessageResult<Recruitment> update(@ModelAttribute Recruitment recruitment){
+    public MessageResult<Recruitment> update(@RequestBody Recruitment recruitment,@RequestAttribute String subject){
         MessageResult<Recruitment> msgResult = new MessageResult<>();
 
         try {
+            recruitment.setUpdateBy(subject);
+            recruitment.setUpdateTime(new Date());
+            
             int affectCount = recruitmentService.update(recruitment);
 
             if (affectCount > 0) {
@@ -105,19 +134,25 @@ public class RecruitmentController {
         return msgResult;
     }
 
-    @ApiOperation(value="删除用户")
+	@ApiOperation(value="删除")
     @PostMapping("delete/{id}")
-    public MessageResult<Recruitment> delete(@PathVariable("id") String id){
-        MessageResult<Recruitment> msgResult = new MessageResult<>();
+    public MessageResult<Integer> delete(@PathVariable("id") String id,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
 
         try {
-            int affectCount = recruitmentService.delete(id);
+            Recruitment recruitment = recruitmentService.get(id);
+            recruitment.setDelFlag(true);
+            recruitment.setUpdateBy(subject);
+            recruitment.setUpdateTime(new Date());
+
+            int affectCount = recruitmentService.update(recruitment);
 
             if (affectCount > 0) {
                 msgResult.setResult(true);
+                msgResult.setData(affectCount);
             } else {
                 msgResult.setResult(false);
-                msgResult.setMessage("数据库删除失败");
+                msgResult.setMessage("删除失败");
             }
         }
         catch(Exception ex){
@@ -132,24 +167,47 @@ public class RecruitmentController {
 
 
     @ApiOperation(value="批量删除")
-    @PostMapping("batchDelete/{id}")
-    public MessageResult<Recruitment> batchDelete(@PathVariable("id") String id){
-        MessageResult<Recruitment> msgResult = new MessageResult<>();
+    @PostMapping("batchDelete")
+    public MessageResult<Integer> batchDelete(@RequestBody List<String> idList,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
 
-        msgResult.setResult(false);
-        msgResult.setMessage("未实现");
+            for (String id : idList) {
+                Recruitment recruitment = recruitmentService.get(id);
+                recruitment.setDelFlag(true);
+                recruitment.setUpdateBy(subject);
+                recruitment.setUpdateTime(new Date());
+
+                affectCount += recruitmentService.update(recruitment);
+            }
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("删除失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
 
         return msgResult;
     }
 
     @ApiOperation(value="列表")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<Map> list(
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
             String id,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
-            HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
+            @RequestAttribute String subject){
 
         //当前用户ID
         System.out.println(subject);
@@ -165,9 +223,24 @@ public class RecruitmentController {
             searchParams.put("id","%" + id + "%");
         }
 
-
         Page<Recruitment> page = recruitmentService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
-
+        for(Recruitment recruitment : page.getResult()){
+            Company company = companyService.get(recruitment.getCompanyId());
+            recruitment.setCompanyName(company.getName());
+
+            DataDictionary dataDictionary = new DataDictionary();
+            dataDictionary = dataDictionaryService.get(recruitment.getWorkYear());
+            recruitment.setWorkYearName(dataDictionary.getName());
+            dataDictionary = dataDictionaryService.get(recruitment.getEducation());
+            recruitment.setEducationName(dataDictionary.getName());
+            if(recruitment.getIsDiscussPersonally()){
+                recruitment.setWageTypeName("面议");
+            }
+            else{
+                dataDictionary = dataDictionaryService.get(recruitment.getWageType());
+                recruitment.setWageTypeName(dataDictionary.getName());
+            }
+        }
 
         msgResult.setResult(true);
         msgResult.setData(PojoUtils.pageWrapper(page));

+ 12 - 16
web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeDeliverController.java

@@ -378,14 +378,6 @@ public class ResumeDeliverController {
 
             if(jobUser!=null){
                 dto.setName(jobUser.getRealName());
-                dto.setJobStatus(jobUser.getJobStatus());
-
-                if(StringUtils.isNotEmpty(jobUser.getJobStatus())) {
-                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", jobUser.getJobStatus());
-                    dto.setJobStatusN(jobStatusN);
-                }
-
-
             }
 
             Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
@@ -409,6 +401,12 @@ public class ResumeDeliverController {
                 dto.setWorkExp(resume.getWorkExp());
                 dto.setEducation(resume.getEducation());
                 dto.setBirthday(resume.getBirthday());
+                dto.setJobStatus(resume.getJobStatus());
+
+                if(StringUtils.isNotEmpty(resume.getJobStatus())) {
+                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", resume.getJobStatus());
+                    dto.setJobStatusN(jobStatusN);
+                }
             }
 
             dto.setChatStatus(resumeDeliver.getChatStatus());
@@ -600,14 +598,6 @@ public class ResumeDeliverController {
 
             if(jobUser!=null){
                 map.put("name",jobUser.getRealName());
-                map.put("jobStatus",jobUser.getJobStatus());
-
-                if(StringUtils.isNotEmpty(jobUser.getJobStatus())) {
-                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", jobUser.getJobStatus());
-                    map.put("jobStatusN",jobStatusN);
-                }
-
-
             }
 
             Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
@@ -627,6 +617,12 @@ public class ResumeDeliverController {
                 map.put("dreamMoney",resume.getDreamMoney());
                 map.put("workExp",resume.getWorkExp());
                 map.put("education",resume.getEducation());
+                map.put("jobStatus",resume.getJobStatus());
+
+                if(StringUtils.isNotEmpty(resume.getJobStatus())) {
+                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", resume.getJobStatus());
+                    map.put("jobStatusN",jobStatusN);
+                }
 
                 String birthday="";
 

+ 13 - 0
web/src/main/java/com/jpsoft/employment/modules/job/controller/WorkCategoryController.java

@@ -223,4 +223,17 @@ public class WorkCategoryController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="列表")
+    @RequestMapping(value = "listSelectTree",method = RequestMethod.POST)
+    public MessageResult<List> listSelectTree(@RequestAttribute String subject){
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        List<WorkCategory> list = workCategoryService.list();
+
+        msgResult.setResult(true);
+        msgResult.setData(list);
+
+        return msgResult;
+    }
 }

+ 10 - 9
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/JobUserApiController.java

@@ -20,6 +20,7 @@ import com.jpsoft.employment.modules.job.service.ResumeService;
 import com.jpsoft.employment.modules.job.service.UserCollectionService;
 import com.jpsoft.employment.modules.sys.entity.SysLog;
 import com.jpsoft.employment.modules.sys.service.SysLogService;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -43,6 +44,7 @@ import java.util.concurrent.TimeUnit;
 
 @RestController
 @RequestMapping("/mobile/jobUserApi")
+@Api(description = "注册用户接口")
 @Slf4j
 public class JobUserApiController {
     @Value("${jwt.secret}")
@@ -131,11 +133,10 @@ public class JobUserApiController {
                 jobUser.setId(UUID.randomUUID().toString());
                 jobUser.setRealName("未注册用户");
                 jobUser.setPassword(passwordEnc);
-                jobUser.setJobStatus("1");
                 jobUser.setCreateTime(new Date());
                 jobUser.setDelFlag(false);
                 jobUser.setHeadImageUrl("http://xpgj.oss-cn-shanghai.aliyuncs.com/xpgj/test/default_avatar.jpg");
-                jobUser.setIsAuthentication(false);
+                jobUser.setIsAuthentication("0");
                 jobUser.setOpenId(openId);
 
                 jobUserService.insert(jobUser);
@@ -233,11 +234,10 @@ public class JobUserApiController {
                     jobUser.setId(UUID.randomUUID().toString());
                     jobUser.setRealName("未注册用户");
                     jobUser.setPassword(passwordEnc);
-                    jobUser.setJobStatus("1");
                     jobUser.setCreateTime(new Date());
                     jobUser.setDelFlag(false);
                     jobUser.setHeadImageUrl("http://xpgj.oss-cn-shanghai.aliyuncs.com/xpgj/test/default_avatar.jpg");
-                    jobUser.setIsAuthentication(false);
+                    jobUser.setIsAuthentication("0");
                     jobUser.setOpenId(openId);
 
                     jobUserService.insert(jobUser);
@@ -266,8 +266,8 @@ public class JobUserApiController {
     @PostMapping("passwordLogin")
     @ApiOperation(value = "密码登录(公开接口)")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "phone", value = "openId", required = true, paramType = "form"),
-            @ApiImplicitParam(name = "password", value = "openId", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "form"),
+            @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "form"),
             @ApiImplicitParam(name = "openId", value = "openId", required = true, paramType = "form")
     })
     public MessageResult<Map> passwordLogin(String phone,String password,String openId) {
@@ -447,12 +447,12 @@ public class JobUserApiController {
 
     @PostMapping("authenticationStatus")
     @ApiOperation(value = "用户认证状态")
-    public MessageResult<Boolean> authenticationStatus(String token, @RequestAttribute  String subject) {
-        MessageResult<Boolean> messageResult = new MessageResult<>();
+    public MessageResult<String> authenticationStatus(String token, @RequestAttribute  String subject) {
+        MessageResult<String> messageResult = new MessageResult<>();
 
         try {
             JobUser jobUser = jobUserService.get(subject);
-            Boolean returnIs = false;
+            String returnIs = "";
             if(jobUser != null){
                 returnIs = jobUser.getIsAuthentication();
             }
@@ -499,6 +499,7 @@ public class JobUserApiController {
             jobUser.setIdCard(idCard);
             jobUser.setHeadImageUrl(positiveUrl+","+reverseUrl);
             jobUser.setRealName(name);
+            jobUser.setIsAuthentication("2");//待审核
 
             jobUserService.update(jobUser);
 

+ 0 - 208
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/PersonalApiController.java

@@ -1,208 +0,0 @@
-package com.jpsoft.employment.modules.mobile.controller;
-
-import com.github.pagehelper.Page;
-import com.jpsoft.employment.config.OSSConfig;
-import com.jpsoft.employment.modules.base.service.CompanyService;
-import com.jpsoft.employment.modules.common.dto.MessageResult;
-import com.jpsoft.employment.modules.common.dto.Sort;
-import com.jpsoft.employment.modules.common.utils.PojoUtils;
-import com.jpsoft.employment.modules.job.dto.ResumeDeliverDTO;
-import com.jpsoft.employment.modules.job.entity.*;
-import com.jpsoft.employment.modules.job.service.*;
-import com.jpsoft.employment.modules.sys.entity.DataDictionary;
-import com.jpsoft.employment.modules.sys.service.DataDictionaryService;
-import com.jpsoft.employment.modules.sys.service.UserService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-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.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-@Slf4j
-@RestController
-@RequestMapping("/mobile/personalApi")
-@Api(description = "移动端求职者个人中心接口")
-public class PersonalApiController {
-    private Logger logger = LoggerFactory.getLogger(getClass());
-
-    @Autowired
-    private ResumeDeliverService resumeDeliverService;
-
-    @Autowired
-    private JobUserService jobUserService;
-
-    @Autowired
-    private RecruitmentService recruitmentService;
-
-    @Autowired
-    private ResumeService RsumeService;
-
-    @Autowired
-    private WorkCategoryService workCategoryService;
-
-    @Autowired
-    private DataDictionaryService dataDictionaryService;
-
-    @Autowired
-    private UserService userService;
-
-    @Autowired
-    private CompanyService companyService;
-
-    @Autowired
-    private ResumeDeliverRecordService resumeDeliverRecordService;
-
-    @Autowired
-    private OSSConfig ossConfig;
-
-    @PostMapping("getDeliveryList")
-    @ApiOperation(value = "投递列表")
-    public MessageResult<Map> getDeliveryList(
-            String chatStatus,String name,String token,
-            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
-            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
-            HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
-
-        //当前用户ID
-        System.out.println(subject);
-
-        MessageResult<Map> msgResult = new MessageResult<>();
-
-        Map<String,Object> searchParams = new HashMap<>();
-
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("a.create_time","desc"));
-
-        if (!"0".equals(chatStatus)) {
-            searchParams.put("chatStatus",chatStatus);
-        }
-
-        if (StringUtils.isNotEmpty(name)) {
-            searchParams.put("name","%" + name + "%");
-        }
-
-        Page<ResumeDeliver> page = resumeDeliverService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
-
-        Page<ResumeDeliverDTO> pageDto = new Page<>();
-
-        for (ResumeDeliver resumeDeliver:page) {
-            ResumeDeliverDTO dto = new ResumeDeliverDTO();
-
-            dto.setId(resumeDeliver.getId());
-
-            JobUser jobUser = jobUserService.get(resumeDeliver.getJobUserId());
-
-            if(jobUser!=null){
-                dto.setName(jobUser.getRealName());
-                dto.setJobStatus(jobUser.getJobStatus());
-
-                if(StringUtils.isNotEmpty(jobUser.getJobStatus())) {
-                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", jobUser.getJobStatus());
-                    dto.setJobStatusN(jobStatusN);
-                }
-            }
-
-            Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
-
-            if(recruitment!=null){
-
-                dto.setPositionNumber(recruitment.getPositionNumber());
-
-                WorkCategory workCategory = workCategoryService.get(recruitment.getPosition());
-
-                if(workCategory != null) {
-                    dto.setPosition(workCategory.getName());
-                }
-            }
-
-            Resume resume = RsumeService.get(resumeDeliver.getJobResumeId());
-
-            if(resume!=null){
-                dto.setDreamMoney(resume.getDreamMoney());
-                dto.setWorkExp(resume.getWorkExp());
-                dto.setEducation(resume.getEducation());
-                dto.setBirthday(resume.getBirthday());
-            }
-
-            dto.setChatStatus(resumeDeliver.getChatStatus());
-
-            if(StringUtils.isNotEmpty(resumeDeliver.getChatStatus())) {
-                String chatStatusN = dataDictionaryService.findNameByCatalogNameAndValue("沟通状态", resumeDeliver.getChatStatus());
-                dto.setChatStatusN(chatStatusN);
-
-                String curChatStatus = resumeDeliver.getChatStatus();
-
-                List<DataDictionary> dataDictionaryList = dataDictionaryService.findByCatalogName("沟通状态");
-
-                List<DataDictionary> newDataDictionaryList = new ArrayList<>();
-
-                for (DataDictionary dataDictionary:dataDictionaryList) {
-                    if(Integer.parseInt(dataDictionary.getValue())>Integer.parseInt(curChatStatus)&&!dataDictionary.getName().equals("接受入职")){
-                        newDataDictionaryList.add(dataDictionary);
-                    }
-                }
-
-                dto.setChatStatusList(newDataDictionaryList);
-
-            }
-
-            pageDto.add(dto);
-        }
-
-        pageDto.setPages(page.getPages());
-        pageDto.setTotal(page.getTotal());
-        pageDto.setPageNum(page.getPageNum());
-
-
-        msgResult.setResult(true);
-        msgResult.setData(PojoUtils.pageWrapper(pageDto));
-
-        return msgResult;
-    }
-
-    @PostMapping("getBrowseRecords")
-    @ApiOperation(value = "浏览记录")
-    public MessageResult<Map> getBrowseRecords(
-            String token,
-            HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
-
-        //当前用户ID
-        System.out.println(subject);
-
-        MessageResult<Map> msgResult = new MessageResult<>();
-
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("a.create_time","desc"));
-
-        return msgResult;
-    }
-
-    @PostMapping("getCollectionRecord")
-    @ApiOperation(value = "收藏记录")
-    public MessageResult<Map> getCollectionRecord(
-            String token,
-            HttpServletRequest request){
-        String subject = (String)request.getAttribute("subject");
-
-        //当前用户ID
-        System.out.println(subject);
-
-        MessageResult<Map> msgResult = new MessageResult<>();
-
-        List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("a.create_time","desc"));
-
-        return msgResult;
-    }
-}

+ 13 - 4
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/RecruitmentApiController.java

@@ -96,6 +96,9 @@ public class RecruitmentApiController {
             searchParams.put("recruitmentPosition", recruitmentPosition+"%");
         }
 
+        searchParams.put("status", 3);
+        searchParams.put("approveStatus", "open");
+
         Page<Map> page = recruitmentService.foundPageList(searchParams,pageIndex,pageSize,true,sortList);
 
         msgResult.setResult(true);
@@ -159,7 +162,7 @@ public class RecruitmentApiController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "id", required = true, paramType = "form")
     })
-    public MessageResult<Map> getRecruitmentList(
+    public MessageResult<Map> getRelevantList(
             String id,
             String token){
 
@@ -172,12 +175,15 @@ public class RecruitmentApiController {
         Recruitment recruitment = recruitmentService.get(id);//id 数据
         String relevantTitle = recruitment.getTitle();//标题
 
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("jr.id_","asc"));
 
-        searchParams.put("relevantTitle", relevantTitle);
+        searchParams.put("relevantTitle", "%"+relevantTitle+"%");
         searchParams.put("notrelevantId", id);
 
-        Page<Recruitment> page = recruitmentService.pageSearch(searchParams,1,5,true,sortList);
+        searchParams.put("status", 3);
+        searchParams.put("approveStatus", "open");
+
+        Page<Map> page = recruitmentService.foundPageList(searchParams,1,5,true,sortList);
 
         msgResult.setResult(true);
         msgResult.setData(PojoUtils.pageWrapper(page));
@@ -203,6 +209,9 @@ public class RecruitmentApiController {
             searchParams.put("id", "%"+id+"%");
         }
 
+        searchParams.put("status", 3);
+        searchParams.put("approveStatus", "open");
+
         Page<Map> page = recruitmentService.foundPageList(searchParams,1,20,true,sortList);
 
         msgResult.setResult(true);

+ 261 - 15
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/ResumeApiController.java

@@ -1,35 +1,34 @@
 package com.jpsoft.employment.modules.mobile.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.Page;
-import com.jpsoft.employment.config.OSSConfig;
+import com.jpsoft.employment.modules.base.entity.ResumeApprove;
+import com.jpsoft.employment.modules.base.service.ResumeApproveService;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.utils.*;
+import com.jpsoft.employment.modules.job.dto.EducationExpDTO;
+import com.jpsoft.employment.modules.job.dto.ExpJsonDTO;
+import com.jpsoft.employment.modules.job.dto.WorkExpDTO;
 import com.jpsoft.employment.modules.job.entity.*;
 import com.jpsoft.employment.modules.job.service.*;
-import com.jpsoft.employment.modules.sys.entity.SysLog;
 import com.jpsoft.employment.modules.sys.service.DataDictionaryService;
-import com.jpsoft.employment.modules.sys.service.SysLogService;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
 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.data.redis.core.ValueOperations;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import sun.misc.BASE64Decoder;
 
-import java.io.ByteArrayInputStream;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 @RestController
 @RequestMapping("/mobile/resumeApi")
@@ -66,6 +65,9 @@ public class ResumeApiController {
     @Autowired
     private ResumeDeliverRecordService resumeDeliverRecordService;
 
+    @Autowired
+    private ResumeApproveService resumeApproveService;
+
 
     private Logger logger = LoggerFactory.getLogger(getClass());
 
@@ -96,12 +98,13 @@ public class ResumeApiController {
     @PostMapping("collectResume")
     @ApiOperation(value = "收藏简历")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "recruitmentId", value = "岗位ID", required = true, paramType = "form"),
-            @ApiImplicitParam(name = "status", value = "状态(收藏1,取消0),默认1收藏",  paramType = "form"),
+            @ApiImplicitParam(name = "recruitmentId", value = "岗位ID", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态(收藏1,取消0),默认1收藏",  paramType = "query"),
     })
     public MessageResult<String> collectResume(
             String recruitmentId,
             @RequestParam(value="status",defaultValue="1") String status,
+            String token,
             @RequestAttribute  String subject) {
         MessageResult<String> messageResult = new MessageResult<>();
 
@@ -151,12 +154,13 @@ public class ResumeApiController {
     @PostMapping("deliverResume")
     @ApiOperation(value = "投递简历")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "recruitmentId", value = "岗位ID", required = true, paramType = "form"),
-            @ApiImplicitParam(name = "resumeId", value = "简历ID,不传则默认查当前简历", paramType = "form"),
+            @ApiImplicitParam(name = "recruitmentId", value = "岗位ID", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "resumeId", value = "简历ID,不传则默认查当前简历", paramType = "query"),
     })
     public MessageResult<String> deliverResume(
             String recruitmentId,
             @RequestParam(value="resumeId",defaultValue="") String resumeId,
+            String token,
             @RequestAttribute  String subject) {
         MessageResult<String> messageResult = new MessageResult<>();
 
@@ -221,10 +225,11 @@ public class ResumeApiController {
     @PostMapping("myResumeDetail")
     @ApiOperation(value = "我的简历-详情")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "resumeId", value = "简历ID,不传则默认查当前简历", paramType = "form"),
+            @ApiImplicitParam(name = "resumeId", value = "简历ID,不传则默认查当前简历", paramType = "query"),
     })
     public MessageResult<Map> myResumeDetail(
-            @RequestParam(value="resumeId",defaultValue="") String resumeId,
+            String resumeId,
+            String token,
             @RequestAttribute  String subject) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
@@ -244,7 +249,9 @@ public class ResumeApiController {
                 return messageResult;
             }
 
+            //教育经验
             List<ResumeEducationExperience> rexList = resumeEducationExperienceService.findByResumeId(resume.getId());
+            //工作经验
             List<ResumeWorkExperience> rweList = resumeWorkExperienceService.findByResumeId(resume.getId());
 
 
@@ -273,6 +280,7 @@ public class ResumeApiController {
     public MessageResult<Map> deliveryRecord(
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="10") int pageSize,
+            String token,
             @RequestAttribute  String subject) {
         MessageResult<Map> messageResult = new MessageResult<>();
 
@@ -286,6 +294,10 @@ public class ResumeApiController {
             Page<ResumeDeliver> page = resumeDeliverService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
             for(ResumeDeliver rd : page.getResult()){
                 Recruitment recruitment = recruitmentService.get(rd.getJobRecruitmentId());
+                String wageTypeName = dataDictionaryService.getName(recruitment.getWageType());
+                String workYearName = dataDictionaryService.getName(recruitment.getWorkYear());
+                recruitment.setWageTypeName(wageTypeName);
+                recruitment.setWorkYearName(workYearName);
                 rd.setJobRecruitment(recruitment);
             }
 
@@ -299,4 +311,238 @@ public class ResumeApiController {
 
         return messageResult;
     }
+
+    @PostMapping("submitResume")
+    @ApiOperation(value = "保存简历")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "resumeId", value = "简历ID,不传则默认查当前简历", paramType = "query"),
+            @ApiImplicitParam(name = "categoryId", value = "应聘职位", paramType = "query"),
+            @ApiImplicitParam(name = "sex", value = "性别", paramType = "query"),
+            @ApiImplicitParam(name = "dreamMoney", value = "期望工资", paramType = "query"),
+            @ApiImplicitParam(name = "workExp", value = "工作经验", paramType = "query"),
+            @ApiImplicitParam(name = "education", value = "学历", paramType = "query"),
+            @ApiImplicitParam(name = "jobStatus", value = "工作状态(是否上班)", paramType = "query"),
+            @ApiImplicitParam(name = "birthday", value = "出生年月", paramType = "query",dataType = "Date"),
+            @ApiImplicitParam(name = "dreamAdd", value = "期望工作地点", paramType = "query"),
+            @ApiImplicitParam(name = "introduction", value = "自我介绍", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "开启状态,不传默认关闭(1开启,0关闭)", paramType = "query"),
+            @ApiImplicitParam(name = "expJson", value = "经历-json", paramType = "query"),
+            @ApiImplicitParam(name = "resumeUrls", value = "简历附件,多文件逗号分割", paramType = "query"),
+
+    })
+    public MessageResult<String> submitResume(
+            @RequestParam(value="resumeId",defaultValue="") String resumeId,
+            @RequestParam(value="categoryId",defaultValue="") String categoryId,
+            @RequestParam(value="sex",defaultValue="") String sex,
+            @RequestParam(value="dreamMoney",defaultValue="") String dreamMoney,
+            @RequestParam(value="workExp",defaultValue="") String workExp,
+            @RequestParam(value="education",defaultValue="") String education,
+            @RequestParam(value="jobStatus",defaultValue="") String jobStatus,
+            @DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday,
+            @RequestParam(value="dreamAdd",defaultValue="") String dreamAdd,
+            @RequestParam(value="introduction",defaultValue="") String introduction,
+            @RequestParam(value="status",defaultValue="0") String status,
+            @RequestParam(value="expJson",defaultValue="") String expJson,
+            @RequestParam(value="resumeUrls",defaultValue="") String resumeUrls,
+            String token,
+            @RequestAttribute  String subject) {
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            //JobUser jobUser = jobUserService.get(subject);
+            Resume resume = null;
+            if(StringUtils.isNotEmpty(resumeId)) {
+                resume = resumeService.get(resumeId);
+            }else{
+                resume = resumeService.findByUserId(subject);
+            }
+
+            //String workExpJson = "{\"workExp\":[{\"id\":\"123\",\"name\":\"标题一\",\"timeS\":\"2020\",\"timeE\":\"2021\",\"remark\":\"工作1\",\"content\":\"内容\"},{\"id\":\"223\",\"name\":\"标题二\",\"timeS\":\"2022\",\"timeE\":\"至今\",\"remark\":\"工作2\",\"content\":\"内容2\"}],\"educationExp\":[{\"id\":\"323\",\"name\":\"标题一\",\"timeS\":\"2025\",\"timeE\":\"2026\",\"remark\":\"教育1\",\"content\":\"内容1\"},{\"id\":\"423\",\"name\":\"标题一\",\"timeS\":\"1\",\"timeE\":\"2\",\"remark\":\"教育2\",\"content\":\"内容2\"}]}";
+            if(resume == null){
+                //创建简历
+                resume = new Resume();
+                resume.setId(UUID.randomUUID().toString());
+                resume.setCreateBy(subject);
+                resume.setCreateTime(new Date());
+                resume.setDelFlag(false);
+                resume.setBirthday(birthday);
+                resume.setDreamAdd(dreamAdd);
+                resume.setDreamMoney(dreamMoney);
+                resume.setWorkExp(workExp);
+                resume.setEducation(education);
+                resume.setIntroduction(introduction);
+                resume.setJobStatus(jobStatus);
+                resume.setJobUserId(subject);
+                resume.setPositionCategoryId(categoryId);
+                resume.setSex(sex);
+                resume.setStatus(status);
+                resume.setResumeUrls(resumeUrls);
+
+                JSONObject jsonObject = JSONObject.parseObject(expJson);
+                ExpJsonDTO expJsonDTO = JSON.toJavaObject(jsonObject,ExpJsonDTO.class );
+                if(expJsonDTO != null){
+                    List<EducationExpDTO> educationExpList = expJsonDTO.getEducationExp();
+                    if(educationExpList.size() > 0){
+                        updateEducationExp(resume.getId(),educationExpList,subject);
+                    }
+
+                    List<WorkExpDTO> workExpDTOList = expJsonDTO.getWorkExp();
+                    if(workExpDTOList.size() > 0){
+                        updateWorkExp(resume.getId(),workExpDTOList,subject);
+                    }
+                }
+                resume.setApproveStatus("2");//审批中
+
+                resumeService.insert(resume);
+
+            }else{
+                //修改简历
+                resume.setUpdateBy(subject);
+                resume.setUpdateTime(new Date());
+                resume.setDelFlag(false);
+                resume.setBirthday(birthday);
+                resume.setDreamAdd(dreamAdd);
+                resume.setDreamMoney(dreamMoney);
+                resume.setWorkExp(workExp);
+                resume.setEducation(education);
+                resume.setIntroduction(introduction);
+                resume.setJobStatus(jobStatus);
+                resume.setJobUserId(subject);
+                resume.setPositionCategoryId(categoryId);
+                resume.setSex(sex);
+                resume.setStatus(status);
+                resume.setResumeUrls(resumeUrls);
+
+                JSONObject jsonObject = JSONObject.parseObject(expJson);
+                ExpJsonDTO expJsonDTO = JSON.toJavaObject(jsonObject,ExpJsonDTO.class );
+                if(expJsonDTO != null){
+                    List<EducationExpDTO> educationExpList = expJsonDTO.getEducationExp();
+                    if(educationExpList.size() > 0){
+                        updateEducationExp(resume.getId(),educationExpList,subject);
+                    }
+
+                    List<WorkExpDTO> workExpDTOList = expJsonDTO.getWorkExp();
+                    if(workExpDTOList.size() > 0){
+                        updateWorkExp(resume.getId(),workExpDTOList,subject);
+                    }
+                }
+                resume.setApproveStatus("2");//审批中
+                resumeService.update(resume);
+            }
+
+            //创建简历审批信息
+            ResumeApprove ra = new ResumeApprove();
+            ra.setId(UUID.randomUUID().toString());
+            ra.setCreateBy(subject);
+            ra.setCreateTime(new Date());
+            ra.setDelFlag(false);
+            ra.setJobResumeId(resume.getId());
+            ra.setApprovalStatus("2");//简历审批中
+            resumeApproveService.insert(ra);
+
+
+            messageResult.setResult(true);
+            messageResult.setData("保存成功,请等待审批");
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            log.error(ex.getMessage());
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    public int updateEducationExp(String resumeId,List<EducationExpDTO> educationExpList,String subject) {
+        int updateCount = 0;
+        try {
+            int i = 0;
+            for(EducationExpDTO expDTO:educationExpList){
+                i++;
+                if(StringUtils.isNotEmpty(expDTO.getId())){
+                    ResumeEducationExperience ree = resumeEducationExperienceService.get(expDTO.getId());
+                    ree.setUpdateBy(subject);
+                    ree.setUpdateTime(new Date());
+                    ree.setDelFlag(false);
+                    ree.setResumeId(resumeId);
+                    ree.setSchoolName(expDTO.getName());
+                    ree.setMajor(expDTO.getContent());
+                    ree.setEducation(expDTO.getRemark());
+                    ree.setStartTime(expDTO.getTimeS());
+                    ree.setEndTime(expDTO.getTimeE());
+                    ree.setSortNo(i);
+                    updateCount += resumeEducationExperienceService.update(ree);
+                }else{
+                    ResumeEducationExperience ree = new ResumeEducationExperience();
+                    ree.setId(UUID.randomUUID().toString());
+                    ree.setCreateBy(subject);
+                    ree.setCreateTime(new Date());
+                    ree.setDelFlag(false);
+                    ree.setResumeId(resumeId);
+                    ree.setSchoolName(expDTO.getName());
+                    ree.setMajor(expDTO.getContent());
+                    ree.setEducation(expDTO.getRemark());
+                    ree.setStartTime(expDTO.getTimeS());
+                    ree.setEndTime(expDTO.getTimeE());
+                    ree.setSortNo(i);
+                    updateCount += resumeEducationExperienceService.insert(ree);
+                }
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+        }
+
+        return updateCount;
+    }
+
+    public int updateWorkExp(String resumeId,List<WorkExpDTO> WorkExpList,String subject) {
+        int updateCount = 0;
+        try {
+            int i = 0;
+            for(WorkExpDTO expDTO:WorkExpList){
+                i++;
+                if(StringUtils.isNotEmpty(expDTO.getId())){
+                    ResumeWorkExperience rwe = resumeWorkExperienceService.get(expDTO.getId());
+                    rwe.setUpdateBy(subject);
+                    rwe.setUpdateTime(new Date());
+                    rwe.setDelFlag(false);
+                    rwe.setResumeId(resumeId);
+                    rwe.setCompanyName(expDTO.getName());
+                    rwe.setContent(expDTO.getContent());
+                    rwe.setJob(expDTO.getRemark());
+                    rwe.setStartTime(expDTO.getTimeS());
+                    rwe.setEndTime(expDTO.getTimeE());
+                    rwe.setSortNo(i);
+                    updateCount += resumeWorkExperienceService.update(rwe);
+                }else{
+                    ResumeWorkExperience rwe = new ResumeWorkExperience();
+                    rwe.setId(UUID.randomUUID().toString());
+                    rwe.setCreateBy(subject);
+                    rwe.setCreateTime(new Date());
+                    rwe.setDelFlag(false);
+                    rwe.setResumeId(resumeId);
+                    rwe.setCompanyName(expDTO.getName());
+                    rwe.setContent(expDTO.getContent());
+                    rwe.setJob(expDTO.getRemark());
+                    rwe.setStartTime(expDTO.getTimeS());
+                    rwe.setEndTime(expDTO.getTimeE());
+                    rwe.setSortNo(i);
+                    updateCount += resumeWorkExperienceService.insert(rwe);
+                }
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+        }
+
+        return updateCount;
+    }
+
+    public static void main(String[] args) {
+        String workExpJson = "{\"workExp\":[{\"id\":\"123\",\"name\":\"标题一\",\"timeS\":\"2020\",\"timeE\":\"2021\",\"remark\":\"工作1\",\"content\":\"内容\"},{\"id\":\"223\",\"name\":\"标题二\",\"timeS\":\"2022\",\"timeE\":\"至今\",\"remark\":\"工作2\",\"content\":\"内容2\"}],\"educationExp\":[{\"id\":\"323\",\"name\":\"标题一\",\"timeS\":\"2025\",\"timeE\":\"2026\",\"remark\":\"教育1\",\"content\":\"内容1\"},{\"id\":\"423\",\"name\":\"标题一\",\"timeS\":\"1\",\"timeE\":\"2\",\"remark\":\"教育2\",\"content\":\"内容2\"}]}";
+
+        JSONObject jsonObject = JSONObject.parseObject(workExpJson);
+        ExpJsonDTO share = JSON.toJavaObject(jsonObject,ExpJsonDTO.class );
+        System.out.println("aaaaa");
+
+    }
 }

+ 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());
+        }
+
+    }
+}