worker.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package worker
  2. import (
  3. "errors"
  4. "fmt"
  5. "zhiyuan/models"
  6. "zhiyuan/models/final"
  7. "zhiyuan/pkg/app"
  8. "zhiyuan/pkg/db"
  9. "zhiyuan/pkg/utils"
  10. "zhiyuan/services/form"
  11. "zhiyuan/services/sms"
  12. )
  13. var Worker models.Worker
  14. func VerifyByID(id int) error {
  15. info, err := GetInfoByID(id, nil, nil)
  16. if info == nil {
  17. return errors.New("invalid worker id")
  18. }
  19. if info.State == 1 {
  20. return errors.New("该工人已审核")
  21. }
  22. workerMap := map[string]interface{}{
  23. "state": 1,
  24. }
  25. _, err = db.Update(Worker.TableName(), map[string]interface{}{"id": id}, workerMap)
  26. return err
  27. }
  28. func Register(form form.WorkerAdd) (int64, error) {
  29. if !sms.CheckVerifyCode(form.Phone, form.Code) {
  30. return 0, errors.New("验证码错误")
  31. }
  32. if CheckWorkerDuplicate(form.Phone) {
  33. return 0, errors.New("该手机号已注册")
  34. }
  35. workerMap := map[string]interface{}{
  36. "`name`": form.Name,
  37. "`phone`": form.Phone,
  38. "`password`": utils.MD5(form.Password),
  39. "`type_ids`": form.TypeIds,
  40. "`idcode`": form.Idcode,
  41. "`idcard1`": form.Idcard1,
  42. "`idcard2`": form.Idcard2,
  43. }
  44. workerID, err := db.InsertOne(Worker.TableName(), workerMap)
  45. if err != nil {
  46. return 0, nil
  47. }
  48. return workerID, nil
  49. }
  50. func CountRaw(where string, param map[string]interface{}) (int64, error) {
  51. query := "`zy_worker` WHERE " + where
  52. return db.CountRaw(query, param)
  53. }
  54. func GetWorkersRaw(where map[string]string, param map[string]interface{}, retVal interface{}) error {
  55. field := "SELECT `zy_worker`.*, group_concat(`zy_work_type`.`name` separator ',') as type_names FROM `zy_worker` left join `zy_work_type` on FIND_IN_SET(`zy_work_type`.`id`, `zy_worker`.`type_ids`) "
  56. return db.GetMultiRaw(field, where, param, retVal)
  57. }
  58. func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.Worker, error) {
  59. return Worker.GetOne(where, fields, retVal)
  60. }
  61. func GetOneRaw(where map[string]string, param map[string]interface{}, retVal interface{}) (*models.Worker, error) {
  62. return Worker.GetOneRaw(where, param, retVal)
  63. }
  64. func GetInfoByID(id int, fields []string, retVal interface{}) (*models.Worker, error) {
  65. return GetOne(map[string]interface{}{"id": id}, fields, retVal)
  66. }
  67. func GetInfoByToken(token string, fields []string, retVal interface{}) (*models.Worker, error) {
  68. return GetOne(map[string]interface{}{"access_token": token}, fields, retVal)
  69. }
  70. func CheckWorkerDuplicate(phone string) bool {
  71. workerInfo, err := GetOne(map[string]interface{}{"phone": phone}, nil, nil)
  72. return workerInfo != nil && err == nil
  73. }
  74. func GetWorkerItems(siteId int, roomType int, workerID int) ([]map[string]interface{}, error) {
  75. var s db.Select
  76. s.TableName = "`zy_mat_pick_work`"
  77. s.Select = map[string]string{
  78. "confirm_type": "`zy_mat_pick_work`.`confirm_type`",
  79. "content": "`zy_mat_pick_work`.`content`",
  80. "created_at": "`zy_mat_pick_work`.`created_at`",
  81. "example_at": "`zy_mat_pick_work`.`example_at`",
  82. "cycle": "`zy_mat_pick_work`.`cycle`",
  83. "id": "`zy_mat_pick_work`.`id`",
  84. "item_status": "`zy_mat_pick_work`.`item_status`",
  85. "manager_confirm_at": "`zy_mat_pick_work`.`manager_confirm_at`",
  86. "manager_id": "`zy_mat_pick_work`.`manager_id`",
  87. "manager_status": "`zy_mat_pick_work`.`manager_status`",
  88. "order_acceptance_at": "`zy_mat_pick_work`.`order_acceptance_at`",
  89. "order_status": "`zy_mat_pick_work`.`order_status`",
  90. "pick_id": "`zy_mat_pick_work`.`pick_id`",
  91. "pictures": "`zy_mat_pick_work`.`pictures`",
  92. "pkg_id": "`zy_mat_pick_work`.`pkg_id`",
  93. "room_type": "`zy_mat_pick_work`.`room_type`",
  94. "site_id": "`zy_mat_pick_work`.`site_id`",
  95. "worker_confirm_at": "`zy_mat_pick_work`.`worker_confirm_at`",
  96. "worker_id": "`zy_mat_pick_work`.`worker_id`",
  97. "worker_start_at": "`zy_mat_pick_work`.`worker_start_at`",
  98. "worker_status": "`zy_mat_pick_work`.`worker_status`",
  99. "acceptance_failed_remark": "`zy_mat_pick_work`.`acceptance_failed_remark`",
  100. "pick_name": "`pick`.`pick_name`",
  101. "standard": "`pick`.`standard`",
  102. "starttime": "`site`.`starttime`",
  103. "endtime": "`site`.`endtime`",
  104. }
  105. s.Where = append(s.Where, fmt.Sprintf("`zy_mat_pick_work`.`worker_id` = %d", workerID))
  106. s.Where = append(s.Where, fmt.Sprintf("`zy_mat_pick_work`.`room_type` = %d", roomType))
  107. s.Where = append(s.Where, fmt.Sprintf("`zy_mat_pick_work`.`site_id` = %d", siteId))
  108. s.LeftJoin = []db.Join{
  109. {
  110. TableName: final.FinalSite{}.TableName(),
  111. As: "site",
  112. On: []string{
  113. "`site`.`id` = `zy_mat_pick_work`.`site_id`",
  114. },
  115. },
  116. {
  117. TableName: models.MatPick{}.TableName(),
  118. As: "pick",
  119. On: []string{
  120. "`pick`.`id` = `zy_mat_pick_work`.`pick_id`",
  121. },
  122. },
  123. }
  124. query, params := s.Query()
  125. fmt.Println("query", query)
  126. list, err := db.QueryMap(query, params, nil)
  127. if err != nil {
  128. return nil, err
  129. }
  130. return list, nil
  131. }
  132. func GetListWidthAttendance(where map[string]string, param map[string]interface{}, page app.Page, retVal interface{}) error {
  133. if page.PageNum > 0 && page.PageSize > 0 {
  134. where["_page_num"] = db.ToString(page.PageNum)
  135. where["_page_size"] = db.ToString(page.PageSize)
  136. }
  137. sql := "SELECT a.*, " +
  138. "w.name" +
  139. " FROM " +
  140. " zy_worker_attendance a " +
  141. " LEFT JOIN zy_worker w ON w.id = a.worker_id "
  142. return db.GetMultiRaw(sql, where, param, retVal)
  143. }