gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/attendance/v1/model.go (about)

     1  // Package attendance code generated by oapi sdk gen
     2  /*
     3   * MIT License
     4   *
     5   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     6   *
     7   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
     8   *
     9   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
    10   *
    11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    12   */
    13  
    14  package larkattendance
    15  
    16  import (
    17  	"io"
    18  
    19  	"bytes"
    20  
    21  	"io/ioutil"
    22  
    23  	"fmt"
    24  
    25  	"context"
    26  	"errors"
    27  
    28  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    29  )
    30  
    31  const (
    32  	EmployeeTypeEmployeeId = "employee_id" // 员工employeeId
    33  	EmployeeTypeEmployeeNo = "employee_no" // 员工工号
    34  )
    35  
    36  const (
    37  	DeptTypeOpenId = "open_id" // 开放openID
    38  )
    39  
    40  const (
    41  	EmployeeTypeGetGroupEmployeeId = "employee_id" // 员工employeeId
    42  	EmployeeTypeGetGroupEmployeeNo = "employee_no" // 员工工号
    43  )
    44  
    45  const (
    46  	DeptTypeGetGroupOpenId = "open_id" // 开放openID
    47  )
    48  
    49  const (
    50  	EmployeeTypeCreateUserApprovalEmployeeId = "employee_id" // 员工employeeId
    51  	EmployeeTypeCreateUserApprovalEmployeeNo = "employee_no" // 员工工号
    52  )
    53  
    54  const (
    55  	CheckDateTypePeriodTime = "PeriodTime" // 单据作用时间(即写入的end_time)
    56  	CheckDateTypeCreateTime = "CreateTime" // 单据创建时间
    57  )
    58  
    59  const (
    60  	ApprovalStatusTodo     = 0 // 待审批
    61  	ApprovalStatusRejected = 1 // 审批未通过
    62  	ApprovalStatusApproved = 2 // 审批通过
    63  	ApprovalStatusCanceled = 3 // 审批已取消
    64  	ApprovalStatusReverted = 4 // 已撤回
    65  
    66  )
    67  
    68  const (
    69  	EmployeeTypeQueryUserApprovalEmployeeId = "employee_id" // 员工employeeId
    70  	EmployeeTypeQueryUserApprovalEmployeeNo = "employee_no" // 员工工号
    71  )
    72  
    73  const (
    74  	EmployeeTypeBatchCreateUserDailyShiftEmployeeId = "employee_id" // 员工employeeId
    75  	EmployeeTypeBatchCreateUserDailyShiftEmployeeNo = "employee_no" // 员工工号
    76  )
    77  
    78  const (
    79  	EmployeeTypeQueryUserDailyShiftEmployeeId = "employee_id" // 员工employeeId
    80  	EmployeeTypeQueryUserDailyShiftEmployeeNo = "employee_no" // 员工工号
    81  )
    82  
    83  const (
    84  	EmployeeTypeBatchCreateUserFlowEmployeeId = "employee_id" // 员工employeeId
    85  	EmployeeTypeBatchCreateUserFlowEmployeeNo = "employee_no" // 员工工号
    86  )
    87  
    88  const (
    89  	EmployeeTypeGetUserFlowOpenId     = "open_id"     // 开放openID
    90  	EmployeeTypeGetUserFlowEmployeeId = "employee_id" // 员工employeeId
    91  	EmployeeTypeGetUserFlowEmployeeNo = "employee_no" // 员工工号
    92  )
    93  
    94  const (
    95  	EmployeeTypeQueryUserFlowEmployeeId = "employee_id" // 员工employeeId
    96  	EmployeeTypeQueryUserFlowEmployeeNo = "employee_no" // 员工工号
    97  )
    98  
    99  const (
   100  	EmployeeTypeModifyUserSettingEmployeeId = "employee_id" // 员工employeeId
   101  	EmployeeTypeModifyUserSettingEmployeeNo = "employee_no" // 员工工号
   102  )
   103  
   104  const (
   105  	EmployeeTypeQueryUserSettingEmployeeId = "employee_id" // 员工employeeId
   106  	EmployeeTypeQueryUserSettingEmployeeNo = "employee_no" // 员工工号
   107  )
   108  
   109  const (
   110  	LocaleEn = "en" // 英文
   111  	LocaleJa = "ja" // 日文
   112  	LocaleZh = "zh" // 中文
   113  )
   114  
   115  const (
   116  	StatsTypeDaily = "daily" // 日度统计
   117  	StatsTypeMonth = "month" // 月度统计
   118  )
   119  
   120  const (
   121  	EmployeeTypeQueryUserStatsDataEmployeeId = "employee_id" // 员工employeeId
   122  	EmployeeTypeQueryUserStatsDataEmployeeNo = "employee_no" // 员工工号
   123  )
   124  
   125  const (
   126  	LocaleQueryUserStatsFieldEn = "en" // 英文
   127  	LocaleQueryUserStatsFieldJa = "ja" // 日文
   128  	LocaleQueryUserStatsFieldZh = "zh" // 中文
   129  )
   130  
   131  const (
   132  	StatsTypeQueryUserStatsFieldDaily = "daily" // 日度统计
   133  	StatsTypeQueryUserStatsFieldMonth = "month" // 月度统计
   134  )
   135  
   136  const (
   137  	EmployeeTypeQueryUserStatsFieldEmployeeId = "employee_id" // 员工employeeId
   138  	EmployeeTypeQueryUserStatsFieldEmployeeNo = "employee_no" // 员工工号
   139  )
   140  
   141  const (
   142  	LocaleQueryUserStatsViewEn = "en" // 英文
   143  	LocaleQueryUserStatsViewJa = "ja" // 日文
   144  	LocaleQueryUserStatsViewZh = "zh" // 中文
   145  )
   146  
   147  const (
   148  	StatsTypeQueryUserStatsViewDaily = "daily" // 日度统计
   149  	StatsTypeQueryUserStatsViewMonth = "month" // 月度统计
   150  )
   151  
   152  const (
   153  	EmployeeTypeQueryUserStatsViewEmployeeId = "employee_id" // 员工employeeId
   154  	EmployeeTypeQueryUserStatsViewEmployeeNo = "employee_no" // 员工工号
   155  )
   156  
   157  const (
   158  	EmployeeTypeUpdateUserStatsViewEmployeeId = "employee_id" // 员工employeeId
   159  	EmployeeTypeUpdateUserStatsViewEmployeeNo = "employee_no" // 员工工号
   160  )
   161  
   162  const (
   163  	EmployeeTypeQueryUserTaskEmployeeId = "employee_id" // 员工employeeId
   164  	EmployeeTypeQueryUserTaskEmployeeNo = "employee_no" // 员工工号
   165  )
   166  
   167  const (
   168  	EmployeeTypeCreateUserTaskRemedyEmployeeId = "employee_id" // 员工employeeId
   169  	EmployeeTypeCreateUserTaskRemedyEmployeeNo = "employee_no" // 员工工号
   170  )
   171  
   172  const (
   173  	CheckDateTypeQueryUserTaskRemedyPeriodTime = "PeriodTime" // 单据作用时间(即remedy_time)
   174  	CheckDateTypeQueryUserTaskRemedyCreateTime = "CreateTime" // 单据创建时间
   175  )
   176  
   177  const (
   178  	RemedyStatusPending  = 0 // 待审批
   179  	RemedyStatusRejected = 1 // 未通过
   180  	RemedyStatusPass     = 2 // 已通过
   181  	RemedyStatusCancel   = 3 // 已取消
   182  	RemedyStatusWithdraw = 4 // 已撤回
   183  
   184  )
   185  
   186  const (
   187  	EmployeeTypeQueryUserTaskRemedyEmployeeId = "employee_id" // 员工employeeId
   188  	EmployeeTypeQueryUserTaskRemedyEmployeeNo = "employee_no" // 员工工号
   189  )
   190  
   191  const (
   192  	EmployeeTypeQueryUserAllowedRemedysUserTaskRemedyEmployeeId = "employee_id" // 员工employeeId
   193  	EmployeeTypeQueryUserAllowedRemedysUserTaskRemedyEmployeeNo = "employee_no" // 员工工号
   194  )
   195  
   196  type ApprovalInfo struct {
   197  	ApprovalId   *string `json:"approval_id,omitempty"`   // 审批实例 ID
   198  	ApprovalType *string `json:"approval_type,omitempty"` // 审批类型
   199  	Status       *int    `json:"status,omitempty"`        // 审批状态
   200  }
   201  
   202  type ApprovalInfoBuilder struct {
   203  	approvalId       string // 审批实例 ID
   204  	approvalIdFlag   bool
   205  	approvalType     string // 审批类型
   206  	approvalTypeFlag bool
   207  	status           int // 审批状态
   208  	statusFlag       bool
   209  }
   210  
   211  func NewApprovalInfoBuilder() *ApprovalInfoBuilder {
   212  	builder := &ApprovalInfoBuilder{}
   213  	return builder
   214  }
   215  
   216  // 审批实例 ID
   217  //
   218  // 示例值:6737202939523236113
   219  func (builder *ApprovalInfoBuilder) ApprovalId(approvalId string) *ApprovalInfoBuilder {
   220  	builder.approvalId = approvalId
   221  	builder.approvalIdFlag = true
   222  	return builder
   223  }
   224  
   225  // 审批类型
   226  //
   227  // 示例值:remedy
   228  func (builder *ApprovalInfoBuilder) ApprovalType(approvalType string) *ApprovalInfoBuilder {
   229  	builder.approvalType = approvalType
   230  	builder.approvalTypeFlag = true
   231  	return builder
   232  }
   233  
   234  // 审批状态
   235  //
   236  // 示例值:0
   237  func (builder *ApprovalInfoBuilder) Status(status int) *ApprovalInfoBuilder {
   238  	builder.status = status
   239  	builder.statusFlag = true
   240  	return builder
   241  }
   242  
   243  func (builder *ApprovalInfoBuilder) Build() *ApprovalInfo {
   244  	req := &ApprovalInfo{}
   245  	if builder.approvalIdFlag {
   246  		req.ApprovalId = &builder.approvalId
   247  
   248  	}
   249  	if builder.approvalTypeFlag {
   250  		req.ApprovalType = &builder.approvalType
   251  
   252  	}
   253  	if builder.statusFlag {
   254  		req.Status = &builder.status
   255  
   256  	}
   257  	return req
   258  }
   259  
   260  type Area struct {
   261  	Type   *string       `json:"type,omitempty"`   // 区域类型
   262  	Center *Coordinate   `json:"center,omitempty"` // 中心点
   263  	Radius *string       `json:"radius,omitempty"` // 半径
   264  	Coords []*Coordinate `json:"coords,omitempty"` //
   265  }
   266  
   267  type AreaBuilder struct {
   268  	type_      string // 区域类型
   269  	typeFlag   bool
   270  	center     *Coordinate // 中心点
   271  	centerFlag bool
   272  	radius     string // 半径
   273  	radiusFlag bool
   274  	coords     []*Coordinate //
   275  	coordsFlag bool
   276  }
   277  
   278  func NewAreaBuilder() *AreaBuilder {
   279  	builder := &AreaBuilder{}
   280  	return builder
   281  }
   282  
   283  // 区域类型
   284  //
   285  // 示例值:
   286  func (builder *AreaBuilder) Type(type_ string) *AreaBuilder {
   287  	builder.type_ = type_
   288  	builder.typeFlag = true
   289  	return builder
   290  }
   291  
   292  // 中心点
   293  //
   294  // 示例值:
   295  func (builder *AreaBuilder) Center(center *Coordinate) *AreaBuilder {
   296  	builder.center = center
   297  	builder.centerFlag = true
   298  	return builder
   299  }
   300  
   301  // 半径
   302  //
   303  // 示例值:
   304  func (builder *AreaBuilder) Radius(radius string) *AreaBuilder {
   305  	builder.radius = radius
   306  	builder.radiusFlag = true
   307  	return builder
   308  }
   309  
   310  //
   311  //
   312  // 示例值:
   313  func (builder *AreaBuilder) Coords(coords []*Coordinate) *AreaBuilder {
   314  	builder.coords = coords
   315  	builder.coordsFlag = true
   316  	return builder
   317  }
   318  
   319  func (builder *AreaBuilder) Build() *Area {
   320  	req := &Area{}
   321  	if builder.typeFlag {
   322  		req.Type = &builder.type_
   323  
   324  	}
   325  	if builder.centerFlag {
   326  		req.Center = builder.center
   327  	}
   328  	if builder.radiusFlag {
   329  		req.Radius = &builder.radius
   330  
   331  	}
   332  	if builder.coordsFlag {
   333  		req.Coords = builder.coords
   334  	}
   335  	return req
   336  }
   337  
   338  type ChildField struct {
   339  	Code     *string `json:"code,omitempty"`      // 子字段编号
   340  	Title    *string `json:"title,omitempty"`     // 子字段名称
   341  	TimeUnit *string `json:"time_unit,omitempty"` // 时间单位
   342  }
   343  
   344  type ChildFieldBuilder struct {
   345  	code         string // 子字段编号
   346  	codeFlag     bool
   347  	title        string // 子字段名称
   348  	titleFlag    bool
   349  	timeUnit     string // 时间单位
   350  	timeUnitFlag bool
   351  }
   352  
   353  func NewChildFieldBuilder() *ChildFieldBuilder {
   354  	builder := &ChildFieldBuilder{}
   355  	return builder
   356  }
   357  
   358  // 子字段编号
   359  //
   360  // 示例值:50121
   361  func (builder *ChildFieldBuilder) Code(code string) *ChildFieldBuilder {
   362  	builder.code = code
   363  	builder.codeFlag = true
   364  	return builder
   365  }
   366  
   367  // 子字段名称
   368  //
   369  // 示例值:工号
   370  func (builder *ChildFieldBuilder) Title(title string) *ChildFieldBuilder {
   371  	builder.title = title
   372  	builder.titleFlag = true
   373  	return builder
   374  }
   375  
   376  // 时间单位
   377  //
   378  // 示例值:
   379  func (builder *ChildFieldBuilder) TimeUnit(timeUnit string) *ChildFieldBuilder {
   380  	builder.timeUnit = timeUnit
   381  	builder.timeUnitFlag = true
   382  	return builder
   383  }
   384  
   385  func (builder *ChildFieldBuilder) Build() *ChildField {
   386  	req := &ChildField{}
   387  	if builder.codeFlag {
   388  		req.Code = &builder.code
   389  
   390  	}
   391  	if builder.titleFlag {
   392  		req.Title = &builder.title
   393  
   394  	}
   395  	if builder.timeUnitFlag {
   396  		req.TimeUnit = &builder.timeUnit
   397  
   398  	}
   399  	return req
   400  }
   401  
   402  type ChildItem struct {
   403  	Code       *string `json:"code,omitempty"`        // 子标题编号
   404  	Value      *string `json:"value,omitempty"`       // 开关字段,0:关闭,1:开启(非开关字段场景:code = 51501 可选值为1-6)
   405  	Title      *string `json:"title,omitempty"`       // 子标题名称
   406  	ColumnType *int    `json:"column_type,omitempty"` // 列类型
   407  	ReadOnly   *bool   `json:"read_only,omitempty"`   // 是否只读
   408  	MinValue   *string `json:"min_value,omitempty"`   // 最小值
   409  	MaxValue   *string `json:"max_value,omitempty"`   // 最大值
   410  }
   411  
   412  type ChildItemBuilder struct {
   413  	code           string // 子标题编号
   414  	codeFlag       bool
   415  	value          string // 开关字段,0:关闭,1:开启(非开关字段场景:code = 51501 可选值为1-6)
   416  	valueFlag      bool
   417  	title          string // 子标题名称
   418  	titleFlag      bool
   419  	columnType     int // 列类型
   420  	columnTypeFlag bool
   421  	readOnly       bool // 是否只读
   422  	readOnlyFlag   bool
   423  	minValue       string // 最小值
   424  	minValueFlag   bool
   425  	maxValue       string // 最大值
   426  	maxValueFlag   bool
   427  }
   428  
   429  func NewChildItemBuilder() *ChildItemBuilder {
   430  	builder := &ChildItemBuilder{}
   431  	return builder
   432  }
   433  
   434  // 子标题编号
   435  //
   436  // 示例值:50101
   437  func (builder *ChildItemBuilder) Code(code string) *ChildItemBuilder {
   438  	builder.code = code
   439  	builder.codeFlag = true
   440  	return builder
   441  }
   442  
   443  // 开关字段,0:关闭,1:开启(非开关字段场景:code = 51501 可选值为1-6)
   444  //
   445  // 示例值:0
   446  func (builder *ChildItemBuilder) Value(value string) *ChildItemBuilder {
   447  	builder.value = value
   448  	builder.valueFlag = true
   449  	return builder
   450  }
   451  
   452  // 子标题名称
   453  //
   454  // 示例值:工号
   455  func (builder *ChildItemBuilder) Title(title string) *ChildItemBuilder {
   456  	builder.title = title
   457  	builder.titleFlag = true
   458  	return builder
   459  }
   460  
   461  // 列类型
   462  //
   463  // 示例值:
   464  func (builder *ChildItemBuilder) ColumnType(columnType int) *ChildItemBuilder {
   465  	builder.columnType = columnType
   466  	builder.columnTypeFlag = true
   467  	return builder
   468  }
   469  
   470  // 是否只读
   471  //
   472  // 示例值:
   473  func (builder *ChildItemBuilder) ReadOnly(readOnly bool) *ChildItemBuilder {
   474  	builder.readOnly = readOnly
   475  	builder.readOnlyFlag = true
   476  	return builder
   477  }
   478  
   479  // 最小值
   480  //
   481  // 示例值:
   482  func (builder *ChildItemBuilder) MinValue(minValue string) *ChildItemBuilder {
   483  	builder.minValue = minValue
   484  	builder.minValueFlag = true
   485  	return builder
   486  }
   487  
   488  // 最大值
   489  //
   490  // 示例值:
   491  func (builder *ChildItemBuilder) MaxValue(maxValue string) *ChildItemBuilder {
   492  	builder.maxValue = maxValue
   493  	builder.maxValueFlag = true
   494  	return builder
   495  }
   496  
   497  func (builder *ChildItemBuilder) Build() *ChildItem {
   498  	req := &ChildItem{}
   499  	if builder.codeFlag {
   500  		req.Code = &builder.code
   501  
   502  	}
   503  	if builder.valueFlag {
   504  		req.Value = &builder.value
   505  
   506  	}
   507  	if builder.titleFlag {
   508  		req.Title = &builder.title
   509  
   510  	}
   511  	if builder.columnTypeFlag {
   512  		req.ColumnType = &builder.columnType
   513  
   514  	}
   515  	if builder.readOnlyFlag {
   516  		req.ReadOnly = &builder.readOnly
   517  
   518  	}
   519  	if builder.minValueFlag {
   520  		req.MinValue = &builder.minValue
   521  
   522  	}
   523  	if builder.maxValueFlag {
   524  		req.MaxValue = &builder.maxValue
   525  
   526  	}
   527  	return req
   528  }
   529  
   530  type Coordinate struct {
   531  	Longitude *float64 `json:"longitude,omitempty"` // 经度
   532  	Latitude  *float64 `json:"latitude,omitempty"`  // 纬度
   533  	Accuracy  *float64 `json:"accuracy,omitempty"`  // 精度
   534  }
   535  
   536  type CoordinateBuilder struct {
   537  	longitude     float64 // 经度
   538  	longitudeFlag bool
   539  	latitude      float64 // 纬度
   540  	latitudeFlag  bool
   541  	accuracy      float64 // 精度
   542  	accuracyFlag  bool
   543  }
   544  
   545  func NewCoordinateBuilder() *CoordinateBuilder {
   546  	builder := &CoordinateBuilder{}
   547  	return builder
   548  }
   549  
   550  // 经度
   551  //
   552  // 示例值:
   553  func (builder *CoordinateBuilder) Longitude(longitude float64) *CoordinateBuilder {
   554  	builder.longitude = longitude
   555  	builder.longitudeFlag = true
   556  	return builder
   557  }
   558  
   559  // 纬度
   560  //
   561  // 示例值:
   562  func (builder *CoordinateBuilder) Latitude(latitude float64) *CoordinateBuilder {
   563  	builder.latitude = latitude
   564  	builder.latitudeFlag = true
   565  	return builder
   566  }
   567  
   568  // 精度
   569  //
   570  // 示例值:
   571  func (builder *CoordinateBuilder) Accuracy(accuracy float64) *CoordinateBuilder {
   572  	builder.accuracy = accuracy
   573  	builder.accuracyFlag = true
   574  	return builder
   575  }
   576  
   577  func (builder *CoordinateBuilder) Build() *Coordinate {
   578  	req := &Coordinate{}
   579  	if builder.longitudeFlag {
   580  		req.Longitude = &builder.longitude
   581  
   582  	}
   583  	if builder.latitudeFlag {
   584  		req.Latitude = &builder.latitude
   585  
   586  	}
   587  	if builder.accuracyFlag {
   588  		req.Accuracy = &builder.accuracy
   589  
   590  	}
   591  	return req
   592  }
   593  
   594  type Field struct {
   595  	Code        *string       `json:"code,omitempty"`         // 字段编号
   596  	Title       *string       `json:"title,omitempty"`        // 字段名称
   597  	ChildFields []*ChildField `json:"child_fields,omitempty"` // 子字段列表
   598  }
   599  
   600  type FieldBuilder struct {
   601  	code            string // 字段编号
   602  	codeFlag        bool
   603  	title           string // 字段名称
   604  	titleFlag       bool
   605  	childFields     []*ChildField // 子字段列表
   606  	childFieldsFlag bool
   607  }
   608  
   609  func NewFieldBuilder() *FieldBuilder {
   610  	builder := &FieldBuilder{}
   611  	return builder
   612  }
   613  
   614  // 字段编号
   615  //
   616  // 示例值:50121
   617  func (builder *FieldBuilder) Code(code string) *FieldBuilder {
   618  	builder.code = code
   619  	builder.codeFlag = true
   620  	return builder
   621  }
   622  
   623  // 字段名称
   624  //
   625  // 示例值:工号
   626  func (builder *FieldBuilder) Title(title string) *FieldBuilder {
   627  	builder.title = title
   628  	builder.titleFlag = true
   629  	return builder
   630  }
   631  
   632  // 子字段列表
   633  //
   634  // 示例值:
   635  func (builder *FieldBuilder) ChildFields(childFields []*ChildField) *FieldBuilder {
   636  	builder.childFields = childFields
   637  	builder.childFieldsFlag = true
   638  	return builder
   639  }
   640  
   641  func (builder *FieldBuilder) Build() *Field {
   642  	req := &Field{}
   643  	if builder.codeFlag {
   644  		req.Code = &builder.code
   645  
   646  	}
   647  	if builder.titleFlag {
   648  		req.Title = &builder.title
   649  
   650  	}
   651  	if builder.childFieldsFlag {
   652  		req.ChildFields = builder.childFields
   653  	}
   654  	return req
   655  }
   656  
   657  type File struct {
   658  	FileId *string `json:"file_id,omitempty"` // 文件 ID
   659  }
   660  
   661  type FileBuilder struct {
   662  	fileId     string // 文件 ID
   663  	fileIdFlag bool
   664  }
   665  
   666  func NewFileBuilder() *FileBuilder {
   667  	builder := &FileBuilder{}
   668  	return builder
   669  }
   670  
   671  // 文件 ID
   672  //
   673  // 示例值:6b30e7636a38861bbe02869c726a4612
   674  func (builder *FileBuilder) FileId(fileId string) *FileBuilder {
   675  	builder.fileId = fileId
   676  	builder.fileIdFlag = true
   677  	return builder
   678  }
   679  
   680  func (builder *FileBuilder) Build() *File {
   681  	req := &File{}
   682  	if builder.fileIdFlag {
   683  		req.FileId = &builder.fileId
   684  
   685  	}
   686  	return req
   687  }
   688  
   689  type FlexibleRule struct {
   690  	FlexibleEarlyMinutes *int `json:"flexible_early_minutes,omitempty"` // 下班最多可早走(上班早到几分钟,下班可早走几分钟)
   691  	FlexibleLateMinutes  *int `json:"flexible_late_minutes,omitempty"`  // 上班最多可晚到(上班晚到几分钟,下班须晚走几分钟)
   692  }
   693  
   694  type FlexibleRuleBuilder struct {
   695  	flexibleEarlyMinutes     int // 下班最多可早走(上班早到几分钟,下班可早走几分钟)
   696  	flexibleEarlyMinutesFlag bool
   697  	flexibleLateMinutes      int // 上班最多可晚到(上班晚到几分钟,下班须晚走几分钟)
   698  	flexibleLateMinutesFlag  bool
   699  }
   700  
   701  func NewFlexibleRuleBuilder() *FlexibleRuleBuilder {
   702  	builder := &FlexibleRuleBuilder{}
   703  	return builder
   704  }
   705  
   706  // 下班最多可早走(上班早到几分钟,下班可早走几分钟)
   707  //
   708  // 示例值:60
   709  func (builder *FlexibleRuleBuilder) FlexibleEarlyMinutes(flexibleEarlyMinutes int) *FlexibleRuleBuilder {
   710  	builder.flexibleEarlyMinutes = flexibleEarlyMinutes
   711  	builder.flexibleEarlyMinutesFlag = true
   712  	return builder
   713  }
   714  
   715  // 上班最多可晚到(上班晚到几分钟,下班须晚走几分钟)
   716  //
   717  // 示例值:60
   718  func (builder *FlexibleRuleBuilder) FlexibleLateMinutes(flexibleLateMinutes int) *FlexibleRuleBuilder {
   719  	builder.flexibleLateMinutes = flexibleLateMinutes
   720  	builder.flexibleLateMinutesFlag = true
   721  	return builder
   722  }
   723  
   724  func (builder *FlexibleRuleBuilder) Build() *FlexibleRule {
   725  	req := &FlexibleRule{}
   726  	if builder.flexibleEarlyMinutesFlag {
   727  		req.FlexibleEarlyMinutes = &builder.flexibleEarlyMinutes
   728  
   729  	}
   730  	if builder.flexibleLateMinutesFlag {
   731  		req.FlexibleLateMinutes = &builder.flexibleLateMinutes
   732  
   733  	}
   734  	return req
   735  }
   736  
   737  type FreePunchCfg struct {
   738  	FreeStartTime        *string `json:"free_start_time,omitempty"`           // 自由班制打卡开始时间
   739  	FreeEndTime          *string `json:"free_end_time,omitempty"`             // 自由班制打卡结束时间
   740  	PunchDay             *int    `json:"punch_day,omitempty"`                 // 打卡的时间,为 7 位数字,每一位依次代表周一到周日,0 为不上班,1 为上班
   741  	WorkDayNoPunchAsLack *bool   `json:"work_day_no_punch_as_lack,omitempty"` // 工作日不打卡是否记为缺卡
   742  }
   743  
   744  type FreePunchCfgBuilder struct {
   745  	freeStartTime            string // 自由班制打卡开始时间
   746  	freeStartTimeFlag        bool
   747  	freeEndTime              string // 自由班制打卡结束时间
   748  	freeEndTimeFlag          bool
   749  	punchDay                 int // 打卡的时间,为 7 位数字,每一位依次代表周一到周日,0 为不上班,1 为上班
   750  	punchDayFlag             bool
   751  	workDayNoPunchAsLack     bool // 工作日不打卡是否记为缺卡
   752  	workDayNoPunchAsLackFlag bool
   753  }
   754  
   755  func NewFreePunchCfgBuilder() *FreePunchCfgBuilder {
   756  	builder := &FreePunchCfgBuilder{}
   757  	return builder
   758  }
   759  
   760  // 自由班制打卡开始时间
   761  //
   762  // 示例值:7:00
   763  func (builder *FreePunchCfgBuilder) FreeStartTime(freeStartTime string) *FreePunchCfgBuilder {
   764  	builder.freeStartTime = freeStartTime
   765  	builder.freeStartTimeFlag = true
   766  	return builder
   767  }
   768  
   769  // 自由班制打卡结束时间
   770  //
   771  // 示例值:18:00
   772  func (builder *FreePunchCfgBuilder) FreeEndTime(freeEndTime string) *FreePunchCfgBuilder {
   773  	builder.freeEndTime = freeEndTime
   774  	builder.freeEndTimeFlag = true
   775  	return builder
   776  }
   777  
   778  // 打卡的时间,为 7 位数字,每一位依次代表周一到周日,0 为不上班,1 为上班
   779  //
   780  // 示例值:1111100
   781  func (builder *FreePunchCfgBuilder) PunchDay(punchDay int) *FreePunchCfgBuilder {
   782  	builder.punchDay = punchDay
   783  	builder.punchDayFlag = true
   784  	return builder
   785  }
   786  
   787  // 工作日不打卡是否记为缺卡
   788  //
   789  // 示例值:true
   790  func (builder *FreePunchCfgBuilder) WorkDayNoPunchAsLack(workDayNoPunchAsLack bool) *FreePunchCfgBuilder {
   791  	builder.workDayNoPunchAsLack = workDayNoPunchAsLack
   792  	builder.workDayNoPunchAsLackFlag = true
   793  	return builder
   794  }
   795  
   796  func (builder *FreePunchCfgBuilder) Build() *FreePunchCfg {
   797  	req := &FreePunchCfg{}
   798  	if builder.freeStartTimeFlag {
   799  		req.FreeStartTime = &builder.freeStartTime
   800  
   801  	}
   802  	if builder.freeEndTimeFlag {
   803  		req.FreeEndTime = &builder.freeEndTime
   804  
   805  	}
   806  	if builder.punchDayFlag {
   807  		req.PunchDay = &builder.punchDay
   808  
   809  	}
   810  	if builder.workDayNoPunchAsLackFlag {
   811  		req.WorkDayNoPunchAsLack = &builder.workDayNoPunchAsLack
   812  
   813  	}
   814  	return req
   815  }
   816  
   817  type Group struct {
   818  	GroupId                 *string                  `json:"group_id,omitempty"`                    // 考勤组 ID(仅修改时提供), 需要从“获取打卡结果”的接口中获取 groupId
   819  	GroupName               *string                  `json:"group_name,omitempty"`                  // 考勤组名称
   820  	TimeZone                *string                  `json:"time_zone,omitempty"`                   // 时区
   821  	BindDeptIds             []string                 `json:"bind_dept_ids,omitempty"`               // 绑定的部门 ID
   822  	ExceptDeptIds           []string                 `json:"except_dept_ids,omitempty"`             // 排除的部门 ID
   823  	BindUserIds             []string                 `json:"bind_user_ids,omitempty"`               // 绑定的用户 ID
   824  	ExceptUserIds           []string                 `json:"except_user_ids,omitempty"`             // 排除的用户 ID
   825  	GroupLeaderIds          []string                 `json:"group_leader_ids,omitempty"`            // 考勤主负责人 ID 列表,必选字段
   826  	SubGroupLeaderIds       []string                 `json:"sub_group_leader_ids,omitempty"`        // 考勤子负责人 ID 列表
   827  	AllowOutPunch           *bool                    `json:"allow_out_punch,omitempty"`             // 是否允许外勤打卡
   828  	OutPunchNeedApproval    *bool                    `json:"out_punch_need_approval,omitempty"`     // 外勤打卡需审批(需要允许外勤打卡才能设置生效)
   829  	OutPunchNeedRemark      *bool                    `json:"out_punch_need_remark,omitempty"`       // 外勤打卡需填写备注(需要允许外勤打卡才能设置生效)
   830  	OutPunchNeedPhoto       *bool                    `json:"out_punch_need_photo,omitempty"`        // 外勤打卡需拍照(需要允许外勤打卡才能设置生效)
   831  	OutPunchAllowedHideAddr *bool                    `json:"out_punch_allowed_hide_addr,omitempty"` // 外勤打卡允许员工隐藏详细地址(需要允许外勤打卡才能设置生效)
   832  	AllowPcPunch            *bool                    `json:"allow_pc_punch,omitempty"`              // 是否允许 PC 端打卡
   833  	AllowRemedy             *bool                    `json:"allow_remedy,omitempty"`                // 是否限制补卡
   834  	RemedyLimit             *bool                    `json:"remedy_limit,omitempty"`                // 是否限制补卡次数
   835  	RemedyLimitCount        *int                     `json:"remedy_limit_count,omitempty"`          // 补卡次数
   836  	RemedyDateLimit         *bool                    `json:"remedy_date_limit,omitempty"`           // 是否限制补卡时间
   837  	RemedyDateNum           *int                     `json:"remedy_date_num,omitempty"`             // 补卡时间,几天内补卡
   838  	AllowRemedyTypeLack     *bool                    `json:"allow_remedy_type_lack,omitempty"`      // 允许缺卡补卡(需要允许补卡才能设置生效)
   839  	AllowRemedyTypeLate     *bool                    `json:"allow_remedy_type_late,omitempty"`      // 允许迟到补卡(需要允许补卡才能设置生效)
   840  	AllowRemedyTypeEarly    *bool                    `json:"allow_remedy_type_early,omitempty"`     // 允许早退补卡(需要允许补卡才能设置生效)
   841  	AllowRemedyTypeNormal   *bool                    `json:"allow_remedy_type_normal,omitempty"`    // 允许正常补卡(需要允许补卡才能设置生效)
   842  	ShowCumulativeTime      *bool                    `json:"show_cumulative_time,omitempty"`        // 是否展示累计时长
   843  	ShowOverTime            *bool                    `json:"show_over_time,omitempty"`              // 是否展示加班时长
   844  	HideStaffPunchTime      *bool                    `json:"hide_staff_punch_time,omitempty"`       // 是否隐藏员工打卡详情
   845  	FacePunch               *bool                    `json:"face_punch,omitempty"`                  // 是否开启人脸识别打卡
   846  	FacePunchCfg            *int                     `json:"face_punch_cfg,omitempty"`              // 人脸识别打卡规则,1:每次打卡均需人脸识别,2:疑似作弊打卡时需要人脸识别
   847  	FaceDowngrade           *bool                    `json:"face_downgrade,omitempty"`              // 人脸识别失败时是否允许普通拍照打卡
   848  	ReplaceBasicPic         *bool                    `json:"replace_basic_pic,omitempty"`           // 人脸识别失败时是否允许替换基准图片
   849  	Machines                []*Machine               `json:"machines,omitempty"`                    // 考勤机列表
   850  	GpsRange                *int                     `json:"gps_range,omitempty"`                   // GPS 打卡的有效范围(不建议使用)
   851  	Locations               []*Location              `json:"locations,omitempty"`                   // 地址列表
   852  	GroupType               *int                     `json:"group_type,omitempty"`                  // 考勤类型,0:固定班制,2:排班制, 3:自由班制
   853  	PunchDayShiftIds        []string                 `json:"punch_day_shift_ids,omitempty"`         // 固定班制必须填
   854  	FreePunchCfg            *FreePunchCfg            `json:"free_punch_cfg,omitempty"`              // 配置自由班制
   855  	CalendarId              *int                     `json:"calendar_id,omitempty"`                 // 国家日历  ID,0:不根据国家日历排休,1:中国大陆,2:美国,3:日本,4:印度,5:新加坡,默认 1
   856  	NeedPunchSpecialDays    []*PunchSpecialDateShift `json:"need_punch_special_days,omitempty"`     // 必须打卡的特殊日期
   857  	NoNeedPunchSpecialDays  []*PunchSpecialDateShift `json:"no_need_punch_special_days,omitempty"`  // 无需打卡的特殊日期
   858  	WorkDayNoPunchAsLack    *bool                    `json:"work_day_no_punch_as_lack,omitempty"`   // 自由班制下工作日不打卡是否记为缺卡
   859  	EffectNow               *bool                    `json:"effect_now,omitempty"`                  // 是否立即生效,默认 false
   860  	RemedyPeriodType        *int                     `json:"remedy_period_type,omitempty"`          // 补卡周期类型
   861  	RemedyPeriodCustomDate  *int                     `json:"remedy_period_custom_date,omitempty"`   // 补卡自定义周期起始日期
   862  	PunchType               *int                     `json:"punch_type,omitempty"`                  // 打卡类型,位运算。1:GPS 打卡,2:Wi-Fi 打卡,4:考勤机打卡,8:IP 打卡
   863  	EffectTime              *string                  `json:"effect_time,omitempty"`                 // 生效时间,精确到秒的时间戳
   864  	RestClockInNeedApproval *bool                    `json:"rest_clockIn_need_approval,omitempty"`  // 休息日打卡需审批
   865  	ClockInNeedPhoto        *bool                    `json:"clockIn_need_photo,omitempty"`          // 每次打卡均需拍照
   866  }
   867  
   868  type GroupBuilder struct {
   869  	groupId                     string // 考勤组 ID(仅修改时提供), 需要从“获取打卡结果”的接口中获取 groupId
   870  	groupIdFlag                 bool
   871  	groupName                   string // 考勤组名称
   872  	groupNameFlag               bool
   873  	timeZone                    string // 时区
   874  	timeZoneFlag                bool
   875  	bindDeptIds                 []string // 绑定的部门 ID
   876  	bindDeptIdsFlag             bool
   877  	exceptDeptIds               []string // 排除的部门 ID
   878  	exceptDeptIdsFlag           bool
   879  	bindUserIds                 []string // 绑定的用户 ID
   880  	bindUserIdsFlag             bool
   881  	exceptUserIds               []string // 排除的用户 ID
   882  	exceptUserIdsFlag           bool
   883  	groupLeaderIds              []string // 考勤主负责人 ID 列表,必选字段
   884  	groupLeaderIdsFlag          bool
   885  	subGroupLeaderIds           []string // 考勤子负责人 ID 列表
   886  	subGroupLeaderIdsFlag       bool
   887  	allowOutPunch               bool // 是否允许外勤打卡
   888  	allowOutPunchFlag           bool
   889  	outPunchNeedApproval        bool // 外勤打卡需审批(需要允许外勤打卡才能设置生效)
   890  	outPunchNeedApprovalFlag    bool
   891  	outPunchNeedRemark          bool // 外勤打卡需填写备注(需要允许外勤打卡才能设置生效)
   892  	outPunchNeedRemarkFlag      bool
   893  	outPunchNeedPhoto           bool // 外勤打卡需拍照(需要允许外勤打卡才能设置生效)
   894  	outPunchNeedPhotoFlag       bool
   895  	outPunchAllowedHideAddr     bool // 外勤打卡允许员工隐藏详细地址(需要允许外勤打卡才能设置生效)
   896  	outPunchAllowedHideAddrFlag bool
   897  	allowPcPunch                bool // 是否允许 PC 端打卡
   898  	allowPcPunchFlag            bool
   899  	allowRemedy                 bool // 是否限制补卡
   900  	allowRemedyFlag             bool
   901  	remedyLimit                 bool // 是否限制补卡次数
   902  	remedyLimitFlag             bool
   903  	remedyLimitCount            int // 补卡次数
   904  	remedyLimitCountFlag        bool
   905  	remedyDateLimit             bool // 是否限制补卡时间
   906  	remedyDateLimitFlag         bool
   907  	remedyDateNum               int // 补卡时间,几天内补卡
   908  	remedyDateNumFlag           bool
   909  	allowRemedyTypeLack         bool // 允许缺卡补卡(需要允许补卡才能设置生效)
   910  	allowRemedyTypeLackFlag     bool
   911  	allowRemedyTypeLate         bool // 允许迟到补卡(需要允许补卡才能设置生效)
   912  	allowRemedyTypeLateFlag     bool
   913  	allowRemedyTypeEarly        bool // 允许早退补卡(需要允许补卡才能设置生效)
   914  	allowRemedyTypeEarlyFlag    bool
   915  	allowRemedyTypeNormal       bool // 允许正常补卡(需要允许补卡才能设置生效)
   916  	allowRemedyTypeNormalFlag   bool
   917  	showCumulativeTime          bool // 是否展示累计时长
   918  	showCumulativeTimeFlag      bool
   919  	showOverTime                bool // 是否展示加班时长
   920  	showOverTimeFlag            bool
   921  	hideStaffPunchTime          bool // 是否隐藏员工打卡详情
   922  	hideStaffPunchTimeFlag      bool
   923  	facePunch                   bool // 是否开启人脸识别打卡
   924  	facePunchFlag               bool
   925  	facePunchCfg                int // 人脸识别打卡规则,1:每次打卡均需人脸识别,2:疑似作弊打卡时需要人脸识别
   926  	facePunchCfgFlag            bool
   927  	faceDowngrade               bool // 人脸识别失败时是否允许普通拍照打卡
   928  	faceDowngradeFlag           bool
   929  	replaceBasicPic             bool // 人脸识别失败时是否允许替换基准图片
   930  	replaceBasicPicFlag         bool
   931  	machines                    []*Machine // 考勤机列表
   932  	machinesFlag                bool
   933  	gpsRange                    int // GPS 打卡的有效范围(不建议使用)
   934  	gpsRangeFlag                bool
   935  	locations                   []*Location // 地址列表
   936  	locationsFlag               bool
   937  	groupType                   int // 考勤类型,0:固定班制,2:排班制, 3:自由班制
   938  	groupTypeFlag               bool
   939  	punchDayShiftIds            []string // 固定班制必须填
   940  	punchDayShiftIdsFlag        bool
   941  	freePunchCfg                *FreePunchCfg // 配置自由班制
   942  	freePunchCfgFlag            bool
   943  	calendarId                  int // 国家日历  ID,0:不根据国家日历排休,1:中国大陆,2:美国,3:日本,4:印度,5:新加坡,默认 1
   944  	calendarIdFlag              bool
   945  	needPunchSpecialDays        []*PunchSpecialDateShift // 必须打卡的特殊日期
   946  	needPunchSpecialDaysFlag    bool
   947  	noNeedPunchSpecialDays      []*PunchSpecialDateShift // 无需打卡的特殊日期
   948  	noNeedPunchSpecialDaysFlag  bool
   949  	workDayNoPunchAsLack        bool // 自由班制下工作日不打卡是否记为缺卡
   950  	workDayNoPunchAsLackFlag    bool
   951  	effectNow                   bool // 是否立即生效,默认 false
   952  	effectNowFlag               bool
   953  	remedyPeriodType            int // 补卡周期类型
   954  	remedyPeriodTypeFlag        bool
   955  	remedyPeriodCustomDate      int // 补卡自定义周期起始日期
   956  	remedyPeriodCustomDateFlag  bool
   957  	punchType                   int // 打卡类型,位运算。1:GPS 打卡,2:Wi-Fi 打卡,4:考勤机打卡,8:IP 打卡
   958  	punchTypeFlag               bool
   959  	effectTime                  string // 生效时间,精确到秒的时间戳
   960  	effectTimeFlag              bool
   961  	restClockInNeedApproval     bool // 休息日打卡需审批
   962  	restClockInNeedApprovalFlag bool
   963  	clockInNeedPhoto            bool // 每次打卡均需拍照
   964  	clockInNeedPhotoFlag        bool
   965  }
   966  
   967  func NewGroupBuilder() *GroupBuilder {
   968  	builder := &GroupBuilder{}
   969  	return builder
   970  }
   971  
   972  // 考勤组 ID(仅修改时提供), 需要从“获取打卡结果”的接口中获取 groupId
   973  //
   974  // 示例值:6919358128597097404
   975  func (builder *GroupBuilder) GroupId(groupId string) *GroupBuilder {
   976  	builder.groupId = groupId
   977  	builder.groupIdFlag = true
   978  	return builder
   979  }
   980  
   981  // 考勤组名称
   982  //
   983  // 示例值:开心考勤
   984  func (builder *GroupBuilder) GroupName(groupName string) *GroupBuilder {
   985  	builder.groupName = groupName
   986  	builder.groupNameFlag = true
   987  	return builder
   988  }
   989  
   990  // 时区
   991  //
   992  // 示例值:Asia/Shanghai
   993  func (builder *GroupBuilder) TimeZone(timeZone string) *GroupBuilder {
   994  	builder.timeZone = timeZone
   995  	builder.timeZoneFlag = true
   996  	return builder
   997  }
   998  
   999  // 绑定的部门 ID
  1000  //
  1001  // 示例值:od-fcb45c28a45311afd440b7869541fce8
  1002  func (builder *GroupBuilder) BindDeptIds(bindDeptIds []string) *GroupBuilder {
  1003  	builder.bindDeptIds = bindDeptIds
  1004  	builder.bindDeptIdsFlag = true
  1005  	return builder
  1006  }
  1007  
  1008  // 排除的部门 ID
  1009  //
  1010  // 示例值:od-fcb45c28a45311afd440b7869541fce8
  1011  func (builder *GroupBuilder) ExceptDeptIds(exceptDeptIds []string) *GroupBuilder {
  1012  	builder.exceptDeptIds = exceptDeptIds
  1013  	builder.exceptDeptIdsFlag = true
  1014  	return builder
  1015  }
  1016  
  1017  // 绑定的用户 ID
  1018  //
  1019  // 示例值:52aa1fa1
  1020  func (builder *GroupBuilder) BindUserIds(bindUserIds []string) *GroupBuilder {
  1021  	builder.bindUserIds = bindUserIds
  1022  	builder.bindUserIdsFlag = true
  1023  	return builder
  1024  }
  1025  
  1026  // 排除的用户 ID
  1027  //
  1028  // 示例值:52aa1fa1
  1029  func (builder *GroupBuilder) ExceptUserIds(exceptUserIds []string) *GroupBuilder {
  1030  	builder.exceptUserIds = exceptUserIds
  1031  	builder.exceptUserIdsFlag = true
  1032  	return builder
  1033  }
  1034  
  1035  // 考勤主负责人 ID 列表,必选字段
  1036  //
  1037  // 示例值:2bg4a9be
  1038  func (builder *GroupBuilder) GroupLeaderIds(groupLeaderIds []string) *GroupBuilder {
  1039  	builder.groupLeaderIds = groupLeaderIds
  1040  	builder.groupLeaderIdsFlag = true
  1041  	return builder
  1042  }
  1043  
  1044  // 考勤子负责人 ID 列表
  1045  //
  1046  // 示例值:52aa1fa1
  1047  func (builder *GroupBuilder) SubGroupLeaderIds(subGroupLeaderIds []string) *GroupBuilder {
  1048  	builder.subGroupLeaderIds = subGroupLeaderIds
  1049  	builder.subGroupLeaderIdsFlag = true
  1050  	return builder
  1051  }
  1052  
  1053  // 是否允许外勤打卡
  1054  //
  1055  // 示例值:true
  1056  func (builder *GroupBuilder) AllowOutPunch(allowOutPunch bool) *GroupBuilder {
  1057  	builder.allowOutPunch = allowOutPunch
  1058  	builder.allowOutPunchFlag = true
  1059  	return builder
  1060  }
  1061  
  1062  // 外勤打卡需审批(需要允许外勤打卡才能设置生效)
  1063  //
  1064  // 示例值:true
  1065  func (builder *GroupBuilder) OutPunchNeedApproval(outPunchNeedApproval bool) *GroupBuilder {
  1066  	builder.outPunchNeedApproval = outPunchNeedApproval
  1067  	builder.outPunchNeedApprovalFlag = true
  1068  	return builder
  1069  }
  1070  
  1071  // 外勤打卡需填写备注(需要允许外勤打卡才能设置生效)
  1072  //
  1073  // 示例值:true
  1074  func (builder *GroupBuilder) OutPunchNeedRemark(outPunchNeedRemark bool) *GroupBuilder {
  1075  	builder.outPunchNeedRemark = outPunchNeedRemark
  1076  	builder.outPunchNeedRemarkFlag = true
  1077  	return builder
  1078  }
  1079  
  1080  // 外勤打卡需拍照(需要允许外勤打卡才能设置生效)
  1081  //
  1082  // 示例值:true
  1083  func (builder *GroupBuilder) OutPunchNeedPhoto(outPunchNeedPhoto bool) *GroupBuilder {
  1084  	builder.outPunchNeedPhoto = outPunchNeedPhoto
  1085  	builder.outPunchNeedPhotoFlag = true
  1086  	return builder
  1087  }
  1088  
  1089  // 外勤打卡允许员工隐藏详细地址(需要允许外勤打卡才能设置生效)
  1090  //
  1091  // 示例值:true
  1092  func (builder *GroupBuilder) OutPunchAllowedHideAddr(outPunchAllowedHideAddr bool) *GroupBuilder {
  1093  	builder.outPunchAllowedHideAddr = outPunchAllowedHideAddr
  1094  	builder.outPunchAllowedHideAddrFlag = true
  1095  	return builder
  1096  }
  1097  
  1098  // 是否允许 PC 端打卡
  1099  //
  1100  // 示例值:true
  1101  func (builder *GroupBuilder) AllowPcPunch(allowPcPunch bool) *GroupBuilder {
  1102  	builder.allowPcPunch = allowPcPunch
  1103  	builder.allowPcPunchFlag = true
  1104  	return builder
  1105  }
  1106  
  1107  // 是否限制补卡
  1108  //
  1109  // 示例值:true
  1110  func (builder *GroupBuilder) AllowRemedy(allowRemedy bool) *GroupBuilder {
  1111  	builder.allowRemedy = allowRemedy
  1112  	builder.allowRemedyFlag = true
  1113  	return builder
  1114  }
  1115  
  1116  // 是否限制补卡次数
  1117  //
  1118  // 示例值:true
  1119  func (builder *GroupBuilder) RemedyLimit(remedyLimit bool) *GroupBuilder {
  1120  	builder.remedyLimit = remedyLimit
  1121  	builder.remedyLimitFlag = true
  1122  	return builder
  1123  }
  1124  
  1125  // 补卡次数
  1126  //
  1127  // 示例值:3
  1128  func (builder *GroupBuilder) RemedyLimitCount(remedyLimitCount int) *GroupBuilder {
  1129  	builder.remedyLimitCount = remedyLimitCount
  1130  	builder.remedyLimitCountFlag = true
  1131  	return builder
  1132  }
  1133  
  1134  // 是否限制补卡时间
  1135  //
  1136  // 示例值:true
  1137  func (builder *GroupBuilder) RemedyDateLimit(remedyDateLimit bool) *GroupBuilder {
  1138  	builder.remedyDateLimit = remedyDateLimit
  1139  	builder.remedyDateLimitFlag = true
  1140  	return builder
  1141  }
  1142  
  1143  // 补卡时间,几天内补卡
  1144  //
  1145  // 示例值:3
  1146  func (builder *GroupBuilder) RemedyDateNum(remedyDateNum int) *GroupBuilder {
  1147  	builder.remedyDateNum = remedyDateNum
  1148  	builder.remedyDateNumFlag = true
  1149  	return builder
  1150  }
  1151  
  1152  // 允许缺卡补卡(需要允许补卡才能设置生效)
  1153  //
  1154  // 示例值:true
  1155  func (builder *GroupBuilder) AllowRemedyTypeLack(allowRemedyTypeLack bool) *GroupBuilder {
  1156  	builder.allowRemedyTypeLack = allowRemedyTypeLack
  1157  	builder.allowRemedyTypeLackFlag = true
  1158  	return builder
  1159  }
  1160  
  1161  // 允许迟到补卡(需要允许补卡才能设置生效)
  1162  //
  1163  // 示例值:true
  1164  func (builder *GroupBuilder) AllowRemedyTypeLate(allowRemedyTypeLate bool) *GroupBuilder {
  1165  	builder.allowRemedyTypeLate = allowRemedyTypeLate
  1166  	builder.allowRemedyTypeLateFlag = true
  1167  	return builder
  1168  }
  1169  
  1170  // 允许早退补卡(需要允许补卡才能设置生效)
  1171  //
  1172  // 示例值:true
  1173  func (builder *GroupBuilder) AllowRemedyTypeEarly(allowRemedyTypeEarly bool) *GroupBuilder {
  1174  	builder.allowRemedyTypeEarly = allowRemedyTypeEarly
  1175  	builder.allowRemedyTypeEarlyFlag = true
  1176  	return builder
  1177  }
  1178  
  1179  // 允许正常补卡(需要允许补卡才能设置生效)
  1180  //
  1181  // 示例值:true
  1182  func (builder *GroupBuilder) AllowRemedyTypeNormal(allowRemedyTypeNormal bool) *GroupBuilder {
  1183  	builder.allowRemedyTypeNormal = allowRemedyTypeNormal
  1184  	builder.allowRemedyTypeNormalFlag = true
  1185  	return builder
  1186  }
  1187  
  1188  // 是否展示累计时长
  1189  //
  1190  // 示例值:true
  1191  func (builder *GroupBuilder) ShowCumulativeTime(showCumulativeTime bool) *GroupBuilder {
  1192  	builder.showCumulativeTime = showCumulativeTime
  1193  	builder.showCumulativeTimeFlag = true
  1194  	return builder
  1195  }
  1196  
  1197  // 是否展示加班时长
  1198  //
  1199  // 示例值:true
  1200  func (builder *GroupBuilder) ShowOverTime(showOverTime bool) *GroupBuilder {
  1201  	builder.showOverTime = showOverTime
  1202  	builder.showOverTimeFlag = true
  1203  	return builder
  1204  }
  1205  
  1206  // 是否隐藏员工打卡详情
  1207  //
  1208  // 示例值:true
  1209  func (builder *GroupBuilder) HideStaffPunchTime(hideStaffPunchTime bool) *GroupBuilder {
  1210  	builder.hideStaffPunchTime = hideStaffPunchTime
  1211  	builder.hideStaffPunchTimeFlag = true
  1212  	return builder
  1213  }
  1214  
  1215  // 是否开启人脸识别打卡
  1216  //
  1217  // 示例值:true
  1218  func (builder *GroupBuilder) FacePunch(facePunch bool) *GroupBuilder {
  1219  	builder.facePunch = facePunch
  1220  	builder.facePunchFlag = true
  1221  	return builder
  1222  }
  1223  
  1224  // 人脸识别打卡规则,1:每次打卡均需人脸识别,2:疑似作弊打卡时需要人脸识别
  1225  //
  1226  // 示例值:1
  1227  func (builder *GroupBuilder) FacePunchCfg(facePunchCfg int) *GroupBuilder {
  1228  	builder.facePunchCfg = facePunchCfg
  1229  	builder.facePunchCfgFlag = true
  1230  	return builder
  1231  }
  1232  
  1233  // 人脸识别失败时是否允许普通拍照打卡
  1234  //
  1235  // 示例值:true
  1236  func (builder *GroupBuilder) FaceDowngrade(faceDowngrade bool) *GroupBuilder {
  1237  	builder.faceDowngrade = faceDowngrade
  1238  	builder.faceDowngradeFlag = true
  1239  	return builder
  1240  }
  1241  
  1242  // 人脸识别失败时是否允许替换基准图片
  1243  //
  1244  // 示例值:true
  1245  func (builder *GroupBuilder) ReplaceBasicPic(replaceBasicPic bool) *GroupBuilder {
  1246  	builder.replaceBasicPic = replaceBasicPic
  1247  	builder.replaceBasicPicFlag = true
  1248  	return builder
  1249  }
  1250  
  1251  // 考勤机列表
  1252  //
  1253  // 示例值:
  1254  func (builder *GroupBuilder) Machines(machines []*Machine) *GroupBuilder {
  1255  	builder.machines = machines
  1256  	builder.machinesFlag = true
  1257  	return builder
  1258  }
  1259  
  1260  // GPS 打卡的有效范围(不建议使用)
  1261  //
  1262  // 示例值:300
  1263  func (builder *GroupBuilder) GpsRange(gpsRange int) *GroupBuilder {
  1264  	builder.gpsRange = gpsRange
  1265  	builder.gpsRangeFlag = true
  1266  	return builder
  1267  }
  1268  
  1269  // 地址列表
  1270  //
  1271  // 示例值:
  1272  func (builder *GroupBuilder) Locations(locations []*Location) *GroupBuilder {
  1273  	builder.locations = locations
  1274  	builder.locationsFlag = true
  1275  	return builder
  1276  }
  1277  
  1278  // 考勤类型,0:固定班制,2:排班制, 3:自由班制
  1279  //
  1280  // 示例值:0
  1281  func (builder *GroupBuilder) GroupType(groupType int) *GroupBuilder {
  1282  	builder.groupType = groupType
  1283  	builder.groupTypeFlag = true
  1284  	return builder
  1285  }
  1286  
  1287  // 固定班制必须填
  1288  //
  1289  // 示例值:6921319402260496386
  1290  func (builder *GroupBuilder) PunchDayShiftIds(punchDayShiftIds []string) *GroupBuilder {
  1291  	builder.punchDayShiftIds = punchDayShiftIds
  1292  	builder.punchDayShiftIdsFlag = true
  1293  	return builder
  1294  }
  1295  
  1296  // 配置自由班制
  1297  //
  1298  // 示例值:
  1299  func (builder *GroupBuilder) FreePunchCfg(freePunchCfg *FreePunchCfg) *GroupBuilder {
  1300  	builder.freePunchCfg = freePunchCfg
  1301  	builder.freePunchCfgFlag = true
  1302  	return builder
  1303  }
  1304  
  1305  // 国家日历  ID,0:不根据国家日历排休,1:中国大陆,2:美国,3:日本,4:印度,5:新加坡,默认 1
  1306  //
  1307  // 示例值:1
  1308  func (builder *GroupBuilder) CalendarId(calendarId int) *GroupBuilder {
  1309  	builder.calendarId = calendarId
  1310  	builder.calendarIdFlag = true
  1311  	return builder
  1312  }
  1313  
  1314  // 必须打卡的特殊日期
  1315  //
  1316  // 示例值:
  1317  func (builder *GroupBuilder) NeedPunchSpecialDays(needPunchSpecialDays []*PunchSpecialDateShift) *GroupBuilder {
  1318  	builder.needPunchSpecialDays = needPunchSpecialDays
  1319  	builder.needPunchSpecialDaysFlag = true
  1320  	return builder
  1321  }
  1322  
  1323  // 无需打卡的特殊日期
  1324  //
  1325  // 示例值:
  1326  func (builder *GroupBuilder) NoNeedPunchSpecialDays(noNeedPunchSpecialDays []*PunchSpecialDateShift) *GroupBuilder {
  1327  	builder.noNeedPunchSpecialDays = noNeedPunchSpecialDays
  1328  	builder.noNeedPunchSpecialDaysFlag = true
  1329  	return builder
  1330  }
  1331  
  1332  // 自由班制下工作日不打卡是否记为缺卡
  1333  //
  1334  // 示例值:true
  1335  func (builder *GroupBuilder) WorkDayNoPunchAsLack(workDayNoPunchAsLack bool) *GroupBuilder {
  1336  	builder.workDayNoPunchAsLack = workDayNoPunchAsLack
  1337  	builder.workDayNoPunchAsLackFlag = true
  1338  	return builder
  1339  }
  1340  
  1341  // 是否立即生效,默认 false
  1342  //
  1343  // 示例值:true
  1344  func (builder *GroupBuilder) EffectNow(effectNow bool) *GroupBuilder {
  1345  	builder.effectNow = effectNow
  1346  	builder.effectNowFlag = true
  1347  	return builder
  1348  }
  1349  
  1350  // 补卡周期类型
  1351  //
  1352  // 示例值:0
  1353  func (builder *GroupBuilder) RemedyPeriodType(remedyPeriodType int) *GroupBuilder {
  1354  	builder.remedyPeriodType = remedyPeriodType
  1355  	builder.remedyPeriodTypeFlag = true
  1356  	return builder
  1357  }
  1358  
  1359  // 补卡自定义周期起始日期
  1360  //
  1361  // 示例值:1
  1362  func (builder *GroupBuilder) RemedyPeriodCustomDate(remedyPeriodCustomDate int) *GroupBuilder {
  1363  	builder.remedyPeriodCustomDate = remedyPeriodCustomDate
  1364  	builder.remedyPeriodCustomDateFlag = true
  1365  	return builder
  1366  }
  1367  
  1368  // 打卡类型,位运算。1:GPS 打卡,2:Wi-Fi 打卡,4:考勤机打卡,8:IP 打卡
  1369  //
  1370  // 示例值:1
  1371  func (builder *GroupBuilder) PunchType(punchType int) *GroupBuilder {
  1372  	builder.punchType = punchType
  1373  	builder.punchTypeFlag = true
  1374  	return builder
  1375  }
  1376  
  1377  // 生效时间,精确到秒的时间戳
  1378  //
  1379  // 示例值:1611476284
  1380  func (builder *GroupBuilder) EffectTime(effectTime string) *GroupBuilder {
  1381  	builder.effectTime = effectTime
  1382  	builder.effectTimeFlag = true
  1383  	return builder
  1384  }
  1385  
  1386  // 休息日打卡需审批
  1387  //
  1388  // 示例值:true
  1389  func (builder *GroupBuilder) RestClockInNeedApproval(restClockInNeedApproval bool) *GroupBuilder {
  1390  	builder.restClockInNeedApproval = restClockInNeedApproval
  1391  	builder.restClockInNeedApprovalFlag = true
  1392  	return builder
  1393  }
  1394  
  1395  // 每次打卡均需拍照
  1396  //
  1397  // 示例值:true
  1398  func (builder *GroupBuilder) ClockInNeedPhoto(clockInNeedPhoto bool) *GroupBuilder {
  1399  	builder.clockInNeedPhoto = clockInNeedPhoto
  1400  	builder.clockInNeedPhotoFlag = true
  1401  	return builder
  1402  }
  1403  
  1404  func (builder *GroupBuilder) Build() *Group {
  1405  	req := &Group{}
  1406  	if builder.groupIdFlag {
  1407  		req.GroupId = &builder.groupId
  1408  
  1409  	}
  1410  	if builder.groupNameFlag {
  1411  		req.GroupName = &builder.groupName
  1412  
  1413  	}
  1414  	if builder.timeZoneFlag {
  1415  		req.TimeZone = &builder.timeZone
  1416  
  1417  	}
  1418  	if builder.bindDeptIdsFlag {
  1419  		req.BindDeptIds = builder.bindDeptIds
  1420  	}
  1421  	if builder.exceptDeptIdsFlag {
  1422  		req.ExceptDeptIds = builder.exceptDeptIds
  1423  	}
  1424  	if builder.bindUserIdsFlag {
  1425  		req.BindUserIds = builder.bindUserIds
  1426  	}
  1427  	if builder.exceptUserIdsFlag {
  1428  		req.ExceptUserIds = builder.exceptUserIds
  1429  	}
  1430  	if builder.groupLeaderIdsFlag {
  1431  		req.GroupLeaderIds = builder.groupLeaderIds
  1432  	}
  1433  	if builder.subGroupLeaderIdsFlag {
  1434  		req.SubGroupLeaderIds = builder.subGroupLeaderIds
  1435  	}
  1436  	if builder.allowOutPunchFlag {
  1437  		req.AllowOutPunch = &builder.allowOutPunch
  1438  
  1439  	}
  1440  	if builder.outPunchNeedApprovalFlag {
  1441  		req.OutPunchNeedApproval = &builder.outPunchNeedApproval
  1442  
  1443  	}
  1444  	if builder.outPunchNeedRemarkFlag {
  1445  		req.OutPunchNeedRemark = &builder.outPunchNeedRemark
  1446  
  1447  	}
  1448  	if builder.outPunchNeedPhotoFlag {
  1449  		req.OutPunchNeedPhoto = &builder.outPunchNeedPhoto
  1450  
  1451  	}
  1452  	if builder.outPunchAllowedHideAddrFlag {
  1453  		req.OutPunchAllowedHideAddr = &builder.outPunchAllowedHideAddr
  1454  
  1455  	}
  1456  	if builder.allowPcPunchFlag {
  1457  		req.AllowPcPunch = &builder.allowPcPunch
  1458  
  1459  	}
  1460  	if builder.allowRemedyFlag {
  1461  		req.AllowRemedy = &builder.allowRemedy
  1462  
  1463  	}
  1464  	if builder.remedyLimitFlag {
  1465  		req.RemedyLimit = &builder.remedyLimit
  1466  
  1467  	}
  1468  	if builder.remedyLimitCountFlag {
  1469  		req.RemedyLimitCount = &builder.remedyLimitCount
  1470  
  1471  	}
  1472  	if builder.remedyDateLimitFlag {
  1473  		req.RemedyDateLimit = &builder.remedyDateLimit
  1474  
  1475  	}
  1476  	if builder.remedyDateNumFlag {
  1477  		req.RemedyDateNum = &builder.remedyDateNum
  1478  
  1479  	}
  1480  	if builder.allowRemedyTypeLackFlag {
  1481  		req.AllowRemedyTypeLack = &builder.allowRemedyTypeLack
  1482  
  1483  	}
  1484  	if builder.allowRemedyTypeLateFlag {
  1485  		req.AllowRemedyTypeLate = &builder.allowRemedyTypeLate
  1486  
  1487  	}
  1488  	if builder.allowRemedyTypeEarlyFlag {
  1489  		req.AllowRemedyTypeEarly = &builder.allowRemedyTypeEarly
  1490  
  1491  	}
  1492  	if builder.allowRemedyTypeNormalFlag {
  1493  		req.AllowRemedyTypeNormal = &builder.allowRemedyTypeNormal
  1494  
  1495  	}
  1496  	if builder.showCumulativeTimeFlag {
  1497  		req.ShowCumulativeTime = &builder.showCumulativeTime
  1498  
  1499  	}
  1500  	if builder.showOverTimeFlag {
  1501  		req.ShowOverTime = &builder.showOverTime
  1502  
  1503  	}
  1504  	if builder.hideStaffPunchTimeFlag {
  1505  		req.HideStaffPunchTime = &builder.hideStaffPunchTime
  1506  
  1507  	}
  1508  	if builder.facePunchFlag {
  1509  		req.FacePunch = &builder.facePunch
  1510  
  1511  	}
  1512  	if builder.facePunchCfgFlag {
  1513  		req.FacePunchCfg = &builder.facePunchCfg
  1514  
  1515  	}
  1516  	if builder.faceDowngradeFlag {
  1517  		req.FaceDowngrade = &builder.faceDowngrade
  1518  
  1519  	}
  1520  	if builder.replaceBasicPicFlag {
  1521  		req.ReplaceBasicPic = &builder.replaceBasicPic
  1522  
  1523  	}
  1524  	if builder.machinesFlag {
  1525  		req.Machines = builder.machines
  1526  	}
  1527  	if builder.gpsRangeFlag {
  1528  		req.GpsRange = &builder.gpsRange
  1529  
  1530  	}
  1531  	if builder.locationsFlag {
  1532  		req.Locations = builder.locations
  1533  	}
  1534  	if builder.groupTypeFlag {
  1535  		req.GroupType = &builder.groupType
  1536  
  1537  	}
  1538  	if builder.punchDayShiftIdsFlag {
  1539  		req.PunchDayShiftIds = builder.punchDayShiftIds
  1540  	}
  1541  	if builder.freePunchCfgFlag {
  1542  		req.FreePunchCfg = builder.freePunchCfg
  1543  	}
  1544  	if builder.calendarIdFlag {
  1545  		req.CalendarId = &builder.calendarId
  1546  
  1547  	}
  1548  	if builder.needPunchSpecialDaysFlag {
  1549  		req.NeedPunchSpecialDays = builder.needPunchSpecialDays
  1550  	}
  1551  	if builder.noNeedPunchSpecialDaysFlag {
  1552  		req.NoNeedPunchSpecialDays = builder.noNeedPunchSpecialDays
  1553  	}
  1554  	if builder.workDayNoPunchAsLackFlag {
  1555  		req.WorkDayNoPunchAsLack = &builder.workDayNoPunchAsLack
  1556  
  1557  	}
  1558  	if builder.effectNowFlag {
  1559  		req.EffectNow = &builder.effectNow
  1560  
  1561  	}
  1562  	if builder.remedyPeriodTypeFlag {
  1563  		req.RemedyPeriodType = &builder.remedyPeriodType
  1564  
  1565  	}
  1566  	if builder.remedyPeriodCustomDateFlag {
  1567  		req.RemedyPeriodCustomDate = &builder.remedyPeriodCustomDate
  1568  
  1569  	}
  1570  	if builder.punchTypeFlag {
  1571  		req.PunchType = &builder.punchType
  1572  
  1573  	}
  1574  	if builder.effectTimeFlag {
  1575  		req.EffectTime = &builder.effectTime
  1576  
  1577  	}
  1578  	if builder.restClockInNeedApprovalFlag {
  1579  		req.RestClockInNeedApproval = &builder.restClockInNeedApproval
  1580  
  1581  	}
  1582  	if builder.clockInNeedPhotoFlag {
  1583  		req.ClockInNeedPhoto = &builder.clockInNeedPhoto
  1584  
  1585  	}
  1586  	return req
  1587  }
  1588  
  1589  type GroupMeta struct {
  1590  	GroupId   *string `json:"group_id,omitempty"`   // 考勤组 ID
  1591  	GroupName *string `json:"group_name,omitempty"` // 考勤组名称
  1592  }
  1593  
  1594  type GroupMetaBuilder struct {
  1595  	groupId       string // 考勤组 ID
  1596  	groupIdFlag   bool
  1597  	groupName     string // 考勤组名称
  1598  	groupNameFlag bool
  1599  }
  1600  
  1601  func NewGroupMetaBuilder() *GroupMetaBuilder {
  1602  	builder := &GroupMetaBuilder{}
  1603  	return builder
  1604  }
  1605  
  1606  // 考勤组 ID
  1607  //
  1608  // 示例值:6919358128597097404
  1609  func (builder *GroupMetaBuilder) GroupId(groupId string) *GroupMetaBuilder {
  1610  	builder.groupId = groupId
  1611  	builder.groupIdFlag = true
  1612  	return builder
  1613  }
  1614  
  1615  // 考勤组名称
  1616  //
  1617  // 示例值:考勤组1
  1618  func (builder *GroupMetaBuilder) GroupName(groupName string) *GroupMetaBuilder {
  1619  	builder.groupName = groupName
  1620  	builder.groupNameFlag = true
  1621  	return builder
  1622  }
  1623  
  1624  func (builder *GroupMetaBuilder) Build() *GroupMeta {
  1625  	req := &GroupMeta{}
  1626  	if builder.groupIdFlag {
  1627  		req.GroupId = &builder.groupId
  1628  
  1629  	}
  1630  	if builder.groupNameFlag {
  1631  		req.GroupName = &builder.groupName
  1632  
  1633  	}
  1634  	return req
  1635  }
  1636  
  1637  type I18nNames struct {
  1638  	Ch *string `json:"ch,omitempty"` // 中文描述
  1639  	En *string `json:"en,omitempty"` // 英语描述
  1640  	Ja *string `json:"ja,omitempty"` // 日语描述
  1641  }
  1642  
  1643  type I18nNamesBuilder struct {
  1644  	ch     string // 中文描述
  1645  	chFlag bool
  1646  	en     string // 英语描述
  1647  	enFlag bool
  1648  	ja     string // 日语描述
  1649  	jaFlag bool
  1650  }
  1651  
  1652  func NewI18nNamesBuilder() *I18nNamesBuilder {
  1653  	builder := &I18nNamesBuilder{}
  1654  	return builder
  1655  }
  1656  
  1657  // 中文描述
  1658  //
  1659  // 示例值:中文描述
  1660  func (builder *I18nNamesBuilder) Ch(ch string) *I18nNamesBuilder {
  1661  	builder.ch = ch
  1662  	builder.chFlag = true
  1663  	return builder
  1664  }
  1665  
  1666  // 英语描述
  1667  //
  1668  // 示例值:English description
  1669  func (builder *I18nNamesBuilder) En(en string) *I18nNamesBuilder {
  1670  	builder.en = en
  1671  	builder.enFlag = true
  1672  	return builder
  1673  }
  1674  
  1675  // 日语描述
  1676  //
  1677  // 示例值:日本語の説明
  1678  func (builder *I18nNamesBuilder) Ja(ja string) *I18nNamesBuilder {
  1679  	builder.ja = ja
  1680  	builder.jaFlag = true
  1681  	return builder
  1682  }
  1683  
  1684  func (builder *I18nNamesBuilder) Build() *I18nNames {
  1685  	req := &I18nNames{}
  1686  	if builder.chFlag {
  1687  		req.Ch = &builder.ch
  1688  
  1689  	}
  1690  	if builder.enFlag {
  1691  		req.En = &builder.en
  1692  
  1693  	}
  1694  	if builder.jaFlag {
  1695  		req.Ja = &builder.ja
  1696  
  1697  	}
  1698  	return req
  1699  }
  1700  
  1701  type Item struct {
  1702  	Code       *string      `json:"code,omitempty"`        // 标题编号
  1703  	Title      *string      `json:"title,omitempty"`       // 标题名称
  1704  	ChildItems []*ChildItem `json:"child_items,omitempty"` // 子标题
  1705  }
  1706  
  1707  type ItemBuilder struct {
  1708  	code           string // 标题编号
  1709  	codeFlag       bool
  1710  	title          string // 标题名称
  1711  	titleFlag      bool
  1712  	childItems     []*ChildItem // 子标题
  1713  	childItemsFlag bool
  1714  }
  1715  
  1716  func NewItemBuilder() *ItemBuilder {
  1717  	builder := &ItemBuilder{}
  1718  	return builder
  1719  }
  1720  
  1721  // 标题编号
  1722  //
  1723  // 示例值:522
  1724  func (builder *ItemBuilder) Code(code string) *ItemBuilder {
  1725  	builder.code = code
  1726  	builder.codeFlag = true
  1727  	return builder
  1728  }
  1729  
  1730  // 标题名称
  1731  //
  1732  // 示例值:基本信息
  1733  func (builder *ItemBuilder) Title(title string) *ItemBuilder {
  1734  	builder.title = title
  1735  	builder.titleFlag = true
  1736  	return builder
  1737  }
  1738  
  1739  // 子标题
  1740  //
  1741  // 示例值:
  1742  func (builder *ItemBuilder) ChildItems(childItems []*ChildItem) *ItemBuilder {
  1743  	builder.childItems = childItems
  1744  	builder.childItemsFlag = true
  1745  	return builder
  1746  }
  1747  
  1748  func (builder *ItemBuilder) Build() *Item {
  1749  	req := &Item{}
  1750  	if builder.codeFlag {
  1751  		req.Code = &builder.code
  1752  
  1753  	}
  1754  	if builder.titleFlag {
  1755  		req.Title = &builder.title
  1756  
  1757  	}
  1758  	if builder.childItemsFlag {
  1759  		req.ChildItems = builder.childItems
  1760  	}
  1761  	return req
  1762  }
  1763  
  1764  type LateOffLateOnRule struct {
  1765  	LateOffMinutes *int `json:"late_off_minutes,omitempty"` // 晚走多久
  1766  	LateOnMinutes  *int `json:"late_on_minutes,omitempty"`  // 晚到多久
  1767  }
  1768  
  1769  type LateOffLateOnRuleBuilder struct {
  1770  	lateOffMinutes     int // 晚走多久
  1771  	lateOffMinutesFlag bool
  1772  	lateOnMinutes      int // 晚到多久
  1773  	lateOnMinutesFlag  bool
  1774  }
  1775  
  1776  func NewLateOffLateOnRuleBuilder() *LateOffLateOnRuleBuilder {
  1777  	builder := &LateOffLateOnRuleBuilder{}
  1778  	return builder
  1779  }
  1780  
  1781  // 晚走多久
  1782  //
  1783  // 示例值:60
  1784  func (builder *LateOffLateOnRuleBuilder) LateOffMinutes(lateOffMinutes int) *LateOffLateOnRuleBuilder {
  1785  	builder.lateOffMinutes = lateOffMinutes
  1786  	builder.lateOffMinutesFlag = true
  1787  	return builder
  1788  }
  1789  
  1790  // 晚到多久
  1791  //
  1792  // 示例值:30
  1793  func (builder *LateOffLateOnRuleBuilder) LateOnMinutes(lateOnMinutes int) *LateOffLateOnRuleBuilder {
  1794  	builder.lateOnMinutes = lateOnMinutes
  1795  	builder.lateOnMinutesFlag = true
  1796  	return builder
  1797  }
  1798  
  1799  func (builder *LateOffLateOnRuleBuilder) Build() *LateOffLateOnRule {
  1800  	req := &LateOffLateOnRule{}
  1801  	if builder.lateOffMinutesFlag {
  1802  		req.LateOffMinutes = &builder.lateOffMinutes
  1803  
  1804  	}
  1805  	if builder.lateOnMinutesFlag {
  1806  		req.LateOnMinutes = &builder.lateOnMinutes
  1807  
  1808  	}
  1809  	return req
  1810  }
  1811  
  1812  type Location struct {
  1813  	LocationId   *string  `json:"location_id,omitempty"`   // 地址 ID
  1814  	LocationName *string  `json:"location_name,omitempty"` // 地址名称
  1815  	LocationType *int     `json:"location_type,omitempty"` // 地址类型,1:GPS,2:Wi-Fi,8:IP
  1816  	Latitude     *float64 `json:"latitude,omitempty"`      // 地址纬度
  1817  	Longitude    *float64 `json:"longitude,omitempty"`     // 地址经度
  1818  	Ssid         *string  `json:"ssid,omitempty"`          // Wi-Fi 名称
  1819  	Bssid        *string  `json:"bssid,omitempty"`         // Wi-Fi 的 MAC 地址
  1820  	MapType      *int     `json:"map_type,omitempty"`      // 地图类型,1:高德, 2:谷歌
  1821  	Address      *string  `json:"address,omitempty"`       // 地址名称
  1822  	Ip           *string  `json:"ip,omitempty"`            // IP 地址
  1823  	Feature      *string  `json:"feature,omitempty"`       // 额外信息,例如:运营商信息
  1824  	GpsRange     *int     `json:"gps_range,omitempty"`     // GPS 打卡的有效范围
  1825  }
  1826  
  1827  type LocationBuilder struct {
  1828  	locationId       string // 地址 ID
  1829  	locationIdFlag   bool
  1830  	locationName     string // 地址名称
  1831  	locationNameFlag bool
  1832  	locationType     int // 地址类型,1:GPS,2:Wi-Fi,8:IP
  1833  	locationTypeFlag bool
  1834  	latitude         float64 // 地址纬度
  1835  	latitudeFlag     bool
  1836  	longitude        float64 // 地址经度
  1837  	longitudeFlag    bool
  1838  	ssid             string // Wi-Fi 名称
  1839  	ssidFlag         bool
  1840  	bssid            string // Wi-Fi 的 MAC 地址
  1841  	bssidFlag        bool
  1842  	mapType          int // 地图类型,1:高德, 2:谷歌
  1843  	mapTypeFlag      bool
  1844  	address          string // 地址名称
  1845  	addressFlag      bool
  1846  	ip               string // IP 地址
  1847  	ipFlag           bool
  1848  	feature          string // 额外信息,例如:运营商信息
  1849  	featureFlag      bool
  1850  	gpsRange         int // GPS 打卡的有效范围
  1851  	gpsRangeFlag     bool
  1852  }
  1853  
  1854  func NewLocationBuilder() *LocationBuilder {
  1855  	builder := &LocationBuilder{}
  1856  	return builder
  1857  }
  1858  
  1859  // 地址 ID
  1860  //
  1861  // 示例值:6921213751454744578
  1862  func (builder *LocationBuilder) LocationId(locationId string) *LocationBuilder {
  1863  	builder.locationId = locationId
  1864  	builder.locationIdFlag = true
  1865  	return builder
  1866  }
  1867  
  1868  // 地址名称
  1869  //
  1870  // 示例值:浙江省杭州市余杭区五常街道木桥头西溪八方城
  1871  func (builder *LocationBuilder) LocationName(locationName string) *LocationBuilder {
  1872  	builder.locationName = locationName
  1873  	builder.locationNameFlag = true
  1874  	return builder
  1875  }
  1876  
  1877  // 地址类型,1:GPS,2:Wi-Fi,8:IP
  1878  //
  1879  // 示例值:1
  1880  func (builder *LocationBuilder) LocationType(locationType int) *LocationBuilder {
  1881  	builder.locationType = locationType
  1882  	builder.locationTypeFlag = true
  1883  	return builder
  1884  }
  1885  
  1886  // 地址纬度
  1887  //
  1888  // 示例值:30.28994
  1889  func (builder *LocationBuilder) Latitude(latitude float64) *LocationBuilder {
  1890  	builder.latitude = latitude
  1891  	builder.latitudeFlag = true
  1892  	return builder
  1893  }
  1894  
  1895  // 地址经度
  1896  //
  1897  // 示例值:120.04509
  1898  func (builder *LocationBuilder) Longitude(longitude float64) *LocationBuilder {
  1899  	builder.longitude = longitude
  1900  	builder.longitudeFlag = true
  1901  	return builder
  1902  }
  1903  
  1904  // Wi-Fi 名称
  1905  //
  1906  // 示例值:TP-Link-af12ca
  1907  func (builder *LocationBuilder) Ssid(ssid string) *LocationBuilder {
  1908  	builder.ssid = ssid
  1909  	builder.ssidFlag = true
  1910  	return builder
  1911  }
  1912  
  1913  // Wi-Fi 的 MAC 地址
  1914  //
  1915  // 示例值:08:00:20:0A:8C:6D
  1916  func (builder *LocationBuilder) Bssid(bssid string) *LocationBuilder {
  1917  	builder.bssid = bssid
  1918  	builder.bssidFlag = true
  1919  	return builder
  1920  }
  1921  
  1922  // 地图类型,1:高德, 2:谷歌
  1923  //
  1924  // 示例值:1
  1925  func (builder *LocationBuilder) MapType(mapType int) *LocationBuilder {
  1926  	builder.mapType = mapType
  1927  	builder.mapTypeFlag = true
  1928  	return builder
  1929  }
  1930  
  1931  // 地址名称
  1932  //
  1933  // 示例值:北京市海淀区中航广场
  1934  func (builder *LocationBuilder) Address(address string) *LocationBuilder {
  1935  	builder.address = address
  1936  	builder.addressFlag = true
  1937  	return builder
  1938  }
  1939  
  1940  // IP 地址
  1941  //
  1942  // 示例值:122.224.123.146
  1943  func (builder *LocationBuilder) Ip(ip string) *LocationBuilder {
  1944  	builder.ip = ip
  1945  	builder.ipFlag = true
  1946  	return builder
  1947  }
  1948  
  1949  // 额外信息,例如:运营商信息
  1950  //
  1951  // 示例值:中国电信
  1952  func (builder *LocationBuilder) Feature(feature string) *LocationBuilder {
  1953  	builder.feature = feature
  1954  	builder.featureFlag = true
  1955  	return builder
  1956  }
  1957  
  1958  // GPS 打卡的有效范围
  1959  //
  1960  // 示例值:300
  1961  func (builder *LocationBuilder) GpsRange(gpsRange int) *LocationBuilder {
  1962  	builder.gpsRange = gpsRange
  1963  	builder.gpsRangeFlag = true
  1964  	return builder
  1965  }
  1966  
  1967  func (builder *LocationBuilder) Build() *Location {
  1968  	req := &Location{}
  1969  	if builder.locationIdFlag {
  1970  		req.LocationId = &builder.locationId
  1971  
  1972  	}
  1973  	if builder.locationNameFlag {
  1974  		req.LocationName = &builder.locationName
  1975  
  1976  	}
  1977  	if builder.locationTypeFlag {
  1978  		req.LocationType = &builder.locationType
  1979  
  1980  	}
  1981  	if builder.latitudeFlag {
  1982  		req.Latitude = &builder.latitude
  1983  
  1984  	}
  1985  	if builder.longitudeFlag {
  1986  		req.Longitude = &builder.longitude
  1987  
  1988  	}
  1989  	if builder.ssidFlag {
  1990  		req.Ssid = &builder.ssid
  1991  
  1992  	}
  1993  	if builder.bssidFlag {
  1994  		req.Bssid = &builder.bssid
  1995  
  1996  	}
  1997  	if builder.mapTypeFlag {
  1998  		req.MapType = &builder.mapType
  1999  
  2000  	}
  2001  	if builder.addressFlag {
  2002  		req.Address = &builder.address
  2003  
  2004  	}
  2005  	if builder.ipFlag {
  2006  		req.Ip = &builder.ip
  2007  
  2008  	}
  2009  	if builder.featureFlag {
  2010  		req.Feature = &builder.feature
  2011  
  2012  	}
  2013  	if builder.gpsRangeFlag {
  2014  		req.GpsRange = &builder.gpsRange
  2015  
  2016  	}
  2017  	return req
  2018  }
  2019  
  2020  type LocationInfo struct {
  2021  	Status    *int    `json:"status,omitempty"`    // 开关状态
  2022  	Geofences []*Area `json:"geofences,omitempty"` //
  2023  }
  2024  
  2025  type LocationInfoBuilder struct {
  2026  	status        int // 开关状态
  2027  	statusFlag    bool
  2028  	geofences     []*Area //
  2029  	geofencesFlag bool
  2030  }
  2031  
  2032  func NewLocationInfoBuilder() *LocationInfoBuilder {
  2033  	builder := &LocationInfoBuilder{}
  2034  	return builder
  2035  }
  2036  
  2037  // 开关状态
  2038  //
  2039  // 示例值:
  2040  func (builder *LocationInfoBuilder) Status(status int) *LocationInfoBuilder {
  2041  	builder.status = status
  2042  	builder.statusFlag = true
  2043  	return builder
  2044  }
  2045  
  2046  //
  2047  //
  2048  // 示例值:
  2049  func (builder *LocationInfoBuilder) Geofences(geofences []*Area) *LocationInfoBuilder {
  2050  	builder.geofences = geofences
  2051  	builder.geofencesFlag = true
  2052  	return builder
  2053  }
  2054  
  2055  func (builder *LocationInfoBuilder) Build() *LocationInfo {
  2056  	req := &LocationInfo{}
  2057  	if builder.statusFlag {
  2058  		req.Status = &builder.status
  2059  
  2060  	}
  2061  	if builder.geofencesFlag {
  2062  		req.Geofences = builder.geofences
  2063  	}
  2064  	return req
  2065  }
  2066  
  2067  type LocationInfoEvent struct {
  2068  	Coord *Coordinate `json:"coord,omitempty"` //
  2069  }
  2070  
  2071  type LocationInfoEventBuilder struct {
  2072  	coord     *Coordinate //
  2073  	coordFlag bool
  2074  }
  2075  
  2076  func NewLocationInfoEventBuilder() *LocationInfoEventBuilder {
  2077  	builder := &LocationInfoEventBuilder{}
  2078  	return builder
  2079  }
  2080  
  2081  //
  2082  //
  2083  // 示例值:
  2084  func (builder *LocationInfoEventBuilder) Coord(coord *Coordinate) *LocationInfoEventBuilder {
  2085  	builder.coord = coord
  2086  	builder.coordFlag = true
  2087  	return builder
  2088  }
  2089  
  2090  func (builder *LocationInfoEventBuilder) Build() *LocationInfoEvent {
  2091  	req := &LocationInfoEvent{}
  2092  	if builder.coordFlag {
  2093  		req.Coord = builder.coord
  2094  	}
  2095  	return req
  2096  }
  2097  
  2098  type LocationRecord struct {
  2099  	UserId         *UserId            `json:"user_id,omitempty"`          // 用户id
  2100  	Timestamp      *string            `json:"timestamp,omitempty"`        // 时间点
  2101  	Location       *LocationInfoEvent `json:"location,omitempty"`         // 位置信息
  2102  	Wifi           *WifiInfoEvent     `json:"wifi,omitempty"`             // wifi信息
  2103  	RuleSnapshotId *string            `json:"rule_snapshot_id,omitempty"` // 规则快照id
  2104  	Type           *string            `json:"type,omitempty"`             // 事件类型
  2105  	ScanWifiList   []*ScanWifiInfo    `json:"scan_wifi_list,omitempty"`   // 附近的wifi设备列表
  2106  	DeviceId       *string            `json:"device_id,omitempty"`        // 上报事件的设备ID
  2107  	ClientInfo     *string            `json:"client_info,omitempty"`      //
  2108  }
  2109  
  2110  type LocationRecordBuilder struct {
  2111  	userId             *UserId // 用户id
  2112  	userIdFlag         bool
  2113  	timestamp          string // 时间点
  2114  	timestampFlag      bool
  2115  	location           *LocationInfoEvent // 位置信息
  2116  	locationFlag       bool
  2117  	wifi               *WifiInfoEvent // wifi信息
  2118  	wifiFlag           bool
  2119  	ruleSnapshotId     string // 规则快照id
  2120  	ruleSnapshotIdFlag bool
  2121  	type_              string // 事件类型
  2122  	typeFlag           bool
  2123  	scanWifiList       []*ScanWifiInfo // 附近的wifi设备列表
  2124  	scanWifiListFlag   bool
  2125  	deviceId           string // 上报事件的设备ID
  2126  	deviceIdFlag       bool
  2127  	clientInfo         string //
  2128  	clientInfoFlag     bool
  2129  }
  2130  
  2131  func NewLocationRecordBuilder() *LocationRecordBuilder {
  2132  	builder := &LocationRecordBuilder{}
  2133  	return builder
  2134  }
  2135  
  2136  // 用户id
  2137  //
  2138  // 示例值:
  2139  func (builder *LocationRecordBuilder) UserId(userId *UserId) *LocationRecordBuilder {
  2140  	builder.userId = userId
  2141  	builder.userIdFlag = true
  2142  	return builder
  2143  }
  2144  
  2145  // 时间点
  2146  //
  2147  // 示例值:
  2148  func (builder *LocationRecordBuilder) Timestamp(timestamp string) *LocationRecordBuilder {
  2149  	builder.timestamp = timestamp
  2150  	builder.timestampFlag = true
  2151  	return builder
  2152  }
  2153  
  2154  // 位置信息
  2155  //
  2156  // 示例值:
  2157  func (builder *LocationRecordBuilder) Location(location *LocationInfoEvent) *LocationRecordBuilder {
  2158  	builder.location = location
  2159  	builder.locationFlag = true
  2160  	return builder
  2161  }
  2162  
  2163  // wifi信息
  2164  //
  2165  // 示例值:
  2166  func (builder *LocationRecordBuilder) Wifi(wifi *WifiInfoEvent) *LocationRecordBuilder {
  2167  	builder.wifi = wifi
  2168  	builder.wifiFlag = true
  2169  	return builder
  2170  }
  2171  
  2172  // 规则快照id
  2173  //
  2174  // 示例值:
  2175  func (builder *LocationRecordBuilder) RuleSnapshotId(ruleSnapshotId string) *LocationRecordBuilder {
  2176  	builder.ruleSnapshotId = ruleSnapshotId
  2177  	builder.ruleSnapshotIdFlag = true
  2178  	return builder
  2179  }
  2180  
  2181  // 事件类型
  2182  //
  2183  // 示例值:
  2184  func (builder *LocationRecordBuilder) Type(type_ string) *LocationRecordBuilder {
  2185  	builder.type_ = type_
  2186  	builder.typeFlag = true
  2187  	return builder
  2188  }
  2189  
  2190  // 附近的wifi设备列表
  2191  //
  2192  // 示例值:
  2193  func (builder *LocationRecordBuilder) ScanWifiList(scanWifiList []*ScanWifiInfo) *LocationRecordBuilder {
  2194  	builder.scanWifiList = scanWifiList
  2195  	builder.scanWifiListFlag = true
  2196  	return builder
  2197  }
  2198  
  2199  // 上报事件的设备ID
  2200  //
  2201  // 示例值:
  2202  func (builder *LocationRecordBuilder) DeviceId(deviceId string) *LocationRecordBuilder {
  2203  	builder.deviceId = deviceId
  2204  	builder.deviceIdFlag = true
  2205  	return builder
  2206  }
  2207  
  2208  //
  2209  //
  2210  // 示例值:
  2211  func (builder *LocationRecordBuilder) ClientInfo(clientInfo string) *LocationRecordBuilder {
  2212  	builder.clientInfo = clientInfo
  2213  	builder.clientInfoFlag = true
  2214  	return builder
  2215  }
  2216  
  2217  func (builder *LocationRecordBuilder) Build() *LocationRecord {
  2218  	req := &LocationRecord{}
  2219  	if builder.userIdFlag {
  2220  		req.UserId = builder.userId
  2221  	}
  2222  	if builder.timestampFlag {
  2223  		req.Timestamp = &builder.timestamp
  2224  
  2225  	}
  2226  	if builder.locationFlag {
  2227  		req.Location = builder.location
  2228  	}
  2229  	if builder.wifiFlag {
  2230  		req.Wifi = builder.wifi
  2231  	}
  2232  	if builder.ruleSnapshotIdFlag {
  2233  		req.RuleSnapshotId = &builder.ruleSnapshotId
  2234  
  2235  	}
  2236  	if builder.typeFlag {
  2237  		req.Type = &builder.type_
  2238  
  2239  	}
  2240  	if builder.scanWifiListFlag {
  2241  		req.ScanWifiList = builder.scanWifiList
  2242  	}
  2243  	if builder.deviceIdFlag {
  2244  		req.DeviceId = &builder.deviceId
  2245  
  2246  	}
  2247  	if builder.clientInfoFlag {
  2248  		req.ClientInfo = &builder.clientInfo
  2249  
  2250  	}
  2251  	return req
  2252  }
  2253  
  2254  type LocationSetting struct {
  2255  	Location *LocationInfo `json:"location,omitempty"` // 位置配置
  2256  	Wifi     *WifiInfo     `json:"wifi,omitempty"`     // wifi配置
  2257  	UserId   *string       `json:"user_id,omitempty"`  //
  2258  }
  2259  
  2260  type LocationSettingBuilder struct {
  2261  	location     *LocationInfo // 位置配置
  2262  	locationFlag bool
  2263  	wifi         *WifiInfo // wifi配置
  2264  	wifiFlag     bool
  2265  	userId       string //
  2266  	userIdFlag   bool
  2267  }
  2268  
  2269  func NewLocationSettingBuilder() *LocationSettingBuilder {
  2270  	builder := &LocationSettingBuilder{}
  2271  	return builder
  2272  }
  2273  
  2274  // 位置配置
  2275  //
  2276  // 示例值:
  2277  func (builder *LocationSettingBuilder) Location(location *LocationInfo) *LocationSettingBuilder {
  2278  	builder.location = location
  2279  	builder.locationFlag = true
  2280  	return builder
  2281  }
  2282  
  2283  // wifi配置
  2284  //
  2285  // 示例值:
  2286  func (builder *LocationSettingBuilder) Wifi(wifi *WifiInfo) *LocationSettingBuilder {
  2287  	builder.wifi = wifi
  2288  	builder.wifiFlag = true
  2289  	return builder
  2290  }
  2291  
  2292  //
  2293  //
  2294  // 示例值:
  2295  func (builder *LocationSettingBuilder) UserId(userId string) *LocationSettingBuilder {
  2296  	builder.userId = userId
  2297  	builder.userIdFlag = true
  2298  	return builder
  2299  }
  2300  
  2301  func (builder *LocationSettingBuilder) Build() *LocationSetting {
  2302  	req := &LocationSetting{}
  2303  	if builder.locationFlag {
  2304  		req.Location = builder.location
  2305  	}
  2306  	if builder.wifiFlag {
  2307  		req.Wifi = builder.wifi
  2308  	}
  2309  	if builder.userIdFlag {
  2310  		req.UserId = &builder.userId
  2311  
  2312  	}
  2313  	return req
  2314  }
  2315  
  2316  type Machine struct {
  2317  	MachineSn   *string `json:"machine_sn,omitempty"`   // 考勤机序列号
  2318  	MachineName *string `json:"machine_name,omitempty"` // 考勤机名称
  2319  }
  2320  
  2321  type MachineBuilder struct {
  2322  	machineSn       string // 考勤机序列号
  2323  	machineSnFlag   bool
  2324  	machineName     string // 考勤机名称
  2325  	machineNameFlag bool
  2326  }
  2327  
  2328  func NewMachineBuilder() *MachineBuilder {
  2329  	builder := &MachineBuilder{}
  2330  	return builder
  2331  }
  2332  
  2333  // 考勤机序列号
  2334  //
  2335  // 示例值:FS0701
  2336  func (builder *MachineBuilder) MachineSn(machineSn string) *MachineBuilder {
  2337  	builder.machineSn = machineSn
  2338  	builder.machineSnFlag = true
  2339  	return builder
  2340  }
  2341  
  2342  // 考勤机名称
  2343  //
  2344  // 示例值:创实 9 楼
  2345  func (builder *MachineBuilder) MachineName(machineName string) *MachineBuilder {
  2346  	builder.machineName = machineName
  2347  	builder.machineNameFlag = true
  2348  	return builder
  2349  }
  2350  
  2351  func (builder *MachineBuilder) Build() *Machine {
  2352  	req := &Machine{}
  2353  	if builder.machineSnFlag {
  2354  		req.MachineSn = &builder.machineSn
  2355  
  2356  	}
  2357  	if builder.machineNameFlag {
  2358  		req.MachineName = &builder.machineName
  2359  
  2360  	}
  2361  	return req
  2362  }
  2363  
  2364  type PunchSpecialDateShift struct {
  2365  	PunchDay *int    `json:"punch_day,omitempty"` // 打卡日期
  2366  	ShiftId  *string `json:"shift_id,omitempty"`  // 班次 ID
  2367  }
  2368  
  2369  type PunchSpecialDateShiftBuilder struct {
  2370  	punchDay     int // 打卡日期
  2371  	punchDayFlag bool
  2372  	shiftId      string // 班次 ID
  2373  	shiftIdFlag  bool
  2374  }
  2375  
  2376  func NewPunchSpecialDateShiftBuilder() *PunchSpecialDateShiftBuilder {
  2377  	builder := &PunchSpecialDateShiftBuilder{}
  2378  	return builder
  2379  }
  2380  
  2381  // 打卡日期
  2382  //
  2383  // 示例值:20190101
  2384  func (builder *PunchSpecialDateShiftBuilder) PunchDay(punchDay int) *PunchSpecialDateShiftBuilder {
  2385  	builder.punchDay = punchDay
  2386  	builder.punchDayFlag = true
  2387  	return builder
  2388  }
  2389  
  2390  // 班次 ID
  2391  //
  2392  // 示例值:6919668827865513935
  2393  func (builder *PunchSpecialDateShiftBuilder) ShiftId(shiftId string) *PunchSpecialDateShiftBuilder {
  2394  	builder.shiftId = shiftId
  2395  	builder.shiftIdFlag = true
  2396  	return builder
  2397  }
  2398  
  2399  func (builder *PunchSpecialDateShiftBuilder) Build() *PunchSpecialDateShift {
  2400  	req := &PunchSpecialDateShift{}
  2401  	if builder.punchDayFlag {
  2402  		req.PunchDay = &builder.punchDay
  2403  
  2404  	}
  2405  	if builder.shiftIdFlag {
  2406  		req.ShiftId = &builder.shiftId
  2407  
  2408  	}
  2409  	return req
  2410  }
  2411  
  2412  type PunchTimeRule struct {
  2413  	OnTime                   *string `json:"on_time,omitempty"`                      // 上班时间
  2414  	OffTime                  *string `json:"off_time,omitempty"`                     // 下班时间
  2415  	LateMinutesAsLate        *int    `json:"late_minutes_as_late,omitempty"`         // 晚到多久记为迟到
  2416  	LateMinutesAsLack        *int    `json:"late_minutes_as_lack,omitempty"`         // 晚到多久记为缺卡
  2417  	OnAdvanceMinutes         *int    `json:"on_advance_minutes,omitempty"`           // 最早多久可打上班卡
  2418  	EarlyMinutesAsEarly      *int    `json:"early_minutes_as_early,omitempty"`       // 早退多久记为早退
  2419  	EarlyMinutesAsLack       *int    `json:"early_minutes_as_lack,omitempty"`        // 早退多久记为缺卡
  2420  	OffDelayMinutes          *int    `json:"off_delay_minutes,omitempty"`            // 最晚多久可打下班卡
  2421  	LateMinutesAsSeriousLate *int    `json:"late_minutes_as_serious_late,omitempty"` // 晚到多久记为严重迟到
  2422  }
  2423  
  2424  type PunchTimeRuleBuilder struct {
  2425  	onTime                       string // 上班时间
  2426  	onTimeFlag                   bool
  2427  	offTime                      string // 下班时间
  2428  	offTimeFlag                  bool
  2429  	lateMinutesAsLate            int // 晚到多久记为迟到
  2430  	lateMinutesAsLateFlag        bool
  2431  	lateMinutesAsLack            int // 晚到多久记为缺卡
  2432  	lateMinutesAsLackFlag        bool
  2433  	onAdvanceMinutes             int // 最早多久可打上班卡
  2434  	onAdvanceMinutesFlag         bool
  2435  	earlyMinutesAsEarly          int // 早退多久记为早退
  2436  	earlyMinutesAsEarlyFlag      bool
  2437  	earlyMinutesAsLack           int // 早退多久记为缺卡
  2438  	earlyMinutesAsLackFlag       bool
  2439  	offDelayMinutes              int // 最晚多久可打下班卡
  2440  	offDelayMinutesFlag          bool
  2441  	lateMinutesAsSeriousLate     int // 晚到多久记为严重迟到
  2442  	lateMinutesAsSeriousLateFlag bool
  2443  }
  2444  
  2445  func NewPunchTimeRuleBuilder() *PunchTimeRuleBuilder {
  2446  	builder := &PunchTimeRuleBuilder{}
  2447  	return builder
  2448  }
  2449  
  2450  // 上班时间
  2451  //
  2452  // 示例值:9:00
  2453  func (builder *PunchTimeRuleBuilder) OnTime(onTime string) *PunchTimeRuleBuilder {
  2454  	builder.onTime = onTime
  2455  	builder.onTimeFlag = true
  2456  	return builder
  2457  }
  2458  
  2459  // 下班时间
  2460  //
  2461  // 示例值:18:00, 第二天凌晨2点, 26:00
  2462  func (builder *PunchTimeRuleBuilder) OffTime(offTime string) *PunchTimeRuleBuilder {
  2463  	builder.offTime = offTime
  2464  	builder.offTimeFlag = true
  2465  	return builder
  2466  }
  2467  
  2468  // 晚到多久记为迟到
  2469  //
  2470  // 示例值:30
  2471  func (builder *PunchTimeRuleBuilder) LateMinutesAsLate(lateMinutesAsLate int) *PunchTimeRuleBuilder {
  2472  	builder.lateMinutesAsLate = lateMinutesAsLate
  2473  	builder.lateMinutesAsLateFlag = true
  2474  	return builder
  2475  }
  2476  
  2477  // 晚到多久记为缺卡
  2478  //
  2479  // 示例值:60
  2480  func (builder *PunchTimeRuleBuilder) LateMinutesAsLack(lateMinutesAsLack int) *PunchTimeRuleBuilder {
  2481  	builder.lateMinutesAsLack = lateMinutesAsLack
  2482  	builder.lateMinutesAsLackFlag = true
  2483  	return builder
  2484  }
  2485  
  2486  // 最早多久可打上班卡
  2487  //
  2488  // 示例值:60
  2489  func (builder *PunchTimeRuleBuilder) OnAdvanceMinutes(onAdvanceMinutes int) *PunchTimeRuleBuilder {
  2490  	builder.onAdvanceMinutes = onAdvanceMinutes
  2491  	builder.onAdvanceMinutesFlag = true
  2492  	return builder
  2493  }
  2494  
  2495  // 早退多久记为早退
  2496  //
  2497  // 示例值:30
  2498  func (builder *PunchTimeRuleBuilder) EarlyMinutesAsEarly(earlyMinutesAsEarly int) *PunchTimeRuleBuilder {
  2499  	builder.earlyMinutesAsEarly = earlyMinutesAsEarly
  2500  	builder.earlyMinutesAsEarlyFlag = true
  2501  	return builder
  2502  }
  2503  
  2504  // 早退多久记为缺卡
  2505  //
  2506  // 示例值:60
  2507  func (builder *PunchTimeRuleBuilder) EarlyMinutesAsLack(earlyMinutesAsLack int) *PunchTimeRuleBuilder {
  2508  	builder.earlyMinutesAsLack = earlyMinutesAsLack
  2509  	builder.earlyMinutesAsLackFlag = true
  2510  	return builder
  2511  }
  2512  
  2513  // 最晚多久可打下班卡
  2514  //
  2515  // 示例值:60
  2516  func (builder *PunchTimeRuleBuilder) OffDelayMinutes(offDelayMinutes int) *PunchTimeRuleBuilder {
  2517  	builder.offDelayMinutes = offDelayMinutes
  2518  	builder.offDelayMinutesFlag = true
  2519  	return builder
  2520  }
  2521  
  2522  // 晚到多久记为严重迟到
  2523  //
  2524  // 示例值:40
  2525  func (builder *PunchTimeRuleBuilder) LateMinutesAsSeriousLate(lateMinutesAsSeriousLate int) *PunchTimeRuleBuilder {
  2526  	builder.lateMinutesAsSeriousLate = lateMinutesAsSeriousLate
  2527  	builder.lateMinutesAsSeriousLateFlag = true
  2528  	return builder
  2529  }
  2530  
  2531  func (builder *PunchTimeRuleBuilder) Build() *PunchTimeRule {
  2532  	req := &PunchTimeRule{}
  2533  	if builder.onTimeFlag {
  2534  		req.OnTime = &builder.onTime
  2535  
  2536  	}
  2537  	if builder.offTimeFlag {
  2538  		req.OffTime = &builder.offTime
  2539  
  2540  	}
  2541  	if builder.lateMinutesAsLateFlag {
  2542  		req.LateMinutesAsLate = &builder.lateMinutesAsLate
  2543  
  2544  	}
  2545  	if builder.lateMinutesAsLackFlag {
  2546  		req.LateMinutesAsLack = &builder.lateMinutesAsLack
  2547  
  2548  	}
  2549  	if builder.onAdvanceMinutesFlag {
  2550  		req.OnAdvanceMinutes = &builder.onAdvanceMinutes
  2551  
  2552  	}
  2553  	if builder.earlyMinutesAsEarlyFlag {
  2554  		req.EarlyMinutesAsEarly = &builder.earlyMinutesAsEarly
  2555  
  2556  	}
  2557  	if builder.earlyMinutesAsLackFlag {
  2558  		req.EarlyMinutesAsLack = &builder.earlyMinutesAsLack
  2559  
  2560  	}
  2561  	if builder.offDelayMinutesFlag {
  2562  		req.OffDelayMinutes = &builder.offDelayMinutes
  2563  
  2564  	}
  2565  	if builder.lateMinutesAsSeriousLateFlag {
  2566  		req.LateMinutesAsSeriousLate = &builder.lateMinutesAsSeriousLate
  2567  
  2568  	}
  2569  	return req
  2570  }
  2571  
  2572  type RestRule struct {
  2573  	RestBeginTime *string `json:"rest_begin_time,omitempty"` // 休息开始
  2574  	RestEndTime   *string `json:"rest_end_time,omitempty"`   // 休息结束
  2575  }
  2576  
  2577  type RestRuleBuilder struct {
  2578  	restBeginTime     string // 休息开始
  2579  	restBeginTimeFlag bool
  2580  	restEndTime       string // 休息结束
  2581  	restEndTimeFlag   bool
  2582  }
  2583  
  2584  func NewRestRuleBuilder() *RestRuleBuilder {
  2585  	builder := &RestRuleBuilder{}
  2586  	return builder
  2587  }
  2588  
  2589  // 休息开始
  2590  //
  2591  // 示例值:13:00
  2592  func (builder *RestRuleBuilder) RestBeginTime(restBeginTime string) *RestRuleBuilder {
  2593  	builder.restBeginTime = restBeginTime
  2594  	builder.restBeginTimeFlag = true
  2595  	return builder
  2596  }
  2597  
  2598  // 休息结束
  2599  //
  2600  // 示例值:14:00
  2601  func (builder *RestRuleBuilder) RestEndTime(restEndTime string) *RestRuleBuilder {
  2602  	builder.restEndTime = restEndTime
  2603  	builder.restEndTimeFlag = true
  2604  	return builder
  2605  }
  2606  
  2607  func (builder *RestRuleBuilder) Build() *RestRule {
  2608  	req := &RestRule{}
  2609  	if builder.restBeginTimeFlag {
  2610  		req.RestBeginTime = &builder.restBeginTime
  2611  
  2612  	}
  2613  	if builder.restEndTimeFlag {
  2614  		req.RestEndTime = &builder.restEndTime
  2615  
  2616  	}
  2617  	return req
  2618  }
  2619  
  2620  type ScanWifiInfo struct {
  2621  	Ssid  *string `json:"ssid,omitempty"`  //
  2622  	Bssid *string `json:"bssid,omitempty"` //
  2623  }
  2624  
  2625  type ScanWifiInfoBuilder struct {
  2626  	ssid      string //
  2627  	ssidFlag  bool
  2628  	bssid     string //
  2629  	bssidFlag bool
  2630  }
  2631  
  2632  func NewScanWifiInfoBuilder() *ScanWifiInfoBuilder {
  2633  	builder := &ScanWifiInfoBuilder{}
  2634  	return builder
  2635  }
  2636  
  2637  //
  2638  //
  2639  // 示例值:
  2640  func (builder *ScanWifiInfoBuilder) Ssid(ssid string) *ScanWifiInfoBuilder {
  2641  	builder.ssid = ssid
  2642  	builder.ssidFlag = true
  2643  	return builder
  2644  }
  2645  
  2646  //
  2647  //
  2648  // 示例值:
  2649  func (builder *ScanWifiInfoBuilder) Bssid(bssid string) *ScanWifiInfoBuilder {
  2650  	builder.bssid = bssid
  2651  	builder.bssidFlag = true
  2652  	return builder
  2653  }
  2654  
  2655  func (builder *ScanWifiInfoBuilder) Build() *ScanWifiInfo {
  2656  	req := &ScanWifiInfo{}
  2657  	if builder.ssidFlag {
  2658  		req.Ssid = &builder.ssid
  2659  
  2660  	}
  2661  	if builder.bssidFlag {
  2662  		req.Bssid = &builder.bssid
  2663  
  2664  	}
  2665  	return req
  2666  }
  2667  
  2668  type Schedule struct {
  2669  	GroupId *string  `json:"group_id,omitempty"` // 考勤组名称
  2670  	Shifts  []string `json:"shifts,omitempty"`   // 班次列表
  2671  }
  2672  
  2673  type ScheduleBuilder struct {
  2674  	groupId     string // 考勤组名称
  2675  	groupIdFlag bool
  2676  	shifts      []string // 班次列表
  2677  	shiftsFlag  bool
  2678  }
  2679  
  2680  func NewScheduleBuilder() *ScheduleBuilder {
  2681  	builder := &ScheduleBuilder{}
  2682  	return builder
  2683  }
  2684  
  2685  // 考勤组名称
  2686  //
  2687  // 示例值:6919358778597097404
  2688  func (builder *ScheduleBuilder) GroupId(groupId string) *ScheduleBuilder {
  2689  	builder.groupId = groupId
  2690  	builder.groupIdFlag = true
  2691  	return builder
  2692  }
  2693  
  2694  // 班次列表
  2695  //
  2696  // 示例值:
  2697  func (builder *ScheduleBuilder) Shifts(shifts []string) *ScheduleBuilder {
  2698  	builder.shifts = shifts
  2699  	builder.shiftsFlag = true
  2700  	return builder
  2701  }
  2702  
  2703  func (builder *ScheduleBuilder) Build() *Schedule {
  2704  	req := &Schedule{}
  2705  	if builder.groupIdFlag {
  2706  		req.GroupId = &builder.groupId
  2707  
  2708  	}
  2709  	if builder.shiftsFlag {
  2710  		req.Shifts = builder.shifts
  2711  	}
  2712  	return req
  2713  }
  2714  
  2715  type Shift struct {
  2716  	ShiftId           *string              `json:"shift_id,omitempty"`              // 班次 ID
  2717  	ShiftName         *string              `json:"shift_name,omitempty"`            // 班次名称
  2718  	PunchTimes        *int                 `json:"punch_times,omitempty"`           // 打卡次数
  2719  	IsFlexible        *bool                `json:"is_flexible,omitempty"`           // 是否弹性打卡
  2720  	FlexibleMinutes   *int                 `json:"flexible_minutes,omitempty"`      // 弹性打卡时间,设置【上班最多可晚到】与【下班最多可早走】时间,如果不设置flexible_rule则生效
  2721  	FlexibleRule      []*FlexibleRule      `json:"flexible_rule,omitempty"`         // 弹性打卡时间设置
  2722  	NoNeedOff         *bool                `json:"no_need_off,omitempty"`           // 不需要打下班卡
  2723  	PunchTimeRule     []*PunchTimeRule     `json:"punch_time_rule,omitempty"`       // 打卡规则
  2724  	LateOffLateOnRule []*LateOffLateOnRule `json:"late_off_late_on_rule,omitempty"` // 晚走晚到规则
  2725  	RestTimeRule      []*RestRule          `json:"rest_time_rule,omitempty"`        // 休息规则
  2726  }
  2727  
  2728  type ShiftBuilder struct {
  2729  	shiftId               string // 班次 ID
  2730  	shiftIdFlag           bool
  2731  	shiftName             string // 班次名称
  2732  	shiftNameFlag         bool
  2733  	punchTimes            int // 打卡次数
  2734  	punchTimesFlag        bool
  2735  	isFlexible            bool // 是否弹性打卡
  2736  	isFlexibleFlag        bool
  2737  	flexibleMinutes       int // 弹性打卡时间,设置【上班最多可晚到】与【下班最多可早走】时间,如果不设置flexible_rule则生效
  2738  	flexibleMinutesFlag   bool
  2739  	flexibleRule          []*FlexibleRule // 弹性打卡时间设置
  2740  	flexibleRuleFlag      bool
  2741  	noNeedOff             bool // 不需要打下班卡
  2742  	noNeedOffFlag         bool
  2743  	punchTimeRule         []*PunchTimeRule // 打卡规则
  2744  	punchTimeRuleFlag     bool
  2745  	lateOffLateOnRule     []*LateOffLateOnRule // 晚走晚到规则
  2746  	lateOffLateOnRuleFlag bool
  2747  	restTimeRule          []*RestRule // 休息规则
  2748  	restTimeRuleFlag      bool
  2749  }
  2750  
  2751  func NewShiftBuilder() *ShiftBuilder {
  2752  	builder := &ShiftBuilder{}
  2753  	return builder
  2754  }
  2755  
  2756  // 班次 ID
  2757  //
  2758  // 示例值:6919358778597097404
  2759  func (builder *ShiftBuilder) ShiftId(shiftId string) *ShiftBuilder {
  2760  	builder.shiftId = shiftId
  2761  	builder.shiftIdFlag = true
  2762  	return builder
  2763  }
  2764  
  2765  // 班次名称
  2766  //
  2767  // 示例值:早班
  2768  func (builder *ShiftBuilder) ShiftName(shiftName string) *ShiftBuilder {
  2769  	builder.shiftName = shiftName
  2770  	builder.shiftNameFlag = true
  2771  	return builder
  2772  }
  2773  
  2774  // 打卡次数
  2775  //
  2776  // 示例值:1
  2777  func (builder *ShiftBuilder) PunchTimes(punchTimes int) *ShiftBuilder {
  2778  	builder.punchTimes = punchTimes
  2779  	builder.punchTimesFlag = true
  2780  	return builder
  2781  }
  2782  
  2783  // 是否弹性打卡
  2784  //
  2785  // 示例值:false
  2786  func (builder *ShiftBuilder) IsFlexible(isFlexible bool) *ShiftBuilder {
  2787  	builder.isFlexible = isFlexible
  2788  	builder.isFlexibleFlag = true
  2789  	return builder
  2790  }
  2791  
  2792  // 弹性打卡时间,设置【上班最多可晚到】与【下班最多可早走】时间,如果不设置flexible_rule则生效
  2793  //
  2794  // 示例值:60
  2795  func (builder *ShiftBuilder) FlexibleMinutes(flexibleMinutes int) *ShiftBuilder {
  2796  	builder.flexibleMinutes = flexibleMinutes
  2797  	builder.flexibleMinutesFlag = true
  2798  	return builder
  2799  }
  2800  
  2801  // 弹性打卡时间设置
  2802  //
  2803  // 示例值:
  2804  func (builder *ShiftBuilder) FlexibleRule(flexibleRule []*FlexibleRule) *ShiftBuilder {
  2805  	builder.flexibleRule = flexibleRule
  2806  	builder.flexibleRuleFlag = true
  2807  	return builder
  2808  }
  2809  
  2810  // 不需要打下班卡
  2811  //
  2812  // 示例值:true
  2813  func (builder *ShiftBuilder) NoNeedOff(noNeedOff bool) *ShiftBuilder {
  2814  	builder.noNeedOff = noNeedOff
  2815  	builder.noNeedOffFlag = true
  2816  	return builder
  2817  }
  2818  
  2819  // 打卡规则
  2820  //
  2821  // 示例值:
  2822  func (builder *ShiftBuilder) PunchTimeRule(punchTimeRule []*PunchTimeRule) *ShiftBuilder {
  2823  	builder.punchTimeRule = punchTimeRule
  2824  	builder.punchTimeRuleFlag = true
  2825  	return builder
  2826  }
  2827  
  2828  // 晚走晚到规则
  2829  //
  2830  // 示例值:
  2831  func (builder *ShiftBuilder) LateOffLateOnRule(lateOffLateOnRule []*LateOffLateOnRule) *ShiftBuilder {
  2832  	builder.lateOffLateOnRule = lateOffLateOnRule
  2833  	builder.lateOffLateOnRuleFlag = true
  2834  	return builder
  2835  }
  2836  
  2837  // 休息规则
  2838  //
  2839  // 示例值:
  2840  func (builder *ShiftBuilder) RestTimeRule(restTimeRule []*RestRule) *ShiftBuilder {
  2841  	builder.restTimeRule = restTimeRule
  2842  	builder.restTimeRuleFlag = true
  2843  	return builder
  2844  }
  2845  
  2846  func (builder *ShiftBuilder) Build() *Shift {
  2847  	req := &Shift{}
  2848  	if builder.shiftIdFlag {
  2849  		req.ShiftId = &builder.shiftId
  2850  
  2851  	}
  2852  	if builder.shiftNameFlag {
  2853  		req.ShiftName = &builder.shiftName
  2854  
  2855  	}
  2856  	if builder.punchTimesFlag {
  2857  		req.PunchTimes = &builder.punchTimes
  2858  
  2859  	}
  2860  	if builder.isFlexibleFlag {
  2861  		req.IsFlexible = &builder.isFlexible
  2862  
  2863  	}
  2864  	if builder.flexibleMinutesFlag {
  2865  		req.FlexibleMinutes = &builder.flexibleMinutes
  2866  
  2867  	}
  2868  	if builder.flexibleRuleFlag {
  2869  		req.FlexibleRule = builder.flexibleRule
  2870  	}
  2871  	if builder.noNeedOffFlag {
  2872  		req.NoNeedOff = &builder.noNeedOff
  2873  
  2874  	}
  2875  	if builder.punchTimeRuleFlag {
  2876  		req.PunchTimeRule = builder.punchTimeRule
  2877  	}
  2878  	if builder.lateOffLateOnRuleFlag {
  2879  		req.LateOffLateOnRule = builder.lateOffLateOnRule
  2880  	}
  2881  	if builder.restTimeRuleFlag {
  2882  		req.RestTimeRule = builder.restTimeRule
  2883  	}
  2884  	return req
  2885  }
  2886  
  2887  type StatusChange struct {
  2888  	Index             *int    `json:"index,omitempty"`              //
  2889  	BeforeStatus      *string `json:"before_status,omitempty"`      //
  2890  	CurrentStatus     *string `json:"current_status,omitempty"`     //
  2891  	BeforeSupplement  *string `json:"before_supplement,omitempty"`  //
  2892  	CurrentSupplement *string `json:"current_supplement,omitempty"` //
  2893  	WorkType          *string `json:"work_type,omitempty"`          //
  2894  }
  2895  
  2896  type StatusChangeBuilder struct {
  2897  	index                 int //
  2898  	indexFlag             bool
  2899  	beforeStatus          string //
  2900  	beforeStatusFlag      bool
  2901  	currentStatus         string //
  2902  	currentStatusFlag     bool
  2903  	beforeSupplement      string //
  2904  	beforeSupplementFlag  bool
  2905  	currentSupplement     string //
  2906  	currentSupplementFlag bool
  2907  	workType              string //
  2908  	workTypeFlag          bool
  2909  }
  2910  
  2911  func NewStatusChangeBuilder() *StatusChangeBuilder {
  2912  	builder := &StatusChangeBuilder{}
  2913  	return builder
  2914  }
  2915  
  2916  //
  2917  //
  2918  // 示例值:
  2919  func (builder *StatusChangeBuilder) Index(index int) *StatusChangeBuilder {
  2920  	builder.index = index
  2921  	builder.indexFlag = true
  2922  	return builder
  2923  }
  2924  
  2925  //
  2926  //
  2927  // 示例值:
  2928  func (builder *StatusChangeBuilder) BeforeStatus(beforeStatus string) *StatusChangeBuilder {
  2929  	builder.beforeStatus = beforeStatus
  2930  	builder.beforeStatusFlag = true
  2931  	return builder
  2932  }
  2933  
  2934  //
  2935  //
  2936  // 示例值:
  2937  func (builder *StatusChangeBuilder) CurrentStatus(currentStatus string) *StatusChangeBuilder {
  2938  	builder.currentStatus = currentStatus
  2939  	builder.currentStatusFlag = true
  2940  	return builder
  2941  }
  2942  
  2943  //
  2944  //
  2945  // 示例值:
  2946  func (builder *StatusChangeBuilder) BeforeSupplement(beforeSupplement string) *StatusChangeBuilder {
  2947  	builder.beforeSupplement = beforeSupplement
  2948  	builder.beforeSupplementFlag = true
  2949  	return builder
  2950  }
  2951  
  2952  //
  2953  //
  2954  // 示例值:
  2955  func (builder *StatusChangeBuilder) CurrentSupplement(currentSupplement string) *StatusChangeBuilder {
  2956  	builder.currentSupplement = currentSupplement
  2957  	builder.currentSupplementFlag = true
  2958  	return builder
  2959  }
  2960  
  2961  //
  2962  //
  2963  // 示例值:
  2964  func (builder *StatusChangeBuilder) WorkType(workType string) *StatusChangeBuilder {
  2965  	builder.workType = workType
  2966  	builder.workTypeFlag = true
  2967  	return builder
  2968  }
  2969  
  2970  func (builder *StatusChangeBuilder) Build() *StatusChange {
  2971  	req := &StatusChange{}
  2972  	if builder.indexFlag {
  2973  		req.Index = &builder.index
  2974  
  2975  	}
  2976  	if builder.beforeStatusFlag {
  2977  		req.BeforeStatus = &builder.beforeStatus
  2978  
  2979  	}
  2980  	if builder.currentStatusFlag {
  2981  		req.CurrentStatus = &builder.currentStatus
  2982  
  2983  	}
  2984  	if builder.beforeSupplementFlag {
  2985  		req.BeforeSupplement = &builder.beforeSupplement
  2986  
  2987  	}
  2988  	if builder.currentSupplementFlag {
  2989  		req.CurrentSupplement = &builder.currentSupplement
  2990  
  2991  	}
  2992  	if builder.workTypeFlag {
  2993  		req.WorkType = &builder.workType
  2994  
  2995  	}
  2996  	return req
  2997  }
  2998  
  2999  type TaskResult struct {
  3000  	CheckInRecordId          *string   `json:"check_in_record_id,omitempty"`          // 上班打卡记录 ID
  3001  	CheckInRecord            *UserFlow `json:"check_in_record,omitempty"`             // 上班打卡记录
  3002  	CheckOutRecordId         *string   `json:"check_out_record_id,omitempty"`         // 下班打卡记录 ID
  3003  	CheckOutRecord           *UserFlow `json:"check_out_record,omitempty"`            // 下班打卡记录
  3004  	CheckInResult            *string   `json:"check_in_result,omitempty"`             // 上班打卡结果
  3005  	CheckOutResult           *string   `json:"check_out_result,omitempty"`            // 下班打卡结果
  3006  	CheckInResultSupplement  *string   `json:"check_in_result_supplement,omitempty"`  // 上班打卡结果补充
  3007  	CheckOutResultSupplement *string   `json:"check_out_result_supplement,omitempty"` // 下班打卡结果补充
  3008  	CheckInShiftTime         *string   `json:"check_in_shift_time,omitempty"`         // 上班打卡时间
  3009  	CheckOutShiftTime        *string   `json:"check_out_shift_time,omitempty"`        // 下班打卡时间
  3010  }
  3011  
  3012  type TaskResultBuilder struct {
  3013  	checkInRecordId              string // 上班打卡记录 ID
  3014  	checkInRecordIdFlag          bool
  3015  	checkInRecord                *UserFlow // 上班打卡记录
  3016  	checkInRecordFlag            bool
  3017  	checkOutRecordId             string // 下班打卡记录 ID
  3018  	checkOutRecordIdFlag         bool
  3019  	checkOutRecord               *UserFlow // 下班打卡记录
  3020  	checkOutRecordFlag           bool
  3021  	checkInResult                string // 上班打卡结果
  3022  	checkInResultFlag            bool
  3023  	checkOutResult               string // 下班打卡结果
  3024  	checkOutResultFlag           bool
  3025  	checkInResultSupplement      string // 上班打卡结果补充
  3026  	checkInResultSupplementFlag  bool
  3027  	checkOutResultSupplement     string // 下班打卡结果补充
  3028  	checkOutResultSupplementFlag bool
  3029  	checkInShiftTime             string // 上班打卡时间
  3030  	checkInShiftTimeFlag         bool
  3031  	checkOutShiftTime            string // 下班打卡时间
  3032  	checkOutShiftTimeFlag        bool
  3033  }
  3034  
  3035  func NewTaskResultBuilder() *TaskResultBuilder {
  3036  	builder := &TaskResultBuilder{}
  3037  	return builder
  3038  }
  3039  
  3040  // 上班打卡记录 ID
  3041  //
  3042  // 示例值:6709359313699356941
  3043  func (builder *TaskResultBuilder) CheckInRecordId(checkInRecordId string) *TaskResultBuilder {
  3044  	builder.checkInRecordId = checkInRecordId
  3045  	builder.checkInRecordIdFlag = true
  3046  	return builder
  3047  }
  3048  
  3049  // 上班打卡记录
  3050  //
  3051  // 示例值:
  3052  func (builder *TaskResultBuilder) CheckInRecord(checkInRecord *UserFlow) *TaskResultBuilder {
  3053  	builder.checkInRecord = checkInRecord
  3054  	builder.checkInRecordFlag = true
  3055  	return builder
  3056  }
  3057  
  3058  // 下班打卡记录 ID
  3059  //
  3060  // 示例值:6709359313699356942
  3061  func (builder *TaskResultBuilder) CheckOutRecordId(checkOutRecordId string) *TaskResultBuilder {
  3062  	builder.checkOutRecordId = checkOutRecordId
  3063  	builder.checkOutRecordIdFlag = true
  3064  	return builder
  3065  }
  3066  
  3067  // 下班打卡记录
  3068  //
  3069  // 示例值:
  3070  func (builder *TaskResultBuilder) CheckOutRecord(checkOutRecord *UserFlow) *TaskResultBuilder {
  3071  	builder.checkOutRecord = checkOutRecord
  3072  	builder.checkOutRecordFlag = true
  3073  	return builder
  3074  }
  3075  
  3076  // 上班打卡结果
  3077  //
  3078  // 示例值:SystemCheck
  3079  func (builder *TaskResultBuilder) CheckInResult(checkInResult string) *TaskResultBuilder {
  3080  	builder.checkInResult = checkInResult
  3081  	builder.checkInResultFlag = true
  3082  	return builder
  3083  }
  3084  
  3085  // 下班打卡结果
  3086  //
  3087  // 示例值:SystemCheck
  3088  func (builder *TaskResultBuilder) CheckOutResult(checkOutResult string) *TaskResultBuilder {
  3089  	builder.checkOutResult = checkOutResult
  3090  	builder.checkOutResultFlag = true
  3091  	return builder
  3092  }
  3093  
  3094  // 上班打卡结果补充
  3095  //
  3096  // 示例值:None
  3097  func (builder *TaskResultBuilder) CheckInResultSupplement(checkInResultSupplement string) *TaskResultBuilder {
  3098  	builder.checkInResultSupplement = checkInResultSupplement
  3099  	builder.checkInResultSupplementFlag = true
  3100  	return builder
  3101  }
  3102  
  3103  // 下班打卡结果补充
  3104  //
  3105  // 示例值:None
  3106  func (builder *TaskResultBuilder) CheckOutResultSupplement(checkOutResultSupplement string) *TaskResultBuilder {
  3107  	builder.checkOutResultSupplement = checkOutResultSupplement
  3108  	builder.checkOutResultSupplementFlag = true
  3109  	return builder
  3110  }
  3111  
  3112  // 上班打卡时间
  3113  //
  3114  // 示例值:1609722000
  3115  func (builder *TaskResultBuilder) CheckInShiftTime(checkInShiftTime string) *TaskResultBuilder {
  3116  	builder.checkInShiftTime = checkInShiftTime
  3117  	builder.checkInShiftTimeFlag = true
  3118  	return builder
  3119  }
  3120  
  3121  // 下班打卡时间
  3122  //
  3123  // 示例值:1609754400
  3124  func (builder *TaskResultBuilder) CheckOutShiftTime(checkOutShiftTime string) *TaskResultBuilder {
  3125  	builder.checkOutShiftTime = checkOutShiftTime
  3126  	builder.checkOutShiftTimeFlag = true
  3127  	return builder
  3128  }
  3129  
  3130  func (builder *TaskResultBuilder) Build() *TaskResult {
  3131  	req := &TaskResult{}
  3132  	if builder.checkInRecordIdFlag {
  3133  		req.CheckInRecordId = &builder.checkInRecordId
  3134  
  3135  	}
  3136  	if builder.checkInRecordFlag {
  3137  		req.CheckInRecord = builder.checkInRecord
  3138  	}
  3139  	if builder.checkOutRecordIdFlag {
  3140  		req.CheckOutRecordId = &builder.checkOutRecordId
  3141  
  3142  	}
  3143  	if builder.checkOutRecordFlag {
  3144  		req.CheckOutRecord = builder.checkOutRecord
  3145  	}
  3146  	if builder.checkInResultFlag {
  3147  		req.CheckInResult = &builder.checkInResult
  3148  
  3149  	}
  3150  	if builder.checkOutResultFlag {
  3151  		req.CheckOutResult = &builder.checkOutResult
  3152  
  3153  	}
  3154  	if builder.checkInResultSupplementFlag {
  3155  		req.CheckInResultSupplement = &builder.checkInResultSupplement
  3156  
  3157  	}
  3158  	if builder.checkOutResultSupplementFlag {
  3159  		req.CheckOutResultSupplement = &builder.checkOutResultSupplement
  3160  
  3161  	}
  3162  	if builder.checkInShiftTimeFlag {
  3163  		req.CheckInShiftTime = &builder.checkInShiftTime
  3164  
  3165  	}
  3166  	if builder.checkOutShiftTimeFlag {
  3167  		req.CheckOutShiftTime = &builder.checkOutShiftTime
  3168  
  3169  	}
  3170  	return req
  3171  }
  3172  
  3173  type UserAllowedRemedy struct {
  3174  	UserId          *string `json:"user_id,omitempty"`           // 用户 ID
  3175  	RemedyDate      *int    `json:"remedy_date,omitempty"`       // 补卡日期
  3176  	IsFreePunch     *bool   `json:"is_free_punch,omitempty"`     // 是否为自由班次,若为自由班次,则不用选择考虑第几次上下班,直接选择补卡时间即可
  3177  	PunchNo         *int    `json:"punch_no,omitempty"`          // 第几次上下班,0:第 1 次上下班,1:第 2 次上下班,2:第 3 次上下班
  3178  	WorkType        *int    `json:"work_type,omitempty"`         // 上班 / 下班,1:上班,2:下班
  3179  	PunchStatus     *string `json:"punch_status,omitempty"`      // 打卡状态,Early:早退,Late:迟到,Lack:缺卡
  3180  	NormalPunchTime *string `json:"normal_punch_time,omitempty"` // 正常的应打卡时间,时间格式为 yyyy-MM-dd HH:mm
  3181  	RemedyStartTime *string `json:"remedy_start_time,omitempty"` // 可选的补卡时间的最小值,时间格式为 yyyy-MM-dd HH:mm
  3182  	RemedyEndTime   *string `json:"remedy_end_time,omitempty"`   // 可选的补卡时间的最大值,时间格式为 yyyy-MM-dd HH:mm
  3183  }
  3184  
  3185  type UserAllowedRemedyBuilder struct {
  3186  	userId              string // 用户 ID
  3187  	userIdFlag          bool
  3188  	remedyDate          int // 补卡日期
  3189  	remedyDateFlag      bool
  3190  	isFreePunch         bool // 是否为自由班次,若为自由班次,则不用选择考虑第几次上下班,直接选择补卡时间即可
  3191  	isFreePunchFlag     bool
  3192  	punchNo             int // 第几次上下班,0:第 1 次上下班,1:第 2 次上下班,2:第 3 次上下班
  3193  	punchNoFlag         bool
  3194  	workType            int // 上班 / 下班,1:上班,2:下班
  3195  	workTypeFlag        bool
  3196  	punchStatus         string // 打卡状态,Early:早退,Late:迟到,Lack:缺卡
  3197  	punchStatusFlag     bool
  3198  	normalPunchTime     string // 正常的应打卡时间,时间格式为 yyyy-MM-dd HH:mm
  3199  	normalPunchTimeFlag bool
  3200  	remedyStartTime     string // 可选的补卡时间的最小值,时间格式为 yyyy-MM-dd HH:mm
  3201  	remedyStartTimeFlag bool
  3202  	remedyEndTime       string // 可选的补卡时间的最大值,时间格式为 yyyy-MM-dd HH:mm
  3203  	remedyEndTimeFlag   bool
  3204  }
  3205  
  3206  func NewUserAllowedRemedyBuilder() *UserAllowedRemedyBuilder {
  3207  	builder := &UserAllowedRemedyBuilder{}
  3208  	return builder
  3209  }
  3210  
  3211  // 用户 ID
  3212  //
  3213  // 示例值:abd754f7
  3214  func (builder *UserAllowedRemedyBuilder) UserId(userId string) *UserAllowedRemedyBuilder {
  3215  	builder.userId = userId
  3216  	builder.userIdFlag = true
  3217  	return builder
  3218  }
  3219  
  3220  // 补卡日期
  3221  //
  3222  // 示例值:20210104
  3223  func (builder *UserAllowedRemedyBuilder) RemedyDate(remedyDate int) *UserAllowedRemedyBuilder {
  3224  	builder.remedyDate = remedyDate
  3225  	builder.remedyDateFlag = true
  3226  	return builder
  3227  }
  3228  
  3229  // 是否为自由班次,若为自由班次,则不用选择考虑第几次上下班,直接选择补卡时间即可
  3230  //
  3231  // 示例值:false
  3232  func (builder *UserAllowedRemedyBuilder) IsFreePunch(isFreePunch bool) *UserAllowedRemedyBuilder {
  3233  	builder.isFreePunch = isFreePunch
  3234  	builder.isFreePunchFlag = true
  3235  	return builder
  3236  }
  3237  
  3238  // 第几次上下班,0:第 1 次上下班,1:第 2 次上下班,2:第 3 次上下班
  3239  //
  3240  // 示例值:0
  3241  func (builder *UserAllowedRemedyBuilder) PunchNo(punchNo int) *UserAllowedRemedyBuilder {
  3242  	builder.punchNo = punchNo
  3243  	builder.punchNoFlag = true
  3244  	return builder
  3245  }
  3246  
  3247  // 上班 / 下班,1:上班,2:下班
  3248  //
  3249  // 示例值:1
  3250  func (builder *UserAllowedRemedyBuilder) WorkType(workType int) *UserAllowedRemedyBuilder {
  3251  	builder.workType = workType
  3252  	builder.workTypeFlag = true
  3253  	return builder
  3254  }
  3255  
  3256  // 打卡状态,Early:早退,Late:迟到,Lack:缺卡
  3257  //
  3258  // 示例值:Lack
  3259  func (builder *UserAllowedRemedyBuilder) PunchStatus(punchStatus string) *UserAllowedRemedyBuilder {
  3260  	builder.punchStatus = punchStatus
  3261  	builder.punchStatusFlag = true
  3262  	return builder
  3263  }
  3264  
  3265  // 正常的应打卡时间,时间格式为 yyyy-MM-dd HH:mm
  3266  //
  3267  // 示例值:2021-07-01 09:00
  3268  func (builder *UserAllowedRemedyBuilder) NormalPunchTime(normalPunchTime string) *UserAllowedRemedyBuilder {
  3269  	builder.normalPunchTime = normalPunchTime
  3270  	builder.normalPunchTimeFlag = true
  3271  	return builder
  3272  }
  3273  
  3274  // 可选的补卡时间的最小值,时间格式为 yyyy-MM-dd HH:mm
  3275  //
  3276  // 示例值:2021-07-01 08:00
  3277  func (builder *UserAllowedRemedyBuilder) RemedyStartTime(remedyStartTime string) *UserAllowedRemedyBuilder {
  3278  	builder.remedyStartTime = remedyStartTime
  3279  	builder.remedyStartTimeFlag = true
  3280  	return builder
  3281  }
  3282  
  3283  // 可选的补卡时间的最大值,时间格式为 yyyy-MM-dd HH:mm
  3284  //
  3285  // 示例值:2021-07-01 10:00
  3286  func (builder *UserAllowedRemedyBuilder) RemedyEndTime(remedyEndTime string) *UserAllowedRemedyBuilder {
  3287  	builder.remedyEndTime = remedyEndTime
  3288  	builder.remedyEndTimeFlag = true
  3289  	return builder
  3290  }
  3291  
  3292  func (builder *UserAllowedRemedyBuilder) Build() *UserAllowedRemedy {
  3293  	req := &UserAllowedRemedy{}
  3294  	if builder.userIdFlag {
  3295  		req.UserId = &builder.userId
  3296  
  3297  	}
  3298  	if builder.remedyDateFlag {
  3299  		req.RemedyDate = &builder.remedyDate
  3300  
  3301  	}
  3302  	if builder.isFreePunchFlag {
  3303  		req.IsFreePunch = &builder.isFreePunch
  3304  
  3305  	}
  3306  	if builder.punchNoFlag {
  3307  		req.PunchNo = &builder.punchNo
  3308  
  3309  	}
  3310  	if builder.workTypeFlag {
  3311  		req.WorkType = &builder.workType
  3312  
  3313  	}
  3314  	if builder.punchStatusFlag {
  3315  		req.PunchStatus = &builder.punchStatus
  3316  
  3317  	}
  3318  	if builder.normalPunchTimeFlag {
  3319  		req.NormalPunchTime = &builder.normalPunchTime
  3320  
  3321  	}
  3322  	if builder.remedyStartTimeFlag {
  3323  		req.RemedyStartTime = &builder.remedyStartTime
  3324  
  3325  	}
  3326  	if builder.remedyEndTimeFlag {
  3327  		req.RemedyEndTime = &builder.remedyEndTime
  3328  
  3329  	}
  3330  	return req
  3331  }
  3332  
  3333  type UserApproval struct {
  3334  	UserId        *string             `json:"user_id,omitempty"`        // 审批用户 ID
  3335  	Date          *string             `json:"date,omitempty"`           // 审批作用日期
  3336  	Outs          []*UserOut          `json:"outs,omitempty"`           // 外出信息
  3337  	Leaves        []*UserLeave        `json:"leaves,omitempty"`         // 请假信息
  3338  	OvertimeWorks []*UserOvertimeWork `json:"overtime_works,omitempty"` // 加班信息
  3339  	Trips         []*UserTrip         `json:"trips,omitempty"`          // 出差信息
  3340  }
  3341  
  3342  type UserApprovalBuilder struct {
  3343  	userId            string // 审批用户 ID
  3344  	userIdFlag        bool
  3345  	date              string // 审批作用日期
  3346  	dateFlag          bool
  3347  	outs              []*UserOut // 外出信息
  3348  	outsFlag          bool
  3349  	leaves            []*UserLeave // 请假信息
  3350  	leavesFlag        bool
  3351  	overtimeWorks     []*UserOvertimeWork // 加班信息
  3352  	overtimeWorksFlag bool
  3353  	trips             []*UserTrip // 出差信息
  3354  	tripsFlag         bool
  3355  }
  3356  
  3357  func NewUserApprovalBuilder() *UserApprovalBuilder {
  3358  	builder := &UserApprovalBuilder{}
  3359  	return builder
  3360  }
  3361  
  3362  // 审批用户 ID
  3363  //
  3364  // 示例值:abd754f7
  3365  func (builder *UserApprovalBuilder) UserId(userId string) *UserApprovalBuilder {
  3366  	builder.userId = userId
  3367  	builder.userIdFlag = true
  3368  	return builder
  3369  }
  3370  
  3371  // 审批作用日期
  3372  //
  3373  // 示例值:20210104
  3374  func (builder *UserApprovalBuilder) Date(date string) *UserApprovalBuilder {
  3375  	builder.date = date
  3376  	builder.dateFlag = true
  3377  	return builder
  3378  }
  3379  
  3380  // 外出信息
  3381  //
  3382  // 示例值:
  3383  func (builder *UserApprovalBuilder) Outs(outs []*UserOut) *UserApprovalBuilder {
  3384  	builder.outs = outs
  3385  	builder.outsFlag = true
  3386  	return builder
  3387  }
  3388  
  3389  // 请假信息
  3390  //
  3391  // 示例值:
  3392  func (builder *UserApprovalBuilder) Leaves(leaves []*UserLeave) *UserApprovalBuilder {
  3393  	builder.leaves = leaves
  3394  	builder.leavesFlag = true
  3395  	return builder
  3396  }
  3397  
  3398  // 加班信息
  3399  //
  3400  // 示例值:
  3401  func (builder *UserApprovalBuilder) OvertimeWorks(overtimeWorks []*UserOvertimeWork) *UserApprovalBuilder {
  3402  	builder.overtimeWorks = overtimeWorks
  3403  	builder.overtimeWorksFlag = true
  3404  	return builder
  3405  }
  3406  
  3407  // 出差信息
  3408  //
  3409  // 示例值:
  3410  func (builder *UserApprovalBuilder) Trips(trips []*UserTrip) *UserApprovalBuilder {
  3411  	builder.trips = trips
  3412  	builder.tripsFlag = true
  3413  	return builder
  3414  }
  3415  
  3416  func (builder *UserApprovalBuilder) Build() *UserApproval {
  3417  	req := &UserApproval{}
  3418  	if builder.userIdFlag {
  3419  		req.UserId = &builder.userId
  3420  
  3421  	}
  3422  	if builder.dateFlag {
  3423  		req.Date = &builder.date
  3424  
  3425  	}
  3426  	if builder.outsFlag {
  3427  		req.Outs = builder.outs
  3428  	}
  3429  	if builder.leavesFlag {
  3430  		req.Leaves = builder.leaves
  3431  	}
  3432  	if builder.overtimeWorksFlag {
  3433  		req.OvertimeWorks = builder.overtimeWorks
  3434  	}
  3435  	if builder.tripsFlag {
  3436  		req.Trips = builder.trips
  3437  	}
  3438  	return req
  3439  }
  3440  
  3441  type UserDailyShift struct {
  3442  	GroupId *string `json:"group_id,omitempty"` // 考勤组 ID,获取方式:1)[创建或修改考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/create) 2)[按名称查询考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/search) 3)[获取打卡结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task/query)
  3443  	ShiftId *string `json:"shift_id,omitempty"` // 班次 ID,获取方式:1)[按名称查询班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/query) 2)[创建班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/create)
  3444  	Month   *int    `json:"month,omitempty"`    // 月份
  3445  	UserId  *string `json:"user_id,omitempty"`  // 用户 ID
  3446  	DayNo   *int    `json:"day_no,omitempty"`   // 日期
  3447  }
  3448  
  3449  type UserDailyShiftBuilder struct {
  3450  	groupId     string // 考勤组 ID,获取方式:1)[创建或修改考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/create) 2)[按名称查询考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/search) 3)[获取打卡结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task/query)
  3451  	groupIdFlag bool
  3452  	shiftId     string // 班次 ID,获取方式:1)[按名称查询班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/query) 2)[创建班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/create)
  3453  	shiftIdFlag bool
  3454  	month       int // 月份
  3455  	monthFlag   bool
  3456  	userId      string // 用户 ID
  3457  	userIdFlag  bool
  3458  	dayNo       int // 日期
  3459  	dayNoFlag   bool
  3460  }
  3461  
  3462  func NewUserDailyShiftBuilder() *UserDailyShiftBuilder {
  3463  	builder := &UserDailyShiftBuilder{}
  3464  	return builder
  3465  }
  3466  
  3467  // 考勤组 ID,获取方式:1)[创建或修改考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/create) 2)[按名称查询考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/search) 3)[获取打卡结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task/query)
  3468  //
  3469  // 示例值:6737202939523236110
  3470  func (builder *UserDailyShiftBuilder) GroupId(groupId string) *UserDailyShiftBuilder {
  3471  	builder.groupId = groupId
  3472  	builder.groupIdFlag = true
  3473  	return builder
  3474  }
  3475  
  3476  // 班次 ID,获取方式:1)[按名称查询班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/query) 2)[创建班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/create)
  3477  //
  3478  // 示例值:6753520403404030215
  3479  func (builder *UserDailyShiftBuilder) ShiftId(shiftId string) *UserDailyShiftBuilder {
  3480  	builder.shiftId = shiftId
  3481  	builder.shiftIdFlag = true
  3482  	return builder
  3483  }
  3484  
  3485  // 月份
  3486  //
  3487  // 示例值:202101
  3488  func (builder *UserDailyShiftBuilder) Month(month int) *UserDailyShiftBuilder {
  3489  	builder.month = month
  3490  	builder.monthFlag = true
  3491  	return builder
  3492  }
  3493  
  3494  // 用户 ID
  3495  //
  3496  // 示例值:abd754f7
  3497  func (builder *UserDailyShiftBuilder) UserId(userId string) *UserDailyShiftBuilder {
  3498  	builder.userId = userId
  3499  	builder.userIdFlag = true
  3500  	return builder
  3501  }
  3502  
  3503  // 日期
  3504  //
  3505  // 示例值:21
  3506  func (builder *UserDailyShiftBuilder) DayNo(dayNo int) *UserDailyShiftBuilder {
  3507  	builder.dayNo = dayNo
  3508  	builder.dayNoFlag = true
  3509  	return builder
  3510  }
  3511  
  3512  func (builder *UserDailyShiftBuilder) Build() *UserDailyShift {
  3513  	req := &UserDailyShift{}
  3514  	if builder.groupIdFlag {
  3515  		req.GroupId = &builder.groupId
  3516  
  3517  	}
  3518  	if builder.shiftIdFlag {
  3519  		req.ShiftId = &builder.shiftId
  3520  
  3521  	}
  3522  	if builder.monthFlag {
  3523  		req.Month = &builder.month
  3524  
  3525  	}
  3526  	if builder.userIdFlag {
  3527  		req.UserId = &builder.userId
  3528  
  3529  	}
  3530  	if builder.dayNoFlag {
  3531  		req.DayNo = &builder.dayNo
  3532  
  3533  	}
  3534  	return req
  3535  }
  3536  
  3537  type UserFlow struct {
  3538  	UserId       *string `json:"user_id,omitempty"`       // 用户 ID
  3539  	CreatorId    *string `json:"creator_id,omitempty"`    // 记录创建者 ID
  3540  	LocationName *string `json:"location_name,omitempty"` // 打卡位置名称信息
  3541  	CheckTime    *string `json:"check_time,omitempty"`    // 打卡时间,精确到秒的时间戳
  3542  	Comment      *string `json:"comment,omitempty"`       // 打卡备注
  3543  	RecordId     *string `json:"record_id,omitempty"`     // 打卡记录 ID
  3544  
  3545  	Ssid      *string  `json:"ssid,omitempty"`       // 打卡 Wi-Fi 的 SSID
  3546  	Bssid     *string  `json:"bssid,omitempty"`      // 打卡 Wi-Fi 的 MAC 地址
  3547  	IsField   *bool    `json:"is_field,omitempty"`   // 是否为外勤打卡
  3548  	IsWifi    *bool    `json:"is_wifi,omitempty"`    // 是否为 Wi-Fi 打卡
  3549  	Type      *int     `json:"type,omitempty"`       // 记录生成方式
  3550  	PhotoUrls []string `json:"photo_urls,omitempty"` // 打卡照片列表
  3551  
  3552  	CheckResult *string `json:"check_result,omitempty"` // 打卡结果
  3553  }
  3554  
  3555  type UserFlowBuilder struct {
  3556  	userId           string // 用户 ID
  3557  	userIdFlag       bool
  3558  	creatorId        string // 记录创建者 ID
  3559  	creatorIdFlag    bool
  3560  	locationName     string // 打卡位置名称信息
  3561  	locationNameFlag bool
  3562  	checkTime        string // 打卡时间,精确到秒的时间戳
  3563  	checkTimeFlag    bool
  3564  	comment          string // 打卡备注
  3565  	commentFlag      bool
  3566  	recordId         string // 打卡记录 ID
  3567  	recordIdFlag     bool
  3568  
  3569  	ssid          string // 打卡 Wi-Fi 的 SSID
  3570  	ssidFlag      bool
  3571  	bssid         string // 打卡 Wi-Fi 的 MAC 地址
  3572  	bssidFlag     bool
  3573  	isField       bool // 是否为外勤打卡
  3574  	isFieldFlag   bool
  3575  	isWifi        bool // 是否为 Wi-Fi 打卡
  3576  	isWifiFlag    bool
  3577  	type_         int // 记录生成方式
  3578  	typeFlag      bool
  3579  	photoUrls     []string // 打卡照片列表
  3580  	photoUrlsFlag bool
  3581  
  3582  	checkResult     string // 打卡结果
  3583  	checkResultFlag bool
  3584  }
  3585  
  3586  func NewUserFlowBuilder() *UserFlowBuilder {
  3587  	builder := &UserFlowBuilder{}
  3588  	return builder
  3589  }
  3590  
  3591  // 用户 ID
  3592  //
  3593  // 示例值:abd754f7
  3594  func (builder *UserFlowBuilder) UserId(userId string) *UserFlowBuilder {
  3595  	builder.userId = userId
  3596  	builder.userIdFlag = true
  3597  	return builder
  3598  }
  3599  
  3600  // 记录创建者 ID
  3601  //
  3602  // 示例值:abd754f7
  3603  func (builder *UserFlowBuilder) CreatorId(creatorId string) *UserFlowBuilder {
  3604  	builder.creatorId = creatorId
  3605  	builder.creatorIdFlag = true
  3606  	return builder
  3607  }
  3608  
  3609  // 打卡位置名称信息
  3610  //
  3611  // 示例值:西溪八方城
  3612  func (builder *UserFlowBuilder) LocationName(locationName string) *UserFlowBuilder {
  3613  	builder.locationName = locationName
  3614  	builder.locationNameFlag = true
  3615  	return builder
  3616  }
  3617  
  3618  // 打卡时间,精确到秒的时间戳
  3619  //
  3620  // 示例值:1611476284
  3621  func (builder *UserFlowBuilder) CheckTime(checkTime string) *UserFlowBuilder {
  3622  	builder.checkTime = checkTime
  3623  	builder.checkTimeFlag = true
  3624  	return builder
  3625  }
  3626  
  3627  // 打卡备注
  3628  //
  3629  // 示例值:上班打卡
  3630  func (builder *UserFlowBuilder) Comment(comment string) *UserFlowBuilder {
  3631  	builder.comment = comment
  3632  	builder.commentFlag = true
  3633  	return builder
  3634  }
  3635  
  3636  // 打卡记录 ID
  3637  //
  3638  // 示例值:6709359313699356941
  3639  func (builder *UserFlowBuilder) RecordId(recordId string) *UserFlowBuilder {
  3640  	builder.recordId = recordId
  3641  	builder.recordIdFlag = true
  3642  	return builder
  3643  }
  3644  
  3645  // 打卡 Wi-Fi 的 SSID
  3646  //
  3647  // 示例值:b0:b8:67:5c:1d:72
  3648  func (builder *UserFlowBuilder) Ssid(ssid string) *UserFlowBuilder {
  3649  	builder.ssid = ssid
  3650  	builder.ssidFlag = true
  3651  	return builder
  3652  }
  3653  
  3654  // 打卡 Wi-Fi 的 MAC 地址
  3655  //
  3656  // 示例值:b0:b8:67:5c:1d:72
  3657  func (builder *UserFlowBuilder) Bssid(bssid string) *UserFlowBuilder {
  3658  	builder.bssid = bssid
  3659  	builder.bssidFlag = true
  3660  	return builder
  3661  }
  3662  
  3663  // 是否为外勤打卡
  3664  //
  3665  // 示例值:true
  3666  func (builder *UserFlowBuilder) IsField(isField bool) *UserFlowBuilder {
  3667  	builder.isField = isField
  3668  	builder.isFieldFlag = true
  3669  	return builder
  3670  }
  3671  
  3672  // 是否为 Wi-Fi 打卡
  3673  //
  3674  // 示例值:true
  3675  func (builder *UserFlowBuilder) IsWifi(isWifi bool) *UserFlowBuilder {
  3676  	builder.isWifi = isWifi
  3677  	builder.isWifiFlag = true
  3678  	return builder
  3679  }
  3680  
  3681  // 记录生成方式
  3682  //
  3683  // 示例值:0
  3684  func (builder *UserFlowBuilder) Type(type_ int) *UserFlowBuilder {
  3685  	builder.type_ = type_
  3686  	builder.typeFlag = true
  3687  	return builder
  3688  }
  3689  
  3690  // 打卡照片列表
  3691  //
  3692  // 示例值:https://time.clockin.biz/manage/download/6840389754748502021
  3693  func (builder *UserFlowBuilder) PhotoUrls(photoUrls []string) *UserFlowBuilder {
  3694  	builder.photoUrls = photoUrls
  3695  	builder.photoUrlsFlag = true
  3696  	return builder
  3697  }
  3698  
  3699  // 打卡结果
  3700  //
  3701  // 示例值:Invalid
  3702  func (builder *UserFlowBuilder) CheckResult(checkResult string) *UserFlowBuilder {
  3703  	builder.checkResult = checkResult
  3704  	builder.checkResultFlag = true
  3705  	return builder
  3706  }
  3707  
  3708  func (builder *UserFlowBuilder) Build() *UserFlow {
  3709  	req := &UserFlow{}
  3710  	if builder.userIdFlag {
  3711  		req.UserId = &builder.userId
  3712  
  3713  	}
  3714  	if builder.creatorIdFlag {
  3715  		req.CreatorId = &builder.creatorId
  3716  
  3717  	}
  3718  	if builder.locationNameFlag {
  3719  		req.LocationName = &builder.locationName
  3720  
  3721  	}
  3722  	if builder.checkTimeFlag {
  3723  		req.CheckTime = &builder.checkTime
  3724  
  3725  	}
  3726  	if builder.commentFlag {
  3727  		req.Comment = &builder.comment
  3728  
  3729  	}
  3730  	if builder.recordIdFlag {
  3731  		req.RecordId = &builder.recordId
  3732  
  3733  	}
  3734  
  3735  	if builder.ssidFlag {
  3736  		req.Ssid = &builder.ssid
  3737  
  3738  	}
  3739  	if builder.bssidFlag {
  3740  		req.Bssid = &builder.bssid
  3741  
  3742  	}
  3743  	if builder.isFieldFlag {
  3744  		req.IsField = &builder.isField
  3745  
  3746  	}
  3747  	if builder.isWifiFlag {
  3748  		req.IsWifi = &builder.isWifi
  3749  
  3750  	}
  3751  	if builder.typeFlag {
  3752  		req.Type = &builder.type_
  3753  
  3754  	}
  3755  	if builder.photoUrlsFlag {
  3756  		req.PhotoUrls = builder.photoUrls
  3757  	}
  3758  
  3759  	if builder.checkResultFlag {
  3760  		req.CheckResult = &builder.checkResult
  3761  
  3762  	}
  3763  	return req
  3764  }
  3765  
  3766  type UserId struct {
  3767  	UserId  *string `json:"user_id,omitempty"`  //
  3768  	OpenId  *string `json:"open_id,omitempty"`  //
  3769  	UnionId *string `json:"union_id,omitempty"` //
  3770  }
  3771  
  3772  type UserIdBuilder struct {
  3773  	userId      string //
  3774  	userIdFlag  bool
  3775  	openId      string //
  3776  	openIdFlag  bool
  3777  	unionId     string //
  3778  	unionIdFlag bool
  3779  }
  3780  
  3781  func NewUserIdBuilder() *UserIdBuilder {
  3782  	builder := &UserIdBuilder{}
  3783  	return builder
  3784  }
  3785  
  3786  //
  3787  //
  3788  // 示例值:
  3789  func (builder *UserIdBuilder) UserId(userId string) *UserIdBuilder {
  3790  	builder.userId = userId
  3791  	builder.userIdFlag = true
  3792  	return builder
  3793  }
  3794  
  3795  //
  3796  //
  3797  // 示例值:
  3798  func (builder *UserIdBuilder) OpenId(openId string) *UserIdBuilder {
  3799  	builder.openId = openId
  3800  	builder.openIdFlag = true
  3801  	return builder
  3802  }
  3803  
  3804  //
  3805  //
  3806  // 示例值:
  3807  func (builder *UserIdBuilder) UnionId(unionId string) *UserIdBuilder {
  3808  	builder.unionId = unionId
  3809  	builder.unionIdFlag = true
  3810  	return builder
  3811  }
  3812  
  3813  func (builder *UserIdBuilder) Build() *UserId {
  3814  	req := &UserId{}
  3815  	if builder.userIdFlag {
  3816  		req.UserId = &builder.userId
  3817  
  3818  	}
  3819  	if builder.openIdFlag {
  3820  		req.OpenId = &builder.openId
  3821  
  3822  	}
  3823  	if builder.unionIdFlag {
  3824  		req.UnionId = &builder.unionId
  3825  
  3826  	}
  3827  	return req
  3828  }
  3829  
  3830  type UserLeave struct {
  3831  	ApprovalId       *string    `json:"approval_id,omitempty"`        // 审批实例 ID
  3832  	UniqId           *string    `json:"uniq_id,omitempty"`            // 假期类型唯一 ID,代表一种假期类型,长度小于 14
  3833  	Unit             *int       `json:"unit,omitempty"`               // 假期时长单位
  3834  	Interval         *int       `json:"interval,omitempty"`           // 假期时长(单位:秒),暂未开放提供,待后续提供
  3835  	StartTime        *string    `json:"start_time,omitempty"`         // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3836  	EndTime          *string    `json:"end_time,omitempty"`           // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3837  	I18nNames        *I18nNames `json:"i18n_names,omitempty"`         // 假期多语言展示,格式为 map,key 为 ["ch"、"en"、"ja"],其中 ch 代表中文、en 代表英语、ja 代表日语
  3838  	DefaultLocale    *string    `json:"default_locale,omitempty"`     // 默认语言类型,由于飞书客户端支持中、英、日三种语言,当用户切换语言时,如果假期名称没有所对应的语言,会使用默认语言的名称
  3839  	Reason           *string    `json:"reason,omitempty"`             // 请假理由,必选字段
  3840  	ApprovePassTime  *string    `json:"approve_pass_time,omitempty"`  // 审批通过时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3841  	ApproveApplyTime *string    `json:"approve_apply_time,omitempty"` // 审批申请时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3842  }
  3843  
  3844  type UserLeaveBuilder struct {
  3845  	approvalId           string // 审批实例 ID
  3846  	approvalIdFlag       bool
  3847  	uniqId               string // 假期类型唯一 ID,代表一种假期类型,长度小于 14
  3848  	uniqIdFlag           bool
  3849  	unit                 int // 假期时长单位
  3850  	unitFlag             bool
  3851  	interval             int // 假期时长(单位:秒),暂未开放提供,待后续提供
  3852  	intervalFlag         bool
  3853  	startTime            string // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3854  	startTimeFlag        bool
  3855  	endTime              string // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3856  	endTimeFlag          bool
  3857  	i18nNames            *I18nNames // 假期多语言展示,格式为 map,key 为 ["ch"、"en"、"ja"],其中 ch 代表中文、en 代表英语、ja 代表日语
  3858  	i18nNamesFlag        bool
  3859  	defaultLocale        string // 默认语言类型,由于飞书客户端支持中、英、日三种语言,当用户切换语言时,如果假期名称没有所对应的语言,会使用默认语言的名称
  3860  	defaultLocaleFlag    bool
  3861  	reason               string // 请假理由,必选字段
  3862  	reasonFlag           bool
  3863  	approvePassTime      string // 审批通过时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3864  	approvePassTimeFlag  bool
  3865  	approveApplyTime     string // 审批申请时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3866  	approveApplyTimeFlag bool
  3867  }
  3868  
  3869  func NewUserLeaveBuilder() *UserLeaveBuilder {
  3870  	builder := &UserLeaveBuilder{}
  3871  	return builder
  3872  }
  3873  
  3874  // 审批实例 ID
  3875  //
  3876  // 示例值:6737202939523236113
  3877  func (builder *UserLeaveBuilder) ApprovalId(approvalId string) *UserLeaveBuilder {
  3878  	builder.approvalId = approvalId
  3879  	builder.approvalIdFlag = true
  3880  	return builder
  3881  }
  3882  
  3883  // 假期类型唯一 ID,代表一种假期类型,长度小于 14
  3884  //
  3885  // 示例值:6852582717813440527
  3886  func (builder *UserLeaveBuilder) UniqId(uniqId string) *UserLeaveBuilder {
  3887  	builder.uniqId = uniqId
  3888  	builder.uniqIdFlag = true
  3889  	return builder
  3890  }
  3891  
  3892  // 假期时长单位
  3893  //
  3894  // 示例值:1
  3895  func (builder *UserLeaveBuilder) Unit(unit int) *UserLeaveBuilder {
  3896  	builder.unit = unit
  3897  	builder.unitFlag = true
  3898  	return builder
  3899  }
  3900  
  3901  // 假期时长(单位:秒),暂未开放提供,待后续提供
  3902  //
  3903  // 示例值:28800
  3904  func (builder *UserLeaveBuilder) Interval(interval int) *UserLeaveBuilder {
  3905  	builder.interval = interval
  3906  	builder.intervalFlag = true
  3907  	return builder
  3908  }
  3909  
  3910  // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3911  //
  3912  // 示例值:2021-01-04 09:00:00
  3913  func (builder *UserLeaveBuilder) StartTime(startTime string) *UserLeaveBuilder {
  3914  	builder.startTime = startTime
  3915  	builder.startTimeFlag = true
  3916  	return builder
  3917  }
  3918  
  3919  // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3920  //
  3921  // 示例值:2021-01-04 19:00:00
  3922  func (builder *UserLeaveBuilder) EndTime(endTime string) *UserLeaveBuilder {
  3923  	builder.endTime = endTime
  3924  	builder.endTimeFlag = true
  3925  	return builder
  3926  }
  3927  
  3928  // 假期多语言展示,格式为 map,key 为 ["ch"、"en"、"ja"],其中 ch 代表中文、en 代表英语、ja 代表日语
  3929  //
  3930  // 示例值:
  3931  func (builder *UserLeaveBuilder) I18nNames(i18nNames *I18nNames) *UserLeaveBuilder {
  3932  	builder.i18nNames = i18nNames
  3933  	builder.i18nNamesFlag = true
  3934  	return builder
  3935  }
  3936  
  3937  // 默认语言类型,由于飞书客户端支持中、英、日三种语言,当用户切换语言时,如果假期名称没有所对应的语言,会使用默认语言的名称
  3938  //
  3939  // 示例值:ch
  3940  func (builder *UserLeaveBuilder) DefaultLocale(defaultLocale string) *UserLeaveBuilder {
  3941  	builder.defaultLocale = defaultLocale
  3942  	builder.defaultLocaleFlag = true
  3943  	return builder
  3944  }
  3945  
  3946  // 请假理由,必选字段
  3947  //
  3948  // 示例值:家里有事
  3949  func (builder *UserLeaveBuilder) Reason(reason string) *UserLeaveBuilder {
  3950  	builder.reason = reason
  3951  	builder.reasonFlag = true
  3952  	return builder
  3953  }
  3954  
  3955  // 审批通过时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3956  //
  3957  // 示例值:2021-01-04 12:00:00
  3958  func (builder *UserLeaveBuilder) ApprovePassTime(approvePassTime string) *UserLeaveBuilder {
  3959  	builder.approvePassTime = approvePassTime
  3960  	builder.approvePassTimeFlag = true
  3961  	return builder
  3962  }
  3963  
  3964  // 审批申请时间,时间格式为 yyyy-MM-dd HH:mm:ss
  3965  //
  3966  // 示例值:2021-01-04 11:00:00
  3967  func (builder *UserLeaveBuilder) ApproveApplyTime(approveApplyTime string) *UserLeaveBuilder {
  3968  	builder.approveApplyTime = approveApplyTime
  3969  	builder.approveApplyTimeFlag = true
  3970  	return builder
  3971  }
  3972  
  3973  func (builder *UserLeaveBuilder) Build() *UserLeave {
  3974  	req := &UserLeave{}
  3975  	if builder.approvalIdFlag {
  3976  		req.ApprovalId = &builder.approvalId
  3977  
  3978  	}
  3979  	if builder.uniqIdFlag {
  3980  		req.UniqId = &builder.uniqId
  3981  
  3982  	}
  3983  	if builder.unitFlag {
  3984  		req.Unit = &builder.unit
  3985  
  3986  	}
  3987  	if builder.intervalFlag {
  3988  		req.Interval = &builder.interval
  3989  
  3990  	}
  3991  	if builder.startTimeFlag {
  3992  		req.StartTime = &builder.startTime
  3993  
  3994  	}
  3995  	if builder.endTimeFlag {
  3996  		req.EndTime = &builder.endTime
  3997  
  3998  	}
  3999  	if builder.i18nNamesFlag {
  4000  		req.I18nNames = builder.i18nNames
  4001  	}
  4002  	if builder.defaultLocaleFlag {
  4003  		req.DefaultLocale = &builder.defaultLocale
  4004  
  4005  	}
  4006  	if builder.reasonFlag {
  4007  		req.Reason = &builder.reason
  4008  
  4009  	}
  4010  	if builder.approvePassTimeFlag {
  4011  		req.ApprovePassTime = &builder.approvePassTime
  4012  
  4013  	}
  4014  	if builder.approveApplyTimeFlag {
  4015  		req.ApproveApplyTime = &builder.approveApplyTime
  4016  
  4017  	}
  4018  	return req
  4019  }
  4020  
  4021  type UserOut struct {
  4022  	ApprovalId       *string    `json:"approval_id,omitempty"`        // 审批实例 ID
  4023  	UniqId           *string    `json:"uniq_id,omitempty"`            // 外出类型唯一 ID,代表一种假期类型,长度小于 14
  4024  	Unit             *int       `json:"unit,omitempty"`               // 外出时长单位
  4025  	Interval         *int       `json:"interval,omitempty"`           // 外出时长(单位:秒)
  4026  	StartTime        *string    `json:"start_time,omitempty"`         // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4027  	EndTime          *string    `json:"end_time,omitempty"`           // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4028  	I18nNames        *I18nNames `json:"i18n_names,omitempty"`         // 外出多语言展示,格式为 map,key 为 ["ch"、"en"、"ja"],其中 ch 代表中文、en 代表英语、ja 代表日语
  4029  	DefaultLocale    *string    `json:"default_locale,omitempty"`     // 默认语言类型,由于飞书客户端支持中、英、日三种语言,当用户切换语言时,如果假期名称没有所对应的语言,会使用默认语言的名称
  4030  	Reason           *string    `json:"reason,omitempty"`             // 外出理由
  4031  	ApprovePassTime  *string    `json:"approve_pass_time,omitempty"`  // 审批通过时间
  4032  	ApproveApplyTime *string    `json:"approve_apply_time,omitempty"` // 审批申请时间
  4033  }
  4034  
  4035  type UserOutBuilder struct {
  4036  	approvalId           string // 审批实例 ID
  4037  	approvalIdFlag       bool
  4038  	uniqId               string // 外出类型唯一 ID,代表一种假期类型,长度小于 14
  4039  	uniqIdFlag           bool
  4040  	unit                 int // 外出时长单位
  4041  	unitFlag             bool
  4042  	interval             int // 外出时长(单位:秒)
  4043  	intervalFlag         bool
  4044  	startTime            string // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4045  	startTimeFlag        bool
  4046  	endTime              string // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4047  	endTimeFlag          bool
  4048  	i18nNames            *I18nNames // 外出多语言展示,格式为 map,key 为 ["ch"、"en"、"ja"],其中 ch 代表中文、en 代表英语、ja 代表日语
  4049  	i18nNamesFlag        bool
  4050  	defaultLocale        string // 默认语言类型,由于飞书客户端支持中、英、日三种语言,当用户切换语言时,如果假期名称没有所对应的语言,会使用默认语言的名称
  4051  	defaultLocaleFlag    bool
  4052  	reason               string // 外出理由
  4053  	reasonFlag           bool
  4054  	approvePassTime      string // 审批通过时间
  4055  	approvePassTimeFlag  bool
  4056  	approveApplyTime     string // 审批申请时间
  4057  	approveApplyTimeFlag bool
  4058  }
  4059  
  4060  func NewUserOutBuilder() *UserOutBuilder {
  4061  	builder := &UserOutBuilder{}
  4062  	return builder
  4063  }
  4064  
  4065  // 审批实例 ID
  4066  //
  4067  // 示例值:6737202939523236113
  4068  func (builder *UserOutBuilder) ApprovalId(approvalId string) *UserOutBuilder {
  4069  	builder.approvalId = approvalId
  4070  	builder.approvalIdFlag = true
  4071  	return builder
  4072  }
  4073  
  4074  // 外出类型唯一 ID,代表一种假期类型,长度小于 14
  4075  //
  4076  // 示例值:9496E43696967658A512969523E89870
  4077  func (builder *UserOutBuilder) UniqId(uniqId string) *UserOutBuilder {
  4078  	builder.uniqId = uniqId
  4079  	builder.uniqIdFlag = true
  4080  	return builder
  4081  }
  4082  
  4083  // 外出时长单位
  4084  //
  4085  // 示例值:1
  4086  func (builder *UserOutBuilder) Unit(unit int) *UserOutBuilder {
  4087  	builder.unit = unit
  4088  	builder.unitFlag = true
  4089  	return builder
  4090  }
  4091  
  4092  // 外出时长(单位:秒)
  4093  //
  4094  // 示例值:28800
  4095  func (builder *UserOutBuilder) Interval(interval int) *UserOutBuilder {
  4096  	builder.interval = interval
  4097  	builder.intervalFlag = true
  4098  	return builder
  4099  }
  4100  
  4101  // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4102  //
  4103  // 示例值:2021-01-04 09:00:00
  4104  func (builder *UserOutBuilder) StartTime(startTime string) *UserOutBuilder {
  4105  	builder.startTime = startTime
  4106  	builder.startTimeFlag = true
  4107  	return builder
  4108  }
  4109  
  4110  // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4111  //
  4112  // 示例值:2021-01-04 19:00:00
  4113  func (builder *UserOutBuilder) EndTime(endTime string) *UserOutBuilder {
  4114  	builder.endTime = endTime
  4115  	builder.endTimeFlag = true
  4116  	return builder
  4117  }
  4118  
  4119  // 外出多语言展示,格式为 map,key 为 ["ch"、"en"、"ja"],其中 ch 代表中文、en 代表英语、ja 代表日语
  4120  //
  4121  // 示例值:
  4122  func (builder *UserOutBuilder) I18nNames(i18nNames *I18nNames) *UserOutBuilder {
  4123  	builder.i18nNames = i18nNames
  4124  	builder.i18nNamesFlag = true
  4125  	return builder
  4126  }
  4127  
  4128  // 默认语言类型,由于飞书客户端支持中、英、日三种语言,当用户切换语言时,如果假期名称没有所对应的语言,会使用默认语言的名称
  4129  //
  4130  // 示例值:ch
  4131  func (builder *UserOutBuilder) DefaultLocale(defaultLocale string) *UserOutBuilder {
  4132  	builder.defaultLocale = defaultLocale
  4133  	builder.defaultLocaleFlag = true
  4134  	return builder
  4135  }
  4136  
  4137  // 外出理由
  4138  //
  4139  // 示例值:外出办事
  4140  func (builder *UserOutBuilder) Reason(reason string) *UserOutBuilder {
  4141  	builder.reason = reason
  4142  	builder.reasonFlag = true
  4143  	return builder
  4144  }
  4145  
  4146  // 审批通过时间
  4147  //
  4148  // 示例值:2021-01-04 12:00:00
  4149  func (builder *UserOutBuilder) ApprovePassTime(approvePassTime string) *UserOutBuilder {
  4150  	builder.approvePassTime = approvePassTime
  4151  	builder.approvePassTimeFlag = true
  4152  	return builder
  4153  }
  4154  
  4155  // 审批申请时间
  4156  //
  4157  // 示例值:2021-01-04 11:00:00
  4158  func (builder *UserOutBuilder) ApproveApplyTime(approveApplyTime string) *UserOutBuilder {
  4159  	builder.approveApplyTime = approveApplyTime
  4160  	builder.approveApplyTimeFlag = true
  4161  	return builder
  4162  }
  4163  
  4164  func (builder *UserOutBuilder) Build() *UserOut {
  4165  	req := &UserOut{}
  4166  	if builder.approvalIdFlag {
  4167  		req.ApprovalId = &builder.approvalId
  4168  
  4169  	}
  4170  	if builder.uniqIdFlag {
  4171  		req.UniqId = &builder.uniqId
  4172  
  4173  	}
  4174  	if builder.unitFlag {
  4175  		req.Unit = &builder.unit
  4176  
  4177  	}
  4178  	if builder.intervalFlag {
  4179  		req.Interval = &builder.interval
  4180  
  4181  	}
  4182  	if builder.startTimeFlag {
  4183  		req.StartTime = &builder.startTime
  4184  
  4185  	}
  4186  	if builder.endTimeFlag {
  4187  		req.EndTime = &builder.endTime
  4188  
  4189  	}
  4190  	if builder.i18nNamesFlag {
  4191  		req.I18nNames = builder.i18nNames
  4192  	}
  4193  	if builder.defaultLocaleFlag {
  4194  		req.DefaultLocale = &builder.defaultLocale
  4195  
  4196  	}
  4197  	if builder.reasonFlag {
  4198  		req.Reason = &builder.reason
  4199  
  4200  	}
  4201  	if builder.approvePassTimeFlag {
  4202  		req.ApprovePassTime = &builder.approvePassTime
  4203  
  4204  	}
  4205  	if builder.approveApplyTimeFlag {
  4206  		req.ApproveApplyTime = &builder.approveApplyTime
  4207  
  4208  	}
  4209  	return req
  4210  }
  4211  
  4212  type UserOvertimeWork struct {
  4213  	ApprovalId *string  `json:"approval_id,omitempty"` // 审批实例 ID
  4214  	Duration   *float64 `json:"duration,omitempty"`    // 加班时长
  4215  	Unit       *int     `json:"unit,omitempty"`        // 加班时长单位
  4216  	Category   *int     `json:"category,omitempty"`    // 加班日期类型
  4217  	Type       *int     `json:"type,omitempty"`        // 加班规则类型
  4218  	StartTime  *string  `json:"start_time,omitempty"`  // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4219  	EndTime    *string  `json:"end_time,omitempty"`    // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4220  }
  4221  
  4222  type UserOvertimeWorkBuilder struct {
  4223  	approvalId     string // 审批实例 ID
  4224  	approvalIdFlag bool
  4225  	duration       float64 // 加班时长
  4226  	durationFlag   bool
  4227  	unit           int // 加班时长单位
  4228  	unitFlag       bool
  4229  	category       int // 加班日期类型
  4230  	categoryFlag   bool
  4231  	type_          int // 加班规则类型
  4232  	typeFlag       bool
  4233  	startTime      string // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4234  	startTimeFlag  bool
  4235  	endTime        string // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4236  	endTimeFlag    bool
  4237  }
  4238  
  4239  func NewUserOvertimeWorkBuilder() *UserOvertimeWorkBuilder {
  4240  	builder := &UserOvertimeWorkBuilder{}
  4241  	return builder
  4242  }
  4243  
  4244  // 审批实例 ID
  4245  //
  4246  // 示例值:6737202939523236113
  4247  func (builder *UserOvertimeWorkBuilder) ApprovalId(approvalId string) *UserOvertimeWorkBuilder {
  4248  	builder.approvalId = approvalId
  4249  	builder.approvalIdFlag = true
  4250  	return builder
  4251  }
  4252  
  4253  // 加班时长
  4254  //
  4255  // 示例值:1.5
  4256  func (builder *UserOvertimeWorkBuilder) Duration(duration float64) *UserOvertimeWorkBuilder {
  4257  	builder.duration = duration
  4258  	builder.durationFlag = true
  4259  	return builder
  4260  }
  4261  
  4262  // 加班时长单位
  4263  //
  4264  // 示例值:1
  4265  func (builder *UserOvertimeWorkBuilder) Unit(unit int) *UserOvertimeWorkBuilder {
  4266  	builder.unit = unit
  4267  	builder.unitFlag = true
  4268  	return builder
  4269  }
  4270  
  4271  // 加班日期类型
  4272  //
  4273  // 示例值:2
  4274  func (builder *UserOvertimeWorkBuilder) Category(category int) *UserOvertimeWorkBuilder {
  4275  	builder.category = category
  4276  	builder.categoryFlag = true
  4277  	return builder
  4278  }
  4279  
  4280  // 加班规则类型
  4281  //
  4282  // 示例值:1
  4283  func (builder *UserOvertimeWorkBuilder) Type(type_ int) *UserOvertimeWorkBuilder {
  4284  	builder.type_ = type_
  4285  	builder.typeFlag = true
  4286  	return builder
  4287  }
  4288  
  4289  // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4290  //
  4291  // 示例值:2021-01-09 09:00:00
  4292  func (builder *UserOvertimeWorkBuilder) StartTime(startTime string) *UserOvertimeWorkBuilder {
  4293  	builder.startTime = startTime
  4294  	builder.startTimeFlag = true
  4295  	return builder
  4296  }
  4297  
  4298  // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  4299  //
  4300  // 示例值:2021-01-10 13:00:00
  4301  func (builder *UserOvertimeWorkBuilder) EndTime(endTime string) *UserOvertimeWorkBuilder {
  4302  	builder.endTime = endTime
  4303  	builder.endTimeFlag = true
  4304  	return builder
  4305  }
  4306  
  4307  func (builder *UserOvertimeWorkBuilder) Build() *UserOvertimeWork {
  4308  	req := &UserOvertimeWork{}
  4309  	if builder.approvalIdFlag {
  4310  		req.ApprovalId = &builder.approvalId
  4311  
  4312  	}
  4313  	if builder.durationFlag {
  4314  		req.Duration = &builder.duration
  4315  
  4316  	}
  4317  	if builder.unitFlag {
  4318  		req.Unit = &builder.unit
  4319  
  4320  	}
  4321  	if builder.categoryFlag {
  4322  		req.Category = &builder.category
  4323  
  4324  	}
  4325  	if builder.typeFlag {
  4326  		req.Type = &builder.type_
  4327  
  4328  	}
  4329  	if builder.startTimeFlag {
  4330  		req.StartTime = &builder.startTime
  4331  
  4332  	}
  4333  	if builder.endTimeFlag {
  4334  		req.EndTime = &builder.endTime
  4335  
  4336  	}
  4337  	return req
  4338  }
  4339  
  4340  type UserSetting struct {
  4341  	UserId            *string `json:"user_id,omitempty"`              // 用户 ID
  4342  	FaceKey           *string `json:"face_key,omitempty"`             // 人脸照片文件 ID,获取方式:[文件上传](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/file/upload)
  4343  	FaceKeyUpdateTime *string `json:"face_key_update_time,omitempty"` // 人脸照片更新时间,精确到秒的时间戳
  4344  }
  4345  
  4346  type UserSettingBuilder struct {
  4347  	userId                string // 用户 ID
  4348  	userIdFlag            bool
  4349  	faceKey               string // 人脸照片文件 ID,获取方式:[文件上传](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/file/upload)
  4350  	faceKeyFlag           bool
  4351  	faceKeyUpdateTime     string // 人脸照片更新时间,精确到秒的时间戳
  4352  	faceKeyUpdateTimeFlag bool
  4353  }
  4354  
  4355  func NewUserSettingBuilder() *UserSettingBuilder {
  4356  	builder := &UserSettingBuilder{}
  4357  	return builder
  4358  }
  4359  
  4360  // 用户 ID
  4361  //
  4362  // 示例值:abd754f7
  4363  func (builder *UserSettingBuilder) UserId(userId string) *UserSettingBuilder {
  4364  	builder.userId = userId
  4365  	builder.userIdFlag = true
  4366  	return builder
  4367  }
  4368  
  4369  // 人脸照片文件 ID,获取方式:[文件上传](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/file/upload)
  4370  //
  4371  // 示例值:xxxxxb306842b1c189bc5212eefxxxxx
  4372  func (builder *UserSettingBuilder) FaceKey(faceKey string) *UserSettingBuilder {
  4373  	builder.faceKey = faceKey
  4374  	builder.faceKeyFlag = true
  4375  	return builder
  4376  }
  4377  
  4378  // 人脸照片更新时间,精确到秒的时间戳
  4379  //
  4380  // 示例值:1625681917
  4381  func (builder *UserSettingBuilder) FaceKeyUpdateTime(faceKeyUpdateTime string) *UserSettingBuilder {
  4382  	builder.faceKeyUpdateTime = faceKeyUpdateTime
  4383  	builder.faceKeyUpdateTimeFlag = true
  4384  	return builder
  4385  }
  4386  
  4387  func (builder *UserSettingBuilder) Build() *UserSetting {
  4388  	req := &UserSetting{}
  4389  	if builder.userIdFlag {
  4390  		req.UserId = &builder.userId
  4391  
  4392  	}
  4393  	if builder.faceKeyFlag {
  4394  		req.FaceKey = &builder.faceKey
  4395  
  4396  	}
  4397  	if builder.faceKeyUpdateTimeFlag {
  4398  		req.FaceKeyUpdateTime = &builder.faceKeyUpdateTime
  4399  
  4400  	}
  4401  	return req
  4402  }
  4403  
  4404  type UserStatsData struct {
  4405  	Name   *string              `json:"name,omitempty"`    // 用户姓名
  4406  	UserId *string              `json:"user_id,omitempty"` // 用户 ID
  4407  	Datas  []*UserStatsDataCell `json:"datas,omitempty"`   // 用户的统计数据
  4408  }
  4409  
  4410  type UserStatsDataBuilder struct {
  4411  	name       string // 用户姓名
  4412  	nameFlag   bool
  4413  	userId     string // 用户 ID
  4414  	userIdFlag bool
  4415  	datas      []*UserStatsDataCell // 用户的统计数据
  4416  	datasFlag  bool
  4417  }
  4418  
  4419  func NewUserStatsDataBuilder() *UserStatsDataBuilder {
  4420  	builder := &UserStatsDataBuilder{}
  4421  	return builder
  4422  }
  4423  
  4424  // 用户姓名
  4425  //
  4426  // 示例值:小李
  4427  func (builder *UserStatsDataBuilder) Name(name string) *UserStatsDataBuilder {
  4428  	builder.name = name
  4429  	builder.nameFlag = true
  4430  	return builder
  4431  }
  4432  
  4433  // 用户 ID
  4434  //
  4435  // 示例值:ec8ddg56
  4436  func (builder *UserStatsDataBuilder) UserId(userId string) *UserStatsDataBuilder {
  4437  	builder.userId = userId
  4438  	builder.userIdFlag = true
  4439  	return builder
  4440  }
  4441  
  4442  // 用户的统计数据
  4443  //
  4444  // 示例值:
  4445  func (builder *UserStatsDataBuilder) Datas(datas []*UserStatsDataCell) *UserStatsDataBuilder {
  4446  	builder.datas = datas
  4447  	builder.datasFlag = true
  4448  	return builder
  4449  }
  4450  
  4451  func (builder *UserStatsDataBuilder) Build() *UserStatsData {
  4452  	req := &UserStatsData{}
  4453  	if builder.nameFlag {
  4454  		req.Name = &builder.name
  4455  
  4456  	}
  4457  	if builder.userIdFlag {
  4458  		req.UserId = &builder.userId
  4459  
  4460  	}
  4461  	if builder.datasFlag {
  4462  		req.Datas = builder.datas
  4463  	}
  4464  	return req
  4465  }
  4466  
  4467  type UserStatsDataCell struct {
  4468  	Code     *string                 `json:"code,omitempty"`     // 字段编号
  4469  	Value    *string                 `json:"value,omitempty"`    // 数据值
  4470  	Features []*UserStatsDataFeature `json:"features,omitempty"` // 数据属性
  4471  	Title    *string                 `json:"title,omitempty"`    // 字段标题
  4472  }
  4473  
  4474  type UserStatsDataCellBuilder struct {
  4475  	code         string // 字段编号
  4476  	codeFlag     bool
  4477  	value        string // 数据值
  4478  	valueFlag    bool
  4479  	features     []*UserStatsDataFeature // 数据属性
  4480  	featuresFlag bool
  4481  	title        string // 字段标题
  4482  	titleFlag    bool
  4483  }
  4484  
  4485  func NewUserStatsDataCellBuilder() *UserStatsDataCellBuilder {
  4486  	builder := &UserStatsDataCellBuilder{}
  4487  	return builder
  4488  }
  4489  
  4490  // 字段编号
  4491  //
  4492  // 示例值:50102
  4493  func (builder *UserStatsDataCellBuilder) Code(code string) *UserStatsDataCellBuilder {
  4494  	builder.code = code
  4495  	builder.codeFlag = true
  4496  	return builder
  4497  }
  4498  
  4499  // 数据值
  4500  //
  4501  // 示例值:无需打卡(-), 无需打卡(-)
  4502  func (builder *UserStatsDataCellBuilder) Value(value string) *UserStatsDataCellBuilder {
  4503  	builder.value = value
  4504  	builder.valueFlag = true
  4505  	return builder
  4506  }
  4507  
  4508  // 数据属性
  4509  //
  4510  // 示例值:
  4511  func (builder *UserStatsDataCellBuilder) Features(features []*UserStatsDataFeature) *UserStatsDataCellBuilder {
  4512  	builder.features = features
  4513  	builder.featuresFlag = true
  4514  	return builder
  4515  }
  4516  
  4517  // 字段标题
  4518  //
  4519  // 示例值:姓名
  4520  func (builder *UserStatsDataCellBuilder) Title(title string) *UserStatsDataCellBuilder {
  4521  	builder.title = title
  4522  	builder.titleFlag = true
  4523  	return builder
  4524  }
  4525  
  4526  func (builder *UserStatsDataCellBuilder) Build() *UserStatsDataCell {
  4527  	req := &UserStatsDataCell{}
  4528  	if builder.codeFlag {
  4529  		req.Code = &builder.code
  4530  
  4531  	}
  4532  	if builder.valueFlag {
  4533  		req.Value = &builder.value
  4534  
  4535  	}
  4536  	if builder.featuresFlag {
  4537  		req.Features = builder.features
  4538  	}
  4539  	if builder.titleFlag {
  4540  		req.Title = &builder.title
  4541  
  4542  	}
  4543  	return req
  4544  }
  4545  
  4546  type UserStatsDataFeature struct {
  4547  	Key   *string `json:"key,omitempty"`   // 统计数据列附加属性的名称
  4548  	Value *string `json:"value,omitempty"` // 统计数据列附加属性的值
  4549  }
  4550  
  4551  type UserStatsDataFeatureBuilder struct {
  4552  	key       string // 统计数据列附加属性的名称
  4553  	keyFlag   bool
  4554  	value     string // 统计数据列附加属性的值
  4555  	valueFlag bool
  4556  }
  4557  
  4558  func NewUserStatsDataFeatureBuilder() *UserStatsDataFeatureBuilder {
  4559  	builder := &UserStatsDataFeatureBuilder{}
  4560  	return builder
  4561  }
  4562  
  4563  // 统计数据列附加属性的名称
  4564  //
  4565  // 示例值:Abnormal
  4566  func (builder *UserStatsDataFeatureBuilder) Key(key string) *UserStatsDataFeatureBuilder {
  4567  	builder.key = key
  4568  	builder.keyFlag = true
  4569  	return builder
  4570  }
  4571  
  4572  // 统计数据列附加属性的值
  4573  //
  4574  // 示例值:false
  4575  func (builder *UserStatsDataFeatureBuilder) Value(value string) *UserStatsDataFeatureBuilder {
  4576  	builder.value = value
  4577  	builder.valueFlag = true
  4578  	return builder
  4579  }
  4580  
  4581  func (builder *UserStatsDataFeatureBuilder) Build() *UserStatsDataFeature {
  4582  	req := &UserStatsDataFeature{}
  4583  	if builder.keyFlag {
  4584  		req.Key = &builder.key
  4585  
  4586  	}
  4587  	if builder.valueFlag {
  4588  		req.Value = &builder.value
  4589  
  4590  	}
  4591  	return req
  4592  }
  4593  
  4594  type UserStatsField struct {
  4595  	StatsType *string  `json:"stats_type,omitempty"` // 统计类型
  4596  	UserId    *string  `json:"user_id,omitempty"`    // 用户 ID
  4597  	Fields    []*Field `json:"fields,omitempty"`     // 字段列表
  4598  }
  4599  
  4600  type UserStatsFieldBuilder struct {
  4601  	statsType     string // 统计类型
  4602  	statsTypeFlag bool
  4603  	userId        string // 用户 ID
  4604  	userIdFlag    bool
  4605  	fields        []*Field // 字段列表
  4606  	fieldsFlag    bool
  4607  }
  4608  
  4609  func NewUserStatsFieldBuilder() *UserStatsFieldBuilder {
  4610  	builder := &UserStatsFieldBuilder{}
  4611  	return builder
  4612  }
  4613  
  4614  // 统计类型
  4615  //
  4616  // 示例值:
  4617  func (builder *UserStatsFieldBuilder) StatsType(statsType string) *UserStatsFieldBuilder {
  4618  	builder.statsType = statsType
  4619  	builder.statsTypeFlag = true
  4620  	return builder
  4621  }
  4622  
  4623  // 用户 ID
  4624  //
  4625  // 示例值:
  4626  func (builder *UserStatsFieldBuilder) UserId(userId string) *UserStatsFieldBuilder {
  4627  	builder.userId = userId
  4628  	builder.userIdFlag = true
  4629  	return builder
  4630  }
  4631  
  4632  // 字段列表
  4633  //
  4634  // 示例值:
  4635  func (builder *UserStatsFieldBuilder) Fields(fields []*Field) *UserStatsFieldBuilder {
  4636  	builder.fields = fields
  4637  	builder.fieldsFlag = true
  4638  	return builder
  4639  }
  4640  
  4641  func (builder *UserStatsFieldBuilder) Build() *UserStatsField {
  4642  	req := &UserStatsField{}
  4643  	if builder.statsTypeFlag {
  4644  		req.StatsType = &builder.statsType
  4645  
  4646  	}
  4647  	if builder.userIdFlag {
  4648  		req.UserId = &builder.userId
  4649  
  4650  	}
  4651  	if builder.fieldsFlag {
  4652  		req.Fields = builder.fields
  4653  	}
  4654  	return req
  4655  }
  4656  
  4657  type UserStatsView struct {
  4658  	ViewId    *string `json:"view_id,omitempty"`    // 视图 ID
  4659  	StatsType *string `json:"stats_type,omitempty"` // 视图类型
  4660  	UserId    *string `json:"user_id,omitempty"`    // 查询用户id,同【查询统计数据】、【查询统计设置】user_id
  4661  	Items     []*Item `json:"items,omitempty"`      // 用户设置字段
  4662  }
  4663  
  4664  type UserStatsViewBuilder struct {
  4665  	viewId        string // 视图 ID
  4666  	viewIdFlag    bool
  4667  	statsType     string // 视图类型
  4668  	statsTypeFlag bool
  4669  	userId        string // 查询用户id,同【查询统计数据】、【查询统计设置】user_id
  4670  	userIdFlag    bool
  4671  	items         []*Item // 用户设置字段
  4672  	itemsFlag     bool
  4673  }
  4674  
  4675  func NewUserStatsViewBuilder() *UserStatsViewBuilder {
  4676  	builder := &UserStatsViewBuilder{}
  4677  	return builder
  4678  }
  4679  
  4680  // 视图 ID
  4681  //
  4682  // 示例值:TmpZNU5qTTJORFF6T1RnNU5UTTNOakV6TWl0dGIyNTBhQT09
  4683  func (builder *UserStatsViewBuilder) ViewId(viewId string) *UserStatsViewBuilder {
  4684  	builder.viewId = viewId
  4685  	builder.viewIdFlag = true
  4686  	return builder
  4687  }
  4688  
  4689  // 视图类型
  4690  //
  4691  // 示例值:month
  4692  func (builder *UserStatsViewBuilder) StatsType(statsType string) *UserStatsViewBuilder {
  4693  	builder.statsType = statsType
  4694  	builder.statsTypeFlag = true
  4695  	return builder
  4696  }
  4697  
  4698  // 查询用户id,同【查询统计数据】、【查询统计设置】user_id
  4699  //
  4700  // 示例值:ec8ddg56
  4701  func (builder *UserStatsViewBuilder) UserId(userId string) *UserStatsViewBuilder {
  4702  	builder.userId = userId
  4703  	builder.userIdFlag = true
  4704  	return builder
  4705  }
  4706  
  4707  // 用户设置字段
  4708  //
  4709  // 示例值:
  4710  func (builder *UserStatsViewBuilder) Items(items []*Item) *UserStatsViewBuilder {
  4711  	builder.items = items
  4712  	builder.itemsFlag = true
  4713  	return builder
  4714  }
  4715  
  4716  func (builder *UserStatsViewBuilder) Build() *UserStatsView {
  4717  	req := &UserStatsView{}
  4718  	if builder.viewIdFlag {
  4719  		req.ViewId = &builder.viewId
  4720  
  4721  	}
  4722  	if builder.statsTypeFlag {
  4723  		req.StatsType = &builder.statsType
  4724  
  4725  	}
  4726  	if builder.userIdFlag {
  4727  		req.UserId = &builder.userId
  4728  
  4729  	}
  4730  	if builder.itemsFlag {
  4731  		req.Items = builder.items
  4732  	}
  4733  	return req
  4734  }
  4735  
  4736  type UserTask struct {
  4737  	ResultId     *string       `json:"result_id,omitempty"`     // 打卡记录 ID
  4738  	UserId       *string       `json:"user_id,omitempty"`       // 用户 ID
  4739  	EmployeeName *string       `json:"employee_name,omitempty"` // 用户姓名
  4740  	Day          *int          `json:"day,omitempty"`           // 日期
  4741  	GroupId      *string       `json:"group_id,omitempty"`      // 考勤组 ID
  4742  	ShiftId      *string       `json:"shift_id,omitempty"`      // 班次 ID
  4743  	Records      []*TaskResult `json:"records,omitempty"`       // 用户考勤记录
  4744  }
  4745  
  4746  type UserTaskBuilder struct {
  4747  	resultId         string // 打卡记录 ID
  4748  	resultIdFlag     bool
  4749  	userId           string // 用户 ID
  4750  	userIdFlag       bool
  4751  	employeeName     string // 用户姓名
  4752  	employeeNameFlag bool
  4753  	day              int // 日期
  4754  	dayFlag          bool
  4755  	groupId          string // 考勤组 ID
  4756  	groupIdFlag      bool
  4757  	shiftId          string // 班次 ID
  4758  	shiftIdFlag      bool
  4759  	records          []*TaskResult // 用户考勤记录
  4760  	recordsFlag      bool
  4761  }
  4762  
  4763  func NewUserTaskBuilder() *UserTaskBuilder {
  4764  	builder := &UserTaskBuilder{}
  4765  	return builder
  4766  }
  4767  
  4768  // 打卡记录 ID
  4769  //
  4770  // 示例值:6709359313699356941
  4771  func (builder *UserTaskBuilder) ResultId(resultId string) *UserTaskBuilder {
  4772  	builder.resultId = resultId
  4773  	builder.resultIdFlag = true
  4774  	return builder
  4775  }
  4776  
  4777  // 用户 ID
  4778  //
  4779  // 示例值:abd754f7
  4780  func (builder *UserTaskBuilder) UserId(userId string) *UserTaskBuilder {
  4781  	builder.userId = userId
  4782  	builder.userIdFlag = true
  4783  	return builder
  4784  }
  4785  
  4786  // 用户姓名
  4787  //
  4788  // 示例值:张三
  4789  func (builder *UserTaskBuilder) EmployeeName(employeeName string) *UserTaskBuilder {
  4790  	builder.employeeName = employeeName
  4791  	builder.employeeNameFlag = true
  4792  	return builder
  4793  }
  4794  
  4795  // 日期
  4796  //
  4797  // 示例值:20190819
  4798  func (builder *UserTaskBuilder) Day(day int) *UserTaskBuilder {
  4799  	builder.day = day
  4800  	builder.dayFlag = true
  4801  	return builder
  4802  }
  4803  
  4804  // 考勤组 ID
  4805  //
  4806  // 示例值:6737202939523236110
  4807  func (builder *UserTaskBuilder) GroupId(groupId string) *UserTaskBuilder {
  4808  	builder.groupId = groupId
  4809  	builder.groupIdFlag = true
  4810  	return builder
  4811  }
  4812  
  4813  // 班次 ID
  4814  //
  4815  // 示例值:6753520403404030215
  4816  func (builder *UserTaskBuilder) ShiftId(shiftId string) *UserTaskBuilder {
  4817  	builder.shiftId = shiftId
  4818  	builder.shiftIdFlag = true
  4819  	return builder
  4820  }
  4821  
  4822  // 用户考勤记录
  4823  //
  4824  // 示例值:
  4825  func (builder *UserTaskBuilder) Records(records []*TaskResult) *UserTaskBuilder {
  4826  	builder.records = records
  4827  	builder.recordsFlag = true
  4828  	return builder
  4829  }
  4830  
  4831  func (builder *UserTaskBuilder) Build() *UserTask {
  4832  	req := &UserTask{}
  4833  	if builder.resultIdFlag {
  4834  		req.ResultId = &builder.resultId
  4835  
  4836  	}
  4837  	if builder.userIdFlag {
  4838  		req.UserId = &builder.userId
  4839  
  4840  	}
  4841  	if builder.employeeNameFlag {
  4842  		req.EmployeeName = &builder.employeeName
  4843  
  4844  	}
  4845  	if builder.dayFlag {
  4846  		req.Day = &builder.day
  4847  
  4848  	}
  4849  	if builder.groupIdFlag {
  4850  		req.GroupId = &builder.groupId
  4851  
  4852  	}
  4853  	if builder.shiftIdFlag {
  4854  		req.ShiftId = &builder.shiftId
  4855  
  4856  	}
  4857  	if builder.recordsFlag {
  4858  		req.Records = builder.records
  4859  	}
  4860  	return req
  4861  }
  4862  
  4863  type UserTaskRemedy struct {
  4864  	UserId     *string `json:"user_id,omitempty"`     // 用户 ID
  4865  	RemedyDate *int    `json:"remedy_date,omitempty"` // 补卡日期
  4866  	PunchNo    *int    `json:"punch_no,omitempty"`    // 第几次上下班,0:第 1 次上下班,1:第 2 次上下班,2:第 3 次上下班,自由班制填 0
  4867  	WorkType   *int    `json:"work_type,omitempty"`   // 上班 / 下班,1:上班,2:下班,自由班制填 0
  4868  	ApprovalId *string `json:"approval_id,omitempty"` // 审批 ID
  4869  	RemedyTime *string `json:"remedy_time,omitempty"` // 补卡时间,时间格式为 yyyy-MM-dd HH:mm
  4870  	Status     *int    `json:"status,omitempty"`      // 补卡状态(默认为审批中)
  4871  	Reason     *string `json:"reason,omitempty"`      // 补卡原因
  4872  	Time       *string `json:"time,omitempty"`        // 补卡时间,精确到秒的时间戳
  4873  	TimeZone   *string `json:"time_zone,omitempty"`   // 补卡时考勤组时区
  4874  	CreateTime *string `json:"create_time,omitempty"` // 补卡发起时间,精确到秒的时间戳
  4875  	UpdateTime *string `json:"update_time,omitempty"` // 补卡状态更新时间,精确到秒的时间戳
  4876  }
  4877  
  4878  type UserTaskRemedyBuilder struct {
  4879  	userId         string // 用户 ID
  4880  	userIdFlag     bool
  4881  	remedyDate     int // 补卡日期
  4882  	remedyDateFlag bool
  4883  	punchNo        int // 第几次上下班,0:第 1 次上下班,1:第 2 次上下班,2:第 3 次上下班,自由班制填 0
  4884  	punchNoFlag    bool
  4885  	workType       int // 上班 / 下班,1:上班,2:下班,自由班制填 0
  4886  	workTypeFlag   bool
  4887  	approvalId     string // 审批 ID
  4888  	approvalIdFlag bool
  4889  	remedyTime     string // 补卡时间,时间格式为 yyyy-MM-dd HH:mm
  4890  	remedyTimeFlag bool
  4891  	status         int // 补卡状态(默认为审批中)
  4892  	statusFlag     bool
  4893  	reason         string // 补卡原因
  4894  	reasonFlag     bool
  4895  	time           string // 补卡时间,精确到秒的时间戳
  4896  	timeFlag       bool
  4897  	timeZone       string // 补卡时考勤组时区
  4898  	timeZoneFlag   bool
  4899  	createTime     string // 补卡发起时间,精确到秒的时间戳
  4900  	createTimeFlag bool
  4901  	updateTime     string // 补卡状态更新时间,精确到秒的时间戳
  4902  	updateTimeFlag bool
  4903  }
  4904  
  4905  func NewUserTaskRemedyBuilder() *UserTaskRemedyBuilder {
  4906  	builder := &UserTaskRemedyBuilder{}
  4907  	return builder
  4908  }
  4909  
  4910  // 用户 ID
  4911  //
  4912  // 示例值:abd754f7
  4913  func (builder *UserTaskRemedyBuilder) UserId(userId string) *UserTaskRemedyBuilder {
  4914  	builder.userId = userId
  4915  	builder.userIdFlag = true
  4916  	return builder
  4917  }
  4918  
  4919  // 补卡日期
  4920  //
  4921  // 示例值:20210701
  4922  func (builder *UserTaskRemedyBuilder) RemedyDate(remedyDate int) *UserTaskRemedyBuilder {
  4923  	builder.remedyDate = remedyDate
  4924  	builder.remedyDateFlag = true
  4925  	return builder
  4926  }
  4927  
  4928  // 第几次上下班,0:第 1 次上下班,1:第 2 次上下班,2:第 3 次上下班,自由班制填 0
  4929  //
  4930  // 示例值:0
  4931  func (builder *UserTaskRemedyBuilder) PunchNo(punchNo int) *UserTaskRemedyBuilder {
  4932  	builder.punchNo = punchNo
  4933  	builder.punchNoFlag = true
  4934  	return builder
  4935  }
  4936  
  4937  // 上班 / 下班,1:上班,2:下班,自由班制填 0
  4938  //
  4939  // 示例值:1
  4940  func (builder *UserTaskRemedyBuilder) WorkType(workType int) *UserTaskRemedyBuilder {
  4941  	builder.workType = workType
  4942  	builder.workTypeFlag = true
  4943  	return builder
  4944  }
  4945  
  4946  // 审批 ID
  4947  //
  4948  // 示例值:6737202939523236113
  4949  func (builder *UserTaskRemedyBuilder) ApprovalId(approvalId string) *UserTaskRemedyBuilder {
  4950  	builder.approvalId = approvalId
  4951  	builder.approvalIdFlag = true
  4952  	return builder
  4953  }
  4954  
  4955  // 补卡时间,时间格式为 yyyy-MM-dd HH:mm
  4956  //
  4957  // 示例值:2021-07-01 08:00
  4958  func (builder *UserTaskRemedyBuilder) RemedyTime(remedyTime string) *UserTaskRemedyBuilder {
  4959  	builder.remedyTime = remedyTime
  4960  	builder.remedyTimeFlag = true
  4961  	return builder
  4962  }
  4963  
  4964  // 补卡状态(默认为审批中)
  4965  //
  4966  // 示例值:2
  4967  func (builder *UserTaskRemedyBuilder) Status(status int) *UserTaskRemedyBuilder {
  4968  	builder.status = status
  4969  	builder.statusFlag = true
  4970  	return builder
  4971  }
  4972  
  4973  // 补卡原因
  4974  //
  4975  // 示例值:忘记打卡
  4976  func (builder *UserTaskRemedyBuilder) Reason(reason string) *UserTaskRemedyBuilder {
  4977  	builder.reason = reason
  4978  	builder.reasonFlag = true
  4979  	return builder
  4980  }
  4981  
  4982  // 补卡时间,精确到秒的时间戳
  4983  //
  4984  // 示例值:1611476284
  4985  func (builder *UserTaskRemedyBuilder) Time(time string) *UserTaskRemedyBuilder {
  4986  	builder.time = time
  4987  	builder.timeFlag = true
  4988  	return builder
  4989  }
  4990  
  4991  // 补卡时考勤组时区
  4992  //
  4993  // 示例值:Asia/Shanghai
  4994  func (builder *UserTaskRemedyBuilder) TimeZone(timeZone string) *UserTaskRemedyBuilder {
  4995  	builder.timeZone = timeZone
  4996  	builder.timeZoneFlag = true
  4997  	return builder
  4998  }
  4999  
  5000  // 补卡发起时间,精确到秒的时间戳
  5001  //
  5002  // 示例值:1611476284
  5003  func (builder *UserTaskRemedyBuilder) CreateTime(createTime string) *UserTaskRemedyBuilder {
  5004  	builder.createTime = createTime
  5005  	builder.createTimeFlag = true
  5006  	return builder
  5007  }
  5008  
  5009  // 补卡状态更新时间,精确到秒的时间戳
  5010  //
  5011  // 示例值:1611476284
  5012  func (builder *UserTaskRemedyBuilder) UpdateTime(updateTime string) *UserTaskRemedyBuilder {
  5013  	builder.updateTime = updateTime
  5014  	builder.updateTimeFlag = true
  5015  	return builder
  5016  }
  5017  
  5018  func (builder *UserTaskRemedyBuilder) Build() *UserTaskRemedy {
  5019  	req := &UserTaskRemedy{}
  5020  	if builder.userIdFlag {
  5021  		req.UserId = &builder.userId
  5022  
  5023  	}
  5024  	if builder.remedyDateFlag {
  5025  		req.RemedyDate = &builder.remedyDate
  5026  
  5027  	}
  5028  	if builder.punchNoFlag {
  5029  		req.PunchNo = &builder.punchNo
  5030  
  5031  	}
  5032  	if builder.workTypeFlag {
  5033  		req.WorkType = &builder.workType
  5034  
  5035  	}
  5036  	if builder.approvalIdFlag {
  5037  		req.ApprovalId = &builder.approvalId
  5038  
  5039  	}
  5040  	if builder.remedyTimeFlag {
  5041  		req.RemedyTime = &builder.remedyTime
  5042  
  5043  	}
  5044  	if builder.statusFlag {
  5045  		req.Status = &builder.status
  5046  
  5047  	}
  5048  	if builder.reasonFlag {
  5049  		req.Reason = &builder.reason
  5050  
  5051  	}
  5052  	if builder.timeFlag {
  5053  		req.Time = &builder.time
  5054  
  5055  	}
  5056  	if builder.timeZoneFlag {
  5057  		req.TimeZone = &builder.timeZone
  5058  
  5059  	}
  5060  	if builder.createTimeFlag {
  5061  		req.CreateTime = &builder.createTime
  5062  
  5063  	}
  5064  	if builder.updateTimeFlag {
  5065  		req.UpdateTime = &builder.updateTime
  5066  
  5067  	}
  5068  	return req
  5069  }
  5070  
  5071  type UserTrip struct {
  5072  	ApprovalId       *string `json:"approval_id,omitempty"`        // 审批实例 ID
  5073  	StartTime        *string `json:"start_time,omitempty"`         // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5074  	EndTime          *string `json:"end_time,omitempty"`           // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5075  	Reason           *string `json:"reason,omitempty"`             // 出差理由
  5076  	ApprovePassTime  *string `json:"approve_pass_time,omitempty"`  // 审批通过时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5077  	ApproveApplyTime *string `json:"approve_apply_time,omitempty"` // 审批申请时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5078  }
  5079  
  5080  type UserTripBuilder struct {
  5081  	approvalId           string // 审批实例 ID
  5082  	approvalIdFlag       bool
  5083  	startTime            string // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5084  	startTimeFlag        bool
  5085  	endTime              string // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5086  	endTimeFlag          bool
  5087  	reason               string // 出差理由
  5088  	reasonFlag           bool
  5089  	approvePassTime      string // 审批通过时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5090  	approvePassTimeFlag  bool
  5091  	approveApplyTime     string // 审批申请时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5092  	approveApplyTimeFlag bool
  5093  }
  5094  
  5095  func NewUserTripBuilder() *UserTripBuilder {
  5096  	builder := &UserTripBuilder{}
  5097  	return builder
  5098  }
  5099  
  5100  // 审批实例 ID
  5101  //
  5102  // 示例值:6737202939523236113
  5103  func (builder *UserTripBuilder) ApprovalId(approvalId string) *UserTripBuilder {
  5104  	builder.approvalId = approvalId
  5105  	builder.approvalIdFlag = true
  5106  	return builder
  5107  }
  5108  
  5109  // 开始时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5110  //
  5111  // 示例值:2021-01-04 09:00:00
  5112  func (builder *UserTripBuilder) StartTime(startTime string) *UserTripBuilder {
  5113  	builder.startTime = startTime
  5114  	builder.startTimeFlag = true
  5115  	return builder
  5116  }
  5117  
  5118  // 结束时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5119  //
  5120  // 示例值:2021-01-04 19:00:00
  5121  func (builder *UserTripBuilder) EndTime(endTime string) *UserTripBuilder {
  5122  	builder.endTime = endTime
  5123  	builder.endTimeFlag = true
  5124  	return builder
  5125  }
  5126  
  5127  // 出差理由
  5128  //
  5129  // 示例值:培训
  5130  func (builder *UserTripBuilder) Reason(reason string) *UserTripBuilder {
  5131  	builder.reason = reason
  5132  	builder.reasonFlag = true
  5133  	return builder
  5134  }
  5135  
  5136  // 审批通过时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5137  //
  5138  // 示例值:2021-01-04 12:00:00
  5139  func (builder *UserTripBuilder) ApprovePassTime(approvePassTime string) *UserTripBuilder {
  5140  	builder.approvePassTime = approvePassTime
  5141  	builder.approvePassTimeFlag = true
  5142  	return builder
  5143  }
  5144  
  5145  // 审批申请时间,时间格式为 yyyy-MM-dd HH:mm:ss
  5146  //
  5147  // 示例值:2021-01-04 11:00:00
  5148  func (builder *UserTripBuilder) ApproveApplyTime(approveApplyTime string) *UserTripBuilder {
  5149  	builder.approveApplyTime = approveApplyTime
  5150  	builder.approveApplyTimeFlag = true
  5151  	return builder
  5152  }
  5153  
  5154  func (builder *UserTripBuilder) Build() *UserTrip {
  5155  	req := &UserTrip{}
  5156  	if builder.approvalIdFlag {
  5157  		req.ApprovalId = &builder.approvalId
  5158  
  5159  	}
  5160  	if builder.startTimeFlag {
  5161  		req.StartTime = &builder.startTime
  5162  
  5163  	}
  5164  	if builder.endTimeFlag {
  5165  		req.EndTime = &builder.endTime
  5166  
  5167  	}
  5168  	if builder.reasonFlag {
  5169  		req.Reason = &builder.reason
  5170  
  5171  	}
  5172  	if builder.approvePassTimeFlag {
  5173  		req.ApprovePassTime = &builder.approvePassTime
  5174  
  5175  	}
  5176  	if builder.approveApplyTimeFlag {
  5177  		req.ApproveApplyTime = &builder.approveApplyTime
  5178  
  5179  	}
  5180  	return req
  5181  }
  5182  
  5183  type WifiInfo struct {
  5184  	Status *int `json:"status,omitempty"` //
  5185  }
  5186  
  5187  type WifiInfoBuilder struct {
  5188  	status     int //
  5189  	statusFlag bool
  5190  }
  5191  
  5192  func NewWifiInfoBuilder() *WifiInfoBuilder {
  5193  	builder := &WifiInfoBuilder{}
  5194  	return builder
  5195  }
  5196  
  5197  //
  5198  //
  5199  // 示例值:
  5200  func (builder *WifiInfoBuilder) Status(status int) *WifiInfoBuilder {
  5201  	builder.status = status
  5202  	builder.statusFlag = true
  5203  	return builder
  5204  }
  5205  
  5206  func (builder *WifiInfoBuilder) Build() *WifiInfo {
  5207  	req := &WifiInfo{}
  5208  	if builder.statusFlag {
  5209  		req.Status = &builder.status
  5210  
  5211  	}
  5212  	return req
  5213  }
  5214  
  5215  type WifiInfoEvent struct {
  5216  	Ssid      *string `json:"ssid,omitempty"`      //
  5217  	Bssid     *string `json:"bssid,omitempty"`     //
  5218  	Lastssid  *string `json:"lastssid,omitempty"`  //
  5219  	Lastbssid *string `json:"lastbssid,omitempty"` //
  5220  }
  5221  
  5222  type WifiInfoEventBuilder struct {
  5223  	ssid          string //
  5224  	ssidFlag      bool
  5225  	bssid         string //
  5226  	bssidFlag     bool
  5227  	lastssid      string //
  5228  	lastssidFlag  bool
  5229  	lastbssid     string //
  5230  	lastbssidFlag bool
  5231  }
  5232  
  5233  func NewWifiInfoEventBuilder() *WifiInfoEventBuilder {
  5234  	builder := &WifiInfoEventBuilder{}
  5235  	return builder
  5236  }
  5237  
  5238  //
  5239  //
  5240  // 示例值:
  5241  func (builder *WifiInfoEventBuilder) Ssid(ssid string) *WifiInfoEventBuilder {
  5242  	builder.ssid = ssid
  5243  	builder.ssidFlag = true
  5244  	return builder
  5245  }
  5246  
  5247  //
  5248  //
  5249  // 示例值:
  5250  func (builder *WifiInfoEventBuilder) Bssid(bssid string) *WifiInfoEventBuilder {
  5251  	builder.bssid = bssid
  5252  	builder.bssidFlag = true
  5253  	return builder
  5254  }
  5255  
  5256  //
  5257  //
  5258  // 示例值:
  5259  func (builder *WifiInfoEventBuilder) Lastssid(lastssid string) *WifiInfoEventBuilder {
  5260  	builder.lastssid = lastssid
  5261  	builder.lastssidFlag = true
  5262  	return builder
  5263  }
  5264  
  5265  //
  5266  //
  5267  // 示例值:
  5268  func (builder *WifiInfoEventBuilder) Lastbssid(lastbssid string) *WifiInfoEventBuilder {
  5269  	builder.lastbssid = lastbssid
  5270  	builder.lastbssidFlag = true
  5271  	return builder
  5272  }
  5273  
  5274  func (builder *WifiInfoEventBuilder) Build() *WifiInfoEvent {
  5275  	req := &WifiInfoEvent{}
  5276  	if builder.ssidFlag {
  5277  		req.Ssid = &builder.ssid
  5278  
  5279  	}
  5280  	if builder.bssidFlag {
  5281  		req.Bssid = &builder.bssid
  5282  
  5283  	}
  5284  	if builder.lastssidFlag {
  5285  		req.Lastssid = &builder.lastssid
  5286  
  5287  	}
  5288  	if builder.lastbssidFlag {
  5289  		req.Lastbssid = &builder.lastbssid
  5290  
  5291  	}
  5292  	return req
  5293  }
  5294  
  5295  type ProcessApprovalInfoReqBodyBuilder struct {
  5296  	approvalId       string // 审批实例 ID,获取方式:1)[获取审批通过数据](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/query) 2)[写入审批结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/create) 3)[通知补卡审批发起(补卡情况下)](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task_remedy/create)
  5297  	approvalIdFlag   bool
  5298  	approvalType     string // 审批类型,leave:请假,out:外出,overtime:加班,trip:出差,remedy:补卡
  5299  	approvalTypeFlag bool
  5300  	status           int // 审批状态,1:不通过,2:通过,4:撤销
  5301  	statusFlag       bool
  5302  }
  5303  
  5304  func NewProcessApprovalInfoReqBodyBuilder() *ProcessApprovalInfoReqBodyBuilder {
  5305  	builder := &ProcessApprovalInfoReqBodyBuilder{}
  5306  	return builder
  5307  }
  5308  
  5309  // 审批实例 ID,获取方式:1)[获取审批通过数据](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/query) 2)[写入审批结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/create) 3)[通知补卡审批发起(补卡情况下)](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task_remedy/create)
  5310  //
  5311  //示例值:6737202939523236113
  5312  func (builder *ProcessApprovalInfoReqBodyBuilder) ApprovalId(approvalId string) *ProcessApprovalInfoReqBodyBuilder {
  5313  	builder.approvalId = approvalId
  5314  	builder.approvalIdFlag = true
  5315  	return builder
  5316  }
  5317  
  5318  // 审批类型,leave:请假,out:外出,overtime:加班,trip:出差,remedy:补卡
  5319  //
  5320  //示例值:remedy
  5321  func (builder *ProcessApprovalInfoReqBodyBuilder) ApprovalType(approvalType string) *ProcessApprovalInfoReqBodyBuilder {
  5322  	builder.approvalType = approvalType
  5323  	builder.approvalTypeFlag = true
  5324  	return builder
  5325  }
  5326  
  5327  // 审批状态,1:不通过,2:通过,4:撤销
  5328  //
  5329  //示例值:4
  5330  func (builder *ProcessApprovalInfoReqBodyBuilder) Status(status int) *ProcessApprovalInfoReqBodyBuilder {
  5331  	builder.status = status
  5332  	builder.statusFlag = true
  5333  	return builder
  5334  }
  5335  
  5336  func (builder *ProcessApprovalInfoReqBodyBuilder) Build() *ProcessApprovalInfoReqBody {
  5337  	req := &ProcessApprovalInfoReqBody{}
  5338  	if builder.approvalIdFlag {
  5339  		req.ApprovalId = &builder.approvalId
  5340  	}
  5341  	if builder.approvalTypeFlag {
  5342  		req.ApprovalType = &builder.approvalType
  5343  	}
  5344  	if builder.statusFlag {
  5345  		req.Status = &builder.status
  5346  	}
  5347  	return req
  5348  }
  5349  
  5350  type ProcessApprovalInfoPathReqBodyBuilder struct {
  5351  	approvalId       string // 审批实例 ID,获取方式:1)[获取审批通过数据](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/query) 2)[写入审批结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/create) 3)[通知补卡审批发起(补卡情况下)](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task_remedy/create)
  5352  	approvalIdFlag   bool
  5353  	approvalType     string // 审批类型,leave:请假,out:外出,overtime:加班,trip:出差,remedy:补卡
  5354  	approvalTypeFlag bool
  5355  	status           int // 审批状态,1:不通过,2:通过,4:撤销
  5356  	statusFlag       bool
  5357  }
  5358  
  5359  func NewProcessApprovalInfoPathReqBodyBuilder() *ProcessApprovalInfoPathReqBodyBuilder {
  5360  	builder := &ProcessApprovalInfoPathReqBodyBuilder{}
  5361  	return builder
  5362  }
  5363  
  5364  // 审批实例 ID,获取方式:1)[获取审批通过数据](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/query) 2)[写入审批结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/create) 3)[通知补卡审批发起(补卡情况下)](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task_remedy/create)
  5365  //
  5366  // 示例值:6737202939523236113
  5367  func (builder *ProcessApprovalInfoPathReqBodyBuilder) ApprovalId(approvalId string) *ProcessApprovalInfoPathReqBodyBuilder {
  5368  	builder.approvalId = approvalId
  5369  	builder.approvalIdFlag = true
  5370  	return builder
  5371  }
  5372  
  5373  // 审批类型,leave:请假,out:外出,overtime:加班,trip:出差,remedy:补卡
  5374  //
  5375  // 示例值:remedy
  5376  func (builder *ProcessApprovalInfoPathReqBodyBuilder) ApprovalType(approvalType string) *ProcessApprovalInfoPathReqBodyBuilder {
  5377  	builder.approvalType = approvalType
  5378  	builder.approvalTypeFlag = true
  5379  	return builder
  5380  }
  5381  
  5382  // 审批状态,1:不通过,2:通过,4:撤销
  5383  //
  5384  // 示例值:4
  5385  func (builder *ProcessApprovalInfoPathReqBodyBuilder) Status(status int) *ProcessApprovalInfoPathReqBodyBuilder {
  5386  	builder.status = status
  5387  	builder.statusFlag = true
  5388  	return builder
  5389  }
  5390  
  5391  func (builder *ProcessApprovalInfoPathReqBodyBuilder) Build() (*ProcessApprovalInfoReqBody, error) {
  5392  	req := &ProcessApprovalInfoReqBody{}
  5393  	if builder.approvalIdFlag {
  5394  		req.ApprovalId = &builder.approvalId
  5395  	}
  5396  	if builder.approvalTypeFlag {
  5397  		req.ApprovalType = &builder.approvalType
  5398  	}
  5399  	if builder.statusFlag {
  5400  		req.Status = &builder.status
  5401  	}
  5402  	return req, nil
  5403  }
  5404  
  5405  type ProcessApprovalInfoReqBuilder struct {
  5406  	apiReq *larkcore.ApiReq
  5407  	body   *ProcessApprovalInfoReqBody
  5408  }
  5409  
  5410  func NewProcessApprovalInfoReqBuilder() *ProcessApprovalInfoReqBuilder {
  5411  	builder := &ProcessApprovalInfoReqBuilder{}
  5412  	builder.apiReq = &larkcore.ApiReq{
  5413  		PathParams:  larkcore.PathParams{},
  5414  		QueryParams: larkcore.QueryParams{},
  5415  	}
  5416  	return builder
  5417  }
  5418  
  5419  // 对于只使用飞书考勤系统而未使用飞书审批系统的企业,可以通过该接口更新写入飞书考勤系统中的三方系统审批状态,例如请假、加班、外出、出差、补卡等审批,状态包括通过、不通过、撤销等。
  5420  func (builder *ProcessApprovalInfoReqBuilder) Body(body *ProcessApprovalInfoReqBody) *ProcessApprovalInfoReqBuilder {
  5421  	builder.body = body
  5422  	return builder
  5423  }
  5424  
  5425  func (builder *ProcessApprovalInfoReqBuilder) Build() *ProcessApprovalInfoReq {
  5426  	req := &ProcessApprovalInfoReq{}
  5427  	req.apiReq = &larkcore.ApiReq{}
  5428  	req.apiReq.Body = builder.body
  5429  	return req
  5430  }
  5431  
  5432  type ProcessApprovalInfoReqBody struct {
  5433  	ApprovalId   *string `json:"approval_id,omitempty"`   // 审批实例 ID,获取方式:1)[获取审批通过数据](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/query) 2)[写入审批结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_approval/create) 3)[通知补卡审批发起(补卡情况下)](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task_remedy/create)
  5434  	ApprovalType *string `json:"approval_type,omitempty"` // 审批类型,leave:请假,out:外出,overtime:加班,trip:出差,remedy:补卡
  5435  	Status       *int    `json:"status,omitempty"`        // 审批状态,1:不通过,2:通过,4:撤销
  5436  }
  5437  
  5438  type ProcessApprovalInfoReq struct {
  5439  	apiReq *larkcore.ApiReq
  5440  	Body   *ProcessApprovalInfoReqBody `body:""`
  5441  }
  5442  
  5443  type ProcessApprovalInfoRespData struct {
  5444  	ApprovalInfo *ApprovalInfo `json:"approval_info,omitempty"` // 审批信息
  5445  }
  5446  
  5447  type ProcessApprovalInfoResp struct {
  5448  	*larkcore.ApiResp `json:"-"`
  5449  	larkcore.CodeError
  5450  	Data *ProcessApprovalInfoRespData `json:"data"` // 业务数据
  5451  }
  5452  
  5453  func (resp *ProcessApprovalInfoResp) Success() bool {
  5454  	return resp.Code == 0
  5455  }
  5456  
  5457  type DownloadFileReqBuilder struct {
  5458  	apiReq *larkcore.ApiReq
  5459  }
  5460  
  5461  func NewDownloadFileReqBuilder() *DownloadFileReqBuilder {
  5462  	builder := &DownloadFileReqBuilder{}
  5463  	builder.apiReq = &larkcore.ApiReq{
  5464  		PathParams:  larkcore.PathParams{},
  5465  		QueryParams: larkcore.QueryParams{},
  5466  	}
  5467  	return builder
  5468  }
  5469  
  5470  // 文件 ID
  5471  //
  5472  // 示例值:xxxxxb306842b1c189bc5212eefxxxxx
  5473  func (builder *DownloadFileReqBuilder) FileId(fileId string) *DownloadFileReqBuilder {
  5474  	builder.apiReq.PathParams.Set("file_id", fmt.Sprint(fileId))
  5475  	return builder
  5476  }
  5477  
  5478  func (builder *DownloadFileReqBuilder) Build() *DownloadFileReq {
  5479  	req := &DownloadFileReq{}
  5480  	req.apiReq = &larkcore.ApiReq{}
  5481  	req.apiReq.PathParams = builder.apiReq.PathParams
  5482  	return req
  5483  }
  5484  
  5485  type DownloadFileReq struct {
  5486  	apiReq *larkcore.ApiReq
  5487  }
  5488  
  5489  type DownloadFileResp struct {
  5490  	*larkcore.ApiResp `json:"-"`
  5491  	larkcore.CodeError
  5492  	File     io.Reader `json:"-"`
  5493  	FileName string    `json:"-"`
  5494  }
  5495  
  5496  func (resp *DownloadFileResp) Success() bool {
  5497  	return resp.Code == 0
  5498  }
  5499  
  5500  func (resp *DownloadFileResp) WriteFile(fileName string) error {
  5501  	bs, err := ioutil.ReadAll(resp.File)
  5502  	if err != nil {
  5503  		return err
  5504  	}
  5505  
  5506  	err = ioutil.WriteFile(fileName, bs, 0666)
  5507  	if err != nil {
  5508  		return err
  5509  	}
  5510  	return nil
  5511  }
  5512  
  5513  type UploadFileReqBodyBuilder struct {
  5514  	file     io.Reader // 文件内容
  5515  	fileFlag bool
  5516  }
  5517  
  5518  func NewUploadFileReqBodyBuilder() *UploadFileReqBodyBuilder {
  5519  	builder := &UploadFileReqBodyBuilder{}
  5520  	return builder
  5521  }
  5522  
  5523  // 文件内容
  5524  //
  5525  //示例值:二进制文件
  5526  func (builder *UploadFileReqBodyBuilder) File(file io.Reader) *UploadFileReqBodyBuilder {
  5527  	builder.file = file
  5528  	builder.fileFlag = true
  5529  	return builder
  5530  }
  5531  
  5532  func (builder *UploadFileReqBodyBuilder) Build() *UploadFileReqBody {
  5533  	req := &UploadFileReqBody{}
  5534  	if builder.fileFlag {
  5535  		req.File = builder.file
  5536  	}
  5537  	return req
  5538  }
  5539  
  5540  type UploadFilePathReqBodyBuilder struct {
  5541  	filePath     string // 文件内容
  5542  	filePathFlag bool
  5543  }
  5544  
  5545  func NewUploadFilePathReqBodyBuilder() *UploadFilePathReqBodyBuilder {
  5546  	builder := &UploadFilePathReqBodyBuilder{}
  5547  	return builder
  5548  }
  5549  
  5550  // 文件内容
  5551  //
  5552  // 示例值:二进制文件
  5553  func (builder *UploadFilePathReqBodyBuilder) FilePath(filePath string) *UploadFilePathReqBodyBuilder {
  5554  	builder.filePath = filePath
  5555  	builder.filePathFlag = true
  5556  	return builder
  5557  }
  5558  
  5559  func (builder *UploadFilePathReqBodyBuilder) Build() (*UploadFileReqBody, error) {
  5560  	req := &UploadFileReqBody{}
  5561  	if builder.filePathFlag {
  5562  		data, err := larkcore.File2Bytes(builder.filePath)
  5563  		if err != nil {
  5564  			return nil, err
  5565  		}
  5566  		req.File = bytes.NewBuffer(data)
  5567  	}
  5568  	return req, nil
  5569  }
  5570  
  5571  type UploadFileReqBuilder struct {
  5572  	apiReq *larkcore.ApiReq
  5573  	body   *UploadFileReqBody
  5574  }
  5575  
  5576  func NewUploadFileReqBuilder() *UploadFileReqBuilder {
  5577  	builder := &UploadFileReqBuilder{}
  5578  	builder.apiReq = &larkcore.ApiReq{
  5579  		PathParams:  larkcore.PathParams{},
  5580  		QueryParams: larkcore.QueryParams{},
  5581  	}
  5582  	return builder
  5583  }
  5584  
  5585  // 带后缀的文件名
  5586  //
  5587  // 示例值:人脸照片.jpg
  5588  func (builder *UploadFileReqBuilder) FileName(fileName string) *UploadFileReqBuilder {
  5589  	builder.apiReq.QueryParams.Set("file_name", fmt.Sprint(fileName))
  5590  	return builder
  5591  }
  5592  
  5593  // 上传文件并获取文件 ID,可用于“修改用户设置”接口中的 face_key 参数。
  5594  func (builder *UploadFileReqBuilder) Body(body *UploadFileReqBody) *UploadFileReqBuilder {
  5595  	builder.body = body
  5596  	return builder
  5597  }
  5598  
  5599  func (builder *UploadFileReqBuilder) Build() *UploadFileReq {
  5600  	req := &UploadFileReq{}
  5601  	req.apiReq = &larkcore.ApiReq{}
  5602  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5603  	req.apiReq.Body = builder.body
  5604  	return req
  5605  }
  5606  
  5607  type UploadFileReqBody struct {
  5608  	File io.Reader `json:"file,omitempty"` // 文件内容
  5609  }
  5610  
  5611  type UploadFileReq struct {
  5612  	apiReq *larkcore.ApiReq
  5613  	Body   *UploadFileReqBody `body:""`
  5614  }
  5615  
  5616  type UploadFileRespData struct {
  5617  	File *File `json:"file,omitempty"` // 文件
  5618  }
  5619  
  5620  type UploadFileResp struct {
  5621  	*larkcore.ApiResp `json:"-"`
  5622  	larkcore.CodeError
  5623  	Data *UploadFileRespData `json:"data"` // 业务数据
  5624  }
  5625  
  5626  func (resp *UploadFileResp) Success() bool {
  5627  	return resp.Code == 0
  5628  }
  5629  
  5630  type CreateGroupReqBodyBuilder struct {
  5631  	group          *Group // 6921319402260496386
  5632  	groupFlag      bool
  5633  	operatorId     string // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  5634  	operatorIdFlag bool
  5635  }
  5636  
  5637  func NewCreateGroupReqBodyBuilder() *CreateGroupReqBodyBuilder {
  5638  	builder := &CreateGroupReqBodyBuilder{}
  5639  	return builder
  5640  }
  5641  
  5642  // 6921319402260496386
  5643  //
  5644  //示例值:
  5645  func (builder *CreateGroupReqBodyBuilder) Group(group *Group) *CreateGroupReqBodyBuilder {
  5646  	builder.group = group
  5647  	builder.groupFlag = true
  5648  	return builder
  5649  }
  5650  
  5651  // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  5652  //
  5653  //示例值:dd31248a
  5654  func (builder *CreateGroupReqBodyBuilder) OperatorId(operatorId string) *CreateGroupReqBodyBuilder {
  5655  	builder.operatorId = operatorId
  5656  	builder.operatorIdFlag = true
  5657  	return builder
  5658  }
  5659  
  5660  func (builder *CreateGroupReqBodyBuilder) Build() *CreateGroupReqBody {
  5661  	req := &CreateGroupReqBody{}
  5662  	if builder.groupFlag {
  5663  		req.Group = builder.group
  5664  	}
  5665  	if builder.operatorIdFlag {
  5666  		req.OperatorId = &builder.operatorId
  5667  	}
  5668  	return req
  5669  }
  5670  
  5671  type CreateGroupPathReqBodyBuilder struct {
  5672  	group          *Group // 6921319402260496386
  5673  	groupFlag      bool
  5674  	operatorId     string // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  5675  	operatorIdFlag bool
  5676  }
  5677  
  5678  func NewCreateGroupPathReqBodyBuilder() *CreateGroupPathReqBodyBuilder {
  5679  	builder := &CreateGroupPathReqBodyBuilder{}
  5680  	return builder
  5681  }
  5682  
  5683  // 6921319402260496386
  5684  //
  5685  // 示例值:
  5686  func (builder *CreateGroupPathReqBodyBuilder) Group(group *Group) *CreateGroupPathReqBodyBuilder {
  5687  	builder.group = group
  5688  	builder.groupFlag = true
  5689  	return builder
  5690  }
  5691  
  5692  // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  5693  //
  5694  // 示例值:dd31248a
  5695  func (builder *CreateGroupPathReqBodyBuilder) OperatorId(operatorId string) *CreateGroupPathReqBodyBuilder {
  5696  	builder.operatorId = operatorId
  5697  	builder.operatorIdFlag = true
  5698  	return builder
  5699  }
  5700  
  5701  func (builder *CreateGroupPathReqBodyBuilder) Build() (*CreateGroupReqBody, error) {
  5702  	req := &CreateGroupReqBody{}
  5703  	if builder.groupFlag {
  5704  		req.Group = builder.group
  5705  	}
  5706  	if builder.operatorIdFlag {
  5707  		req.OperatorId = &builder.operatorId
  5708  	}
  5709  	return req, nil
  5710  }
  5711  
  5712  type CreateGroupReqBuilder struct {
  5713  	apiReq *larkcore.ApiReq
  5714  	body   *CreateGroupReqBody
  5715  }
  5716  
  5717  func NewCreateGroupReqBuilder() *CreateGroupReqBuilder {
  5718  	builder := &CreateGroupReqBuilder{}
  5719  	builder.apiReq = &larkcore.ApiReq{
  5720  		PathParams:  larkcore.PathParams{},
  5721  		QueryParams: larkcore.QueryParams{},
  5722  	}
  5723  	return builder
  5724  }
  5725  
  5726  // 用户 ID 的类型
  5727  //
  5728  // 示例值:employee_id
  5729  func (builder *CreateGroupReqBuilder) EmployeeType(employeeType string) *CreateGroupReqBuilder {
  5730  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  5731  	return builder
  5732  }
  5733  
  5734  // 部门 ID 的类型
  5735  //
  5736  // 示例值:od-fcb45c28a45311afd441b8869541ece8
  5737  func (builder *CreateGroupReqBuilder) DeptType(deptType string) *CreateGroupReqBuilder {
  5738  	builder.apiReq.QueryParams.Set("dept_type", fmt.Sprint(deptType))
  5739  	return builder
  5740  }
  5741  
  5742  // 考勤组,是对部门或者员工在某个特定场所及特定时间段内的出勤情况(包括上下班、迟到、早退、病假、婚假、丧假、公休、工作时间、加班情况等)的一种规则设定。;;通过设置考勤组,可以从部门、员工两个维度,来设定考勤方式、考勤时间、考勤地点等考勤规则。
  5743  func (builder *CreateGroupReqBuilder) Body(body *CreateGroupReqBody) *CreateGroupReqBuilder {
  5744  	builder.body = body
  5745  	return builder
  5746  }
  5747  
  5748  func (builder *CreateGroupReqBuilder) Build() *CreateGroupReq {
  5749  	req := &CreateGroupReq{}
  5750  	req.apiReq = &larkcore.ApiReq{}
  5751  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5752  	req.apiReq.Body = builder.body
  5753  	return req
  5754  }
  5755  
  5756  type CreateGroupReqBody struct {
  5757  	Group      *Group  `json:"group,omitempty"`       // 6921319402260496386
  5758  	OperatorId *string `json:"operator_id,omitempty"` // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  5759  }
  5760  
  5761  type CreateGroupReq struct {
  5762  	apiReq *larkcore.ApiReq
  5763  	Body   *CreateGroupReqBody `body:""`
  5764  }
  5765  
  5766  type CreateGroupRespData struct {
  5767  	Group *Group `json:"group,omitempty"` // 6921319402260496386
  5768  }
  5769  
  5770  type CreateGroupResp struct {
  5771  	*larkcore.ApiResp `json:"-"`
  5772  	larkcore.CodeError
  5773  	Data *CreateGroupRespData `json:"data"` // 业务数据
  5774  }
  5775  
  5776  func (resp *CreateGroupResp) Success() bool {
  5777  	return resp.Code == 0
  5778  }
  5779  
  5780  type DeleteGroupReqBuilder struct {
  5781  	apiReq *larkcore.ApiReq
  5782  }
  5783  
  5784  func NewDeleteGroupReqBuilder() *DeleteGroupReqBuilder {
  5785  	builder := &DeleteGroupReqBuilder{}
  5786  	builder.apiReq = &larkcore.ApiReq{
  5787  		PathParams:  larkcore.PathParams{},
  5788  		QueryParams: larkcore.QueryParams{},
  5789  	}
  5790  	return builder
  5791  }
  5792  
  5793  // 考勤组 ID,获取方式:1)[创建或修改考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/create) 2)[按名称查询考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/search) 3)[获取打卡结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task/query)
  5794  //
  5795  // 示例值:6919358128597097404
  5796  func (builder *DeleteGroupReqBuilder) GroupId(groupId string) *DeleteGroupReqBuilder {
  5797  	builder.apiReq.PathParams.Set("group_id", fmt.Sprint(groupId))
  5798  	return builder
  5799  }
  5800  
  5801  func (builder *DeleteGroupReqBuilder) Build() *DeleteGroupReq {
  5802  	req := &DeleteGroupReq{}
  5803  	req.apiReq = &larkcore.ApiReq{}
  5804  	req.apiReq.PathParams = builder.apiReq.PathParams
  5805  	return req
  5806  }
  5807  
  5808  type DeleteGroupReq struct {
  5809  	apiReq *larkcore.ApiReq
  5810  }
  5811  
  5812  type DeleteGroupResp struct {
  5813  	*larkcore.ApiResp `json:"-"`
  5814  	larkcore.CodeError
  5815  }
  5816  
  5817  func (resp *DeleteGroupResp) Success() bool {
  5818  	return resp.Code == 0
  5819  }
  5820  
  5821  type GetGroupReqBuilder struct {
  5822  	apiReq *larkcore.ApiReq
  5823  }
  5824  
  5825  func NewGetGroupReqBuilder() *GetGroupReqBuilder {
  5826  	builder := &GetGroupReqBuilder{}
  5827  	builder.apiReq = &larkcore.ApiReq{
  5828  		PathParams:  larkcore.PathParams{},
  5829  		QueryParams: larkcore.QueryParams{},
  5830  	}
  5831  	return builder
  5832  }
  5833  
  5834  // 考勤组 ID,获取方式:1)[创建或修改考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/create) 2)[按名称查询考勤组](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/group/search) 3)[获取打卡结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task/query)
  5835  //
  5836  // 示例值:6919358128597097404
  5837  func (builder *GetGroupReqBuilder) GroupId(groupId string) *GetGroupReqBuilder {
  5838  	builder.apiReq.PathParams.Set("group_id", fmt.Sprint(groupId))
  5839  	return builder
  5840  }
  5841  
  5842  // 用户 ID 的类型
  5843  //
  5844  // 示例值:employee_id
  5845  func (builder *GetGroupReqBuilder) EmployeeType(employeeType string) *GetGroupReqBuilder {
  5846  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  5847  	return builder
  5848  }
  5849  
  5850  // 部门 ID 的类型
  5851  //
  5852  // 示例值:od-fcb45c28a45311afd441b8869541ece8
  5853  func (builder *GetGroupReqBuilder) DeptType(deptType string) *GetGroupReqBuilder {
  5854  	builder.apiReq.QueryParams.Set("dept_type", fmt.Sprint(deptType))
  5855  	return builder
  5856  }
  5857  
  5858  func (builder *GetGroupReqBuilder) Build() *GetGroupReq {
  5859  	req := &GetGroupReq{}
  5860  	req.apiReq = &larkcore.ApiReq{}
  5861  	req.apiReq.PathParams = builder.apiReq.PathParams
  5862  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5863  	return req
  5864  }
  5865  
  5866  type GetGroupReq struct {
  5867  	apiReq *larkcore.ApiReq
  5868  }
  5869  
  5870  type GetGroupRespData struct {
  5871  	GroupId                 *string                  `json:"group_id,omitempty"`                    // 考勤组的Id, 需要从获取用户打卡结果信息的接口中获取groupId,修改考勤组时必填
  5872  	GroupName               *string                  `json:"group_name,omitempty"`                  // 考勤组名称
  5873  	TimeZone                *string                  `json:"time_zone,omitempty"`                   // 考勤组时区
  5874  	BindDeptIds             []string                 `json:"bind_dept_ids,omitempty"`               //
  5875  	ExceptDeptIds           []string                 `json:"except_dept_ids,omitempty"`             //
  5876  	BindUserIds             []string                 `json:"bind_user_ids,omitempty"`               //
  5877  	ExceptUserIds           []string                 `json:"except_user_ids,omitempty"`             //
  5878  	GroupLeaderIds          []string                 `json:"group_leader_ids,omitempty"`            //
  5879  	SubGroupLeaderIds       []string                 `json:"sub_group_leader_ids,omitempty"`        //
  5880  	AllowOutPunch           *bool                    `json:"allow_out_punch,omitempty"`             // 是否允许外勤打卡
  5881  	OutPunchNeedApproval    *bool                    `json:"out_punch_need_approval,omitempty"`     // 外勤打卡需审批(需要允许外勤打卡才能设置生效)
  5882  	OutPunchNeedRemark      *bool                    `json:"out_punch_need_remark,omitempty"`       // 外勤打卡需填写备注(需要允许外勤打卡才能设置生效)
  5883  	OutPunchNeedPhoto       *bool                    `json:"out_punch_need_photo,omitempty"`        // 外勤打卡需拍照(需要允许外勤打卡才能设置生效)
  5884  	OutPunchAllowedHideAddr *bool                    `json:"out_punch_allowed_hide_addr,omitempty"` // 外勤打卡允许员工隐藏详细地址(需要允许外勤打卡才能设置生效)
  5885  	AllowPcPunch            *bool                    `json:"allow_pc_punch,omitempty"`              // 是否允许pc打卡
  5886  	AllowRemedy             *bool                    `json:"allow_remedy,omitempty"`                // 是否允许补卡
  5887  	RemedyLimit             *bool                    `json:"remedy_limit,omitempty"`                // 补卡次数是否限制(需要允许补卡才能设置生效)
  5888  	RemedyLimitCount        *int                     `json:"remedy_limit_count,omitempty"`          // 补卡次数(需要允许补卡才能设置生效)
  5889  	RemedyDateLimit         *bool                    `json:"remedy_date_limit,omitempty"`           // 补卡时间是否限制(需要允许补卡才能设置生效)
  5890  	RemedyDateNum           *int                     `json:"remedy_date_num,omitempty"`             // 补卡时间,几天内可以发起补卡(需要允许补卡才能设置生效)
  5891  	AllowRemedyTypeLack     *bool                    `json:"allow_remedy_type_lack,omitempty"`      // 允许缺卡补卡(需要允许补卡才能设置生效)
  5892  	AllowRemedyTypeLate     *bool                    `json:"allow_remedy_type_late,omitempty"`      // 允许迟到补卡(需要允许补卡才能设置生效)
  5893  	AllowRemedyTypeEarly    *bool                    `json:"allow_remedy_type_early,omitempty"`     // 允许早退补卡(需要允许补卡才能设置生效)
  5894  	AllowRemedyTypeNormal   *bool                    `json:"allow_remedy_type_normal,omitempty"`    // 允许正常补卡(需要允许补卡才能设置生效)
  5895  	ShowCumulativeTime      *bool                    `json:"show_cumulative_time,omitempty"`        // 是否展示累计时长
  5896  	ShowOverTime            *bool                    `json:"show_over_time,omitempty"`              // 是否展示加班时长
  5897  	HideStaffPunchTime      *bool                    `json:"hide_staff_punch_time,omitempty"`       // 是否隐藏员工打卡详情
  5898  	FacePunch               *bool                    `json:"face_punch,omitempty"`                  // 是否开启人脸打卡
  5899  	FacePunchCfg            *int                     `json:"face_punch_cfg,omitempty"`              // 人脸打卡规则, 1:每次打卡均需人脸识别 2:疑似需要
  5900  	FaceDowngrade           *bool                    `json:"face_downgrade,omitempty"`              // 脸识别失败时允许普通拍照打卡
  5901  	ReplaceBasicPic         *bool                    `json:"replace_basic_pic,omitempty"`           // 是否允许替换基准图片
  5902  	Machines                []*Machine               `json:"machines,omitempty"`                    //
  5903  	GpsRange                *int                     `json:"gps_range,omitempty"`                   // GPS打卡的地址范围
  5904  	Locations               []*Location              `json:"locations,omitempty"`                   //
  5905  	GroupType               *int                     `json:"group_type,omitempty"`                  // 考勤类型 0:固定考勤  2:排班考勤, 3:自由班次
  5906  	PunchDayShiftIds        []string                 `json:"punch_day_shift_ids,omitempty"`         // 固定班次必需填
  5907  	FreePunchCfg            *FreePunchCfg            `json:"free_punch_cfg,omitempty"`              //
  5908  	CalendarId              *int                     `json:"calendar_id,omitempty"`                 // 国家日历 id,(0:不根据国家日历休息, 1:中国,2:美国,3:日本,4:印度,5:新加坡),默认 1
  5909  	NeedPunchSpecialDays    []*PunchSpecialDateShift `json:"need_punch_special_days,omitempty"`     // 强制需要打卡的日期
  5910  	NoNeedPunchSpecialDays  []*PunchSpecialDateShift `json:"no_need_punch_special_days,omitempty"`  // 强制不需要打卡的日期
  5911  	WorkDayNoPunchAsLack    *bool                    `json:"work_day_no_punch_as_lack,omitempty"`   // 自由班次下工作日不打卡是否记为缺卡
  5912  	RemedyPeriodType        *int                     `json:"remedy_period_type,omitempty"`          // 补卡周期类型
  5913  	RemedyPeriodCustomDate  *int                     `json:"remedy_period_custom_date,omitempty"`   // 补卡自定义周期起始日期
  5914  	PunchType               *int                     `json:"punch_type,omitempty"`                  // 打卡类型,位运算。1:GPS打卡;2:wifi打卡;4:考勤机打卡;8:IP打卡
  5915  	EffectTime              *string                  `json:"effect_time,omitempty"`                 // 生效时间,精确到秒的时间戳
  5916  	RestClockInNeedApproval *bool                    `json:"rest_clockIn_need_approval,omitempty"`  // 休息日打卡需审批
  5917  	ClockInNeedPhoto        *bool                    `json:"clockIn_need_photo,omitempty"`          // 每次打卡均需拍照
  5918  }
  5919  
  5920  type GetGroupResp struct {
  5921  	*larkcore.ApiResp `json:"-"`
  5922  	larkcore.CodeError
  5923  	Data *GetGroupRespData `json:"data"` // 业务数据
  5924  }
  5925  
  5926  func (resp *GetGroupResp) Success() bool {
  5927  	return resp.Code == 0
  5928  }
  5929  
  5930  type ListGroupReqBuilder struct {
  5931  	apiReq *larkcore.ApiReq
  5932  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  5933  }
  5934  
  5935  func NewListGroupReqBuilder() *ListGroupReqBuilder {
  5936  	builder := &ListGroupReqBuilder{}
  5937  	builder.apiReq = &larkcore.ApiReq{
  5938  		PathParams:  larkcore.PathParams{},
  5939  		QueryParams: larkcore.QueryParams{},
  5940  	}
  5941  	return builder
  5942  }
  5943  
  5944  // 最大返回多少记录,当使用迭代器访问时才有效
  5945  func (builder *ListGroupReqBuilder) Limit(limit int) *ListGroupReqBuilder {
  5946  	builder.limit = limit
  5947  	return builder
  5948  }
  5949  
  5950  // 分页大小
  5951  //
  5952  // 示例值:10
  5953  func (builder *ListGroupReqBuilder) PageSize(pageSize int) *ListGroupReqBuilder {
  5954  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  5955  	return builder
  5956  }
  5957  
  5958  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  5959  //
  5960  // 示例值:wgNOR1rmxogRvAsGl6CXlQ==
  5961  func (builder *ListGroupReqBuilder) PageToken(pageToken string) *ListGroupReqBuilder {
  5962  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  5963  	return builder
  5964  }
  5965  
  5966  func (builder *ListGroupReqBuilder) Build() *ListGroupReq {
  5967  	req := &ListGroupReq{}
  5968  	req.apiReq = &larkcore.ApiReq{}
  5969  	req.Limit = builder.limit
  5970  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5971  	return req
  5972  }
  5973  
  5974  type ListGroupReq struct {
  5975  	apiReq *larkcore.ApiReq
  5976  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  5977  
  5978  }
  5979  
  5980  type ListGroupRespData struct {
  5981  	GroupList []*GroupMeta `json:"group_list,omitempty"` // 考勤组列表
  5982  	PageToken *string      `json:"page_token,omitempty"` //
  5983  	HasMore   *bool        `json:"has_more,omitempty"`   //
  5984  }
  5985  
  5986  type ListGroupResp struct {
  5987  	*larkcore.ApiResp `json:"-"`
  5988  	larkcore.CodeError
  5989  	Data *ListGroupRespData `json:"data"` // 业务数据
  5990  }
  5991  
  5992  func (resp *ListGroupResp) Success() bool {
  5993  	return resp.Code == 0
  5994  }
  5995  
  5996  type SearchGroupReqBodyBuilder struct {
  5997  	groupName          string // 考勤组名称
  5998  	groupNameFlag      bool
  5999  	exactlyMatched     bool // 是否精准匹配,默认为 false:模糊匹配;true:精准匹配
  6000  	exactlyMatchedFlag bool
  6001  }
  6002  
  6003  func NewSearchGroupReqBodyBuilder() *SearchGroupReqBodyBuilder {
  6004  	builder := &SearchGroupReqBodyBuilder{}
  6005  	return builder
  6006  }
  6007  
  6008  // 考勤组名称
  6009  //
  6010  //示例值:考勤组1
  6011  func (builder *SearchGroupReqBodyBuilder) GroupName(groupName string) *SearchGroupReqBodyBuilder {
  6012  	builder.groupName = groupName
  6013  	builder.groupNameFlag = true
  6014  	return builder
  6015  }
  6016  
  6017  // 是否精准匹配,默认为 false:模糊匹配;true:精准匹配
  6018  //
  6019  //示例值:true
  6020  func (builder *SearchGroupReqBodyBuilder) ExactlyMatched(exactlyMatched bool) *SearchGroupReqBodyBuilder {
  6021  	builder.exactlyMatched = exactlyMatched
  6022  	builder.exactlyMatchedFlag = true
  6023  	return builder
  6024  }
  6025  
  6026  func (builder *SearchGroupReqBodyBuilder) Build() *SearchGroupReqBody {
  6027  	req := &SearchGroupReqBody{}
  6028  	if builder.groupNameFlag {
  6029  		req.GroupName = &builder.groupName
  6030  	}
  6031  	if builder.exactlyMatchedFlag {
  6032  		req.ExactlyMatched = &builder.exactlyMatched
  6033  	}
  6034  	return req
  6035  }
  6036  
  6037  type SearchGroupPathReqBodyBuilder struct {
  6038  	groupName          string // 考勤组名称
  6039  	groupNameFlag      bool
  6040  	exactlyMatched     bool // 是否精准匹配,默认为 false:模糊匹配;true:精准匹配
  6041  	exactlyMatchedFlag bool
  6042  }
  6043  
  6044  func NewSearchGroupPathReqBodyBuilder() *SearchGroupPathReqBodyBuilder {
  6045  	builder := &SearchGroupPathReqBodyBuilder{}
  6046  	return builder
  6047  }
  6048  
  6049  // 考勤组名称
  6050  //
  6051  // 示例值:考勤组1
  6052  func (builder *SearchGroupPathReqBodyBuilder) GroupName(groupName string) *SearchGroupPathReqBodyBuilder {
  6053  	builder.groupName = groupName
  6054  	builder.groupNameFlag = true
  6055  	return builder
  6056  }
  6057  
  6058  // 是否精准匹配,默认为 false:模糊匹配;true:精准匹配
  6059  //
  6060  // 示例值:true
  6061  func (builder *SearchGroupPathReqBodyBuilder) ExactlyMatched(exactlyMatched bool) *SearchGroupPathReqBodyBuilder {
  6062  	builder.exactlyMatched = exactlyMatched
  6063  	builder.exactlyMatchedFlag = true
  6064  	return builder
  6065  }
  6066  
  6067  func (builder *SearchGroupPathReqBodyBuilder) Build() (*SearchGroupReqBody, error) {
  6068  	req := &SearchGroupReqBody{}
  6069  	if builder.groupNameFlag {
  6070  		req.GroupName = &builder.groupName
  6071  	}
  6072  	if builder.exactlyMatchedFlag {
  6073  		req.ExactlyMatched = &builder.exactlyMatched
  6074  	}
  6075  	return req, nil
  6076  }
  6077  
  6078  type SearchGroupReqBuilder struct {
  6079  	apiReq *larkcore.ApiReq
  6080  	body   *SearchGroupReqBody
  6081  }
  6082  
  6083  func NewSearchGroupReqBuilder() *SearchGroupReqBuilder {
  6084  	builder := &SearchGroupReqBuilder{}
  6085  	builder.apiReq = &larkcore.ApiReq{
  6086  		PathParams:  larkcore.PathParams{},
  6087  		QueryParams: larkcore.QueryParams{},
  6088  	}
  6089  	return builder
  6090  }
  6091  
  6092  // 按考勤组名称查询考勤组摘要信息。查询条件支持名称精确匹配和模糊匹配两种方式。查询结果按考勤组修改时间 desc 排序,且最大记录数为 10 条。
  6093  func (builder *SearchGroupReqBuilder) Body(body *SearchGroupReqBody) *SearchGroupReqBuilder {
  6094  	builder.body = body
  6095  	return builder
  6096  }
  6097  
  6098  func (builder *SearchGroupReqBuilder) Build() *SearchGroupReq {
  6099  	req := &SearchGroupReq{}
  6100  	req.apiReq = &larkcore.ApiReq{}
  6101  	req.apiReq.Body = builder.body
  6102  	return req
  6103  }
  6104  
  6105  type SearchGroupReqBody struct {
  6106  	GroupName      *string `json:"group_name,omitempty"`      // 考勤组名称
  6107  	ExactlyMatched *bool   `json:"exactly_matched,omitempty"` // 是否精准匹配,默认为 false:模糊匹配;true:精准匹配
  6108  }
  6109  
  6110  type SearchGroupReq struct {
  6111  	apiReq *larkcore.ApiReq
  6112  	Body   *SearchGroupReqBody `body:""`
  6113  }
  6114  
  6115  type SearchGroupRespData struct {
  6116  	GroupList []*GroupMeta `json:"group_list,omitempty"` // 考勤组列表
  6117  }
  6118  
  6119  type SearchGroupResp struct {
  6120  	*larkcore.ApiResp `json:"-"`
  6121  	larkcore.CodeError
  6122  	Data *SearchGroupRespData `json:"data"` // 业务数据
  6123  }
  6124  
  6125  func (resp *SearchGroupResp) Success() bool {
  6126  	return resp.Code == 0
  6127  }
  6128  
  6129  type CreateShiftReqBuilder struct {
  6130  	apiReq *larkcore.ApiReq
  6131  	shift  *Shift
  6132  }
  6133  
  6134  func NewCreateShiftReqBuilder() *CreateShiftReqBuilder {
  6135  	builder := &CreateShiftReqBuilder{}
  6136  	builder.apiReq = &larkcore.ApiReq{
  6137  		PathParams:  larkcore.PathParams{},
  6138  		QueryParams: larkcore.QueryParams{},
  6139  	}
  6140  	return builder
  6141  }
  6142  
  6143  // 班次是描述一次考勤任务时间规则的统称,比如一天打多少次卡,每次卡的上下班时间,晚到多长时间算迟到,晚到多长时间算缺卡等。
  6144  func (builder *CreateShiftReqBuilder) Shift(shift *Shift) *CreateShiftReqBuilder {
  6145  	builder.shift = shift
  6146  	return builder
  6147  }
  6148  
  6149  func (builder *CreateShiftReqBuilder) Build() *CreateShiftReq {
  6150  	req := &CreateShiftReq{}
  6151  	req.apiReq = &larkcore.ApiReq{}
  6152  	req.apiReq.Body = builder.shift
  6153  	return req
  6154  }
  6155  
  6156  type CreateShiftReq struct {
  6157  	apiReq *larkcore.ApiReq
  6158  	Shift  *Shift `body:""`
  6159  }
  6160  
  6161  type CreateShiftRespData struct {
  6162  	Shift *Shift `json:"shift,omitempty"` // 班次
  6163  }
  6164  
  6165  type CreateShiftResp struct {
  6166  	*larkcore.ApiResp `json:"-"`
  6167  	larkcore.CodeError
  6168  	Data *CreateShiftRespData `json:"data"` // 业务数据
  6169  }
  6170  
  6171  func (resp *CreateShiftResp) Success() bool {
  6172  	return resp.Code == 0
  6173  }
  6174  
  6175  type DeleteShiftReqBuilder struct {
  6176  	apiReq *larkcore.ApiReq
  6177  }
  6178  
  6179  func NewDeleteShiftReqBuilder() *DeleteShiftReqBuilder {
  6180  	builder := &DeleteShiftReqBuilder{}
  6181  	builder.apiReq = &larkcore.ApiReq{
  6182  		PathParams:  larkcore.PathParams{},
  6183  		QueryParams: larkcore.QueryParams{},
  6184  	}
  6185  	return builder
  6186  }
  6187  
  6188  // 班次 ID,获取方式:1)[按名称查询班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/query) 2)[创建班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/create)
  6189  //
  6190  // 示例值:6919358778597097404
  6191  func (builder *DeleteShiftReqBuilder) ShiftId(shiftId string) *DeleteShiftReqBuilder {
  6192  	builder.apiReq.PathParams.Set("shift_id", fmt.Sprint(shiftId))
  6193  	return builder
  6194  }
  6195  
  6196  func (builder *DeleteShiftReqBuilder) Build() *DeleteShiftReq {
  6197  	req := &DeleteShiftReq{}
  6198  	req.apiReq = &larkcore.ApiReq{}
  6199  	req.apiReq.PathParams = builder.apiReq.PathParams
  6200  	return req
  6201  }
  6202  
  6203  type DeleteShiftReq struct {
  6204  	apiReq *larkcore.ApiReq
  6205  }
  6206  
  6207  type DeleteShiftResp struct {
  6208  	*larkcore.ApiResp `json:"-"`
  6209  	larkcore.CodeError
  6210  }
  6211  
  6212  func (resp *DeleteShiftResp) Success() bool {
  6213  	return resp.Code == 0
  6214  }
  6215  
  6216  type GetShiftReqBuilder struct {
  6217  	apiReq *larkcore.ApiReq
  6218  }
  6219  
  6220  func NewGetShiftReqBuilder() *GetShiftReqBuilder {
  6221  	builder := &GetShiftReqBuilder{}
  6222  	builder.apiReq = &larkcore.ApiReq{
  6223  		PathParams:  larkcore.PathParams{},
  6224  		QueryParams: larkcore.QueryParams{},
  6225  	}
  6226  	return builder
  6227  }
  6228  
  6229  // 班次 ID,获取方式:1)[按名称查询班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/query) 2)[创建班次](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/shift/create)
  6230  //
  6231  // 示例值:6919358778597097404
  6232  func (builder *GetShiftReqBuilder) ShiftId(shiftId string) *GetShiftReqBuilder {
  6233  	builder.apiReq.PathParams.Set("shift_id", fmt.Sprint(shiftId))
  6234  	return builder
  6235  }
  6236  
  6237  func (builder *GetShiftReqBuilder) Build() *GetShiftReq {
  6238  	req := &GetShiftReq{}
  6239  	req.apiReq = &larkcore.ApiReq{}
  6240  	req.apiReq.PathParams = builder.apiReq.PathParams
  6241  	return req
  6242  }
  6243  
  6244  type GetShiftReq struct {
  6245  	apiReq *larkcore.ApiReq
  6246  }
  6247  
  6248  type GetShiftRespData struct {
  6249  	ShiftId           *string              `json:"shift_id,omitempty"`              // 班次Id
  6250  	ShiftName         *string              `json:"shift_name,omitempty"`            // 班次名称
  6251  	PunchTimes        *int                 `json:"punch_times,omitempty"`           // 打卡次数
  6252  	IsFlexible        *bool                `json:"is_flexible,omitempty"`           // 是否弹性打卡
  6253  	FlexibleMinutes   *int                 `json:"flexible_minutes,omitempty"`      // 弹性打卡时间,设置【上班最多可晚到】与【下班最多可早走】时间,如果不设置flexible_rule则生效
  6254  	FlexibleRule      []*FlexibleRule      `json:"flexible_rule,omitempty"`         // 弹性打卡时间设置
  6255  	NoNeedOff         *bool                `json:"no_need_off,omitempty"`           // 不需要打下班卡
  6256  	PunchTimeRule     []*PunchTimeRule     `json:"punch_time_rule,omitempty"`       // 打卡规则
  6257  	LateOffLateOnRule []*LateOffLateOnRule `json:"late_off_late_on_rule,omitempty"` // 晚走晚到规则
  6258  	RestTimeRule      []*RestRule          `json:"rest_time_rule,omitempty"`        // 休息规则
  6259  }
  6260  
  6261  type GetShiftResp struct {
  6262  	*larkcore.ApiResp `json:"-"`
  6263  	larkcore.CodeError
  6264  	Data *GetShiftRespData `json:"data"` // 业务数据
  6265  }
  6266  
  6267  func (resp *GetShiftResp) Success() bool {
  6268  	return resp.Code == 0
  6269  }
  6270  
  6271  type ListShiftReqBuilder struct {
  6272  	apiReq *larkcore.ApiReq
  6273  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  6274  }
  6275  
  6276  func NewListShiftReqBuilder() *ListShiftReqBuilder {
  6277  	builder := &ListShiftReqBuilder{}
  6278  	builder.apiReq = &larkcore.ApiReq{
  6279  		PathParams:  larkcore.PathParams{},
  6280  		QueryParams: larkcore.QueryParams{},
  6281  	}
  6282  	return builder
  6283  }
  6284  
  6285  // 最大返回多少记录,当使用迭代器访问时才有效
  6286  func (builder *ListShiftReqBuilder) Limit(limit int) *ListShiftReqBuilder {
  6287  	builder.limit = limit
  6288  	return builder
  6289  }
  6290  
  6291  // 分页大小
  6292  //
  6293  // 示例值:10
  6294  func (builder *ListShiftReqBuilder) PageSize(pageSize int) *ListShiftReqBuilder {
  6295  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  6296  	return builder
  6297  }
  6298  
  6299  // 分页标记,第一次请求不填,表示从头开始遍历;分页查询结果还有更多项时会同时返回新的 page_token,下次遍历可采用该 page_token 获取查询结果
  6300  //
  6301  // 示例值:YrkvQ1wGaPVta45tkxuGiQ==
  6302  func (builder *ListShiftReqBuilder) PageToken(pageToken string) *ListShiftReqBuilder {
  6303  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  6304  	return builder
  6305  }
  6306  
  6307  func (builder *ListShiftReqBuilder) Build() *ListShiftReq {
  6308  	req := &ListShiftReq{}
  6309  	req.apiReq = &larkcore.ApiReq{}
  6310  	req.Limit = builder.limit
  6311  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6312  	return req
  6313  }
  6314  
  6315  type ListShiftReq struct {
  6316  	apiReq *larkcore.ApiReq
  6317  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  6318  
  6319  }
  6320  
  6321  type ListShiftRespData struct {
  6322  	ShiftList []*Shift `json:"shift_list,omitempty"` // 班次列表
  6323  	PageToken *string  `json:"page_token,omitempty"` //
  6324  	HasMore   *bool    `json:"has_more,omitempty"`   //
  6325  }
  6326  
  6327  type ListShiftResp struct {
  6328  	*larkcore.ApiResp `json:"-"`
  6329  	larkcore.CodeError
  6330  	Data *ListShiftRespData `json:"data"` // 业务数据
  6331  }
  6332  
  6333  func (resp *ListShiftResp) Success() bool {
  6334  	return resp.Code == 0
  6335  }
  6336  
  6337  type QueryShiftReqBuilder struct {
  6338  	apiReq *larkcore.ApiReq
  6339  }
  6340  
  6341  func NewQueryShiftReqBuilder() *QueryShiftReqBuilder {
  6342  	builder := &QueryShiftReqBuilder{}
  6343  	builder.apiReq = &larkcore.ApiReq{
  6344  		PathParams:  larkcore.PathParams{},
  6345  		QueryParams: larkcore.QueryParams{},
  6346  	}
  6347  	return builder
  6348  }
  6349  
  6350  // 班次名称
  6351  //
  6352  // 示例值:早班
  6353  func (builder *QueryShiftReqBuilder) ShiftName(shiftName string) *QueryShiftReqBuilder {
  6354  	builder.apiReq.QueryParams.Set("shift_name", fmt.Sprint(shiftName))
  6355  	return builder
  6356  }
  6357  
  6358  func (builder *QueryShiftReqBuilder) Build() *QueryShiftReq {
  6359  	req := &QueryShiftReq{}
  6360  	req.apiReq = &larkcore.ApiReq{}
  6361  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6362  	return req
  6363  }
  6364  
  6365  type QueryShiftReq struct {
  6366  	apiReq *larkcore.ApiReq
  6367  }
  6368  
  6369  type QueryShiftRespData struct {
  6370  	ShiftId           *string              `json:"shift_id,omitempty"`              // 班次Id
  6371  	ShiftName         *string              `json:"shift_name,omitempty"`            // 班次名称
  6372  	PunchTimes        *int                 `json:"punch_times,omitempty"`           // 打卡次数
  6373  	IsFlexible        *bool                `json:"is_flexible,omitempty"`           // 是否弹性打卡
  6374  	FlexibleMinutes   *int                 `json:"flexible_minutes,omitempty"`      // 弹性打卡时间,设置【上班最多可晚到】与【下班最多可早走】时间,如果不设置flexible_rule则生效
  6375  	FlexibleRule      []*FlexibleRule      `json:"flexible_rule,omitempty"`         // 弹性打卡时间设置
  6376  	NoNeedOff         *bool                `json:"no_need_off,omitempty"`           // 不需要打下班卡
  6377  	PunchTimeRule     []*PunchTimeRule     `json:"punch_time_rule,omitempty"`       // 打卡规则
  6378  	LateOffLateOnRule []*LateOffLateOnRule `json:"late_off_late_on_rule,omitempty"` // 晚走晚到规则
  6379  	RestTimeRule      []*RestRule          `json:"rest_time_rule,omitempty"`        // 休息规则
  6380  }
  6381  
  6382  type QueryShiftResp struct {
  6383  	*larkcore.ApiResp `json:"-"`
  6384  	larkcore.CodeError
  6385  	Data *QueryShiftRespData `json:"data"` // 业务数据
  6386  }
  6387  
  6388  func (resp *QueryShiftResp) Success() bool {
  6389  	return resp.Code == 0
  6390  }
  6391  
  6392  type CreateUserApprovalReqBodyBuilder struct {
  6393  	userApproval     *UserApproval // 审批信息
  6394  	userApprovalFlag bool
  6395  }
  6396  
  6397  func NewCreateUserApprovalReqBodyBuilder() *CreateUserApprovalReqBodyBuilder {
  6398  	builder := &CreateUserApprovalReqBodyBuilder{}
  6399  	return builder
  6400  }
  6401  
  6402  // 审批信息
  6403  //
  6404  //示例值:
  6405  func (builder *CreateUserApprovalReqBodyBuilder) UserApproval(userApproval *UserApproval) *CreateUserApprovalReqBodyBuilder {
  6406  	builder.userApproval = userApproval
  6407  	builder.userApprovalFlag = true
  6408  	return builder
  6409  }
  6410  
  6411  func (builder *CreateUserApprovalReqBodyBuilder) Build() *CreateUserApprovalReqBody {
  6412  	req := &CreateUserApprovalReqBody{}
  6413  	if builder.userApprovalFlag {
  6414  		req.UserApproval = builder.userApproval
  6415  	}
  6416  	return req
  6417  }
  6418  
  6419  type CreateUserApprovalPathReqBodyBuilder struct {
  6420  	userApproval     *UserApproval // 审批信息
  6421  	userApprovalFlag bool
  6422  }
  6423  
  6424  func NewCreateUserApprovalPathReqBodyBuilder() *CreateUserApprovalPathReqBodyBuilder {
  6425  	builder := &CreateUserApprovalPathReqBodyBuilder{}
  6426  	return builder
  6427  }
  6428  
  6429  // 审批信息
  6430  //
  6431  // 示例值:
  6432  func (builder *CreateUserApprovalPathReqBodyBuilder) UserApproval(userApproval *UserApproval) *CreateUserApprovalPathReqBodyBuilder {
  6433  	builder.userApproval = userApproval
  6434  	builder.userApprovalFlag = true
  6435  	return builder
  6436  }
  6437  
  6438  func (builder *CreateUserApprovalPathReqBodyBuilder) Build() (*CreateUserApprovalReqBody, error) {
  6439  	req := &CreateUserApprovalReqBody{}
  6440  	if builder.userApprovalFlag {
  6441  		req.UserApproval = builder.userApproval
  6442  	}
  6443  	return req, nil
  6444  }
  6445  
  6446  type CreateUserApprovalReqBuilder struct {
  6447  	apiReq *larkcore.ApiReq
  6448  	body   *CreateUserApprovalReqBody
  6449  }
  6450  
  6451  func NewCreateUserApprovalReqBuilder() *CreateUserApprovalReqBuilder {
  6452  	builder := &CreateUserApprovalReqBuilder{}
  6453  	builder.apiReq = &larkcore.ApiReq{
  6454  		PathParams:  larkcore.PathParams{},
  6455  		QueryParams: larkcore.QueryParams{},
  6456  	}
  6457  	return builder
  6458  }
  6459  
  6460  // 请求体和响应体中的 user_id 的员工工号类型
  6461  //
  6462  // 示例值:employee_id
  6463  func (builder *CreateUserApprovalReqBuilder) EmployeeType(employeeType string) *CreateUserApprovalReqBuilder {
  6464  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  6465  	return builder
  6466  }
  6467  
  6468  // 由于部分企业使用的是自己的审批系统,而不是飞书审批系统,因此员工的请假、加班等数据无法流入到飞书考勤系统中,导致员工在请假时间段内依然收到打卡提醒,并且被记为缺卡。;;对于这些只使用飞书考勤系统,而未使用飞书审批系统的企业,可以通过考勤开放接口的形式,将三方审批结果数据回写到飞书考勤系统中。
  6469  func (builder *CreateUserApprovalReqBuilder) Body(body *CreateUserApprovalReqBody) *CreateUserApprovalReqBuilder {
  6470  	builder.body = body
  6471  	return builder
  6472  }
  6473  
  6474  func (builder *CreateUserApprovalReqBuilder) Build() *CreateUserApprovalReq {
  6475  	req := &CreateUserApprovalReq{}
  6476  	req.apiReq = &larkcore.ApiReq{}
  6477  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6478  	req.apiReq.Body = builder.body
  6479  	return req
  6480  }
  6481  
  6482  type CreateUserApprovalReqBody struct {
  6483  	UserApproval *UserApproval `json:"user_approval,omitempty"` // 审批信息
  6484  }
  6485  
  6486  type CreateUserApprovalReq struct {
  6487  	apiReq *larkcore.ApiReq
  6488  	Body   *CreateUserApprovalReqBody `body:""`
  6489  }
  6490  
  6491  type CreateUserApprovalRespData struct {
  6492  	UserApproval *UserApproval `json:"user_approval,omitempty"` // 审批信息
  6493  }
  6494  
  6495  type CreateUserApprovalResp struct {
  6496  	*larkcore.ApiResp `json:"-"`
  6497  	larkcore.CodeError
  6498  	Data *CreateUserApprovalRespData `json:"data"` // 业务数据
  6499  }
  6500  
  6501  func (resp *CreateUserApprovalResp) Success() bool {
  6502  	return resp.Code == 0
  6503  }
  6504  
  6505  type QueryUserApprovalReqBodyBuilder struct {
  6506  	userIds           []string // employee_no 或 employee_id 列表
  6507  	userIdsFlag       bool
  6508  	checkDateFrom     int // 查询的起始工作日
  6509  	checkDateFromFlag bool
  6510  	checkDateTo       int // 查询的结束工作日,与 check_date_from 的时间间隔不超过 30 天
  6511  	checkDateToFlag   bool
  6512  	checkDateType     string // 查询依据的时间类型(不填默认依据PeriodTime)
  6513  	checkDateTypeFlag bool
  6514  	status            int // 查询状态(不填默认查询已通过状态)
  6515  	statusFlag        bool
  6516  }
  6517  
  6518  func NewQueryUserApprovalReqBodyBuilder() *QueryUserApprovalReqBodyBuilder {
  6519  	builder := &QueryUserApprovalReqBodyBuilder{}
  6520  	return builder
  6521  }
  6522  
  6523  // employee_no 或 employee_id 列表
  6524  //
  6525  //示例值:["abd754f7"]
  6526  func (builder *QueryUserApprovalReqBodyBuilder) UserIds(userIds []string) *QueryUserApprovalReqBodyBuilder {
  6527  	builder.userIds = userIds
  6528  	builder.userIdsFlag = true
  6529  	return builder
  6530  }
  6531  
  6532  // 查询的起始工作日
  6533  //
  6534  //示例值:20190817
  6535  func (builder *QueryUserApprovalReqBodyBuilder) CheckDateFrom(checkDateFrom int) *QueryUserApprovalReqBodyBuilder {
  6536  	builder.checkDateFrom = checkDateFrom
  6537  	builder.checkDateFromFlag = true
  6538  	return builder
  6539  }
  6540  
  6541  // 查询的结束工作日,与 check_date_from 的时间间隔不超过 30 天
  6542  //
  6543  //示例值:20190820
  6544  func (builder *QueryUserApprovalReqBodyBuilder) CheckDateTo(checkDateTo int) *QueryUserApprovalReqBodyBuilder {
  6545  	builder.checkDateTo = checkDateTo
  6546  	builder.checkDateToFlag = true
  6547  	return builder
  6548  }
  6549  
  6550  // 查询依据的时间类型(不填默认依据PeriodTime)
  6551  //
  6552  //示例值:PeriodTime
  6553  func (builder *QueryUserApprovalReqBodyBuilder) CheckDateType(checkDateType string) *QueryUserApprovalReqBodyBuilder {
  6554  	builder.checkDateType = checkDateType
  6555  	builder.checkDateTypeFlag = true
  6556  	return builder
  6557  }
  6558  
  6559  // 查询状态(不填默认查询已通过状态)
  6560  //
  6561  //示例值:2
  6562  func (builder *QueryUserApprovalReqBodyBuilder) Status(status int) *QueryUserApprovalReqBodyBuilder {
  6563  	builder.status = status
  6564  	builder.statusFlag = true
  6565  	return builder
  6566  }
  6567  
  6568  func (builder *QueryUserApprovalReqBodyBuilder) Build() *QueryUserApprovalReqBody {
  6569  	req := &QueryUserApprovalReqBody{}
  6570  	if builder.userIdsFlag {
  6571  		req.UserIds = builder.userIds
  6572  	}
  6573  	if builder.checkDateFromFlag {
  6574  		req.CheckDateFrom = &builder.checkDateFrom
  6575  	}
  6576  	if builder.checkDateToFlag {
  6577  		req.CheckDateTo = &builder.checkDateTo
  6578  	}
  6579  	if builder.checkDateTypeFlag {
  6580  		req.CheckDateType = &builder.checkDateType
  6581  	}
  6582  	if builder.statusFlag {
  6583  		req.Status = &builder.status
  6584  	}
  6585  	return req
  6586  }
  6587  
  6588  type QueryUserApprovalPathReqBodyBuilder struct {
  6589  	userIds           []string // employee_no 或 employee_id 列表
  6590  	userIdsFlag       bool
  6591  	checkDateFrom     int // 查询的起始工作日
  6592  	checkDateFromFlag bool
  6593  	checkDateTo       int // 查询的结束工作日,与 check_date_from 的时间间隔不超过 30 天
  6594  	checkDateToFlag   bool
  6595  	checkDateType     string // 查询依据的时间类型(不填默认依据PeriodTime)
  6596  	checkDateTypeFlag bool
  6597  	status            int // 查询状态(不填默认查询已通过状态)
  6598  	statusFlag        bool
  6599  }
  6600  
  6601  func NewQueryUserApprovalPathReqBodyBuilder() *QueryUserApprovalPathReqBodyBuilder {
  6602  	builder := &QueryUserApprovalPathReqBodyBuilder{}
  6603  	return builder
  6604  }
  6605  
  6606  // employee_no 或 employee_id 列表
  6607  //
  6608  // 示例值:["abd754f7"]
  6609  func (builder *QueryUserApprovalPathReqBodyBuilder) UserIds(userIds []string) *QueryUserApprovalPathReqBodyBuilder {
  6610  	builder.userIds = userIds
  6611  	builder.userIdsFlag = true
  6612  	return builder
  6613  }
  6614  
  6615  // 查询的起始工作日
  6616  //
  6617  // 示例值:20190817
  6618  func (builder *QueryUserApprovalPathReqBodyBuilder) CheckDateFrom(checkDateFrom int) *QueryUserApprovalPathReqBodyBuilder {
  6619  	builder.checkDateFrom = checkDateFrom
  6620  	builder.checkDateFromFlag = true
  6621  	return builder
  6622  }
  6623  
  6624  // 查询的结束工作日,与 check_date_from 的时间间隔不超过 30 天
  6625  //
  6626  // 示例值:20190820
  6627  func (builder *QueryUserApprovalPathReqBodyBuilder) CheckDateTo(checkDateTo int) *QueryUserApprovalPathReqBodyBuilder {
  6628  	builder.checkDateTo = checkDateTo
  6629  	builder.checkDateToFlag = true
  6630  	return builder
  6631  }
  6632  
  6633  // 查询依据的时间类型(不填默认依据PeriodTime)
  6634  //
  6635  // 示例值:PeriodTime
  6636  func (builder *QueryUserApprovalPathReqBodyBuilder) CheckDateType(checkDateType string) *QueryUserApprovalPathReqBodyBuilder {
  6637  	builder.checkDateType = checkDateType
  6638  	builder.checkDateTypeFlag = true
  6639  	return builder
  6640  }
  6641  
  6642  // 查询状态(不填默认查询已通过状态)
  6643  //
  6644  // 示例值:2
  6645  func (builder *QueryUserApprovalPathReqBodyBuilder) Status(status int) *QueryUserApprovalPathReqBodyBuilder {
  6646  	builder.status = status
  6647  	builder.statusFlag = true
  6648  	return builder
  6649  }
  6650  
  6651  func (builder *QueryUserApprovalPathReqBodyBuilder) Build() (*QueryUserApprovalReqBody, error) {
  6652  	req := &QueryUserApprovalReqBody{}
  6653  	if builder.userIdsFlag {
  6654  		req.UserIds = builder.userIds
  6655  	}
  6656  	if builder.checkDateFromFlag {
  6657  		req.CheckDateFrom = &builder.checkDateFrom
  6658  	}
  6659  	if builder.checkDateToFlag {
  6660  		req.CheckDateTo = &builder.checkDateTo
  6661  	}
  6662  	if builder.checkDateTypeFlag {
  6663  		req.CheckDateType = &builder.checkDateType
  6664  	}
  6665  	if builder.statusFlag {
  6666  		req.Status = &builder.status
  6667  	}
  6668  	return req, nil
  6669  }
  6670  
  6671  type QueryUserApprovalReqBuilder struct {
  6672  	apiReq *larkcore.ApiReq
  6673  	body   *QueryUserApprovalReqBody
  6674  }
  6675  
  6676  func NewQueryUserApprovalReqBuilder() *QueryUserApprovalReqBuilder {
  6677  	builder := &QueryUserApprovalReqBuilder{}
  6678  	builder.apiReq = &larkcore.ApiReq{
  6679  		PathParams:  larkcore.PathParams{},
  6680  		QueryParams: larkcore.QueryParams{},
  6681  	}
  6682  	return builder
  6683  }
  6684  
  6685  // 请求体中的 user_ids 和响应体中的 user_id 的员工工号类型
  6686  //
  6687  // 示例值:employee_id
  6688  func (builder *QueryUserApprovalReqBuilder) EmployeeType(employeeType string) *QueryUserApprovalReqBuilder {
  6689  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  6690  	return builder
  6691  }
  6692  
  6693  // 获取员工在某段时间内的请假、加班、外出和出差四种审批的通过数据。
  6694  func (builder *QueryUserApprovalReqBuilder) Body(body *QueryUserApprovalReqBody) *QueryUserApprovalReqBuilder {
  6695  	builder.body = body
  6696  	return builder
  6697  }
  6698  
  6699  func (builder *QueryUserApprovalReqBuilder) Build() *QueryUserApprovalReq {
  6700  	req := &QueryUserApprovalReq{}
  6701  	req.apiReq = &larkcore.ApiReq{}
  6702  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6703  	req.apiReq.Body = builder.body
  6704  	return req
  6705  }
  6706  
  6707  type QueryUserApprovalReqBody struct {
  6708  	UserIds       []string `json:"user_ids,omitempty"`        // employee_no 或 employee_id 列表
  6709  	CheckDateFrom *int     `json:"check_date_from,omitempty"` // 查询的起始工作日
  6710  	CheckDateTo   *int     `json:"check_date_to,omitempty"`   // 查询的结束工作日,与 check_date_from 的时间间隔不超过 30 天
  6711  	CheckDateType *string  `json:"check_date_type,omitempty"` // 查询依据的时间类型(不填默认依据PeriodTime)
  6712  	Status        *int     `json:"status,omitempty"`          // 查询状态(不填默认查询已通过状态)
  6713  }
  6714  
  6715  type QueryUserApprovalReq struct {
  6716  	apiReq *larkcore.ApiReq
  6717  	Body   *QueryUserApprovalReqBody `body:""`
  6718  }
  6719  
  6720  type QueryUserApprovalRespData struct {
  6721  	UserApprovals []*UserApproval `json:"user_approvals,omitempty"` // 审批结果列表
  6722  }
  6723  
  6724  type QueryUserApprovalResp struct {
  6725  	*larkcore.ApiResp `json:"-"`
  6726  	larkcore.CodeError
  6727  	Data *QueryUserApprovalRespData `json:"data"` // 业务数据
  6728  }
  6729  
  6730  func (resp *QueryUserApprovalResp) Success() bool {
  6731  	return resp.Code == 0
  6732  }
  6733  
  6734  type BatchCreateUserDailyShiftReqBodyBuilder struct {
  6735  	userDailyShifts     []*UserDailyShift // 班表信息列表
  6736  	userDailyShiftsFlag bool
  6737  	operatorId          string // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  6738  	operatorIdFlag      bool
  6739  }
  6740  
  6741  func NewBatchCreateUserDailyShiftReqBodyBuilder() *BatchCreateUserDailyShiftReqBodyBuilder {
  6742  	builder := &BatchCreateUserDailyShiftReqBodyBuilder{}
  6743  	return builder
  6744  }
  6745  
  6746  // 班表信息列表
  6747  //
  6748  //示例值:
  6749  func (builder *BatchCreateUserDailyShiftReqBodyBuilder) UserDailyShifts(userDailyShifts []*UserDailyShift) *BatchCreateUserDailyShiftReqBodyBuilder {
  6750  	builder.userDailyShifts = userDailyShifts
  6751  	builder.userDailyShiftsFlag = true
  6752  	return builder
  6753  }
  6754  
  6755  // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  6756  //
  6757  //示例值:dd31248a
  6758  func (builder *BatchCreateUserDailyShiftReqBodyBuilder) OperatorId(operatorId string) *BatchCreateUserDailyShiftReqBodyBuilder {
  6759  	builder.operatorId = operatorId
  6760  	builder.operatorIdFlag = true
  6761  	return builder
  6762  }
  6763  
  6764  func (builder *BatchCreateUserDailyShiftReqBodyBuilder) Build() *BatchCreateUserDailyShiftReqBody {
  6765  	req := &BatchCreateUserDailyShiftReqBody{}
  6766  	if builder.userDailyShiftsFlag {
  6767  		req.UserDailyShifts = builder.userDailyShifts
  6768  	}
  6769  	if builder.operatorIdFlag {
  6770  		req.OperatorId = &builder.operatorId
  6771  	}
  6772  	return req
  6773  }
  6774  
  6775  type BatchCreateUserDailyShiftPathReqBodyBuilder struct {
  6776  	userDailyShifts     []*UserDailyShift // 班表信息列表
  6777  	userDailyShiftsFlag bool
  6778  	operatorId          string // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  6779  	operatorIdFlag      bool
  6780  }
  6781  
  6782  func NewBatchCreateUserDailyShiftPathReqBodyBuilder() *BatchCreateUserDailyShiftPathReqBodyBuilder {
  6783  	builder := &BatchCreateUserDailyShiftPathReqBodyBuilder{}
  6784  	return builder
  6785  }
  6786  
  6787  // 班表信息列表
  6788  //
  6789  // 示例值:
  6790  func (builder *BatchCreateUserDailyShiftPathReqBodyBuilder) UserDailyShifts(userDailyShifts []*UserDailyShift) *BatchCreateUserDailyShiftPathReqBodyBuilder {
  6791  	builder.userDailyShifts = userDailyShifts
  6792  	builder.userDailyShiftsFlag = true
  6793  	return builder
  6794  }
  6795  
  6796  // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  6797  //
  6798  // 示例值:dd31248a
  6799  func (builder *BatchCreateUserDailyShiftPathReqBodyBuilder) OperatorId(operatorId string) *BatchCreateUserDailyShiftPathReqBodyBuilder {
  6800  	builder.operatorId = operatorId
  6801  	builder.operatorIdFlag = true
  6802  	return builder
  6803  }
  6804  
  6805  func (builder *BatchCreateUserDailyShiftPathReqBodyBuilder) Build() (*BatchCreateUserDailyShiftReqBody, error) {
  6806  	req := &BatchCreateUserDailyShiftReqBody{}
  6807  	if builder.userDailyShiftsFlag {
  6808  		req.UserDailyShifts = builder.userDailyShifts
  6809  	}
  6810  	if builder.operatorIdFlag {
  6811  		req.OperatorId = &builder.operatorId
  6812  	}
  6813  	return req, nil
  6814  }
  6815  
  6816  type BatchCreateUserDailyShiftReqBuilder struct {
  6817  	apiReq *larkcore.ApiReq
  6818  	body   *BatchCreateUserDailyShiftReqBody
  6819  }
  6820  
  6821  func NewBatchCreateUserDailyShiftReqBuilder() *BatchCreateUserDailyShiftReqBuilder {
  6822  	builder := &BatchCreateUserDailyShiftReqBuilder{}
  6823  	builder.apiReq = &larkcore.ApiReq{
  6824  		PathParams:  larkcore.PathParams{},
  6825  		QueryParams: larkcore.QueryParams{},
  6826  	}
  6827  	return builder
  6828  }
  6829  
  6830  // 请求体和响应体中的 user_id 的员工工号类型
  6831  //
  6832  // 示例值:employee_id
  6833  func (builder *BatchCreateUserDailyShiftReqBuilder) EmployeeType(employeeType string) *BatchCreateUserDailyShiftReqBuilder {
  6834  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  6835  	return builder
  6836  }
  6837  
  6838  // 班表是用来描述考勤组内人员每天按哪个班次进行上班。目前班表支持按一个整月对一位或多位人员进行排班。
  6839  func (builder *BatchCreateUserDailyShiftReqBuilder) Body(body *BatchCreateUserDailyShiftReqBody) *BatchCreateUserDailyShiftReqBuilder {
  6840  	builder.body = body
  6841  	return builder
  6842  }
  6843  
  6844  func (builder *BatchCreateUserDailyShiftReqBuilder) Build() *BatchCreateUserDailyShiftReq {
  6845  	req := &BatchCreateUserDailyShiftReq{}
  6846  	req.apiReq = &larkcore.ApiReq{}
  6847  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6848  	req.apiReq.Body = builder.body
  6849  	return req
  6850  }
  6851  
  6852  type BatchCreateUserDailyShiftReqBody struct {
  6853  	UserDailyShifts []*UserDailyShift `json:"user_daily_shifts,omitempty"` // 班表信息列表
  6854  	OperatorId      *string           `json:"operator_id,omitempty"`       // 操作人uid,如果您未操作[考勤管理后台“API 接入”流程](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/attendance-development-guidelines),则此字段为必填字段
  6855  }
  6856  
  6857  type BatchCreateUserDailyShiftReq struct {
  6858  	apiReq *larkcore.ApiReq
  6859  	Body   *BatchCreateUserDailyShiftReqBody `body:""`
  6860  }
  6861  
  6862  type BatchCreateUserDailyShiftRespData struct {
  6863  	UserDailyShifts []*UserDailyShift `json:"user_daily_shifts,omitempty"` // 班表信息列表
  6864  }
  6865  
  6866  type BatchCreateUserDailyShiftResp struct {
  6867  	*larkcore.ApiResp `json:"-"`
  6868  	larkcore.CodeError
  6869  	Data *BatchCreateUserDailyShiftRespData `json:"data"` // 业务数据
  6870  }
  6871  
  6872  func (resp *BatchCreateUserDailyShiftResp) Success() bool {
  6873  	return resp.Code == 0
  6874  }
  6875  
  6876  type QueryUserDailyShiftReqBodyBuilder struct {
  6877  	userIds           []string // employee_no 或 employee_id 列表
  6878  	userIdsFlag       bool
  6879  	checkDateFrom     int // 查询的起始工作日
  6880  	checkDateFromFlag bool
  6881  	checkDateTo       int // 查询的结束工作日
  6882  	checkDateToFlag   bool
  6883  }
  6884  
  6885  func NewQueryUserDailyShiftReqBodyBuilder() *QueryUserDailyShiftReqBodyBuilder {
  6886  	builder := &QueryUserDailyShiftReqBodyBuilder{}
  6887  	return builder
  6888  }
  6889  
  6890  // employee_no 或 employee_id 列表
  6891  //
  6892  //示例值:["abd754f7"]
  6893  func (builder *QueryUserDailyShiftReqBodyBuilder) UserIds(userIds []string) *QueryUserDailyShiftReqBodyBuilder {
  6894  	builder.userIds = userIds
  6895  	builder.userIdsFlag = true
  6896  	return builder
  6897  }
  6898  
  6899  // 查询的起始工作日
  6900  //
  6901  //示例值:20190817
  6902  func (builder *QueryUserDailyShiftReqBodyBuilder) CheckDateFrom(checkDateFrom int) *QueryUserDailyShiftReqBodyBuilder {
  6903  	builder.checkDateFrom = checkDateFrom
  6904  	builder.checkDateFromFlag = true
  6905  	return builder
  6906  }
  6907  
  6908  // 查询的结束工作日
  6909  //
  6910  //示例值:20190820
  6911  func (builder *QueryUserDailyShiftReqBodyBuilder) CheckDateTo(checkDateTo int) *QueryUserDailyShiftReqBodyBuilder {
  6912  	builder.checkDateTo = checkDateTo
  6913  	builder.checkDateToFlag = true
  6914  	return builder
  6915  }
  6916  
  6917  func (builder *QueryUserDailyShiftReqBodyBuilder) Build() *QueryUserDailyShiftReqBody {
  6918  	req := &QueryUserDailyShiftReqBody{}
  6919  	if builder.userIdsFlag {
  6920  		req.UserIds = builder.userIds
  6921  	}
  6922  	if builder.checkDateFromFlag {
  6923  		req.CheckDateFrom = &builder.checkDateFrom
  6924  	}
  6925  	if builder.checkDateToFlag {
  6926  		req.CheckDateTo = &builder.checkDateTo
  6927  	}
  6928  	return req
  6929  }
  6930  
  6931  type QueryUserDailyShiftPathReqBodyBuilder struct {
  6932  	userIds           []string // employee_no 或 employee_id 列表
  6933  	userIdsFlag       bool
  6934  	checkDateFrom     int // 查询的起始工作日
  6935  	checkDateFromFlag bool
  6936  	checkDateTo       int // 查询的结束工作日
  6937  	checkDateToFlag   bool
  6938  }
  6939  
  6940  func NewQueryUserDailyShiftPathReqBodyBuilder() *QueryUserDailyShiftPathReqBodyBuilder {
  6941  	builder := &QueryUserDailyShiftPathReqBodyBuilder{}
  6942  	return builder
  6943  }
  6944  
  6945  // employee_no 或 employee_id 列表
  6946  //
  6947  // 示例值:["abd754f7"]
  6948  func (builder *QueryUserDailyShiftPathReqBodyBuilder) UserIds(userIds []string) *QueryUserDailyShiftPathReqBodyBuilder {
  6949  	builder.userIds = userIds
  6950  	builder.userIdsFlag = true
  6951  	return builder
  6952  }
  6953  
  6954  // 查询的起始工作日
  6955  //
  6956  // 示例值:20190817
  6957  func (builder *QueryUserDailyShiftPathReqBodyBuilder) CheckDateFrom(checkDateFrom int) *QueryUserDailyShiftPathReqBodyBuilder {
  6958  	builder.checkDateFrom = checkDateFrom
  6959  	builder.checkDateFromFlag = true
  6960  	return builder
  6961  }
  6962  
  6963  // 查询的结束工作日
  6964  //
  6965  // 示例值:20190820
  6966  func (builder *QueryUserDailyShiftPathReqBodyBuilder) CheckDateTo(checkDateTo int) *QueryUserDailyShiftPathReqBodyBuilder {
  6967  	builder.checkDateTo = checkDateTo
  6968  	builder.checkDateToFlag = true
  6969  	return builder
  6970  }
  6971  
  6972  func (builder *QueryUserDailyShiftPathReqBodyBuilder) Build() (*QueryUserDailyShiftReqBody, error) {
  6973  	req := &QueryUserDailyShiftReqBody{}
  6974  	if builder.userIdsFlag {
  6975  		req.UserIds = builder.userIds
  6976  	}
  6977  	if builder.checkDateFromFlag {
  6978  		req.CheckDateFrom = &builder.checkDateFrom
  6979  	}
  6980  	if builder.checkDateToFlag {
  6981  		req.CheckDateTo = &builder.checkDateTo
  6982  	}
  6983  	return req, nil
  6984  }
  6985  
  6986  type QueryUserDailyShiftReqBuilder struct {
  6987  	apiReq *larkcore.ApiReq
  6988  	body   *QueryUserDailyShiftReqBody
  6989  }
  6990  
  6991  func NewQueryUserDailyShiftReqBuilder() *QueryUserDailyShiftReqBuilder {
  6992  	builder := &QueryUserDailyShiftReqBuilder{}
  6993  	builder.apiReq = &larkcore.ApiReq{
  6994  		PathParams:  larkcore.PathParams{},
  6995  		QueryParams: larkcore.QueryParams{},
  6996  	}
  6997  	return builder
  6998  }
  6999  
  7000  // 请求体中的 user_ids 和响应体中的 user_id 的员工工号类型
  7001  //
  7002  // 示例值:employee_id
  7003  func (builder *QueryUserDailyShiftReqBuilder) EmployeeType(employeeType string) *QueryUserDailyShiftReqBuilder {
  7004  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7005  	return builder
  7006  }
  7007  
  7008  // 支持查询多个用户的排班情况,查询的时间跨度不能超过 30 天。
  7009  func (builder *QueryUserDailyShiftReqBuilder) Body(body *QueryUserDailyShiftReqBody) *QueryUserDailyShiftReqBuilder {
  7010  	builder.body = body
  7011  	return builder
  7012  }
  7013  
  7014  func (builder *QueryUserDailyShiftReqBuilder) Build() *QueryUserDailyShiftReq {
  7015  	req := &QueryUserDailyShiftReq{}
  7016  	req.apiReq = &larkcore.ApiReq{}
  7017  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7018  	req.apiReq.Body = builder.body
  7019  	return req
  7020  }
  7021  
  7022  type QueryUserDailyShiftReqBody struct {
  7023  	UserIds       []string `json:"user_ids,omitempty"`        // employee_no 或 employee_id 列表
  7024  	CheckDateFrom *int     `json:"check_date_from,omitempty"` // 查询的起始工作日
  7025  	CheckDateTo   *int     `json:"check_date_to,omitempty"`   // 查询的结束工作日
  7026  }
  7027  
  7028  type QueryUserDailyShiftReq struct {
  7029  	apiReq *larkcore.ApiReq
  7030  	Body   *QueryUserDailyShiftReqBody `body:""`
  7031  }
  7032  
  7033  type QueryUserDailyShiftRespData struct {
  7034  	UserDailyShifts []*UserDailyShift `json:"user_daily_shifts,omitempty"` // 班表信息列表
  7035  }
  7036  
  7037  type QueryUserDailyShiftResp struct {
  7038  	*larkcore.ApiResp `json:"-"`
  7039  	larkcore.CodeError
  7040  	Data *QueryUserDailyShiftRespData `json:"data"` // 业务数据
  7041  }
  7042  
  7043  func (resp *QueryUserDailyShiftResp) Success() bool {
  7044  	return resp.Code == 0
  7045  }
  7046  
  7047  type BatchCreateUserFlowReqBodyBuilder struct {
  7048  	flowRecords     []*UserFlow // 打卡流水记录列表
  7049  	flowRecordsFlag bool
  7050  }
  7051  
  7052  func NewBatchCreateUserFlowReqBodyBuilder() *BatchCreateUserFlowReqBodyBuilder {
  7053  	builder := &BatchCreateUserFlowReqBodyBuilder{}
  7054  	return builder
  7055  }
  7056  
  7057  // 打卡流水记录列表
  7058  //
  7059  //示例值:
  7060  func (builder *BatchCreateUserFlowReqBodyBuilder) FlowRecords(flowRecords []*UserFlow) *BatchCreateUserFlowReqBodyBuilder {
  7061  	builder.flowRecords = flowRecords
  7062  	builder.flowRecordsFlag = true
  7063  	return builder
  7064  }
  7065  
  7066  func (builder *BatchCreateUserFlowReqBodyBuilder) Build() *BatchCreateUserFlowReqBody {
  7067  	req := &BatchCreateUserFlowReqBody{}
  7068  	if builder.flowRecordsFlag {
  7069  		req.FlowRecords = builder.flowRecords
  7070  	}
  7071  	return req
  7072  }
  7073  
  7074  type BatchCreateUserFlowPathReqBodyBuilder struct {
  7075  	flowRecords     []*UserFlow // 打卡流水记录列表
  7076  	flowRecordsFlag bool
  7077  }
  7078  
  7079  func NewBatchCreateUserFlowPathReqBodyBuilder() *BatchCreateUserFlowPathReqBodyBuilder {
  7080  	builder := &BatchCreateUserFlowPathReqBodyBuilder{}
  7081  	return builder
  7082  }
  7083  
  7084  // 打卡流水记录列表
  7085  //
  7086  // 示例值:
  7087  func (builder *BatchCreateUserFlowPathReqBodyBuilder) FlowRecords(flowRecords []*UserFlow) *BatchCreateUserFlowPathReqBodyBuilder {
  7088  	builder.flowRecords = flowRecords
  7089  	builder.flowRecordsFlag = true
  7090  	return builder
  7091  }
  7092  
  7093  func (builder *BatchCreateUserFlowPathReqBodyBuilder) Build() (*BatchCreateUserFlowReqBody, error) {
  7094  	req := &BatchCreateUserFlowReqBody{}
  7095  	if builder.flowRecordsFlag {
  7096  		req.FlowRecords = builder.flowRecords
  7097  	}
  7098  	return req, nil
  7099  }
  7100  
  7101  type BatchCreateUserFlowReqBuilder struct {
  7102  	apiReq *larkcore.ApiReq
  7103  	body   *BatchCreateUserFlowReqBody
  7104  }
  7105  
  7106  func NewBatchCreateUserFlowReqBuilder() *BatchCreateUserFlowReqBuilder {
  7107  	builder := &BatchCreateUserFlowReqBuilder{}
  7108  	builder.apiReq = &larkcore.ApiReq{
  7109  		PathParams:  larkcore.PathParams{},
  7110  		QueryParams: larkcore.QueryParams{},
  7111  	}
  7112  	return builder
  7113  }
  7114  
  7115  // 请求体和响应体中的 user_id 和 creator_id 的员工工号类型
  7116  //
  7117  // 示例值:employee_id
  7118  func (builder *BatchCreateUserFlowReqBuilder) EmployeeType(employeeType string) *BatchCreateUserFlowReqBuilder {
  7119  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7120  	return builder
  7121  }
  7122  
  7123  // 导入授权内员工的打卡流水记录。导入后,会根据员工所在的考勤组班次规则,计算最终的打卡状态与结果。
  7124  func (builder *BatchCreateUserFlowReqBuilder) Body(body *BatchCreateUserFlowReqBody) *BatchCreateUserFlowReqBuilder {
  7125  	builder.body = body
  7126  	return builder
  7127  }
  7128  
  7129  func (builder *BatchCreateUserFlowReqBuilder) Build() *BatchCreateUserFlowReq {
  7130  	req := &BatchCreateUserFlowReq{}
  7131  	req.apiReq = &larkcore.ApiReq{}
  7132  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7133  	req.apiReq.Body = builder.body
  7134  	return req
  7135  }
  7136  
  7137  type BatchCreateUserFlowReqBody struct {
  7138  	FlowRecords []*UserFlow `json:"flow_records,omitempty"` // 打卡流水记录列表
  7139  }
  7140  
  7141  type BatchCreateUserFlowReq struct {
  7142  	apiReq *larkcore.ApiReq
  7143  	Body   *BatchCreateUserFlowReqBody `body:""`
  7144  }
  7145  
  7146  type BatchCreateUserFlowRespData struct {
  7147  	FlowRecords []*UserFlow `json:"flow_records,omitempty"` // 打卡流水记录列表
  7148  }
  7149  
  7150  type BatchCreateUserFlowResp struct {
  7151  	*larkcore.ApiResp `json:"-"`
  7152  	larkcore.CodeError
  7153  	Data *BatchCreateUserFlowRespData `json:"data"` // 业务数据
  7154  }
  7155  
  7156  func (resp *BatchCreateUserFlowResp) Success() bool {
  7157  	return resp.Code == 0
  7158  }
  7159  
  7160  type GetUserFlowReqBuilder struct {
  7161  	apiReq *larkcore.ApiReq
  7162  }
  7163  
  7164  func NewGetUserFlowReqBuilder() *GetUserFlowReqBuilder {
  7165  	builder := &GetUserFlowReqBuilder{}
  7166  	builder.apiReq = &larkcore.ApiReq{
  7167  		PathParams:  larkcore.PathParams{},
  7168  		QueryParams: larkcore.QueryParams{},
  7169  	}
  7170  	return builder
  7171  }
  7172  
  7173  // 打卡流水记录 ID,获取方式:1)[批量查询打卡流水记录](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_flow/query) 2)[获取打卡结果](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_task/query) 3)[导入打卡流水记录](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_flow/batch_create)
  7174  //
  7175  // 示例值:6708236686834352397
  7176  func (builder *GetUserFlowReqBuilder) UserFlowId(userFlowId string) *GetUserFlowReqBuilder {
  7177  	builder.apiReq.PathParams.Set("user_flow_id", fmt.Sprint(userFlowId))
  7178  	return builder
  7179  }
  7180  
  7181  // 响应体中的 user_id 和 creator_id 的员工工号类型
  7182  //
  7183  // 示例值:employee_id
  7184  func (builder *GetUserFlowReqBuilder) EmployeeType(employeeType string) *GetUserFlowReqBuilder {
  7185  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7186  	return builder
  7187  }
  7188  
  7189  func (builder *GetUserFlowReqBuilder) Build() *GetUserFlowReq {
  7190  	req := &GetUserFlowReq{}
  7191  	req.apiReq = &larkcore.ApiReq{}
  7192  	req.apiReq.PathParams = builder.apiReq.PathParams
  7193  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7194  	return req
  7195  }
  7196  
  7197  type GetUserFlowReq struct {
  7198  	apiReq *larkcore.ApiReq
  7199  }
  7200  
  7201  type GetUserFlowRespData struct {
  7202  	UserId       *string `json:"user_id,omitempty"`       // 用户工号
  7203  	CreatorId    *string `json:"creator_id,omitempty"`    // 记录创建者的工号
  7204  	LocationName *string `json:"location_name,omitempty"` // 打卡位置名称信息
  7205  	CheckTime    *string `json:"check_time,omitempty"`    // 打卡时间,精确到秒的时间戳
  7206  	Comment      *string `json:"comment,omitempty"`       // 打卡备注
  7207  	RecordId     *string `json:"record_id,omitempty"`     // 打卡记录ID
  7208  
  7209  	Ssid      *string  `json:"ssid,omitempty"`       // 打卡wifi ssid
  7210  	Bssid     *string  `json:"bssid,omitempty"`      // 打卡wifi MAC地址
  7211  	IsField   *bool    `json:"is_field,omitempty"`   // 是否为外勤打卡
  7212  	IsWifi    *bool    `json:"is_wifi,omitempty"`    // 是否为wifi打卡
  7213  	Type      *int     `json:"type,omitempty"`       // 记录生成方式
  7214  	PhotoUrls []string `json:"photo_urls,omitempty"` // 打卡照片列表
  7215  
  7216  	CheckResult *string `json:"check_result,omitempty"` // 打卡结果
  7217  }
  7218  
  7219  type GetUserFlowResp struct {
  7220  	*larkcore.ApiResp `json:"-"`
  7221  	larkcore.CodeError
  7222  	Data *GetUserFlowRespData `json:"data"` // 业务数据
  7223  }
  7224  
  7225  func (resp *GetUserFlowResp) Success() bool {
  7226  	return resp.Code == 0
  7227  }
  7228  
  7229  type QueryUserFlowReqBodyBuilder struct {
  7230  	userIds           []string // employee_no 或 employee_id 列表,长度不超过 50
  7231  	userIdsFlag       bool
  7232  	checkTimeFrom     string // 查询的起始时间,时间戳
  7233  	checkTimeFromFlag bool
  7234  	checkTimeTo       string // 查询的结束时间,时间戳
  7235  	checkTimeToFlag   bool
  7236  }
  7237  
  7238  func NewQueryUserFlowReqBodyBuilder() *QueryUserFlowReqBodyBuilder {
  7239  	builder := &QueryUserFlowReqBodyBuilder{}
  7240  	return builder
  7241  }
  7242  
  7243  // employee_no 或 employee_id 列表,长度不超过 50
  7244  //
  7245  //示例值:[ "abd754f7"]
  7246  func (builder *QueryUserFlowReqBodyBuilder) UserIds(userIds []string) *QueryUserFlowReqBodyBuilder {
  7247  	builder.userIds = userIds
  7248  	builder.userIdsFlag = true
  7249  	return builder
  7250  }
  7251  
  7252  // 查询的起始时间,时间戳
  7253  //
  7254  //示例值:1566641088
  7255  func (builder *QueryUserFlowReqBodyBuilder) CheckTimeFrom(checkTimeFrom string) *QueryUserFlowReqBodyBuilder {
  7256  	builder.checkTimeFrom = checkTimeFrom
  7257  	builder.checkTimeFromFlag = true
  7258  	return builder
  7259  }
  7260  
  7261  // 查询的结束时间,时间戳
  7262  //
  7263  //示例值:1566641088
  7264  func (builder *QueryUserFlowReqBodyBuilder) CheckTimeTo(checkTimeTo string) *QueryUserFlowReqBodyBuilder {
  7265  	builder.checkTimeTo = checkTimeTo
  7266  	builder.checkTimeToFlag = true
  7267  	return builder
  7268  }
  7269  
  7270  func (builder *QueryUserFlowReqBodyBuilder) Build() *QueryUserFlowReqBody {
  7271  	req := &QueryUserFlowReqBody{}
  7272  	if builder.userIdsFlag {
  7273  		req.UserIds = builder.userIds
  7274  	}
  7275  	if builder.checkTimeFromFlag {
  7276  		req.CheckTimeFrom = &builder.checkTimeFrom
  7277  	}
  7278  	if builder.checkTimeToFlag {
  7279  		req.CheckTimeTo = &builder.checkTimeTo
  7280  	}
  7281  	return req
  7282  }
  7283  
  7284  type QueryUserFlowPathReqBodyBuilder struct {
  7285  	userIds           []string // employee_no 或 employee_id 列表,长度不超过 50
  7286  	userIdsFlag       bool
  7287  	checkTimeFrom     string // 查询的起始时间,时间戳
  7288  	checkTimeFromFlag bool
  7289  	checkTimeTo       string // 查询的结束时间,时间戳
  7290  	checkTimeToFlag   bool
  7291  }
  7292  
  7293  func NewQueryUserFlowPathReqBodyBuilder() *QueryUserFlowPathReqBodyBuilder {
  7294  	builder := &QueryUserFlowPathReqBodyBuilder{}
  7295  	return builder
  7296  }
  7297  
  7298  // employee_no 或 employee_id 列表,长度不超过 50
  7299  //
  7300  // 示例值:[ "abd754f7"]
  7301  func (builder *QueryUserFlowPathReqBodyBuilder) UserIds(userIds []string) *QueryUserFlowPathReqBodyBuilder {
  7302  	builder.userIds = userIds
  7303  	builder.userIdsFlag = true
  7304  	return builder
  7305  }
  7306  
  7307  // 查询的起始时间,时间戳
  7308  //
  7309  // 示例值:1566641088
  7310  func (builder *QueryUserFlowPathReqBodyBuilder) CheckTimeFrom(checkTimeFrom string) *QueryUserFlowPathReqBodyBuilder {
  7311  	builder.checkTimeFrom = checkTimeFrom
  7312  	builder.checkTimeFromFlag = true
  7313  	return builder
  7314  }
  7315  
  7316  // 查询的结束时间,时间戳
  7317  //
  7318  // 示例值:1566641088
  7319  func (builder *QueryUserFlowPathReqBodyBuilder) CheckTimeTo(checkTimeTo string) *QueryUserFlowPathReqBodyBuilder {
  7320  	builder.checkTimeTo = checkTimeTo
  7321  	builder.checkTimeToFlag = true
  7322  	return builder
  7323  }
  7324  
  7325  func (builder *QueryUserFlowPathReqBodyBuilder) Build() (*QueryUserFlowReqBody, error) {
  7326  	req := &QueryUserFlowReqBody{}
  7327  	if builder.userIdsFlag {
  7328  		req.UserIds = builder.userIds
  7329  	}
  7330  	if builder.checkTimeFromFlag {
  7331  		req.CheckTimeFrom = &builder.checkTimeFrom
  7332  	}
  7333  	if builder.checkTimeToFlag {
  7334  		req.CheckTimeTo = &builder.checkTimeTo
  7335  	}
  7336  	return req, nil
  7337  }
  7338  
  7339  type QueryUserFlowReqBuilder struct {
  7340  	apiReq *larkcore.ApiReq
  7341  	body   *QueryUserFlowReqBody
  7342  }
  7343  
  7344  func NewQueryUserFlowReqBuilder() *QueryUserFlowReqBuilder {
  7345  	builder := &QueryUserFlowReqBuilder{}
  7346  	builder.apiReq = &larkcore.ApiReq{
  7347  		PathParams:  larkcore.PathParams{},
  7348  		QueryParams: larkcore.QueryParams{},
  7349  	}
  7350  	return builder
  7351  }
  7352  
  7353  // 请求体中的 user_ids 和响应体中的 user_id 的员工工号类型
  7354  //
  7355  // 示例值:employee_id
  7356  func (builder *QueryUserFlowReqBuilder) EmployeeType(employeeType string) *QueryUserFlowReqBuilder {
  7357  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7358  	return builder
  7359  }
  7360  
  7361  // 由于新入职用户可以复用已离职用户的employee_no/employee_id。如果true,返回employee_no/employee_id对应的所有在职+离职用户数据;如果false,只返回employee_no/employee_id对应的在职或最近一个离职用户数据
  7362  //
  7363  // 示例值:true
  7364  func (builder *QueryUserFlowReqBuilder) IncludeTerminatedUser(includeTerminatedUser bool) *QueryUserFlowReqBuilder {
  7365  	builder.apiReq.QueryParams.Set("include_terminated_user", fmt.Sprint(includeTerminatedUser))
  7366  	return builder
  7367  }
  7368  
  7369  // 批量查询授权内员工的实际打卡流水记录。例如,企业给一个员工设定的班次是上午 9 点和下午 6 点各打一次上下班卡,但是该员工在这期间打了多次卡,该接口会把所有的打卡记录都返回。
  7370  func (builder *QueryUserFlowReqBuilder) Body(body *QueryUserFlowReqBody) *QueryUserFlowReqBuilder {
  7371  	builder.body = body
  7372  	return builder
  7373  }
  7374  
  7375  func (builder *QueryUserFlowReqBuilder) Build() *QueryUserFlowReq {
  7376  	req := &QueryUserFlowReq{}
  7377  	req.apiReq = &larkcore.ApiReq{}
  7378  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7379  	req.apiReq.Body = builder.body
  7380  	return req
  7381  }
  7382  
  7383  type QueryUserFlowReqBody struct {
  7384  	UserIds       []string `json:"user_ids,omitempty"`        // employee_no 或 employee_id 列表,长度不超过 50
  7385  	CheckTimeFrom *string  `json:"check_time_from,omitempty"` // 查询的起始时间,时间戳
  7386  	CheckTimeTo   *string  `json:"check_time_to,omitempty"`   // 查询的结束时间,时间戳
  7387  }
  7388  
  7389  type QueryUserFlowReq struct {
  7390  	apiReq *larkcore.ApiReq
  7391  	Body   *QueryUserFlowReqBody `body:""`
  7392  }
  7393  
  7394  type QueryUserFlowRespData struct {
  7395  	UserFlowResults []*UserFlow `json:"user_flow_results,omitempty"` // 打卡记录列表
  7396  }
  7397  
  7398  type QueryUserFlowResp struct {
  7399  	*larkcore.ApiResp `json:"-"`
  7400  	larkcore.CodeError
  7401  	Data *QueryUserFlowRespData `json:"data"` // 业务数据
  7402  }
  7403  
  7404  func (resp *QueryUserFlowResp) Success() bool {
  7405  	return resp.Code == 0
  7406  }
  7407  
  7408  type ModifyUserSettingReqBodyBuilder struct {
  7409  	userSetting     *UserSetting // 用户设置
  7410  	userSettingFlag bool
  7411  }
  7412  
  7413  func NewModifyUserSettingReqBodyBuilder() *ModifyUserSettingReqBodyBuilder {
  7414  	builder := &ModifyUserSettingReqBodyBuilder{}
  7415  	return builder
  7416  }
  7417  
  7418  // 用户设置
  7419  //
  7420  //示例值:
  7421  func (builder *ModifyUserSettingReqBodyBuilder) UserSetting(userSetting *UserSetting) *ModifyUserSettingReqBodyBuilder {
  7422  	builder.userSetting = userSetting
  7423  	builder.userSettingFlag = true
  7424  	return builder
  7425  }
  7426  
  7427  func (builder *ModifyUserSettingReqBodyBuilder) Build() *ModifyUserSettingReqBody {
  7428  	req := &ModifyUserSettingReqBody{}
  7429  	if builder.userSettingFlag {
  7430  		req.UserSetting = builder.userSetting
  7431  	}
  7432  	return req
  7433  }
  7434  
  7435  type ModifyUserSettingPathReqBodyBuilder struct {
  7436  	userSetting     *UserSetting // 用户设置
  7437  	userSettingFlag bool
  7438  }
  7439  
  7440  func NewModifyUserSettingPathReqBodyBuilder() *ModifyUserSettingPathReqBodyBuilder {
  7441  	builder := &ModifyUserSettingPathReqBodyBuilder{}
  7442  	return builder
  7443  }
  7444  
  7445  // 用户设置
  7446  //
  7447  // 示例值:
  7448  func (builder *ModifyUserSettingPathReqBodyBuilder) UserSetting(userSetting *UserSetting) *ModifyUserSettingPathReqBodyBuilder {
  7449  	builder.userSetting = userSetting
  7450  	builder.userSettingFlag = true
  7451  	return builder
  7452  }
  7453  
  7454  func (builder *ModifyUserSettingPathReqBodyBuilder) Build() (*ModifyUserSettingReqBody, error) {
  7455  	req := &ModifyUserSettingReqBody{}
  7456  	if builder.userSettingFlag {
  7457  		req.UserSetting = builder.userSetting
  7458  	}
  7459  	return req, nil
  7460  }
  7461  
  7462  type ModifyUserSettingReqBuilder struct {
  7463  	apiReq *larkcore.ApiReq
  7464  	body   *ModifyUserSettingReqBody
  7465  }
  7466  
  7467  func NewModifyUserSettingReqBuilder() *ModifyUserSettingReqBuilder {
  7468  	builder := &ModifyUserSettingReqBuilder{}
  7469  	builder.apiReq = &larkcore.ApiReq{
  7470  		PathParams:  larkcore.PathParams{},
  7471  		QueryParams: larkcore.QueryParams{},
  7472  	}
  7473  	return builder
  7474  }
  7475  
  7476  // 请求体和响应体中的 user_id 的员工工号类型
  7477  //
  7478  // 示例值:employee_id
  7479  func (builder *ModifyUserSettingReqBuilder) EmployeeType(employeeType string) *ModifyUserSettingReqBuilder {
  7480  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7481  	return builder
  7482  }
  7483  
  7484  // 修改授权内员工的用户设置信息,包括人脸照片文件 ID。
  7485  func (builder *ModifyUserSettingReqBuilder) Body(body *ModifyUserSettingReqBody) *ModifyUserSettingReqBuilder {
  7486  	builder.body = body
  7487  	return builder
  7488  }
  7489  
  7490  func (builder *ModifyUserSettingReqBuilder) Build() *ModifyUserSettingReq {
  7491  	req := &ModifyUserSettingReq{}
  7492  	req.apiReq = &larkcore.ApiReq{}
  7493  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7494  	req.apiReq.Body = builder.body
  7495  	return req
  7496  }
  7497  
  7498  type ModifyUserSettingReqBody struct {
  7499  	UserSetting *UserSetting `json:"user_setting,omitempty"` // 用户设置
  7500  }
  7501  
  7502  type ModifyUserSettingReq struct {
  7503  	apiReq *larkcore.ApiReq
  7504  	Body   *ModifyUserSettingReqBody `body:""`
  7505  }
  7506  
  7507  type ModifyUserSettingRespData struct {
  7508  	UserSetting *UserSetting `json:"user_setting,omitempty"` // 用户设置
  7509  }
  7510  
  7511  type ModifyUserSettingResp struct {
  7512  	*larkcore.ApiResp `json:"-"`
  7513  	larkcore.CodeError
  7514  	Data *ModifyUserSettingRespData `json:"data"` // 业务数据
  7515  }
  7516  
  7517  func (resp *ModifyUserSettingResp) Success() bool {
  7518  	return resp.Code == 0
  7519  }
  7520  
  7521  type QueryUserSettingReqBodyBuilder struct {
  7522  	userIds     []string // employee_no 或 employee_id 列表
  7523  	userIdsFlag bool
  7524  }
  7525  
  7526  func NewQueryUserSettingReqBodyBuilder() *QueryUserSettingReqBodyBuilder {
  7527  	builder := &QueryUserSettingReqBodyBuilder{}
  7528  	return builder
  7529  }
  7530  
  7531  // employee_no 或 employee_id 列表
  7532  //
  7533  //示例值:["abd754f7"]
  7534  func (builder *QueryUserSettingReqBodyBuilder) UserIds(userIds []string) *QueryUserSettingReqBodyBuilder {
  7535  	builder.userIds = userIds
  7536  	builder.userIdsFlag = true
  7537  	return builder
  7538  }
  7539  
  7540  func (builder *QueryUserSettingReqBodyBuilder) Build() *QueryUserSettingReqBody {
  7541  	req := &QueryUserSettingReqBody{}
  7542  	if builder.userIdsFlag {
  7543  		req.UserIds = builder.userIds
  7544  	}
  7545  	return req
  7546  }
  7547  
  7548  type QueryUserSettingPathReqBodyBuilder struct {
  7549  	userIds     []string // employee_no 或 employee_id 列表
  7550  	userIdsFlag bool
  7551  }
  7552  
  7553  func NewQueryUserSettingPathReqBodyBuilder() *QueryUserSettingPathReqBodyBuilder {
  7554  	builder := &QueryUserSettingPathReqBodyBuilder{}
  7555  	return builder
  7556  }
  7557  
  7558  // employee_no 或 employee_id 列表
  7559  //
  7560  // 示例值:["abd754f7"]
  7561  func (builder *QueryUserSettingPathReqBodyBuilder) UserIds(userIds []string) *QueryUserSettingPathReqBodyBuilder {
  7562  	builder.userIds = userIds
  7563  	builder.userIdsFlag = true
  7564  	return builder
  7565  }
  7566  
  7567  func (builder *QueryUserSettingPathReqBodyBuilder) Build() (*QueryUserSettingReqBody, error) {
  7568  	req := &QueryUserSettingReqBody{}
  7569  	if builder.userIdsFlag {
  7570  		req.UserIds = builder.userIds
  7571  	}
  7572  	return req, nil
  7573  }
  7574  
  7575  type QueryUserSettingReqBuilder struct {
  7576  	apiReq *larkcore.ApiReq
  7577  	body   *QueryUserSettingReqBody
  7578  }
  7579  
  7580  func NewQueryUserSettingReqBuilder() *QueryUserSettingReqBuilder {
  7581  	builder := &QueryUserSettingReqBuilder{}
  7582  	builder.apiReq = &larkcore.ApiReq{
  7583  		PathParams:  larkcore.PathParams{},
  7584  		QueryParams: larkcore.QueryParams{},
  7585  	}
  7586  	return builder
  7587  }
  7588  
  7589  // 请求体中的 user_ids 和响应体中的 user_id 的员工工号类型
  7590  //
  7591  // 示例值:employee_id
  7592  func (builder *QueryUserSettingReqBuilder) EmployeeType(employeeType string) *QueryUserSettingReqBuilder {
  7593  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7594  	return builder
  7595  }
  7596  
  7597  // 批量查询授权内员工的用户设置信息,包括人脸照片文件 ID、人脸照片更新时间。
  7598  func (builder *QueryUserSettingReqBuilder) Body(body *QueryUserSettingReqBody) *QueryUserSettingReqBuilder {
  7599  	builder.body = body
  7600  	return builder
  7601  }
  7602  
  7603  func (builder *QueryUserSettingReqBuilder) Build() *QueryUserSettingReq {
  7604  	req := &QueryUserSettingReq{}
  7605  	req.apiReq = &larkcore.ApiReq{}
  7606  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7607  	req.apiReq.Body = builder.body
  7608  	return req
  7609  }
  7610  
  7611  type QueryUserSettingReqBody struct {
  7612  	UserIds []string `json:"user_ids,omitempty"` // employee_no 或 employee_id 列表
  7613  }
  7614  
  7615  type QueryUserSettingReq struct {
  7616  	apiReq *larkcore.ApiReq
  7617  	Body   *QueryUserSettingReqBody `body:""`
  7618  }
  7619  
  7620  type QueryUserSettingRespData struct {
  7621  	UserSettings []*UserSetting `json:"user_settings,omitempty"` // 用户设置信息列表
  7622  }
  7623  
  7624  type QueryUserSettingResp struct {
  7625  	*larkcore.ApiResp `json:"-"`
  7626  	larkcore.CodeError
  7627  	Data *QueryUserSettingRespData `json:"data"` // 业务数据
  7628  }
  7629  
  7630  func (resp *QueryUserSettingResp) Success() bool {
  7631  	return resp.Code == 0
  7632  }
  7633  
  7634  type QueryUserStatsDataReqBodyBuilder struct {
  7635  	locale               string // 语言类型
  7636  	localeFlag           bool
  7637  	statsType            string // 统计类型
  7638  	statsTypeFlag        bool
  7639  	startDate            int // 开始时间
  7640  	startDateFlag        bool
  7641  	endDate              int // 结束时间;(时间间隔不超过 40 天)
  7642  	endDateFlag          bool
  7643  	userIds              []string // 查询的用户 ID 列表;(用户数量不超过 200)
  7644  	userIdsFlag          bool
  7645  	needHistory          bool // 是否需要历史数据
  7646  	needHistoryFlag      bool
  7647  	currentGroupOnly     bool // 只展示当前考勤组
  7648  	currentGroupOnlyFlag bool
  7649  	userId               string // 查询用户id,同【更新统计设置】、【查询统计设置】user_id
  7650  	userIdFlag           bool
  7651  }
  7652  
  7653  func NewQueryUserStatsDataReqBodyBuilder() *QueryUserStatsDataReqBodyBuilder {
  7654  	builder := &QueryUserStatsDataReqBodyBuilder{}
  7655  	return builder
  7656  }
  7657  
  7658  // 语言类型
  7659  //
  7660  //示例值:zh
  7661  func (builder *QueryUserStatsDataReqBodyBuilder) Locale(locale string) *QueryUserStatsDataReqBodyBuilder {
  7662  	builder.locale = locale
  7663  	builder.localeFlag = true
  7664  	return builder
  7665  }
  7666  
  7667  // 统计类型
  7668  //
  7669  //示例值:month
  7670  func (builder *QueryUserStatsDataReqBodyBuilder) StatsType(statsType string) *QueryUserStatsDataReqBodyBuilder {
  7671  	builder.statsType = statsType
  7672  	builder.statsTypeFlag = true
  7673  	return builder
  7674  }
  7675  
  7676  // 开始时间
  7677  //
  7678  //示例值:20210316
  7679  func (builder *QueryUserStatsDataReqBodyBuilder) StartDate(startDate int) *QueryUserStatsDataReqBodyBuilder {
  7680  	builder.startDate = startDate
  7681  	builder.startDateFlag = true
  7682  	return builder
  7683  }
  7684  
  7685  // 结束时间;(时间间隔不超过 40 天)
  7686  //
  7687  //示例值:20210323
  7688  func (builder *QueryUserStatsDataReqBodyBuilder) EndDate(endDate int) *QueryUserStatsDataReqBodyBuilder {
  7689  	builder.endDate = endDate
  7690  	builder.endDateFlag = true
  7691  	return builder
  7692  }
  7693  
  7694  // 查询的用户 ID 列表;(用户数量不超过 200)
  7695  //
  7696  //示例值:[;		"ec8ddg56",;		"4dbb52f2",;		"4167842e";	]
  7697  func (builder *QueryUserStatsDataReqBodyBuilder) UserIds(userIds []string) *QueryUserStatsDataReqBodyBuilder {
  7698  	builder.userIds = userIds
  7699  	builder.userIdsFlag = true
  7700  	return builder
  7701  }
  7702  
  7703  // 是否需要历史数据
  7704  //
  7705  //示例值:true
  7706  func (builder *QueryUserStatsDataReqBodyBuilder) NeedHistory(needHistory bool) *QueryUserStatsDataReqBodyBuilder {
  7707  	builder.needHistory = needHistory
  7708  	builder.needHistoryFlag = true
  7709  	return builder
  7710  }
  7711  
  7712  // 只展示当前考勤组
  7713  //
  7714  //示例值:true
  7715  func (builder *QueryUserStatsDataReqBodyBuilder) CurrentGroupOnly(currentGroupOnly bool) *QueryUserStatsDataReqBodyBuilder {
  7716  	builder.currentGroupOnly = currentGroupOnly
  7717  	builder.currentGroupOnlyFlag = true
  7718  	return builder
  7719  }
  7720  
  7721  // 查询用户id,同【更新统计设置】、【查询统计设置】user_id
  7722  //
  7723  //示例值:ec8ddg56
  7724  func (builder *QueryUserStatsDataReqBodyBuilder) UserId(userId string) *QueryUserStatsDataReqBodyBuilder {
  7725  	builder.userId = userId
  7726  	builder.userIdFlag = true
  7727  	return builder
  7728  }
  7729  
  7730  func (builder *QueryUserStatsDataReqBodyBuilder) Build() *QueryUserStatsDataReqBody {
  7731  	req := &QueryUserStatsDataReqBody{}
  7732  	if builder.localeFlag {
  7733  		req.Locale = &builder.locale
  7734  	}
  7735  	if builder.statsTypeFlag {
  7736  		req.StatsType = &builder.statsType
  7737  	}
  7738  	if builder.startDateFlag {
  7739  		req.StartDate = &builder.startDate
  7740  	}
  7741  	if builder.endDateFlag {
  7742  		req.EndDate = &builder.endDate
  7743  	}
  7744  	if builder.userIdsFlag {
  7745  		req.UserIds = builder.userIds
  7746  	}
  7747  	if builder.needHistoryFlag {
  7748  		req.NeedHistory = &builder.needHistory
  7749  	}
  7750  	if builder.currentGroupOnlyFlag {
  7751  		req.CurrentGroupOnly = &builder.currentGroupOnly
  7752  	}
  7753  	if builder.userIdFlag {
  7754  		req.UserId = &builder.userId
  7755  	}
  7756  	return req
  7757  }
  7758  
  7759  type QueryUserStatsDataPathReqBodyBuilder struct {
  7760  	locale               string // 语言类型
  7761  	localeFlag           bool
  7762  	statsType            string // 统计类型
  7763  	statsTypeFlag        bool
  7764  	startDate            int // 开始时间
  7765  	startDateFlag        bool
  7766  	endDate              int // 结束时间;(时间间隔不超过 40 天)
  7767  	endDateFlag          bool
  7768  	userIds              []string // 查询的用户 ID 列表;(用户数量不超过 200)
  7769  	userIdsFlag          bool
  7770  	needHistory          bool // 是否需要历史数据
  7771  	needHistoryFlag      bool
  7772  	currentGroupOnly     bool // 只展示当前考勤组
  7773  	currentGroupOnlyFlag bool
  7774  	userId               string // 查询用户id,同【更新统计设置】、【查询统计设置】user_id
  7775  	userIdFlag           bool
  7776  }
  7777  
  7778  func NewQueryUserStatsDataPathReqBodyBuilder() *QueryUserStatsDataPathReqBodyBuilder {
  7779  	builder := &QueryUserStatsDataPathReqBodyBuilder{}
  7780  	return builder
  7781  }
  7782  
  7783  // 语言类型
  7784  //
  7785  // 示例值:zh
  7786  func (builder *QueryUserStatsDataPathReqBodyBuilder) Locale(locale string) *QueryUserStatsDataPathReqBodyBuilder {
  7787  	builder.locale = locale
  7788  	builder.localeFlag = true
  7789  	return builder
  7790  }
  7791  
  7792  // 统计类型
  7793  //
  7794  // 示例值:month
  7795  func (builder *QueryUserStatsDataPathReqBodyBuilder) StatsType(statsType string) *QueryUserStatsDataPathReqBodyBuilder {
  7796  	builder.statsType = statsType
  7797  	builder.statsTypeFlag = true
  7798  	return builder
  7799  }
  7800  
  7801  // 开始时间
  7802  //
  7803  // 示例值:20210316
  7804  func (builder *QueryUserStatsDataPathReqBodyBuilder) StartDate(startDate int) *QueryUserStatsDataPathReqBodyBuilder {
  7805  	builder.startDate = startDate
  7806  	builder.startDateFlag = true
  7807  	return builder
  7808  }
  7809  
  7810  // 结束时间;(时间间隔不超过 40 天)
  7811  //
  7812  // 示例值:20210323
  7813  func (builder *QueryUserStatsDataPathReqBodyBuilder) EndDate(endDate int) *QueryUserStatsDataPathReqBodyBuilder {
  7814  	builder.endDate = endDate
  7815  	builder.endDateFlag = true
  7816  	return builder
  7817  }
  7818  
  7819  // 查询的用户 ID 列表;(用户数量不超过 200)
  7820  //
  7821  // 示例值:[;		"ec8ddg56",;		"4dbb52f2",;		"4167842e";	]
  7822  func (builder *QueryUserStatsDataPathReqBodyBuilder) UserIds(userIds []string) *QueryUserStatsDataPathReqBodyBuilder {
  7823  	builder.userIds = userIds
  7824  	builder.userIdsFlag = true
  7825  	return builder
  7826  }
  7827  
  7828  // 是否需要历史数据
  7829  //
  7830  // 示例值:true
  7831  func (builder *QueryUserStatsDataPathReqBodyBuilder) NeedHistory(needHistory bool) *QueryUserStatsDataPathReqBodyBuilder {
  7832  	builder.needHistory = needHistory
  7833  	builder.needHistoryFlag = true
  7834  	return builder
  7835  }
  7836  
  7837  // 只展示当前考勤组
  7838  //
  7839  // 示例值:true
  7840  func (builder *QueryUserStatsDataPathReqBodyBuilder) CurrentGroupOnly(currentGroupOnly bool) *QueryUserStatsDataPathReqBodyBuilder {
  7841  	builder.currentGroupOnly = currentGroupOnly
  7842  	builder.currentGroupOnlyFlag = true
  7843  	return builder
  7844  }
  7845  
  7846  // 查询用户id,同【更新统计设置】、【查询统计设置】user_id
  7847  //
  7848  // 示例值:ec8ddg56
  7849  func (builder *QueryUserStatsDataPathReqBodyBuilder) UserId(userId string) *QueryUserStatsDataPathReqBodyBuilder {
  7850  	builder.userId = userId
  7851  	builder.userIdFlag = true
  7852  	return builder
  7853  }
  7854  
  7855  func (builder *QueryUserStatsDataPathReqBodyBuilder) Build() (*QueryUserStatsDataReqBody, error) {
  7856  	req := &QueryUserStatsDataReqBody{}
  7857  	if builder.localeFlag {
  7858  		req.Locale = &builder.locale
  7859  	}
  7860  	if builder.statsTypeFlag {
  7861  		req.StatsType = &builder.statsType
  7862  	}
  7863  	if builder.startDateFlag {
  7864  		req.StartDate = &builder.startDate
  7865  	}
  7866  	if builder.endDateFlag {
  7867  		req.EndDate = &builder.endDate
  7868  	}
  7869  	if builder.userIdsFlag {
  7870  		req.UserIds = builder.userIds
  7871  	}
  7872  	if builder.needHistoryFlag {
  7873  		req.NeedHistory = &builder.needHistory
  7874  	}
  7875  	if builder.currentGroupOnlyFlag {
  7876  		req.CurrentGroupOnly = &builder.currentGroupOnly
  7877  	}
  7878  	if builder.userIdFlag {
  7879  		req.UserId = &builder.userId
  7880  	}
  7881  	return req, nil
  7882  }
  7883  
  7884  type QueryUserStatsDataReqBuilder struct {
  7885  	apiReq *larkcore.ApiReq
  7886  	body   *QueryUserStatsDataReqBody
  7887  }
  7888  
  7889  func NewQueryUserStatsDataReqBuilder() *QueryUserStatsDataReqBuilder {
  7890  	builder := &QueryUserStatsDataReqBuilder{}
  7891  	builder.apiReq = &larkcore.ApiReq{
  7892  		PathParams:  larkcore.PathParams{},
  7893  		QueryParams: larkcore.QueryParams{},
  7894  	}
  7895  	return builder
  7896  }
  7897  
  7898  // 请求体中的 user_ids 和响应体中的 user_id 的员工工号类型
  7899  //
  7900  // 示例值:employee_id
  7901  func (builder *QueryUserStatsDataReqBuilder) EmployeeType(employeeType string) *QueryUserStatsDataReqBuilder {
  7902  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  7903  	return builder
  7904  }
  7905  
  7906  // 查询日度统计或月度统计的统计数据。
  7907  func (builder *QueryUserStatsDataReqBuilder) Body(body *QueryUserStatsDataReqBody) *QueryUserStatsDataReqBuilder {
  7908  	builder.body = body
  7909  	return builder
  7910  }
  7911  
  7912  func (builder *QueryUserStatsDataReqBuilder) Build() *QueryUserStatsDataReq {
  7913  	req := &QueryUserStatsDataReq{}
  7914  	req.apiReq = &larkcore.ApiReq{}
  7915  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7916  	req.apiReq.Body = builder.body
  7917  	return req
  7918  }
  7919  
  7920  type QueryUserStatsDataReqBody struct {
  7921  	Locale           *string  `json:"locale,omitempty"`             // 语言类型
  7922  	StatsType        *string  `json:"stats_type,omitempty"`         // 统计类型
  7923  	StartDate        *int     `json:"start_date,omitempty"`         // 开始时间
  7924  	EndDate          *int     `json:"end_date,omitempty"`           // 结束时间;(时间间隔不超过 40 天)
  7925  	UserIds          []string `json:"user_ids,omitempty"`           // 查询的用户 ID 列表;(用户数量不超过 200)
  7926  	NeedHistory      *bool    `json:"need_history,omitempty"`       // 是否需要历史数据
  7927  	CurrentGroupOnly *bool    `json:"current_group_only,omitempty"` // 只展示当前考勤组
  7928  	UserId           *string  `json:"user_id,omitempty"`            // 查询用户id,同【更新统计设置】、【查询统计设置】user_id
  7929  }
  7930  
  7931  type QueryUserStatsDataReq struct {
  7932  	apiReq *larkcore.ApiReq
  7933  	Body   *QueryUserStatsDataReqBody `body:""`
  7934  }
  7935  
  7936  type QueryUserStatsDataRespData struct {
  7937  	UserDatas []*UserStatsData `json:"user_datas,omitempty"` // 用户统计数据
  7938  }
  7939  
  7940  type QueryUserStatsDataResp struct {
  7941  	*larkcore.ApiResp `json:"-"`
  7942  	larkcore.CodeError
  7943  	Data *QueryUserStatsDataRespData `json:"data"` // 业务数据
  7944  }
  7945  
  7946  func (resp *QueryUserStatsDataResp) Success() bool {
  7947  	return resp.Code == 0
  7948  }
  7949  
  7950  type QueryUserStatsFieldReqBodyBuilder struct {
  7951  	locale        string // 语言类型
  7952  	localeFlag    bool
  7953  	statsType     string // 统计类型
  7954  	statsTypeFlag bool
  7955  	startDate     int // 开始时间
  7956  	startDateFlag bool
  7957  	endDate       int // 结束时间(时间间隔不超过 40 天)
  7958  	endDateFlag   bool
  7959  }
  7960  
  7961  func NewQueryUserStatsFieldReqBodyBuilder() *QueryUserStatsFieldReqBodyBuilder {
  7962  	builder := &QueryUserStatsFieldReqBodyBuilder{}
  7963  	return builder
  7964  }
  7965  
  7966  // 语言类型
  7967  //
  7968  //示例值:zh
  7969  func (builder *QueryUserStatsFieldReqBodyBuilder) Locale(locale string) *QueryUserStatsFieldReqBodyBuilder {
  7970  	builder.locale = locale
  7971  	builder.localeFlag = true
  7972  	return builder
  7973  }
  7974  
  7975  // 统计类型
  7976  //
  7977  //示例值:daily
  7978  func (builder *QueryUserStatsFieldReqBodyBuilder) StatsType(statsType string) *QueryUserStatsFieldReqBodyBuilder {
  7979  	builder.statsType = statsType
  7980  	builder.statsTypeFlag = true
  7981  	return builder
  7982  }
  7983  
  7984  // 开始时间
  7985  //
  7986  //示例值:20210316
  7987  func (builder *QueryUserStatsFieldReqBodyBuilder) StartDate(startDate int) *QueryUserStatsFieldReqBodyBuilder {
  7988  	builder.startDate = startDate
  7989  	builder.startDateFlag = true
  7990  	return builder
  7991  }
  7992  
  7993  // 结束时间(时间间隔不超过 40 天)
  7994  //
  7995  //示例值:20210323
  7996  func (builder *QueryUserStatsFieldReqBodyBuilder) EndDate(endDate int) *QueryUserStatsFieldReqBodyBuilder {
  7997  	builder.endDate = endDate
  7998  	builder.endDateFlag = true
  7999  	return builder
  8000  }
  8001  
  8002  func (builder *QueryUserStatsFieldReqBodyBuilder) Build() *QueryUserStatsFieldReqBody {
  8003  	req := &QueryUserStatsFieldReqBody{}
  8004  	if builder.localeFlag {
  8005  		req.Locale = &builder.locale
  8006  	}
  8007  	if builder.statsTypeFlag {
  8008  		req.StatsType = &builder.statsType
  8009  	}
  8010  	if builder.startDateFlag {
  8011  		req.StartDate = &builder.startDate
  8012  	}
  8013  	if builder.endDateFlag {
  8014  		req.EndDate = &builder.endDate
  8015  	}
  8016  	return req
  8017  }
  8018  
  8019  type QueryUserStatsFieldPathReqBodyBuilder struct {
  8020  	locale        string // 语言类型
  8021  	localeFlag    bool
  8022  	statsType     string // 统计类型
  8023  	statsTypeFlag bool
  8024  	startDate     int // 开始时间
  8025  	startDateFlag bool
  8026  	endDate       int // 结束时间(时间间隔不超过 40 天)
  8027  	endDateFlag   bool
  8028  }
  8029  
  8030  func NewQueryUserStatsFieldPathReqBodyBuilder() *QueryUserStatsFieldPathReqBodyBuilder {
  8031  	builder := &QueryUserStatsFieldPathReqBodyBuilder{}
  8032  	return builder
  8033  }
  8034  
  8035  // 语言类型
  8036  //
  8037  // 示例值:zh
  8038  func (builder *QueryUserStatsFieldPathReqBodyBuilder) Locale(locale string) *QueryUserStatsFieldPathReqBodyBuilder {
  8039  	builder.locale = locale
  8040  	builder.localeFlag = true
  8041  	return builder
  8042  }
  8043  
  8044  // 统计类型
  8045  //
  8046  // 示例值:daily
  8047  func (builder *QueryUserStatsFieldPathReqBodyBuilder) StatsType(statsType string) *QueryUserStatsFieldPathReqBodyBuilder {
  8048  	builder.statsType = statsType
  8049  	builder.statsTypeFlag = true
  8050  	return builder
  8051  }
  8052  
  8053  // 开始时间
  8054  //
  8055  // 示例值:20210316
  8056  func (builder *QueryUserStatsFieldPathReqBodyBuilder) StartDate(startDate int) *QueryUserStatsFieldPathReqBodyBuilder {
  8057  	builder.startDate = startDate
  8058  	builder.startDateFlag = true
  8059  	return builder
  8060  }
  8061  
  8062  // 结束时间(时间间隔不超过 40 天)
  8063  //
  8064  // 示例值:20210323
  8065  func (builder *QueryUserStatsFieldPathReqBodyBuilder) EndDate(endDate int) *QueryUserStatsFieldPathReqBodyBuilder {
  8066  	builder.endDate = endDate
  8067  	builder.endDateFlag = true
  8068  	return builder
  8069  }
  8070  
  8071  func (builder *QueryUserStatsFieldPathReqBodyBuilder) Build() (*QueryUserStatsFieldReqBody, error) {
  8072  	req := &QueryUserStatsFieldReqBody{}
  8073  	if builder.localeFlag {
  8074  		req.Locale = &builder.locale
  8075  	}
  8076  	if builder.statsTypeFlag {
  8077  		req.StatsType = &builder.statsType
  8078  	}
  8079  	if builder.startDateFlag {
  8080  		req.StartDate = &builder.startDate
  8081  	}
  8082  	if builder.endDateFlag {
  8083  		req.EndDate = &builder.endDate
  8084  	}
  8085  	return req, nil
  8086  }
  8087  
  8088  type QueryUserStatsFieldReqBuilder struct {
  8089  	apiReq *larkcore.ApiReq
  8090  	body   *QueryUserStatsFieldReqBody
  8091  }
  8092  
  8093  func NewQueryUserStatsFieldReqBuilder() *QueryUserStatsFieldReqBuilder {
  8094  	builder := &QueryUserStatsFieldReqBuilder{}
  8095  	builder.apiReq = &larkcore.ApiReq{
  8096  		PathParams:  larkcore.PathParams{},
  8097  		QueryParams: larkcore.QueryParams{},
  8098  	}
  8099  	return builder
  8100  }
  8101  
  8102  // 响应体中的 user_id 的员工工号类型
  8103  //
  8104  // 示例值:employee_id
  8105  func (builder *QueryUserStatsFieldReqBuilder) EmployeeType(employeeType string) *QueryUserStatsFieldReqBuilder {
  8106  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  8107  	return builder
  8108  }
  8109  
  8110  // 查询考勤统计支持的日度统计或月度统计的统计表头。
  8111  func (builder *QueryUserStatsFieldReqBuilder) Body(body *QueryUserStatsFieldReqBody) *QueryUserStatsFieldReqBuilder {
  8112  	builder.body = body
  8113  	return builder
  8114  }
  8115  
  8116  func (builder *QueryUserStatsFieldReqBuilder) Build() *QueryUserStatsFieldReq {
  8117  	req := &QueryUserStatsFieldReq{}
  8118  	req.apiReq = &larkcore.ApiReq{}
  8119  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8120  	req.apiReq.Body = builder.body
  8121  	return req
  8122  }
  8123  
  8124  type QueryUserStatsFieldReqBody struct {
  8125  	Locale    *string `json:"locale,omitempty"`     // 语言类型
  8126  	StatsType *string `json:"stats_type,omitempty"` // 统计类型
  8127  	StartDate *int    `json:"start_date,omitempty"` // 开始时间
  8128  	EndDate   *int    `json:"end_date,omitempty"`   // 结束时间(时间间隔不超过 40 天)
  8129  }
  8130  
  8131  type QueryUserStatsFieldReq struct {
  8132  	apiReq *larkcore.ApiReq
  8133  	Body   *QueryUserStatsFieldReqBody `body:""`
  8134  }
  8135  
  8136  type QueryUserStatsFieldRespData struct {
  8137  	UserStatsField *UserStatsField `json:"user_stats_field,omitempty"` // 统计数据表头
  8138  }
  8139  
  8140  type QueryUserStatsFieldResp struct {
  8141  	*larkcore.ApiResp `json:"-"`
  8142  	larkcore.CodeError
  8143  	Data *QueryUserStatsFieldRespData `json:"data"` // 业务数据
  8144  }
  8145  
  8146  func (resp *QueryUserStatsFieldResp) Success() bool {
  8147  	return resp.Code == 0
  8148  }
  8149  
  8150  type QueryUserStatsViewReqBodyBuilder struct {
  8151  	locale        string // 语言类型
  8152  	localeFlag    bool
  8153  	statsType     string // 统计类型
  8154  	statsTypeFlag bool
  8155  	userId        string // 查询用户id,同【查询统计数据】、【更新统计设置】user_id
  8156  	userIdFlag    bool
  8157  }
  8158  
  8159  func NewQueryUserStatsViewReqBodyBuilder() *QueryUserStatsViewReqBodyBuilder {
  8160  	builder := &QueryUserStatsViewReqBodyBuilder{}
  8161  	return builder
  8162  }
  8163  
  8164  // 语言类型
  8165  //
  8166  //示例值:zh
  8167  func (builder *QueryUserStatsViewReqBodyBuilder) Locale(locale string) *QueryUserStatsViewReqBodyBuilder {
  8168  	builder.locale = locale
  8169  	builder.localeFlag = true
  8170  	return builder
  8171  }
  8172  
  8173  // 统计类型
  8174  //
  8175  //示例值:daily
  8176  func (builder *QueryUserStatsViewReqBodyBuilder) StatsType(statsType string) *QueryUserStatsViewReqBodyBuilder {
  8177  	builder.statsType = statsType
  8178  	builder.statsTypeFlag = true
  8179  	return builder
  8180  }
  8181  
  8182  // 查询用户id,同【查询统计数据】、【更新统计设置】user_id
  8183  //
  8184  //示例值:dd31248a
  8185  func (builder *QueryUserStatsViewReqBodyBuilder) UserId(userId string) *QueryUserStatsViewReqBodyBuilder {
  8186  	builder.userId = userId
  8187  	builder.userIdFlag = true
  8188  	return builder
  8189  }
  8190  
  8191  func (builder *QueryUserStatsViewReqBodyBuilder) Build() *QueryUserStatsViewReqBody {
  8192  	req := &QueryUserStatsViewReqBody{}
  8193  	if builder.localeFlag {
  8194  		req.Locale = &builder.locale
  8195  	}
  8196  	if builder.statsTypeFlag {
  8197  		req.StatsType = &builder.statsType
  8198  	}
  8199  	if builder.userIdFlag {
  8200  		req.UserId = &builder.userId
  8201  	}
  8202  	return req
  8203  }
  8204  
  8205  type QueryUserStatsViewPathReqBodyBuilder struct {
  8206  	locale        string // 语言类型
  8207  	localeFlag    bool
  8208  	statsType     string // 统计类型
  8209  	statsTypeFlag bool
  8210  	userId        string // 查询用户id,同【查询统计数据】、【更新统计设置】user_id
  8211  	userIdFlag    bool
  8212  }
  8213  
  8214  func NewQueryUserStatsViewPathReqBodyBuilder() *QueryUserStatsViewPathReqBodyBuilder {
  8215  	builder := &QueryUserStatsViewPathReqBodyBuilder{}
  8216  	return builder
  8217  }
  8218  
  8219  // 语言类型
  8220  //
  8221  // 示例值:zh
  8222  func (builder *QueryUserStatsViewPathReqBodyBuilder) Locale(locale string) *QueryUserStatsViewPathReqBodyBuilder {
  8223  	builder.locale = locale
  8224  	builder.localeFlag = true
  8225  	return builder
  8226  }
  8227  
  8228  // 统计类型
  8229  //
  8230  // 示例值:daily
  8231  func (builder *QueryUserStatsViewPathReqBodyBuilder) StatsType(statsType string) *QueryUserStatsViewPathReqBodyBuilder {
  8232  	builder.statsType = statsType
  8233  	builder.statsTypeFlag = true
  8234  	return builder
  8235  }
  8236  
  8237  // 查询用户id,同【查询统计数据】、【更新统计设置】user_id
  8238  //
  8239  // 示例值:dd31248a
  8240  func (builder *QueryUserStatsViewPathReqBodyBuilder) UserId(userId string) *QueryUserStatsViewPathReqBodyBuilder {
  8241  	builder.userId = userId
  8242  	builder.userIdFlag = true
  8243  	return builder
  8244  }
  8245  
  8246  func (builder *QueryUserStatsViewPathReqBodyBuilder) Build() (*QueryUserStatsViewReqBody, error) {
  8247  	req := &QueryUserStatsViewReqBody{}
  8248  	if builder.localeFlag {
  8249  		req.Locale = &builder.locale
  8250  	}
  8251  	if builder.statsTypeFlag {
  8252  		req.StatsType = &builder.statsType
  8253  	}
  8254  	if builder.userIdFlag {
  8255  		req.UserId = &builder.userId
  8256  	}
  8257  	return req, nil
  8258  }
  8259  
  8260  type QueryUserStatsViewReqBuilder struct {
  8261  	apiReq *larkcore.ApiReq
  8262  	body   *QueryUserStatsViewReqBody
  8263  }
  8264  
  8265  func NewQueryUserStatsViewReqBuilder() *QueryUserStatsViewReqBuilder {
  8266  	builder := &QueryUserStatsViewReqBuilder{}
  8267  	builder.apiReq = &larkcore.ApiReq{
  8268  		PathParams:  larkcore.PathParams{},
  8269  		QueryParams: larkcore.QueryParams{},
  8270  	}
  8271  	return builder
  8272  }
  8273  
  8274  // 响应体中的 user_id 的员工工号类型
  8275  //
  8276  // 示例值:employee_id
  8277  func (builder *QueryUserStatsViewReqBuilder) EmployeeType(employeeType string) *QueryUserStatsViewReqBuilder {
  8278  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  8279  	return builder
  8280  }
  8281  
  8282  // 查询开发者定制的日度统计或月度统计的统计报表表头设置信息。
  8283  func (builder *QueryUserStatsViewReqBuilder) Body(body *QueryUserStatsViewReqBody) *QueryUserStatsViewReqBuilder {
  8284  	builder.body = body
  8285  	return builder
  8286  }
  8287  
  8288  func (builder *QueryUserStatsViewReqBuilder) Build() *QueryUserStatsViewReq {
  8289  	req := &QueryUserStatsViewReq{}
  8290  	req.apiReq = &larkcore.ApiReq{}
  8291  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8292  	req.apiReq.Body = builder.body
  8293  	return req
  8294  }
  8295  
  8296  type QueryUserStatsViewReqBody struct {
  8297  	Locale    *string `json:"locale,omitempty"`     // 语言类型
  8298  	StatsType *string `json:"stats_type,omitempty"` // 统计类型
  8299  	UserId    *string `json:"user_id,omitempty"`    // 查询用户id,同【查询统计数据】、【更新统计设置】user_id
  8300  }
  8301  
  8302  type QueryUserStatsViewReq struct {
  8303  	apiReq *larkcore.ApiReq
  8304  	Body   *QueryUserStatsViewReqBody `body:""`
  8305  }
  8306  
  8307  type QueryUserStatsViewRespData struct {
  8308  	View *UserStatsView `json:"view,omitempty"` // 统计视图
  8309  }
  8310  
  8311  type QueryUserStatsViewResp struct {
  8312  	*larkcore.ApiResp `json:"-"`
  8313  	larkcore.CodeError
  8314  	Data *QueryUserStatsViewRespData `json:"data"` // 业务数据
  8315  }
  8316  
  8317  func (resp *QueryUserStatsViewResp) Success() bool {
  8318  	return resp.Code == 0
  8319  }
  8320  
  8321  type UpdateUserStatsViewReqBodyBuilder struct {
  8322  	view     *UserStatsView // 统计设置
  8323  	viewFlag bool
  8324  }
  8325  
  8326  func NewUpdateUserStatsViewReqBodyBuilder() *UpdateUserStatsViewReqBodyBuilder {
  8327  	builder := &UpdateUserStatsViewReqBodyBuilder{}
  8328  	return builder
  8329  }
  8330  
  8331  // 统计设置
  8332  //
  8333  //示例值:
  8334  func (builder *UpdateUserStatsViewReqBodyBuilder) View(view *UserStatsView) *UpdateUserStatsViewReqBodyBuilder {
  8335  	builder.view = view
  8336  	builder.viewFlag = true
  8337  	return builder
  8338  }
  8339  
  8340  func (builder *UpdateUserStatsViewReqBodyBuilder) Build() *UpdateUserStatsViewReqBody {
  8341  	req := &UpdateUserStatsViewReqBody{}
  8342  	if builder.viewFlag {
  8343  		req.View = builder.view
  8344  	}
  8345  	return req
  8346  }
  8347  
  8348  type UpdateUserStatsViewPathReqBodyBuilder struct {
  8349  	view     *UserStatsView // 统计设置
  8350  	viewFlag bool
  8351  }
  8352  
  8353  func NewUpdateUserStatsViewPathReqBodyBuilder() *UpdateUserStatsViewPathReqBodyBuilder {
  8354  	builder := &UpdateUserStatsViewPathReqBodyBuilder{}
  8355  	return builder
  8356  }
  8357  
  8358  // 统计设置
  8359  //
  8360  // 示例值:
  8361  func (builder *UpdateUserStatsViewPathReqBodyBuilder) View(view *UserStatsView) *UpdateUserStatsViewPathReqBodyBuilder {
  8362  	builder.view = view
  8363  	builder.viewFlag = true
  8364  	return builder
  8365  }
  8366  
  8367  func (builder *UpdateUserStatsViewPathReqBodyBuilder) Build() (*UpdateUserStatsViewReqBody, error) {
  8368  	req := &UpdateUserStatsViewReqBody{}
  8369  	if builder.viewFlag {
  8370  		req.View = builder.view
  8371  	}
  8372  	return req, nil
  8373  }
  8374  
  8375  type UpdateUserStatsViewReqBuilder struct {
  8376  	apiReq *larkcore.ApiReq
  8377  	body   *UpdateUserStatsViewReqBody
  8378  }
  8379  
  8380  func NewUpdateUserStatsViewReqBuilder() *UpdateUserStatsViewReqBuilder {
  8381  	builder := &UpdateUserStatsViewReqBuilder{}
  8382  	builder.apiReq = &larkcore.ApiReq{
  8383  		PathParams:  larkcore.PathParams{},
  8384  		QueryParams: larkcore.QueryParams{},
  8385  	}
  8386  	return builder
  8387  }
  8388  
  8389  // 用户视图 ID,获取方式:1)[查询统计设置](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/user_stats_view/query)
  8390  //
  8391  // 示例值:TmpZNU5qTTJORFF6T1RnNU5UTTNOakV6TWl0dGIyNTBhQT09
  8392  func (builder *UpdateUserStatsViewReqBuilder) UserStatsViewId(userStatsViewId string) *UpdateUserStatsViewReqBuilder {
  8393  	builder.apiReq.PathParams.Set("user_stats_view_id", fmt.Sprint(userStatsViewId))
  8394  	return builder
  8395  }
  8396  
  8397  // 员工工号类型
  8398  //
  8399  // 示例值:employee_id
  8400  func (builder *UpdateUserStatsViewReqBuilder) EmployeeType(employeeType string) *UpdateUserStatsViewReqBuilder {
  8401  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  8402  	return builder
  8403  }
  8404  
  8405  // 更新开发者定制的日度统计或月度统计的统计报表表头设置信息。
  8406  func (builder *UpdateUserStatsViewReqBuilder) Body(body *UpdateUserStatsViewReqBody) *UpdateUserStatsViewReqBuilder {
  8407  	builder.body = body
  8408  	return builder
  8409  }
  8410  
  8411  func (builder *UpdateUserStatsViewReqBuilder) Build() *UpdateUserStatsViewReq {
  8412  	req := &UpdateUserStatsViewReq{}
  8413  	req.apiReq = &larkcore.ApiReq{}
  8414  	req.apiReq.PathParams = builder.apiReq.PathParams
  8415  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8416  	req.apiReq.Body = builder.body
  8417  	return req
  8418  }
  8419  
  8420  type UpdateUserStatsViewReqBody struct {
  8421  	View *UserStatsView `json:"view,omitempty"` // 统计设置
  8422  }
  8423  
  8424  type UpdateUserStatsViewReq struct {
  8425  	apiReq *larkcore.ApiReq
  8426  	Body   *UpdateUserStatsViewReqBody `body:""`
  8427  }
  8428  
  8429  type UpdateUserStatsViewRespData struct {
  8430  	View *UserStatsView `json:"view,omitempty"` // 视图
  8431  }
  8432  
  8433  type UpdateUserStatsViewResp struct {
  8434  	*larkcore.ApiResp `json:"-"`
  8435  	larkcore.CodeError
  8436  	Data *UpdateUserStatsViewRespData `json:"data"` // 业务数据
  8437  }
  8438  
  8439  func (resp *UpdateUserStatsViewResp) Success() bool {
  8440  	return resp.Code == 0
  8441  }
  8442  
  8443  type QueryUserTaskReqBodyBuilder struct {
  8444  	userIds           []string // employee_no 或 employee_id 列表
  8445  	userIdsFlag       bool
  8446  	checkDateFrom     int // 查询的起始工作日
  8447  	checkDateFromFlag bool
  8448  	checkDateTo       int // 查询的结束工作日
  8449  	checkDateToFlag   bool
  8450  }
  8451  
  8452  func NewQueryUserTaskReqBodyBuilder() *QueryUserTaskReqBodyBuilder {
  8453  	builder := &QueryUserTaskReqBodyBuilder{}
  8454  	return builder
  8455  }
  8456  
  8457  // employee_no 或 employee_id 列表
  8458  //
  8459  //示例值:abd754f7
  8460  func (builder *QueryUserTaskReqBodyBuilder) UserIds(userIds []string) *QueryUserTaskReqBodyBuilder {
  8461  	builder.userIds = userIds
  8462  	builder.userIdsFlag = true
  8463  	return builder
  8464  }
  8465  
  8466  // 查询的起始工作日
  8467  //
  8468  //示例值:20190817
  8469  func (builder *QueryUserTaskReqBodyBuilder) CheckDateFrom(checkDateFrom int) *QueryUserTaskReqBodyBuilder {
  8470  	builder.checkDateFrom = checkDateFrom
  8471  	builder.checkDateFromFlag = true
  8472  	return builder
  8473  }
  8474  
  8475  // 查询的结束工作日
  8476  //
  8477  //示例值:20190820
  8478  func (builder *QueryUserTaskReqBodyBuilder) CheckDateTo(checkDateTo int) *QueryUserTaskReqBodyBuilder {
  8479  	builder.checkDateTo = checkDateTo
  8480  	builder.checkDateToFlag = true
  8481  	return builder
  8482  }
  8483  
  8484  func (builder *QueryUserTaskReqBodyBuilder) Build() *QueryUserTaskReqBody {
  8485  	req := &QueryUserTaskReqBody{}
  8486  	if builder.userIdsFlag {
  8487  		req.UserIds = builder.userIds
  8488  	}
  8489  	if builder.checkDateFromFlag {
  8490  		req.CheckDateFrom = &builder.checkDateFrom
  8491  	}
  8492  	if builder.checkDateToFlag {
  8493  		req.CheckDateTo = &builder.checkDateTo
  8494  	}
  8495  	return req
  8496  }
  8497  
  8498  type QueryUserTaskPathReqBodyBuilder struct {
  8499  	userIds           []string // employee_no 或 employee_id 列表
  8500  	userIdsFlag       bool
  8501  	checkDateFrom     int // 查询的起始工作日
  8502  	checkDateFromFlag bool
  8503  	checkDateTo       int // 查询的结束工作日
  8504  	checkDateToFlag   bool
  8505  }
  8506  
  8507  func NewQueryUserTaskPathReqBodyBuilder() *QueryUserTaskPathReqBodyBuilder {
  8508  	builder := &QueryUserTaskPathReqBodyBuilder{}
  8509  	return builder
  8510  }
  8511  
  8512  // employee_no 或 employee_id 列表
  8513  //
  8514  // 示例值:abd754f7
  8515  func (builder *QueryUserTaskPathReqBodyBuilder) UserIds(userIds []string) *QueryUserTaskPathReqBodyBuilder {
  8516  	builder.userIds = userIds
  8517  	builder.userIdsFlag = true
  8518  	return builder
  8519  }
  8520  
  8521  // 查询的起始工作日
  8522  //
  8523  // 示例值:20190817
  8524  func (builder *QueryUserTaskPathReqBodyBuilder) CheckDateFrom(checkDateFrom int) *QueryUserTaskPathReqBodyBuilder {
  8525  	builder.checkDateFrom = checkDateFrom
  8526  	builder.checkDateFromFlag = true
  8527  	return builder
  8528  }
  8529  
  8530  // 查询的结束工作日
  8531  //
  8532  // 示例值:20190820
  8533  func (builder *QueryUserTaskPathReqBodyBuilder) CheckDateTo(checkDateTo int) *QueryUserTaskPathReqBodyBuilder {
  8534  	builder.checkDateTo = checkDateTo
  8535  	builder.checkDateToFlag = true
  8536  	return builder
  8537  }
  8538  
  8539  func (builder *QueryUserTaskPathReqBodyBuilder) Build() (*QueryUserTaskReqBody, error) {
  8540  	req := &QueryUserTaskReqBody{}
  8541  	if builder.userIdsFlag {
  8542  		req.UserIds = builder.userIds
  8543  	}
  8544  	if builder.checkDateFromFlag {
  8545  		req.CheckDateFrom = &builder.checkDateFrom
  8546  	}
  8547  	if builder.checkDateToFlag {
  8548  		req.CheckDateTo = &builder.checkDateTo
  8549  	}
  8550  	return req, nil
  8551  }
  8552  
  8553  type QueryUserTaskReqBuilder struct {
  8554  	apiReq *larkcore.ApiReq
  8555  	body   *QueryUserTaskReqBody
  8556  }
  8557  
  8558  func NewQueryUserTaskReqBuilder() *QueryUserTaskReqBuilder {
  8559  	builder := &QueryUserTaskReqBuilder{}
  8560  	builder.apiReq = &larkcore.ApiReq{
  8561  		PathParams:  larkcore.PathParams{},
  8562  		QueryParams: larkcore.QueryParams{},
  8563  	}
  8564  	return builder
  8565  }
  8566  
  8567  // 员工工号类型
  8568  //
  8569  // 示例值:employee_id
  8570  func (builder *QueryUserTaskReqBuilder) EmployeeType(employeeType string) *QueryUserTaskReqBuilder {
  8571  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  8572  	return builder
  8573  }
  8574  
  8575  // 是否忽略无效和没有权限的用户。如果 true,则返回有效用户的信息,并告知无效和没有权限的用户信息;如果 false,且 user_ids 中存在无效或没有权限的用户,则返回错误
  8576  //
  8577  // 示例值:true
  8578  func (builder *QueryUserTaskReqBuilder) IgnoreInvalidUsers(ignoreInvalidUsers bool) *QueryUserTaskReqBuilder {
  8579  	builder.apiReq.QueryParams.Set("ignore_invalid_users", fmt.Sprint(ignoreInvalidUsers))
  8580  	return builder
  8581  }
  8582  
  8583  // 由于新入职员工可以复用已离职员工的 employee_no/employee_id,如果 true,则返回 employee_no/employee_id 对应的所有在职 + 离职员工的数据;如果 false,则只返回 employee_no/employee_id 对应的在职或最近一个离职员工的数据
  8584  //
  8585  // 示例值:true
  8586  func (builder *QueryUserTaskReqBuilder) IncludeTerminatedUser(includeTerminatedUser bool) *QueryUserTaskReqBuilder {
  8587  	builder.apiReq.QueryParams.Set("include_terminated_user", fmt.Sprint(includeTerminatedUser))
  8588  	return builder
  8589  }
  8590  
  8591  // 获取企业内员工的实际打卡结果,包括上班打卡结果和下班打卡结果。
  8592  func (builder *QueryUserTaskReqBuilder) Body(body *QueryUserTaskReqBody) *QueryUserTaskReqBuilder {
  8593  	builder.body = body
  8594  	return builder
  8595  }
  8596  
  8597  func (builder *QueryUserTaskReqBuilder) Build() *QueryUserTaskReq {
  8598  	req := &QueryUserTaskReq{}
  8599  	req.apiReq = &larkcore.ApiReq{}
  8600  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8601  	req.apiReq.Body = builder.body
  8602  	return req
  8603  }
  8604  
  8605  type QueryUserTaskReqBody struct {
  8606  	UserIds       []string `json:"user_ids,omitempty"`        // employee_no 或 employee_id 列表
  8607  	CheckDateFrom *int     `json:"check_date_from,omitempty"` // 查询的起始工作日
  8608  	CheckDateTo   *int     `json:"check_date_to,omitempty"`   // 查询的结束工作日
  8609  }
  8610  
  8611  type QueryUserTaskReq struct {
  8612  	apiReq *larkcore.ApiReq
  8613  	Body   *QueryUserTaskReqBody `body:""`
  8614  }
  8615  
  8616  type QueryUserTaskRespData struct {
  8617  	UserTaskResults     []*UserTask `json:"user_task_results,omitempty"`     // 打卡任务列表
  8618  	InvalidUserIds      []string    `json:"invalid_user_ids,omitempty"`      // 无效用户 ID 列表
  8619  	UnauthorizedUserIds []string    `json:"unauthorized_user_ids,omitempty"` // 没有权限用户 ID 列表
  8620  }
  8621  
  8622  type QueryUserTaskResp struct {
  8623  	*larkcore.ApiResp `json:"-"`
  8624  	larkcore.CodeError
  8625  	Data *QueryUserTaskRespData `json:"data"` // 业务数据
  8626  }
  8627  
  8628  func (resp *QueryUserTaskResp) Success() bool {
  8629  	return resp.Code == 0
  8630  }
  8631  
  8632  type CreateUserTaskRemedyReqBuilder struct {
  8633  	apiReq         *larkcore.ApiReq
  8634  	userTaskRemedy *UserTaskRemedy
  8635  }
  8636  
  8637  func NewCreateUserTaskRemedyReqBuilder() *CreateUserTaskRemedyReqBuilder {
  8638  	builder := &CreateUserTaskRemedyReqBuilder{}
  8639  	builder.apiReq = &larkcore.ApiReq{
  8640  		PathParams:  larkcore.PathParams{},
  8641  		QueryParams: larkcore.QueryParams{},
  8642  	}
  8643  	return builder
  8644  }
  8645  
  8646  // 请求体和响应体中的 user_id 的员工工号类型
  8647  //
  8648  // 示例值:employee_id
  8649  func (builder *CreateUserTaskRemedyReqBuilder) EmployeeType(employeeType string) *CreateUserTaskRemedyReqBuilder {
  8650  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  8651  	return builder
  8652  }
  8653  
  8654  // 对于只使用飞书考勤系统而未使用飞书审批系统的企业,可以通过该接口,将在三方审批系统中发起的补卡审批数据,写入到飞书考勤系统中,状态为审批中。写入后可以由[通知审批状态更新](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/attendance-v1/approval_info/process) 进行状态更新
  8655  func (builder *CreateUserTaskRemedyReqBuilder) UserTaskRemedy(userTaskRemedy *UserTaskRemedy) *CreateUserTaskRemedyReqBuilder {
  8656  	builder.userTaskRemedy = userTaskRemedy
  8657  	return builder
  8658  }
  8659  
  8660  func (builder *CreateUserTaskRemedyReqBuilder) Build() *CreateUserTaskRemedyReq {
  8661  	req := &CreateUserTaskRemedyReq{}
  8662  	req.apiReq = &larkcore.ApiReq{}
  8663  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8664  	req.apiReq.Body = builder.userTaskRemedy
  8665  	return req
  8666  }
  8667  
  8668  type CreateUserTaskRemedyReq struct {
  8669  	apiReq         *larkcore.ApiReq
  8670  	UserTaskRemedy *UserTaskRemedy `body:""`
  8671  }
  8672  
  8673  type CreateUserTaskRemedyRespData struct {
  8674  	UserRemedy *UserTaskRemedy `json:"user_remedy,omitempty"` // 补卡审批信息
  8675  }
  8676  
  8677  type CreateUserTaskRemedyResp struct {
  8678  	*larkcore.ApiResp `json:"-"`
  8679  	larkcore.CodeError
  8680  	Data *CreateUserTaskRemedyRespData `json:"data"` // 业务数据
  8681  }
  8682  
  8683  func (resp *CreateUserTaskRemedyResp) Success() bool {
  8684  	return resp.Code == 0
  8685  }
  8686  
  8687  type QueryUserTaskRemedyReqBodyBuilder struct {
  8688  	userIds           []string // employee_no 或 employee_id 列表
  8689  	userIdsFlag       bool
  8690  	checkTimeFrom     string // 查询的起始时间,精确到秒的时间戳
  8691  	checkTimeFromFlag bool
  8692  	checkTimeTo       string // 查询的结束时间,精确到秒的时间戳
  8693  	checkTimeToFlag   bool
  8694  	checkDateType     string // 查询依据的时间类型(不填默认依据PeriodTime)
  8695  	checkDateTypeFlag bool
  8696  	status            int // 查询状态(不填默认查询已通过状态)
  8697  	statusFlag        bool
  8698  }
  8699  
  8700  func NewQueryUserTaskRemedyReqBodyBuilder() *QueryUserTaskRemedyReqBodyBuilder {
  8701  	builder := &QueryUserTaskRemedyReqBodyBuilder{}
  8702  	return builder
  8703  }
  8704  
  8705  // employee_no 或 employee_id 列表
  8706  //
  8707  //示例值:["abd754f7"]
  8708  func (builder *QueryUserTaskRemedyReqBodyBuilder) UserIds(userIds []string) *QueryUserTaskRemedyReqBodyBuilder {
  8709  	builder.userIds = userIds
  8710  	builder.userIdsFlag = true
  8711  	return builder
  8712  }
  8713  
  8714  // 查询的起始时间,精确到秒的时间戳
  8715  //
  8716  //示例值:1566641088
  8717  func (builder *QueryUserTaskRemedyReqBodyBuilder) CheckTimeFrom(checkTimeFrom string) *QueryUserTaskRemedyReqBodyBuilder {
  8718  	builder.checkTimeFrom = checkTimeFrom
  8719  	builder.checkTimeFromFlag = true
  8720  	return builder
  8721  }
  8722  
  8723  // 查询的结束时间,精确到秒的时间戳
  8724  //
  8725  //示例值:1592561088
  8726  func (builder *QueryUserTaskRemedyReqBodyBuilder) CheckTimeTo(checkTimeTo string) *QueryUserTaskRemedyReqBodyBuilder {
  8727  	builder.checkTimeTo = checkTimeTo
  8728  	builder.checkTimeToFlag = true
  8729  	return builder
  8730  }
  8731  
  8732  // 查询依据的时间类型(不填默认依据PeriodTime)
  8733  //
  8734  //示例值:PeriodTime
  8735  func (builder *QueryUserTaskRemedyReqBodyBuilder) CheckDateType(checkDateType string) *QueryUserTaskRemedyReqBodyBuilder {
  8736  	builder.checkDateType = checkDateType
  8737  	builder.checkDateTypeFlag = true
  8738  	return builder
  8739  }
  8740  
  8741  // 查询状态(不填默认查询已通过状态)
  8742  //
  8743  //示例值:2
  8744  func (builder *QueryUserTaskRemedyReqBodyBuilder) Status(status int) *QueryUserTaskRemedyReqBodyBuilder {
  8745  	builder.status = status
  8746  	builder.statusFlag = true
  8747  	return builder
  8748  }
  8749  
  8750  func (builder *QueryUserTaskRemedyReqBodyBuilder) Build() *QueryUserTaskRemedyReqBody {
  8751  	req := &QueryUserTaskRemedyReqBody{}
  8752  	if builder.userIdsFlag {
  8753  		req.UserIds = builder.userIds
  8754  	}
  8755  	if builder.checkTimeFromFlag {
  8756  		req.CheckTimeFrom = &builder.checkTimeFrom
  8757  	}
  8758  	if builder.checkTimeToFlag {
  8759  		req.CheckTimeTo = &builder.checkTimeTo
  8760  	}
  8761  	if builder.checkDateTypeFlag {
  8762  		req.CheckDateType = &builder.checkDateType
  8763  	}
  8764  	if builder.statusFlag {
  8765  		req.Status = &builder.status
  8766  	}
  8767  	return req
  8768  }
  8769  
  8770  type QueryUserTaskRemedyPathReqBodyBuilder struct {
  8771  	userIds           []string // employee_no 或 employee_id 列表
  8772  	userIdsFlag       bool
  8773  	checkTimeFrom     string // 查询的起始时间,精确到秒的时间戳
  8774  	checkTimeFromFlag bool
  8775  	checkTimeTo       string // 查询的结束时间,精确到秒的时间戳
  8776  	checkTimeToFlag   bool
  8777  	checkDateType     string // 查询依据的时间类型(不填默认依据PeriodTime)
  8778  	checkDateTypeFlag bool
  8779  	status            int // 查询状态(不填默认查询已通过状态)
  8780  	statusFlag        bool
  8781  }
  8782  
  8783  func NewQueryUserTaskRemedyPathReqBodyBuilder() *QueryUserTaskRemedyPathReqBodyBuilder {
  8784  	builder := &QueryUserTaskRemedyPathReqBodyBuilder{}
  8785  	return builder
  8786  }
  8787  
  8788  // employee_no 或 employee_id 列表
  8789  //
  8790  // 示例值:["abd754f7"]
  8791  func (builder *QueryUserTaskRemedyPathReqBodyBuilder) UserIds(userIds []string) *QueryUserTaskRemedyPathReqBodyBuilder {
  8792  	builder.userIds = userIds
  8793  	builder.userIdsFlag = true
  8794  	return builder
  8795  }
  8796  
  8797  // 查询的起始时间,精确到秒的时间戳
  8798  //
  8799  // 示例值:1566641088
  8800  func (builder *QueryUserTaskRemedyPathReqBodyBuilder) CheckTimeFrom(checkTimeFrom string) *QueryUserTaskRemedyPathReqBodyBuilder {
  8801  	builder.checkTimeFrom = checkTimeFrom
  8802  	builder.checkTimeFromFlag = true
  8803  	return builder
  8804  }
  8805  
  8806  // 查询的结束时间,精确到秒的时间戳
  8807  //
  8808  // 示例值:1592561088
  8809  func (builder *QueryUserTaskRemedyPathReqBodyBuilder) CheckTimeTo(checkTimeTo string) *QueryUserTaskRemedyPathReqBodyBuilder {
  8810  	builder.checkTimeTo = checkTimeTo
  8811  	builder.checkTimeToFlag = true
  8812  	return builder
  8813  }
  8814  
  8815  // 查询依据的时间类型(不填默认依据PeriodTime)
  8816  //
  8817  // 示例值:PeriodTime
  8818  func (builder *QueryUserTaskRemedyPathReqBodyBuilder) CheckDateType(checkDateType string) *QueryUserTaskRemedyPathReqBodyBuilder {
  8819  	builder.checkDateType = checkDateType
  8820  	builder.checkDateTypeFlag = true
  8821  	return builder
  8822  }
  8823  
  8824  // 查询状态(不填默认查询已通过状态)
  8825  //
  8826  // 示例值:2
  8827  func (builder *QueryUserTaskRemedyPathReqBodyBuilder) Status(status int) *QueryUserTaskRemedyPathReqBodyBuilder {
  8828  	builder.status = status
  8829  	builder.statusFlag = true
  8830  	return builder
  8831  }
  8832  
  8833  func (builder *QueryUserTaskRemedyPathReqBodyBuilder) Build() (*QueryUserTaskRemedyReqBody, error) {
  8834  	req := &QueryUserTaskRemedyReqBody{}
  8835  	if builder.userIdsFlag {
  8836  		req.UserIds = builder.userIds
  8837  	}
  8838  	if builder.checkTimeFromFlag {
  8839  		req.CheckTimeFrom = &builder.checkTimeFrom
  8840  	}
  8841  	if builder.checkTimeToFlag {
  8842  		req.CheckTimeTo = &builder.checkTimeTo
  8843  	}
  8844  	if builder.checkDateTypeFlag {
  8845  		req.CheckDateType = &builder.checkDateType
  8846  	}
  8847  	if builder.statusFlag {
  8848  		req.Status = &builder.status
  8849  	}
  8850  	return req, nil
  8851  }
  8852  
  8853  type QueryUserTaskRemedyReqBuilder struct {
  8854  	apiReq *larkcore.ApiReq
  8855  	body   *QueryUserTaskRemedyReqBody
  8856  }
  8857  
  8858  func NewQueryUserTaskRemedyReqBuilder() *QueryUserTaskRemedyReqBuilder {
  8859  	builder := &QueryUserTaskRemedyReqBuilder{}
  8860  	builder.apiReq = &larkcore.ApiReq{
  8861  		PathParams:  larkcore.PathParams{},
  8862  		QueryParams: larkcore.QueryParams{},
  8863  	}
  8864  	return builder
  8865  }
  8866  
  8867  // 请求体中的 user_ids 和响应体中的 user_id 的员工工号类型
  8868  //
  8869  // 示例值:employee_id
  8870  func (builder *QueryUserTaskRemedyReqBuilder) EmployeeType(employeeType string) *QueryUserTaskRemedyReqBuilder {
  8871  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  8872  	return builder
  8873  }
  8874  
  8875  // 获取授权内员工的补卡记录。
  8876  func (builder *QueryUserTaskRemedyReqBuilder) Body(body *QueryUserTaskRemedyReqBody) *QueryUserTaskRemedyReqBuilder {
  8877  	builder.body = body
  8878  	return builder
  8879  }
  8880  
  8881  func (builder *QueryUserTaskRemedyReqBuilder) Build() *QueryUserTaskRemedyReq {
  8882  	req := &QueryUserTaskRemedyReq{}
  8883  	req.apiReq = &larkcore.ApiReq{}
  8884  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8885  	req.apiReq.Body = builder.body
  8886  	return req
  8887  }
  8888  
  8889  type QueryUserTaskRemedyReqBody struct {
  8890  	UserIds       []string `json:"user_ids,omitempty"`        // employee_no 或 employee_id 列表
  8891  	CheckTimeFrom *string  `json:"check_time_from,omitempty"` // 查询的起始时间,精确到秒的时间戳
  8892  	CheckTimeTo   *string  `json:"check_time_to,omitempty"`   // 查询的结束时间,精确到秒的时间戳
  8893  	CheckDateType *string  `json:"check_date_type,omitempty"` // 查询依据的时间类型(不填默认依据PeriodTime)
  8894  	Status        *int     `json:"status,omitempty"`          // 查询状态(不填默认查询已通过状态)
  8895  }
  8896  
  8897  type QueryUserTaskRemedyReq struct {
  8898  	apiReq *larkcore.ApiReq
  8899  	Body   *QueryUserTaskRemedyReqBody `body:""`
  8900  }
  8901  
  8902  type QueryUserTaskRemedyRespData struct {
  8903  	UserRemedys []*UserTaskRemedy `json:"user_remedys,omitempty"` // 补卡记录列表
  8904  }
  8905  
  8906  type QueryUserTaskRemedyResp struct {
  8907  	*larkcore.ApiResp `json:"-"`
  8908  	larkcore.CodeError
  8909  	Data *QueryUserTaskRemedyRespData `json:"data"` // 业务数据
  8910  }
  8911  
  8912  func (resp *QueryUserTaskRemedyResp) Success() bool {
  8913  	return resp.Code == 0
  8914  }
  8915  
  8916  type QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder struct {
  8917  	userId         string // 用户 ID
  8918  	userIdFlag     bool
  8919  	remedyDate     int // 补卡日期
  8920  	remedyDateFlag bool
  8921  }
  8922  
  8923  func NewQueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder() *QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder {
  8924  	builder := &QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder{}
  8925  	return builder
  8926  }
  8927  
  8928  // 用户 ID
  8929  //
  8930  //示例值:abd754f7
  8931  func (builder *QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder) UserId(userId string) *QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder {
  8932  	builder.userId = userId
  8933  	builder.userIdFlag = true
  8934  	return builder
  8935  }
  8936  
  8937  // 补卡日期
  8938  //
  8939  //示例值:20210104
  8940  func (builder *QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder) RemedyDate(remedyDate int) *QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder {
  8941  	builder.remedyDate = remedyDate
  8942  	builder.remedyDateFlag = true
  8943  	return builder
  8944  }
  8945  
  8946  func (builder *QueryUserAllowedRemedysUserTaskRemedyReqBodyBuilder) Build() *QueryUserAllowedRemedysUserTaskRemedyReqBody {
  8947  	req := &QueryUserAllowedRemedysUserTaskRemedyReqBody{}
  8948  	if builder.userIdFlag {
  8949  		req.UserId = &builder.userId
  8950  	}
  8951  	if builder.remedyDateFlag {
  8952  		req.RemedyDate = &builder.remedyDate
  8953  	}
  8954  	return req
  8955  }
  8956  
  8957  type QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder struct {
  8958  	userId         string // 用户 ID
  8959  	userIdFlag     bool
  8960  	remedyDate     int // 补卡日期
  8961  	remedyDateFlag bool
  8962  }
  8963  
  8964  func NewQueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder() *QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder {
  8965  	builder := &QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder{}
  8966  	return builder
  8967  }
  8968  
  8969  // 用户 ID
  8970  //
  8971  // 示例值:abd754f7
  8972  func (builder *QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder) UserId(userId string) *QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder {
  8973  	builder.userId = userId
  8974  	builder.userIdFlag = true
  8975  	return builder
  8976  }
  8977  
  8978  // 补卡日期
  8979  //
  8980  // 示例值:20210104
  8981  func (builder *QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder) RemedyDate(remedyDate int) *QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder {
  8982  	builder.remedyDate = remedyDate
  8983  	builder.remedyDateFlag = true
  8984  	return builder
  8985  }
  8986  
  8987  func (builder *QueryUserAllowedRemedysUserTaskRemedyPathReqBodyBuilder) Build() (*QueryUserAllowedRemedysUserTaskRemedyReqBody, error) {
  8988  	req := &QueryUserAllowedRemedysUserTaskRemedyReqBody{}
  8989  	if builder.userIdFlag {
  8990  		req.UserId = &builder.userId
  8991  	}
  8992  	if builder.remedyDateFlag {
  8993  		req.RemedyDate = &builder.remedyDate
  8994  	}
  8995  	return req, nil
  8996  }
  8997  
  8998  type QueryUserAllowedRemedysUserTaskRemedyReqBuilder struct {
  8999  	apiReq *larkcore.ApiReq
  9000  	body   *QueryUserAllowedRemedysUserTaskRemedyReqBody
  9001  }
  9002  
  9003  func NewQueryUserAllowedRemedysUserTaskRemedyReqBuilder() *QueryUserAllowedRemedysUserTaskRemedyReqBuilder {
  9004  	builder := &QueryUserAllowedRemedysUserTaskRemedyReqBuilder{}
  9005  	builder.apiReq = &larkcore.ApiReq{
  9006  		PathParams:  larkcore.PathParams{},
  9007  		QueryParams: larkcore.QueryParams{},
  9008  	}
  9009  	return builder
  9010  }
  9011  
  9012  // 请求体和响应体中的 user_id 的员工工号类型
  9013  //
  9014  // 示例值:employee_id
  9015  func (builder *QueryUserAllowedRemedysUserTaskRemedyReqBuilder) EmployeeType(employeeType string) *QueryUserAllowedRemedysUserTaskRemedyReqBuilder {
  9016  	builder.apiReq.QueryParams.Set("employee_type", fmt.Sprint(employeeType))
  9017  	return builder
  9018  }
  9019  
  9020  // 获取用户某天可以补的第几次上 / 下班卡的时间。
  9021  func (builder *QueryUserAllowedRemedysUserTaskRemedyReqBuilder) Body(body *QueryUserAllowedRemedysUserTaskRemedyReqBody) *QueryUserAllowedRemedysUserTaskRemedyReqBuilder {
  9022  	builder.body = body
  9023  	return builder
  9024  }
  9025  
  9026  func (builder *QueryUserAllowedRemedysUserTaskRemedyReqBuilder) Build() *QueryUserAllowedRemedysUserTaskRemedyReq {
  9027  	req := &QueryUserAllowedRemedysUserTaskRemedyReq{}
  9028  	req.apiReq = &larkcore.ApiReq{}
  9029  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  9030  	req.apiReq.Body = builder.body
  9031  	return req
  9032  }
  9033  
  9034  type QueryUserAllowedRemedysUserTaskRemedyReqBody struct {
  9035  	UserId     *string `json:"user_id,omitempty"`     // 用户 ID
  9036  	RemedyDate *int    `json:"remedy_date,omitempty"` // 补卡日期
  9037  }
  9038  
  9039  type QueryUserAllowedRemedysUserTaskRemedyReq struct {
  9040  	apiReq *larkcore.ApiReq
  9041  	Body   *QueryUserAllowedRemedysUserTaskRemedyReqBody `body:""`
  9042  }
  9043  
  9044  type QueryUserAllowedRemedysUserTaskRemedyRespData struct {
  9045  	UserAllowedRemedys []*UserAllowedRemedy `json:"user_allowed_remedys,omitempty"` // 用户可补卡时间
  9046  }
  9047  
  9048  type QueryUserAllowedRemedysUserTaskRemedyResp struct {
  9049  	*larkcore.ApiResp `json:"-"`
  9050  	larkcore.CodeError
  9051  	Data *QueryUserAllowedRemedysUserTaskRemedyRespData `json:"data"` // 业务数据
  9052  }
  9053  
  9054  func (resp *QueryUserAllowedRemedysUserTaskRemedyResp) Success() bool {
  9055  	return resp.Code == 0
  9056  }
  9057  
  9058  type ListGroupIterator struct {
  9059  	nextPageToken *string
  9060  	items         []*GroupMeta
  9061  	index         int
  9062  	limit         int
  9063  	ctx           context.Context
  9064  	req           *ListGroupReq
  9065  	listFunc      func(ctx context.Context, req *ListGroupReq, options ...larkcore.RequestOptionFunc) (*ListGroupResp, error)
  9066  	options       []larkcore.RequestOptionFunc
  9067  	curlNum       int
  9068  }
  9069  
  9070  func (iterator *ListGroupIterator) Next() (bool, *GroupMeta, error) {
  9071  	// 达到最大量,则返回
  9072  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  9073  		return false, nil, nil
  9074  	}
  9075  
  9076  	// 为0则拉取数据
  9077  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  9078  		if iterator.index != 0 && iterator.nextPageToken == nil {
  9079  			return false, nil, nil
  9080  		}
  9081  		if iterator.nextPageToken != nil {
  9082  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  9083  		}
  9084  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  9085  		if err != nil {
  9086  			return false, nil, err
  9087  		}
  9088  
  9089  		if resp.Code != 0 {
  9090  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  9091  		}
  9092  
  9093  		if len(resp.Data.GroupList) == 0 {
  9094  			return false, nil, nil
  9095  		}
  9096  
  9097  		iterator.nextPageToken = resp.Data.PageToken
  9098  		iterator.items = resp.Data.GroupList
  9099  		iterator.index = 0
  9100  	}
  9101  
  9102  	block := iterator.items[iterator.index]
  9103  	iterator.index++
  9104  	iterator.curlNum++
  9105  	return true, block, nil
  9106  }
  9107  
  9108  func (iterator *ListGroupIterator) NextPageToken() *string {
  9109  	return iterator.nextPageToken
  9110  }
  9111  
  9112  type ListShiftIterator struct {
  9113  	nextPageToken *string
  9114  	items         []*Shift
  9115  	index         int
  9116  	limit         int
  9117  	ctx           context.Context
  9118  	req           *ListShiftReq
  9119  	listFunc      func(ctx context.Context, req *ListShiftReq, options ...larkcore.RequestOptionFunc) (*ListShiftResp, error)
  9120  	options       []larkcore.RequestOptionFunc
  9121  	curlNum       int
  9122  }
  9123  
  9124  func (iterator *ListShiftIterator) Next() (bool, *Shift, error) {
  9125  	// 达到最大量,则返回
  9126  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  9127  		return false, nil, nil
  9128  	}
  9129  
  9130  	// 为0则拉取数据
  9131  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  9132  		if iterator.index != 0 && iterator.nextPageToken == nil {
  9133  			return false, nil, nil
  9134  		}
  9135  		if iterator.nextPageToken != nil {
  9136  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  9137  		}
  9138  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  9139  		if err != nil {
  9140  			return false, nil, err
  9141  		}
  9142  
  9143  		if resp.Code != 0 {
  9144  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  9145  		}
  9146  
  9147  		if len(resp.Data.ShiftList) == 0 {
  9148  			return false, nil, nil
  9149  		}
  9150  
  9151  		iterator.nextPageToken = resp.Data.PageToken
  9152  		iterator.items = resp.Data.ShiftList
  9153  		iterator.index = 0
  9154  	}
  9155  
  9156  	block := iterator.items[iterator.index]
  9157  	iterator.index++
  9158  	iterator.curlNum++
  9159  	return true, block, nil
  9160  }
  9161  
  9162  func (iterator *ListShiftIterator) NextPageToken() *string {
  9163  	return iterator.nextPageToken
  9164  }