过程 : 概念 : 结构 jobbox jobPost

概念是employer创建jobPost时,可以publish或unpublish。 sort expired后,会通过server tast 去更新成history。所有的publish和unpublish sql是没有记入这状态,都是靠sort的expiredDate来分析。

操作过程是 JobPost 只负责post Job,employer会选择publish 哪个JobPost,而不能unpublish。employer 如果要看到所有publish JobPost,应该去advertisement找。

publish是当employer创建jobPost时,可以publish(创建连接sort),但是jobPost 在 sort expired后,会通过server tast 去更新成unpublish。

这里的server task 是在一段短时间内去更新history “jobPost_id unpublish”, 过程是去sorts?$filter id ne null and expiredDate gt 今天,接着去更新history 。在短时间内过期的jobPost 数量不会多,

这里没有indeed的JobPost 活动概念,indeed是每个jobPost都是一个活动,可以open和close。没做是因为mr teh通常不要这功能,突然要的话只是加sql和改前台

一个sort只能有一个jobPost,因为employer不可能要求买多个sort,同时放同个JobPost,这样不逻辑。但是在sql结构上没办法做出一对一表的关系和sort 被移除关系时,jobPost也要,entity不支持,自己搞也特别麻烦。最后选者插红绿灯,sort 和 jobPost 在sql上多对多的关系,但是用unique来block,同时在名字写成 singleSorts 和 singleJobPosts。

jobPost结构

workingDayFrom,workingDayTo,workingHourFrom,workingHourTo,JobPostLanguageVersion.moreWorkingdatetimeDescription

//无需解释


JobSpecialization_id,JobSpecializationRole_id,otherJobSpecialization,otherJobSpecializationRole

//post job 来有2个fereign key,因为一定会有job specialization 和 role

//在设计上,这2个是指令,role 会watch specialization

//如果jobSpecialization 是other的话,需要填写otherJobSpecialization(不需要多语言,因为这是给admin看的)

//同样的role 是 other 的话,需要填写otherJobSpecializationRole(不需要多语言,因为这是给admin看的)

//tree 的other 结构一定是有other 在层中,没有其他role

workLocationAreasotherWorkLocationArea

//workLocationAreas 不是column,是多对多的关系。post job可以add 多个地区,

//但是如果admin没有提供post job 需要的地区,这时可以选择other,同时需要填写string(给admin看的,下次优化时,可以添加进tree里)

//可以多选地区,是多对多的表。如果employer在选malaysia时,会把全部的id给记入(不会很多这样的post job)

//candidate 在search时,可以点击malaysia 这时,这时是用一个id而已,如果多选就记入多个id,去odata搜索

//admin在写working location area tree 时(可以层中层,),第一层一定要写other(不然会bug),如果选择other,必须填写otherWorkLocationArea

salaryType,minSalary,maxSalary,minSalaryMYR,maxSalaryMYR,salaryCurrency

//所有的input type = number 都是null,搜索sql 会慢点。

//salaryType 是工资的类型,目前是月薪,seek 是年薪和每小时的工资

//以上会做成指令,过程是:

//post job 时,需要填写minSalary 和 maxSalary,这时会看salaryCurrency是不是MYR,是的话不会去ajax 拿兑换率资料

//同时watch ng-model 再同步minSalaryMYR,maxSalaryMYR

//如果不是MYR,就会ajax 和 promise 计算兑换的MYR 金额,再同步

yearlyBonusByMonth, JobPostLanguageVersion.moreBonusDescription

ownTransportss,JobPostLanguageVersion.moreOwnTransport

languageSkillss,JobPostLanguageVersion.moreLanguageSkill

benefitss,JobPostLanguageVersion.moreBenefit

claimss,JobPostLanguageVersion.moreClaim

//由于moreAble资料是顾客填写的,所以必须多语言。在search时,只能用系统提供的字(目前没有要求search)

//分开多个colum记入,好处是可以search,post job 记入的字,日后添加去hardcode

availableQuantity,positionLevelPrefix,positionLevelSuffix,employmentTypess,qualificationss,minRelatedWorkingExperienceYear,minAge,maxAge,skill,skillProficiency,preferredGender,isUrgent 

//以上无需解释

JobPostLanguageVersion{

  typeEnum

  positionTitle

  travelNeededDescription

  moreWorkingDatetimeDescription 

  moreBonusDescription

  moreOwnTransport

  moreLanguageSkill

  moreBenefit

  moreClaim
  bonusDescription

  additionalBenefitCK

  jobResponsibilityCK

  moreAboutJobCK

  jobRequirementCK

}

//以上的语言对象里的colum,无需解释

employer操作

create :有个paste 功能,在之前需要有angular.copy的对象,在paste时,需要把某些值给删除

search :可以过滤date,job specialization 和position title

view :在ui router 是 jobPosts/5,目前只有post job资料,前台设计不会一起设计。applications 需等到candidate apply后才会讨论

edit : 在ui router 是 jobPosts/5/edit

publish : 在 ui router是 jobPosts/publish/5,这样的URL是设计是为了在JobPosts 有一个遮罩层来选择publish。这里的过程是去ajax 2次,

1是sorts?$filter singleJobPosts.length eq 0 and expiredDate lt 今天 (还不确定)

2是tickets?$filter leftUnit gt 0

在ticket的sql结构是会有product的资料,因为employer只可以存ticket,所以没有必要和product概念一样。ticket没有继承,所以需要把product的资料给ticket,而ticket 会多一个leftUnit

preview : 开多一个tag会view, 在没有publish的情况下也可以有一个display page

delete : 就delete

在display jobPosts 有position title,company,new candidate,publishing, total candidate和 function

原文地址:https://www.cnblogs.com/stooges/p/4887593.html