matchRegistration.entity.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { Entity, Column } from 'typeorm';
  2. import { BaseModel } from '../../frame/BaseModel';
  3. import dayjs = require('dayjs');
  4. import tz = require('dayjs/plugin/timezone');
  5. import utc = require('dayjs/plugin/utc');
  6. dayjs.extend(utc);
  7. dayjs.extend(tz);
  8. dayjs.tz.setDefault('Asia/Shanghai');
  9. /**
  10. * 选手状态"
  11. * 0:待审核: 报名阶段: 报名信息审核中; 初审阶段:进入初审,但没有开始比赛; 决赛阶段: 进入决赛,但未确认是否参加决赛;
  12. * 1:已通过: 报名阶段: 报名信息已通过审核; 初审阶段:进入初审,已通过初审(有分,且已被选中参加决赛); 决赛阶段: 进入决赛,已确认且完成决赛(确认参加,有分)
  13. * 2:已退回: 报名阶段: 报名信息有问题,被主办方退回的状态; 初审阶段:进入初审,但未通过初审(有分,但未被选中参加决赛); 决赛阶段: 进入决赛,但是不参加决赛(不确认)
  14. */
  15. /**
  16. * final_score_details:[
  17. * {
  18. * name:string,
  19. * score:number,
  20. * details:[{
  21. * title,
  22. * score,
  23. * },...],
  24. * }
  25. * ]
  26. */
  27. //赛事
  28. @Entity('matchRegistration', { comment: '赛事报名' })
  29. export class MatchRegistration extends BaseModel {
  30. @Column({ type: 'integer', comment: '赛事id' })
  31. match_id: number;
  32. @Column({ type: 'integer', comment: '用户id' })
  33. user_id: number;
  34. @Column({ type: 'jsonb', nullable: true, comment: '报名信息' })
  35. info: Array<any>;
  36. @Column({ type: 'character varying', nullable: true, comment: '流程状态', default: '0' })
  37. ext_status: string;
  38. @Column({ type: 'character varying', nullable: true, comment: '选手状态', default: '0' })
  39. status: string;
  40. @Column({ type: 'character varying', nullable: true, comment: '项目编号: ${match_id}-${user_id}-${该赛事第x位}' })
  41. no: string;
  42. @Column({ type: 'timestamp without time zone', nullable: true, comment: '时间', transformer: { from: value => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : value), to: value => value } })
  43. time: Date;
  44. @Column({ type: 'integer', nullable: true, comment: '顺序' })
  45. order_no: number;
  46. @Column({ type: 'integer', nullable: true, comment: '分数' })
  47. score: number;
  48. @Column({ type: 'timestamp without time zone', nullable: true, comment: '初审开始时间', transformer: { from: value => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : value), to: value => value } })
  49. start_time: Date;
  50. @Column({ type: 'character varying', nullable: true, comment: '是否确认参加决赛', default: '1' })
  51. final_confirm: string;
  52. @Column({ type: 'integer', nullable: true, comment: '决赛顺序' })
  53. final_order_no: number;
  54. @Column({ type: 'integer', nullable: true, comment: '决赛总分数' })
  55. final_score: number;
  56. @Column({ type: 'jsonb', nullable: true, comment: '决赛分数详情' })
  57. final_score_details: Array<any>;
  58. @Column({ type: 'timestamp without time zone', nullable: true, comment: '决赛开始时间', transformer: { from: value => (value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : value), to: value => value } })
  59. final_start_time: Date;
  60. @Column({ type: 'integer', nullable: true, comment: '最终排名' })
  61. last_order_no: number;
  62. // 决赛名次根据分数生成
  63. }