123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- package worksiteclock
- import (
- "errors"
- "time"
- "zhiyuan/models"
- "zhiyuan/pkg/app"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/utils"
- "zhiyuan/services/form"
- "zhiyuan/services/work/worksite"
- "zhiyuan/services/work/worksitenode"
- )
- var WorkSiteClock models.WorkSiteClock
- func AddWorker(form form.WorkSiteClockAdd, workerID int) (int64, error) {
- worksitenodeInfo, err := worksitenode.GetInfoByID(form.SiteNodeId, nil, nil)
- if worksitenodeInfo == nil {
- return 0, errors.New("invalid worksitenode id")
- }
- if worksitenodeInfo.WorkerId != workerID {
- return 0, errors.New("账号权限有误")
- }
- if worksitenodeInfo.State == 4 {
- return 0, errors.New("节点已验收")
- }
- now := time.Now().Unix()
- if now < int64(worksitenodeInfo.StartTime) ||
- now > int64(worksitenodeInfo.EndTime) {
- return 0, errors.New("不在节点工期内")
- }
- worksiteInfo, err := worksite.GetInfoByID(worksitenodeInfo.SiteId, nil, nil)
- if worksiteInfo == nil {
- return 0, errors.New("invalid worksite id")
- }
- if worksiteInfo.State == 2 {
- return 0, errors.New("项目已完工")
- }
- clocks, err := WorkSiteClock.GetMulti(map[string]interface{}{
- "`site_id`": worksitenodeInfo.SiteId,
- "`site_node_id`": form.SiteNodeId,
- "`staff_type`": 0,
- "`staff_id`": workerID,
- "`created_at` >": "unix_timestamp(CURDATE())",
- }, nil, nil)
- if err != nil {
- return 0, errors.New("invalid")
- }
- if worksiteInfo.State == 0 {
- _, err = db.Update(worksiteInfo.TableName(), map[string]interface{}{"id": worksiteInfo.ID}, map[string]interface{}{"state": 1})
- if err != nil {
- return 0, nil
- }
- }
- if worksitenodeInfo.State == 0 {
- _, err = db.Update(worksitenodeInfo.TableName(), map[string]interface{}{"id": worksitenodeInfo.ID}, map[string]interface{}{"state": 1})
- if err != nil {
- return 0, nil
- }
- }
- workSiteClockMap := map[string]interface{}{
- "`site_id`": worksitenodeInfo.SiteId,
- "`site_node_id`": form.SiteNodeId,
- "`staff_type`": 0,
- "`staff_id`": workerID,
- "`pictures`": form.Pictures,
- "`content`": form.Content,
- "`type`": len(clocks) % 2,
- }
- workSiteClockID, err := db.InsertOne(WorkSiteClock.TableName(), workSiteClockMap)
- if err != nil {
- return 0, nil
- }
- return workSiteClockID, nil
- }
- func AddAdmin(form form.WorkSiteClockAdd, adminID int) (int64, error) {
- worksitenodeInfo, err := worksitenode.GetInfoByID(form.SiteNodeId, nil, nil)
- if worksitenodeInfo == nil {
- return 0, errors.New("invalid worksitenode id")
- }
- if worksitenodeInfo.State == 4 {
- return 0, errors.New("节点已验收")
- }
- now := time.Now().Unix()
- if now < int64(worksitenodeInfo.StartTime) ||
- now > int64(worksitenodeInfo.EndTime) {
- return 0, errors.New("不在节点工期内")
- }
- worksiteInfo, err := worksite.GetInfoByID(worksitenodeInfo.SiteId, nil, nil)
- if worksiteInfo == nil {
- return 0, errors.New("invalid worksite id")
- }
- if worksiteInfo.State == 2 {
- return 0, errors.New("项目已完工")
- }
- if worksiteInfo.ManagerId != adminID || worksiteInfo.DesignerId != adminID {
- return 0, errors.New("账号权限有误")
- }
- staff_type := 2
- if worksiteInfo.ManagerId == adminID {
- staff_type = 1
- }
- clocks, err := WorkSiteClock.GetMulti(map[string]interface{}{
- "`site_id`": worksitenodeInfo.SiteId,
- "`site_node_id`": form.SiteNodeId,
- "`staff_type`": staff_type,
- "`staff_id`": adminID,
- "`created_at` >": "unix_timestamp(CURDATE())",
- }, nil, nil)
- if err != nil {
- return 0, errors.New("invalid")
- }
- if worksiteInfo.State == 0 {
- _, err = db.Update(worksiteInfo.TableName(), map[string]interface{}{"id": worksiteInfo.ID}, map[string]interface{}{"state": 1})
- if err != nil {
- return 0, nil
- }
- }
- if worksitenodeInfo.State == 0 {
- _, err = db.Update(worksitenodeInfo.TableName(), map[string]interface{}{"id": worksitenodeInfo.ID}, map[string]interface{}{"state": 1})
- if err != nil {
- return 0, nil
- }
- }
- workSiteClockMap := map[string]interface{}{
- "`site_id`": worksitenodeInfo.SiteId,
- "`site_node_id`": form.SiteNodeId,
- "`staff_type`": staff_type,
- "`staff_id`": adminID,
- "`pictures`": form.Pictures,
- "`content`": form.Content,
- "`type`": len(clocks) % 2,
- }
- workSiteClockID, err := db.InsertOne(WorkSiteClock.TableName(), workSiteClockMap)
- if err != nil {
- return 0, nil
- }
- return workSiteClockID, nil
- }
- func EditByIDWorker(form form.WorkSiteClockEdit, id int, workerID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- if info.State == 1 {
- return errors.New("该日报已审核")
- }
- if info.StaffType != 0 || info.StaffId != workerID {
- return errors.New("账号权限有误")
- }
- worksitenodeInfo, err := worksitenode.GetInfoByID(info.SiteNodeId, nil, nil)
- if worksitenodeInfo == nil {
- return errors.New("invalid worksitenode id")
- }
- if worksitenodeInfo.WorkerId != workerID {
- return errors.New("账号权限有误")
- }
- if worksitenodeInfo.State == 4 {
- return errors.New("节点已验收")
- }
- workSiteClockMap := map[string]interface{}{
- "`pictures`": form.Pictures,
- "`content`": form.Content,
- }
- _, err = db.Update(WorkSiteClock.TableName(), map[string]interface{}{"id": id}, workSiteClockMap)
- return err
- }
- func EditByIDAdmin(form form.WorkSiteClockEdit, id int, adminID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- if info.State == 1 {
- return errors.New("该日报已审核")
- }
- if info.StaffType == 0 || info.StaffId != adminID {
- return errors.New("账号权限有误")
- }
- worksitenodeInfo, err := worksitenode.GetInfoByID(info.SiteNodeId, nil, nil)
- if worksitenodeInfo == nil {
- return errors.New("invalid worksitenode id")
- }
- if worksitenodeInfo.State == 4 {
- return errors.New("节点已验收")
- }
- workSiteClockMap := map[string]interface{}{
- "`pictures`": form.Pictures,
- "`content`": form.Content,
- }
- _, err = db.Update(WorkSiteClock.TableName(), map[string]interface{}{"id": id}, workSiteClockMap)
- return err
- }
- func DeleteByID(id int) error {
- info, _ := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid id")
- }
- _, err := db.DeleteSoft(WorkSiteClock.TableName(), map[string]interface{}{"id": id})
- return err
- }
- func VerifyByID(id int, adminID int) error {
- info, err := GetInfoByID(id, nil, nil)
- if info == nil {
- return errors.New("invalid worker id")
- }
- if info.State == 1 {
- return errors.New("该日报已审核")
- }
- worksiteInfo, err := worksite.GetInfoByID(info.SiteId, nil, nil)
- if worksiteInfo == nil {
- return errors.New("invalid worksite id")
- }
- if worksiteInfo.ManagerId != adminID {
- return errors.New("账号权限有误")
- }
- workSiteClockMap := map[string]interface{}{
- "state": 1,
- }
- _, err = db.Update(WorkSiteClock.TableName(), map[string]interface{}{"id": id}, workSiteClockMap)
- return err
- }
- func Count(where map[string]interface{}) (int64, error) {
- return db.Count(WorkSiteClock.TableName(), where)
- }
- func CountRaw(where string, param map[string]interface{}) (int64, error) {
- query := "`zy_work_site_clock` WHERE " + where
- return db.CountRaw(query, param)
- }
- func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.WorkSiteClock, error) {
- if page.PageNum > 0 && page.PageSize > 0 {
- where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
- }
- return WorkSiteClock.GetMulti(where, fields, retVal)
- }
- func GetWorkSiteClocksRaw(where map[string]string, param map[string]interface{}, retVal interface{}) error {
- field := "SELECT `zy_work_site_clock`.*, IF(`zy_work_site_clock`.`staff_type` = 0,`zy_worker`.`name`,`zy_admin`.`username`) as `staff_name`, IF(`zy_work_site_clock`.`staff_type` = 0,`zy_worker`.`phone`,`zy_admin`.`phone`) as `staff_phone`, `zy_work_site_node`.`name` as `node_name` FROM `zy_work_site_clock` left join `zy_worker` on `zy_work_site_clock`.`staff_type` = 0 AND `zy_worker`.`id` = `zy_work_site_clock`.`staff_id` left join `zy_admin` on `zy_work_site_clock`.`staff_type` <> 0 AND `zy_admin`.`id` = `zy_work_site_clock`.`staff_id` left join `zy_work_site_node` on `zy_work_site_node`.`id` = `zy_work_site_clock`.`site_node_id` "
- return db.GetMultiRaw(field, where, param, retVal)
- }
- func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.WorkSiteClock, error) {
- return WorkSiteClock.GetOne(where, fields, retVal)
- }
- func GetWorkSiteClockOne(where map[string]string, param map[string]interface{}, retVal interface{}) error {
- field := "SELECT `zy_work_site_clock`.*, IF(`zy_work_site_clock`.`staff_type` = 0,`zy_worker`.`name`,`zy_admin`.`username`) as `staff_name`, IF(`zy_work_site_clock`.`staff_type` = 0,`zy_worker`.`phone`,`zy_admin`.`phone`) as as `staff_phone`, `zy_work_site_node`.`name` as `node_name` FROM `zy_work_site_clock` left join `zy_worker` on `zy_work_site_clock`.`staff_type` = 0 AND `zy_worker`.`id` = `zy_work_site_clock`.`staff_id` left join `zy_admin` on `zy_work_site_clock`.`staff_type` <> 0 AND `zy_admin`.`id` = `zy_work_site_clock`.`staff_id` left join `zy_work_site_node` on `zy_work_site_node`.`id` = `zy_work_site_clock`.`site_node_id` "
- where["_page_size"] = utils.ToStr(1)
- where["_page_num"] = utils.ToStr(1)
- return db.GetMultiRaw(field, where, param, retVal)
- }
- func GetWorkSiteClockByID(id int, retVal interface{}) error {
- where := map[string]string{
- "where": "`zy_work_site_clock`.`id` = {{id}}",
- }
- param := map[string]interface{}{"id": id}
- return GetWorkSiteClockOne(where, param, retVal)
- }
- func GetInfoByID(id int, fields []string, retVal interface{}) (*models.WorkSiteClock, error) {
- return GetOne(map[string]interface{}{"id": id}, fields, retVal)
- }
|