概念是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
workLocationAreas,otherWorkLocationArea
//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