標籤:
概念是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
過程 : 概念 : 結構 jobbox jobPost