From 7dd6097d42d6d6f254a84ab0111bac70f0358660 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 30 四月 2024 10:20:40 +0800
Subject: [PATCH] 加一些注释
---
controllers/attendance_controller.go | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 171 insertions(+), 1 deletions(-)
diff --git a/controllers/attendance_controller.go b/controllers/attendance_controller.go
index 6a88958..984b09a 100644
--- a/controllers/attendance_controller.go
+++ b/controllers/attendance_controller.go
@@ -6,16 +6,41 @@
"github.com/xuri/excelize/v2"
"silkserver/constvar"
"silkserver/controllers/request"
+ "silkserver/controllers/response"
"silkserver/extend/code"
"silkserver/extend/util"
"silkserver/middleware"
"silkserver/models"
"silkserver/pkg/logx"
+ "silkserver/pkg/structx"
"silkserver/pkg/timex"
"time"
)
type AttendanceController struct {
+}
+
+// GetTemplate
+// @Tags 鑰冨嫟绠$悊
+// @Summary 鑾峰彇妯$増鍒楄〃
+// @Produce application/json
+// @Param object body request.TemplateCategoryRequest true "鍙傛暟"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-jl/v1/attendance/getTemplate [post]
+func (slf AttendanceController) GetTemplate(c *gin.Context) {
+ var params request.TemplateCategoryRequest
+ if err := c.ShouldBind(¶ms); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
+ return
+ }
+
+ list, err := models.NewFileTemplateAttachmentSearch().SetCategory(params.Category).Find()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
+ return
+ }
+
+ util.ResponseFormat(c, code.Success, list)
}
// AttendanceInput
@@ -89,6 +114,7 @@
for _, worker := range workers {
if attendance.WorkerId == worker.ID {
attendance.WorkTypeId = worker.WorkTypeId
+ attendance.PhoneNum = worker.PhoneNum
break
}
}
@@ -177,7 +203,7 @@
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
return
}
- manages, total, err := models.NewAttendanceManageSearch().SetPage(params.Page, params.PageSize).Find()
+ manages, total, err := models.NewAttendanceManageSearch().SetPage(params.Page, params.PageSize).SetOrder("created_at desc").Find()
if err != nil {
util.ResponseFormat(c, code.RequestParamError, err)
return
@@ -185,6 +211,150 @@
util.ResponseFormatList(c, code.Success, manages, total)
}
+// UpdateAttendance
+//
+// @Tags 鑰冨嫟绠$悊
+// @Summary 鏇存柊鑰冨嫟
+// @Produce application/json
+// @Param object body request.UpdateAttendance true "鍙傛暟"
+// @Param Authorization header string true "token"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-jl/v1/attendance/updateAttendance [post]
+func (slf AttendanceController) UpdateAttendance(c *gin.Context) {
+ var params request.UpdateAttendance
+ err := c.BindJSON(¶ms)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+ return
+ }
+ if params.Date == "" || params.WorkerId == "" {
+ util.ResponseFormat(c, code.RequestParamError, "浜哄憳id鍜岃�冨嫟鏃ユ湡涓嶈兘涓虹┖")
+ return
+ }
+ count, err := models.NewAttendanceManageSearch().SetDate(params.Date).SetWorkerId(params.WorkerId).Count()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, err)
+ return
+ }
+ if count > 0 {
+ m := make(map[string]interface{})
+ m["status"] = params.Status
+ m["over_time_duration"] = params.OverTimeDuration
+ err = models.NewAttendanceManageSearch().SetDate(params.Date).SetWorkerId(params.WorkerId).UpdateByMap(m)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏇存柊澶辫触")
+ return
+ }
+ } else {
+ var manage models.AttendanceManage
+ err = structx.AssignTo(params, &manage)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲澶辫触")
+ return
+ }
+ info := middleware.GetUserInfo(c)
+ manage.AddPeople = info.NickName
+ manage.CreateTime = timex.TimeToString2(time.Now())
+ err = models.NewAttendanceManageSearch().Create(&manage)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏇存柊澶辫触")
+ return
+ }
+ }
+
+ util.ResponseFormat(c, code.Success, "鏇存柊鎴愬姛")
+}
+
+// GetAttendanceStatistic
+//
+// @Tags 鑰冨嫟绠$悊
+// @Summary 鑾峰彇鑰冨嫟缁熻
+// @Produce application/json
+// @Param object body request.GetAttendanceStatistic true "鍙傛暟"
+// @Param Authorization header string true "token"
+// @Success 200 {object} util.Response{data=response.AttendanceList} "鎴愬姛"
+// @Router /api-jl/v1/attendance/getAttendanceStatistic [post]
+func (slf AttendanceController) GetAttendanceStatistic(c *gin.Context) {
+ var params request.GetAttendanceStatistic
+ err := c.BindJSON(¶ms)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+ return
+ }
+ if params.Month == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟涓嶈兘涓虹┖")
+ return
+ }
+ //鑾峰彇鏈堜唤澶╂暟
+ location, err := time.ParseInLocation("2006-01", params.Month, time.Local)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏈堜唤鏍煎紡閿欒")
+ return
+ }
+ year, month, _ := location.Date()
+ weeks := timex.GetWeeksOfMonth(year, month)
+
+ manages, err := models.NewAttendanceManageSearch().SetMonth(params.Month).SetKeyword(params.Keyword).SetPreload(true).FindNotTotal()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, err)
+ return
+ }
+ weekMap := map[string]string{
+ "Sunday": "鍛ㄦ棩",
+ "Monday": "鍛ㄤ竴",
+ "Tuesday": "鍛ㄤ簩",
+ "Wednesday": "鍛ㄤ笁",
+ "Thursday": "鍛ㄥ洓",
+ "Friday": "鍛ㄤ簲",
+ "Saturday": "鍛ㄥ叚",
+ }
+
+ m := make(map[string]response.AttendanceStatistic)
+ for _, manage := range manages {
+ var as response.AttendanceStatistic
+ if _, ok := m[manage.WorkerId]; ok {
+ as = m[manage.WorkerId]
+ } else {
+ as.WorkerId = manage.WorkerId
+ as.WorkerName = manage.WorkerName
+ as.WorkType = manage.WorkType.WorkName
+ as.Month = params.Month
+ as.WorkTypeId = manage.WorkTypeId
+ var details []response.AttendanceDetail
+ for _, week := range weeks {
+ for _, day := range week {
+ var ad response.AttendanceDetail
+ ad.Date = day.Day()
+ ad.WeekDay = weekMap[day.Weekday().String()]
+ ad.Status = constvar.Vacation
+ details = append(details, ad)
+ }
+ }
+ as.Details = details
+ }
+ as.WeekdayOverTime = as.WeekdayOverTime.Add(manage.OverTimeDuration)
+ as.ActualAttendanceDays = as.ActualAttendanceDays + 1
+ time2, _ := timex.StringToTime2(manage.Date)
+ day := time2.Day()
+ detail := as.Details[day-1]
+ detail.Status = manage.Status
+ detail.StartWorkTime = manage.StartWorkTime
+ detail.EndWorkTime = manage.EndWorkTime
+ detail.ClassesStartTime = manage.ClassesStartTime
+ detail.ClassesEndTime = manage.ClassesEndTime
+ detail.Classes = manage.Classes
+ as.Details[day-1] = detail
+
+ m[manage.WorkerId] = as
+ }
+ var list response.AttendanceList
+ for _, statistic := range m {
+ list.List = append(list.List, statistic)
+ }
+
+ util.ResponseFormat(c, code.Success, list)
+}
+
// DeleteAttendanceInfo
//
// @Tags 鑰冨嫟绠$悊
--
Gitblit v1.8.0