2019-08-05


解书:招聘微服务


5.1 表结构分析 3

招聘微服务主要有两块:企业信息和招聘信息

5.2热门企业列表 4

/**

 * 热门企业列表

 * @return

 */

public List hotlist(){

return enterpriseDao.findByIshot("1");

}

(2)EnterpriseService新增方法

/**

 * 热门企业列表

 * @return

 */

public List hotlist(){

return enterpriseDao.findByIshot("1");

}

[if !supportLists](3)[endif]EnterpriseController新增方法

/**

 * 查询热门企业

 * @return

 */

@RequestMapping(value="/search/hotlist",method=RequestMethod.GET)

public Result hotlist(){

return new Result(true, StatusCode.OK, "查询成功",

enterpriseService.hotlist());

}

5.3推荐职位列表 5


需求分析:查询状态为2并以创建日期降序排序,查询前4条记录

(1)在RecruitDao新增方法定义

/**

* 查询最新职位列表(按创建日期降序排序)

* @return

*/

public List findTop4ByStateOrderByCreatetimeDesc(String state);

[if !supportLists](2)[endif]RecruitService新增方法

/**

 * 根据状态查询

 * @param state

 * @return

 */

public List findTop4ByStateOrderByCreatetimeDesc(String state){

return recruitDao.findTop4ByStateOrderByCreatetimeDesc(state);

}

(3)RecruitController新增方法

@RequestMapping(value="/search/recommend",method= RequestMethod.GET)

public Result recommend(){

List list = recruitService.findTop4ByStateOrderByCreatetimeDesc("2");

return new Result(true,StatusCode.OK,"查询成功",list);

}

5.4最新职位列表 6

需求分析:查询状态不为0并以创建日期降序排序,查询前12条记录

(1)在RecruitDao新增方法定义

/**

* 最新职位列表

* @param state

* @return

*/

public List findTop12ByStateNotOrderByCreatetimeDesc(String state);

(2)RecruitService新增方法

/**

 * 最新职位列表

 * @return

 */

public List newlist(){

return recruitDao.findTop12ByStateNotOrderByCreatetimeDesc("0");

}

[if !supportLists](2)[endif]RecruitController新增方法

/**

 * 最新职位列表

 * @return

 */

@RequestMapping(value="/search/newlist",method= RequestMethod.GET)

public Result newlist(){

return new Result(true,StatusCode.OK,"查询成功",recruitService.newlist());

}

6问答微服务 7


问答表对应label表是多对多,一个问题可能对应多个标签

6.1 表结构分析 7


[if !supportLists]l [endif]创建tensquare_qa

[if !supportLists]l [endif]复制标签微服务工程

[if !supportLists]l [endif]修改Application类名称为QaApplication

[if !supportLists]l [endif]修改application.yml中的端口为9003,修改datasource数据库连接

[if !supportLists]l [endif]并在父工程引入

6.1最新回答列表 9


需求分析:最新回复的问题显示在上方,按回复时间降序排序。

(1)创建中间表pl的实体类

import java.io.Serializable;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table(name="tb_pl")

public class Pl implements Serializable{

@Id

private String problemid;

@Id

private String lableid;

public String getLableid() {

return lableid;

}

public void setLableid(String lableid) {

this.lableid = lableid;

}

public String getProblemid() {

return problemid;

}

public void setProblemid(String problemid) {

this.problemid = problemid;

}

}

(2)ProblemDao新增方法定义

/**

 * 根据标签ID查询最新问题列表

 * @param labelId

 * @param pageable

 * @return

 */

@Query("select p from Problem p where id in( select problemid from Pl where labelid=?1 ) order by replytime desc")

public Page findNewListByLabelId(String labelId, Pageable pageable);

6.2热门问答列表 10


需求分析:按回复数降序排序

(1)ProblemDao新增方法定义

/**

 * 根据标签ID查询热门问题列表

 * @param labelId

 * @param pageable

 * @return

 */

@Query("select p from Problem p where id in( select problemid from Pl where labelid=?1 ) order by reply desc")

public Page findHotListByLabelId(String labelId, Pageable pageable);

(2)ProblemService新增方法

/**

 * 根据标签ID查询热门问题列表

 * @param lableId 标签ID

 * @param page 页码

 * @param size 页大小

 * @return

 */

public Page findHotListByLabelId(String lableId,int page, int size) {

PageRequest pageRequest = PageRequest.of(page‐1, size);

return problemDao.findHotListByLabelId(lableId,pageRequest);

}

(3)ProblemController新增方法

/**

 * 根据标签ID查询热门问题列表

 * @param labelid

 * @return

 */

@RequestMapping(value="/hotlist/{labelid}/{page}/{size}",method=RequestMethod.GET)

public Result findHotListByLabelId(@PathVariable String labelid ,@PathVariable int page,@PathVariable int size ){

Page pageList = problemService.findHotListByLabelId(labelid, page, size);

PageResult pageResult = new PageResult<>

(pageList.getTotalElements(), pageList.getContent());

return new Result(true, StatusCode.OK, "查询成功",pageResult);

}

6.3等待回答列表 11


需求分析:回复数为0

(1)ProblemDao新增方法定义

/**

 * 根据标签ID查询等待回答列表

 * @param labelId

 * @param pageable

 * @return

 */

@Query("select p from Problem p where id in( select problemid from Pl where labelid=?1 ) and reply=0 order by createtime desc")

public Page findWaitListByLabelId(String labelId, Pageable pageable);

(2)ProblemService新增方法

/**

 * 根据标签ID查询等待回答列表

 * @param lableId 标签ID

 * @param page 页码

 * @param size 页大小

 * @return

 */

public Page findWaitListByLabelId(String lableId,int page, int size) {

PageRequest pageRequest = PageRequest.of(page‐1, size);

return problemDao.findWaitListByLabelId(lableId,pageRequest);

}

序列化:

就是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 SecurityPermission。在默认策略下,通过 Internet 下载的代码或 Internet 代码不会授予该权限;只有本地计算机上的代码才被授予该权限。

通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。

对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试生成特定字段来保存不可序列化的重要数据。如果无法实现这一点,则应注意该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。

反序列化:

它将字节流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。


    

你可能感兴趣的:(2019-08-05)