member-enrollment-app.js 1.2 KB

123456789101112131415
  1. async function enrollmentOrderTransition(input,current,order,orderId,status){
  2. const row=await Psql.oneOrNone('SELECT "objectId","sourceKey" FROM "CommonModel" WHERE "company"=$1 AND "modelId"=54 AND "generalId"::text=$2',[DEFAULT_COMPANY_ID,String(orderId)]);if(!row)fail(404,'预约不存在');
  3. if(status!==10)fail(409,'请使用老师一次结课入口');
  4. if(number(order.dszt)===0&&/^legacy[:\-]/.test(row.sourceKey||'')){
  5. const writing=String(order.kcid)==='398';
  6. if(writing&&input.learningBindingId)fail(409,'阅读写作课无需选择词库,请刷新后重试');
  7. const prepared=await prepareLegacyAppointment({...order,objectId:row.objectId},current,writing);
  8. if(prepared.blockedReason)fail(409,prepared.blockedReason);
  9. if(writing)return {GeneralID:orderId,status,previousStatus:0};
  10. }
  11. let learning;
  12. if(input.learningBindingId)learning=await startLessonWithContent(current,row.objectId,input.learningBindingId,input.expectedUpdatedAt);
  13. else try{await Psql.one('SELECT xs_start_appointment_for_actor($1,$2,$3,$4) AS result',[DEFAULT_COMPANY_ID,row.objectId,current.id,ownLegacyId(current)]);}catch(error){fail(409,String(error.message));}
  14. return{GeneralID:orderId,status,previousStatus:number(order.dszt),learning};
  15. }