This commit is contained in:
2025-07-07 20:11:59 +08:00
parent ab0fdbc447
commit 06e3aa2eb3
2009 changed files with 193082 additions and 0 deletions

View File

@ -0,0 +1,406 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2025-03-27 14:14:25
// 生成路径: internal/app/wxApplet/logic/bus_askforleave.go
// 生成人gfast
// desc:请假
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"errors"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
sysDao "github.com/tiger1103/gfast/v3/internal/app/system/dao"
logic "github.com/tiger1103/gfast/v3/internal/app/system/logic/busReissueACard"
ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
"github.com/tiger1103/gfast/v3/third/todo"
"strconv"
)
func init() {
service.RegisterBusAskforleave(New())
}
func New() *sBusAskforleave {
return &sBusAskforleave{}
}
type sBusAskforleave struct{}
func (s *sBusAskforleave) AppBzzAskForLeaveUpdate(ctx context.Context, req *wxApplet.AppBzzAskForLeaveUpdateReq) (err error) {
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
// 获取当前数据的班组然后根据班组获取到班组长的openid
var aCard model.BusAskforleaveInfoRes
err := dao.BusAskforleave.Ctx(ctx).WherePri(req.Id).Fields("id,openid,team_id,project_id").Scan(&aCard)
liberr.ErrIsNil(ctx, err)
fields, err := dao.SysProjectTeamMember.Ctx(ctx).
Where("team_id", aCard.TeamId).
Where("post_id", 10).
Fields("openid").Value()
liberr.ErrIsNil(ctx, err)
if fields.String() == "" {
err = errors.New("变更失败,申请人所在的班组未设置班组长")
return
}
UpdateG2 := g.Map{"ganger": fields, "ganger_opinion": req.GangerOpinion, "ganger_explain": req.GangerExplain, "ganger_time": gtime.Now()}
if req.GangerOpinion == "3" {
UpdateG2["attendance_id"] = nil
}
// 变更班组长对补卡的状态并且填写班组长的openid
_, err = dao.BusAskforleave.Ctx(ctx).OmitEmpty().WherePri(req.Id).Update(UpdateG2)
liberr.ErrIsNil(ctx, err, "变更班组长失败")
// 标记特定的待办任务为已处理
err = todo.MarkTaskAsProcessed(int(req.Id))
// 然后将数据提交给管理员操作
ids, err := logic.GetAdministrator(ctx, aCard.ProjectId)
liberr.ErrIsNil(ctx, err)
if len(ids) == 0 {
liberr.ErrIsNil(ctx, errors.New("当前项目暂无后台管理人员可以进行审批,需要联系管理人员解决!"))
return
}
var listReissueReminder []todo.ReissueReminder
for i := range ids {
listReissueReminder = append(listReissueReminder, todo.ReissueReminder{
UserID: strconv.Itoa(int(ids[i])),
Role: 0,
ProjectID: int(aCard.ProjectId),
CreatorID: aCard.Openid,
TargetID: int(aCard.Id),
})
}
err = todo.CreateAttendanceApprovalGroup(listReissueReminder, todo.ApprovalReminder)
liberr.ErrIsNil(ctx, err)
})
return err
})
return
}
func (s *sBusAskforleave) AppAskForLeaveInfo(ctx context.Context, req *wxApplet.AppAskForLeaveInfoReq) (res *wxApplet.AppAskForLeaveInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.BusAskforleave.Ctx(ctx).WithAll().As("a").
LeftJoin(dao.BusConstructionUser.Table(), "b", "b.openid = a.openid").
Fields("a.*,b.user_name").
Where("a."+dao.BusAskforleave.Columns().Id, req.Id).
Scan(&res)
// 获取班组长的名称和管理员名称
if res.Ganger != "" {
var busUser *model.BusConstructionUserInfoRes
err = dao.BusConstructionUser.Ctx(ctx).Where(dao.BusConstructionUser.Columns().Openid, res.Ganger).Fields("user_name").Scan(&busUser)
liberr.ErrIsNil(ctx, err)
res.GangerName = busUser.UserName
}
if res.Manager != "" {
var busUser *model.BusConstructionUserInfoRes
err = sysDao.SysUser.Ctx(ctx).Where(sysDao.SysUser.Columns().Id, res.Manager).Fields("user_nickname").Scan(&busUser)
liberr.ErrIsNil(ctx, err)
res.ManagerName = busUser.UserName
}
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sBusAskforleave) AppAskForLeaveListPage(ctx context.Context, req *wxApplet.AppAskForLeaveListPageReq) (listRes *wxApplet.AppAskForLeaveListPageRes, err error) {
listRes = new(wxApplet.AppAskForLeaveListPageRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.BusAskforleave.Ctx(ctx).WithAll().As("a").
LeftJoin(dao.BusConstructionUser.Table(), "b", "b.openid = a.openid")
if req.Openid != "" {
m = m.Where("a."+dao.BusAskforleave.Columns().Openid+" = ?", req.Openid)
}
if req.ProjectId != "" {
m = m.Where("a."+dao.BusAskforleave.Columns().ProjectId+" = ?", gconv.Int64(req.ProjectId))
}
if req.TeamId != "" {
m = m.Where("a."+dao.BusAskforleave.Columns().TeamId+" = ?", gconv.Int64(req.TeamId))
}
if len(req.DateRange) != 0 {
m = m.Where("a."+dao.BusAskforleave.Columns().CreatedAt+" >=? AND "+"a."+dao.BusAskforleave.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.BusAskforleaveListAppRes
err = m.Fields("a.*,b.user_name").Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = res
})
return
}
func (s *sBusAskforleave) AppAskForLeaveAdd(ctx context.Context, req *wxApplet.AppAskForLeaveAddReq) (err error) {
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
// 1、根据openid获取到当前小程序用户所在班组的班组长
var busUser *model.BusConstructionUserInfoRes
err := dao.BusConstructionUser.Ctx(ctx).Where(dao.BusConstructionUser.Columns().Openid, req.Openid).Fields("project_id,team_id").Scan(&busUser)
liberr.ErrIsNil(ctx, err, "添加失败")
if busUser == nil || busUser.TeamId == 0 {
liberr.ErrIsNil(ctx, err, "请先加入班组!")
}
//2、获取项目名称、班组名称
columnsP := sysDao.SysProject.Columns()
valueP, projectNameErr := sysDao.SysProject.Ctx(ctx).Where(columnsP.Id, busUser.ProjectId).Fields(columnsP.ProjectName).Value()
liberr.ErrIsNil(ctx, projectNameErr, "获取项目失败")
columnsT := dao.SysProjectTeam.Columns()
valueT, teamNameErr := dao.SysProjectTeam.Ctx(ctx).Where(columnsT.Id, busUser.TeamId).Fields(columnsT.Name).Value()
liberr.ErrIsNil(ctx, teamNameErr, "获取班组失败")
// 判断当前请假的时间是否重复请假
count, err := dao.BusAskforleave.Ctx(ctx).
Where(dao.BusAskforleave.Columns().ProjectId, busUser.ProjectId).
Where(dao.BusAskforleave.Columns().Openid, req.Openid).
Where("("+
"DATE_FORMAT(start_time,'%Y-%m-%d') BETWEEN DATE_FORMAT(?,'%Y-%m-%d') AND DATE_FORMAT(?,'%Y-%m-%d')"+
" or "+
"DATE_FORMAT(end_time,'%Y-%m-%d') BETWEEN DATE_FORMAT(?,'%Y-%m-%d') AND DATE_FORMAT(?,'%Y-%m-%d')"+
")", req.StartTime, req.EndTime, req.StartTime, req.EndTime).Count()
liberr.ErrIsNil(ctx, err)
if count > 0 {
liberr.ErrIsNil(ctx, errors.New("当前请假时间重复"))
return
}
//3、插入请假数据
info, err := dao.BusAskforleave.Ctx(ctx).Insert(do.BusAskforleave{
ProjectId: busUser.ProjectId,
ProjectName: valueP.String(),
TeamId: busUser.TeamId,
TeamName: valueT.String(),
StartTime: req.StartTime,
EndTime: req.EndTime,
Argument: req.Argument,
Openid: req.Openid,
CreateBy: ct.New().GetLoginUser(ctx).Id,
})
liberr.ErrIsNil(ctx, err, "添加失败")
//4、发送审批
keyId, _ := info.LastInsertId()
openidVal, err := dao.SysProjectTeamMember.Ctx(ctx).
Where(dao.SysProjectTeamMember.Columns().TeamId, busUser.TeamId).
Where(dao.SysProjectTeamMember.Columns().PostId, 10).
Fields(dao.SysProjectTeamMember.Columns().Openid).Value()
if openidVal.String() == "" || err != nil {
liberr.ErrIsNil(ctx, errors.New("当前班组未发现班组长职位"))
return
}
var listReissueReminder []todo.ReissueReminder
listReissueReminder = append(listReissueReminder, todo.ReissueReminder{
UserID: openidVal.String(),
Role: 1,
ProjectID: int(busUser.ProjectId),
CreatorID: req.Openid,
TargetID: int(keyId),
})
err = todo.CreateAttendanceApprovalGroup(listReissueReminder, todo.ApprovalReminder)
//err = todo.CreateAskForLeaveReminder(openidVal.String(), int(busUser.ProjectId), req.Openid, int(keyId))
liberr.ErrIsNil(ctx, err)
})
return err
})
return err
}
func (s *sBusAskforleave) List(ctx context.Context, req *wxApplet.BusAskforleaveSearchReq) (listRes *wxApplet.BusAskforleaveSearchRes, err error) {
listRes = new(wxApplet.BusAskforleaveSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
values, err2 := dao.BusConstructionUser.Ctx(ctx).Where("user_name like ?", "%"+req.Name+"%").Fields("openid").Array()
liberr.ErrIsNil(ctx, err2)
m := dao.BusAskforleave.Ctx(ctx).WithAll().As("a").
LeftJoin("bus_construction_user", "b", "a.openid=b.openid").
//LeftJoin("sys_project", "c", "c.id=b.project_id").
//LeftJoin("sys_project_team", "d", "d.id=b.team_id").
Fields("a.*,b.user_name")
if req.Name != "" {
m = m.Where("a."+dao.BusAskforleave.Columns().Openid+" in (?)", values)
}
if req.ProjectId > 0 {
m = m.Where("a.project_id", req.ProjectId)
}
if req.TeamId > 0 {
m = m.Where("a.team_id", req.TeamId)
}
if req.ManagerOpinion != "" {
m = m.Where("a."+dao.BusAskforleave.Columns().ManagerOpinion+" = ?", req.ManagerOpinion)
}
if len(req.LeaveDateRange) != 0 {
m = m.Where("date(a.start_time) <= ? AND date(a.end_time) >= ?", req.LeaveDateRange[0], req.LeaveDateRange[1])
}
if len(req.DateRange) != 0 {
m = m.Where("a."+dao.BusAskforleave.Columns().CreatedAt+" >=? AND "+"a."+dao.BusAskforleave.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
array, err := m.Array()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
listRes.Total = len(array)
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.BusAskforleaveInfoRes
err = m.Fields(wxApplet.BusAskforleaveSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.BusAskforleaveListRes, len(res))
for k, v := range res {
cardMode := ""
cardNumber := ""
if v.GangerOpinion == "1" && v.ManagerOpinion == "1" {
cardMode = "待审核"
cardNumber = "1"
}
if v.GangerOpinion == "2" || v.ManagerOpinion == "2" {
cardMode = "审核中"
cardNumber = "2"
}
if v.GangerOpinion == "3" || v.ManagerOpinion == "3" {
cardMode = "已拒绝"
cardNumber = "3"
}
if v.GangerOpinion == "2" && v.ManagerOpinion == "2" {
cardMode = "已同意"
cardNumber = "4"
}
listRes.List[k] = &model.BusAskforleaveListRes{
Id: v.Id,
ProjectId: v.ProjectId,
ProjectName: v.ProjectName,
TeamId: v.TeamId,
TeamName: v.TeamName,
StartTime: v.StartTime,
EndTime: v.EndTime,
Argument: v.Argument,
Ganger: v.Ganger,
GangerOpinion: v.GangerOpinion,
GangerExplain: v.GangerExplain,
GangerTime: v.GangerTime,
Manager: v.Manager,
ManagerOpinion: v.ManagerOpinion,
ManagerExplain: v.ManagerExplain,
ManagerTime: v.ManagerTime,
CreateBy: v.CreateBy,
UpdateBy: v.UpdateBy,
CreatedAt: v.CreatedAt,
Remark: v.Remark,
CardMode: cardMode,
CardNumber: cardNumber,
UserName: v.UserName,
}
}
})
return
}
func (s *sBusAskforleave) GetById(ctx context.Context, id int64) (res *model.BusAskforleaveInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.BusAskforleave.Ctx(ctx).WithAll().As("a").
LeftJoin("bus_construction_user", "b", "a.openid=b.openid").
Fields("a.*,b.user_name").
Where("a."+dao.BusAskforleave.Columns().Id, id).Scan(&res)
if res != nil {
cardMode := ""
cardNumber := ""
if res.GangerOpinion == "1" && res.ManagerOpinion == "1" {
cardMode = "待审核"
cardNumber = "1"
}
if res.GangerOpinion == "2" || res.ManagerOpinion == "2" {
cardMode = "审核中"
cardNumber = "2"
}
if res.GangerOpinion == "3" || res.ManagerOpinion == "3" {
cardMode = "已拒绝"
cardNumber = "3"
}
if res.GangerOpinion == "2" && res.ManagerOpinion == "2" {
cardMode = "已同意"
cardNumber = "4"
}
res.CardMode = cardMode
res.CardNumber = cardNumber
}
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sBusAskforleave) Add(ctx context.Context, req *wxApplet.BusAskforleaveAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusAskforleave.Ctx(ctx).Insert(do.BusAskforleave{
ProjectId: req.ProjectId,
ProjectName: req.ProjectName,
TeamId: req.TeamId,
TeamName: req.TeamName,
StartTime: req.StartTime,
EndTime: req.EndTime,
Argument: req.Argument,
Ganger: req.Ganger,
GangerOpinion: req.GangerOpinion,
GangerExplain: req.GangerExplain,
GangerTime: req.GangerTime,
Manager: req.Manager,
ManagerOpinion: req.ManagerOpinion,
ManagerExplain: req.ManagerExplain,
ManagerTime: req.ManagerTime,
CreateBy: req.CreateBy,
UpdateBy: req.UpdateBy,
Remark: req.Remark,
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sBusAskforleave) Edit(ctx context.Context, req *wxApplet.BusAskforleaveEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusAskforleave.Ctx(ctx).WherePri(req.Id).Update(do.BusAskforleave{
ManagerOpinion: req.ManagerOpinion,
ManagerExplain: req.ManagerExplain,
UpdateBy: ct.New().GetLoginUser(ctx).Id,
})
liberr.ErrIsNil(ctx, err, "修改失败")
//批量同意
err2 := todo.MarkTasksAsProcessedByUUID(req.Id)
liberr.ErrIsNil(ctx, err2)
})
return
}
func (s *sBusAskforleave) Delete(ctx context.Context, ids []int64) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusAskforleave.Ctx(ctx).Delete(dao.BusAskforleave.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,112 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-07 11:17:50
// 生成路径: internal/app/wxApplet/logic/bus_construction_project.go
// 生成人gfast
// desc:施工人员对应项目
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
)
func init() {
service.RegisterBusConstructionProject(New())
}
func New() *sBusConstructionProject {
return &sBusConstructionProject{}
}
type sBusConstructionProject struct{}
func (s *sBusConstructionProject) List(ctx context.Context, req *wxApplet.BusConstructionProjectSearchReq) (listRes *wxApplet.BusConstructionProjectSearchRes, err error) {
listRes = new(wxApplet.BusConstructionProjectSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.BusConstructionProject.Ctx(ctx).WithAll()
if req.Id != "" {
m = m.Where(dao.BusConstructionProject.Columns().Id+" = ?", req.Id)
}
if req.ConstructionUserId != "" {
m = m.Where(dao.BusConstructionProject.Columns().ConstructionUserId+" = ?", gconv.Int64(req.ConstructionUserId))
}
if req.ProjectId != "" {
m = m.Where(dao.BusConstructionProject.Columns().ProjectId+" = ?", gconv.Int64(req.ProjectId))
}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.BusConstructionProjectInfoRes
err = m.Fields(wxApplet.BusConstructionProjectSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.BusConstructionProjectListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.BusConstructionProjectListRes{
Id: v.Id,
ConstructionUserId: v.ConstructionUserId,
ProjectId: v.ProjectId,
}
}
})
return
}
func (s *sBusConstructionProject) GetById(ctx context.Context, id uint64) (res *model.BusConstructionProjectInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.BusConstructionProject.Ctx(ctx).WithAll().Where(dao.BusConstructionProject.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sBusConstructionProject) Add(ctx context.Context, req *wxApplet.BusConstructionProjectAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionProject.Ctx(ctx).Insert(do.BusConstructionProject{
ConstructionUserId: req.ConstructionUserId,
ProjectId: req.ProjectId,
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sBusConstructionProject) Edit(ctx context.Context, req *wxApplet.BusConstructionProjectEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionProject.Ctx(ctx).WherePri(req.Id).Update(do.BusConstructionProject{
ConstructionUserId: req.ConstructionUserId,
ProjectId: req.ProjectId,
})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sBusConstructionProject) Delete(ctx context.Context, ids []uint64) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionProject.Ctx(ctx).Delete(dao.BusConstructionProject.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-07 11:17:55
// 生成路径: internal/app/wxApplet/logic/bus_construction_user_file.go
// 生成人gfast
// desc:微信用户的文件存储
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
)
func init() {
service.RegisterBusConstructionUserFile(New())
}
func New() *sBusConstructionUserFile {
return &sBusConstructionUserFile{}
}
type sBusConstructionUserFile struct{}
func (s *sBusConstructionUserFile) List(ctx context.Context, req *wxApplet.BusConstructionUserFileSearchReq) (listRes *wxApplet.BusConstructionUserFileSearchRes, err error) {
listRes = new(wxApplet.BusConstructionUserFileSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.BusConstructionUserFile.Ctx(ctx).WithAll()
if req.Id != "" {
m = m.Where(dao.BusConstructionUserFile.Columns().Id+" = ?", req.Id)
}
if req.UserId != "" {
m = m.Where(dao.BusConstructionUserFile.Columns().UserId+" = ?", gconv.Int64(req.UserId))
}
if req.UserImgType != "" {
m = m.Where(dao.BusConstructionUserFile.Columns().UserImgType+" = ?", req.UserImgType)
}
if req.Path != "" {
m = m.Where(dao.BusConstructionUserFile.Columns().Path+" = ?", req.Path)
}
if len(req.DateRange) != 0 {
m = m.Where(dao.BusConstructionUserFile.Columns().CreatedAt+" >=? AND "+dao.BusConstructionUserFile.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.BusConstructionUserFileInfoRes
err = m.Fields(wxApplet.BusConstructionUserFileSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.BusConstructionUserFileListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.BusConstructionUserFileListRes{
Id: v.Id,
UserId: v.UserId,
UserImgType: v.UserImgType,
Path: v.Path,
CreatedAt: v.CreatedAt,
}
}
})
return
}
func (s *sBusConstructionUserFile) GetById(ctx context.Context, id int64) (res *model.BusConstructionUserFileInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.BusConstructionUserFile.Ctx(ctx).WithAll().Where(dao.BusConstructionUserFile.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sBusConstructionUserFile) Add(ctx context.Context, req *wxApplet.BusConstructionUserFileAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionUserFile.Ctx(ctx).Insert(do.BusConstructionUserFile{
UserId: req.UserId,
UserImgType: req.UserImgType,
Name: req.Name,
Path: req.Path,
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sBusConstructionUserFile) Edit(ctx context.Context, req *wxApplet.BusConstructionUserFileEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionUserFile.Ctx(ctx).WherePri(req.Id).Update(do.BusConstructionUserFile{
UserId: req.UserId,
UserImgType: req.UserImgType,
Name: req.Name,
Path: req.Path,
})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sBusConstructionUserFile) Delete(ctx context.Context, ids []int64) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionUserFile.Ctx(ctx).Delete(dao.BusConstructionUserFile.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}

View File

@ -0,0 +1,112 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-07 11:17:55
// 生成路径: internal/app/wxApplet/logic/bus_construction_user_post.go
// 生成人gfast
// desc:施工人员岗位
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
)
func init() {
service.RegisterBusConstructionUserPost(New())
}
func New() *sBusConstructionUserPost {
return &sBusConstructionUserPost{}
}
type sBusConstructionUserPost struct{}
func (s *sBusConstructionUserPost) List(ctx context.Context, req *wxApplet.BusConstructionUserPostSearchReq) (listRes *wxApplet.BusConstructionUserPostSearchRes, err error) {
listRes = new(wxApplet.BusConstructionUserPostSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.BusConstructionUserPost.Ctx(ctx).WithAll()
if req.Id != "" {
m = m.Where(dao.BusConstructionUserPost.Columns().Id+" = ?", req.Id)
}
if req.ConstructionUserId != "" {
m = m.Where(dao.BusConstructionUserPost.Columns().ConstructionUserId+" = ?", gconv.Int64(req.ConstructionUserId))
}
if req.PostId != "" {
m = m.Where(dao.BusConstructionUserPost.Columns().PostId+" = ?", gconv.Int64(req.PostId))
}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.BusConstructionUserPostInfoRes
err = m.Fields(wxApplet.BusConstructionUserPostSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.BusConstructionUserPostListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.BusConstructionUserPostListRes{
Id: v.Id,
ConstructionUserId: v.ConstructionUserId,
PostId: v.PostId,
}
}
})
return
}
func (s *sBusConstructionUserPost) GetById(ctx context.Context, id uint64) (res *model.BusConstructionUserPostInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.BusConstructionUserPost.Ctx(ctx).WithAll().Where(dao.BusConstructionUserPost.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sBusConstructionUserPost) Add(ctx context.Context, req *wxApplet.BusConstructionUserPostAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionUserPost.Ctx(ctx).Insert(do.BusConstructionUserPost{
ConstructionUserId: req.ConstructionUserId,
PostId: req.PostId,
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sBusConstructionUserPost) Edit(ctx context.Context, req *wxApplet.BusConstructionUserPostEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionUserPost.Ctx(ctx).WherePri(req.Id).Update(do.BusConstructionUserPost{
ConstructionUserId: req.ConstructionUserId,
PostId: req.PostId,
})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sBusConstructionUserPost) Delete(ctx context.Context, ids []uint64) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusConstructionUserPost.Ctx(ctx).Delete(dao.BusConstructionUserPost.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}

View File

@ -0,0 +1,218 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-14 11:24:31
// 生成路径: internal/app/wxApplet/logic/bus_labourservice.go
// 生成人gfast
// desc:劳务公司
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"errors"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/v1/common/coryCommon"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
tool "github.com/tiger1103/gfast/v3/utility/coryUtils"
"strings"
)
func init() {
service.RegisterBusLabourservice(New())
}
func New() *sBusLabourservice {
return &sBusLabourservice{}
}
type sBusLabourservice struct{}
func (s *sBusLabourservice) PcAdd(ctx context.Context, req *wxApplet.BusPcAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, InsertErr := g.DB().Model("bus_labourservice_file").Data(&model.BusLabourserviceFileRes{
Pid: req.Pid,
Type: req.Type,
Name: req.Name,
Path: req.Path,
}).Insert()
liberr.ErrIsNil(ctx, InsertErr, "资料添加错误!")
})
return
}
func (s *sBusLabourservice) PcDel(ctx context.Context, req *wxApplet.BusPcDelReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
m := g.DB().Model("bus_labourservice_file").Where("id", req.Id).Safe()
//1、查询数据
path, err := m.Fields("path").Value()
liberr.ErrIsNil(ctx, err)
//2、删除数据
_, err = m.Delete()
liberr.ErrIsNil(ctx, err)
//3、删除文件
coryCommon.BatchFile(strings.Split(path.String(), ","))
})
return
}
func (s *sBusLabourservice) PcFind(ctx context.Context, req *wxApplet.BusPcFindReq) (res *wxApplet.BusPcFindRes, err error) {
res = new(wxApplet.BusPcFindRes)
err = g.Try(ctx, func(ctx context.Context) {
var fileRes []*model.BusLabourserviceFileRes
err = g.DB().Model("bus_labourservice_file").Where("pid", req.Pid).Scan(&fileRes)
res.List = fileRes
liberr.ErrIsNil(ctx, err)
})
return
}
func (s *sBusLabourservice) AppListOfParticipatingUnitsFunc(ctx context.Context, req *wxApplet.AppListOfParticipatingUnitsReq) (listRes *wxApplet.AppListOfParticipatingUnitsRes, err error) {
listRes = new(wxApplet.AppListOfParticipatingUnitsRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.BusLabourservice.Ctx(ctx).WithAll()
if req.FuzzyQuery != "" {
m = m.Where(dao.BusLabourservice.Columns().Name+" like ?", "%"+req.FuzzyQuery+"%")
}
order := "name asc"
var res []*model.BusLabourserviceInfoRes
err = m.Fields(wxApplet.BusLabourserviceSearchRes{}).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.BusLabourserviceListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.BusLabourserviceListRes{
Id: v.Id,
Name: v.Name,
Principal: v.Principal,
Phone: v.Phone,
Custodian: v.Custodian,
CustodianPhone: v.CustodianPhone,
CreatedAt: v.CreatedAt,
Remark: v.Remark,
}
}
})
return
}
func (s *sBusLabourservice) List(ctx context.Context, req *wxApplet.BusLabourserviceSearchReq) (listRes *wxApplet.BusLabourserviceSearchRes, err error) {
listRes = new(wxApplet.BusLabourserviceSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.BusLabourservice.Ctx(ctx).WithAll()
if req.Name != "" {
m = m.Where(dao.BusLabourservice.Columns().Name+" like ?", "%"+req.Name+"%")
}
//创建时间模糊查询
if req.CreatedAt != "" {
date := tool.New().GetFormattedDate(gconv.Time(req.CreatedAt))
m = m.Where(dao.BusLabourservice.Columns().CreatedAt+" like ?", "%"+date+"%")
}
if len(req.DateRange) != 0 {
m = m.Where(dao.BusLabourservice.Columns().CreatedAt+" >=? AND "+dao.BusLabourservice.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.BusLabourserviceInfoRes
err = m.Fields(wxApplet.BusLabourserviceSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.BusLabourserviceListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.BusLabourserviceListRes{
Id: v.Id,
Name: v.Name,
Principal: v.Principal,
Phone: v.Phone,
Custodian: v.Custodian,
CustodianPhone: v.CustodianPhone,
CreatedAt: v.CreatedAt,
Remark: v.Remark,
}
}
})
return
}
func (s *sBusLabourservice) GetById(ctx context.Context, id int64) (res *model.BusLabourserviceInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.BusLabourservice.Ctx(ctx).WithAll().Where(dao.BusLabourservice.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
//获取创建人 更新人
by := coryCommon.New().CreateByOrUpdateBy(ctx, res)
infoRes := by.(model.BusLabourserviceInfoRes)
res = &infoRes
})
return
}
func (s *sBusLabourservice) Add(ctx context.Context, req *wxApplet.BusLabourserviceAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
columns := dao.BusLabourservice.Columns()
//1、判断劳务公司是否重复
count, countErr := dao.BusLabourservice.Ctx(ctx).Where(columns.Name, req.Name).Count()
liberr.ErrIsNil(ctx, countErr, "获取劳务信息失败!")
if count > 0 {
liberr.ErrIsNil(ctx, errors.New("该劳务公司已存在!"))
return
}
//2、添加劳务公司
name := ct.New().GetLoginUser(ctx).Id
_, errInsertInfo := dao.BusLabourservice.Ctx(ctx).Insert(do.BusLabourservice{
Name: req.Name,
Principal: req.Principal,
Phone: req.Phone,
Custodian: req.Custodian,
CustodianPhone: req.CustodianPhone,
Remark: req.Remark,
CreateBy: name,
})
liberr.ErrIsNil(ctx, errInsertInfo, "添加失败")
})
return err
}
func (s *sBusLabourservice) Edit(ctx context.Context, req *wxApplet.BusLabourserviceEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
//1、修改资料
name := ct.New().GetLoginUser(ctx).Id
_, err = dao.BusLabourservice.Ctx(ctx).WherePri(req.Id).Update(do.BusLabourservice{
Name: req.Name,
Principal: req.Principal,
Phone: req.Phone,
Custodian: req.Custodian,
CustodianPhone: req.CustodianPhone,
Remark: req.Remark,
UpdateBy: name,
})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return err
}
func (s *sBusLabourservice) Delete(ctx context.Context, ids []int64) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.BusLabourservice.Ctx(ctx).Delete(dao.BusLabourservice.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}

View File

@ -0,0 +1,13 @@
package logic
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busAskforleave"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busAttendance"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busConstructionProject"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busConstructionUser"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busConstructionUserFile"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busConstructionUserPost"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/busLabourservice"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/sysProjectTeam"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/sysProjectTeamMember"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/sysProjectTeamSquad"
import _ "github.com/tiger1103/gfast/v3/internal/app/wxApplet/logic/sysUserProjectRelevancy"

View File

@ -0,0 +1,331 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-15 09:34:52
// 生成路径: internal/app/wxApplet/logic/sys_project_team.go
// 生成人gfast
// desc:项目班组
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"errors"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/v1/common/coryCommon"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
tool "github.com/tiger1103/gfast/v3/utility/coryUtils"
)
func init() {
service.RegisterSysProjectTeam(New())
}
func New() *sSysProjectTeam {
return &sSysProjectTeam{}
}
type sSysProjectTeam struct{}
func (s *sSysProjectTeam) ListOfAttendancePersonnelFunc(ctx context.Context, req *wxApplet.ListOfAttendancePersonnelReq) (res *wxApplet.ListOfAttendancePersonnelRes, err error) {
res = &wxApplet.ListOfAttendancePersonnelRes{}
err = g.Try(ctx, func(ctx context.Context) {
var ry []*wxApplet.ListOfAttendancePersonnelTwo
switch req.Type {
case "0":
//1、获取到所有人员
columns := dao.BusConstructionUser.Columns()
err := dao.BusConstructionUser.Ctx(ctx).Where(columns.TeamId, req.TeamId).Fields(columns.Openid, columns.PacePhoto+" as userHead", columns.UserName, columns.Phone).Scan(&ry)
liberr.ErrIsNil(ctx, err, "获取全部人员失败!")
break
case "1":
//2、获取到打卡人员信息
all, err := g.DB().GetAll(ctx, `SELECT
DISTINCT
a.openid,
b.pace_photo as userHead,
b.user_name as userName,
b.phone,
FROM
bus_attendance AS a
RIGHT JOIN bus_construction_user AS b ON ( b.team_id = ? AND b.openid = a.openid )
WHERE
a.is_pinch <> 4 and DATE_FORMAT(clock_on,"%Y-%m-%d") = ?`,
g.Slice{req.TeamId, req.LocalDate})
liberr.ErrIsNil(ctx, err, "获取打卡人员失败")
err = all.Structs(&ry)
liberr.ErrIsNil(ctx, err, "获取打卡人员转换失败")
break
case "2":
all, err := g.DB().GetAll(ctx, `SELECT
a.openid,
a.pace_photo as userHead,
a.user_name as userName,
a.phone,
c.ganger_opinion as gangerOpinion,
c.manager_opinion as managerOpinion
FROM
bus_construction_user as a
left join bus_askforleave as c on ( c.openid = a.openid and c.team_id = ? )
WHERE
a.openid in (
SELECT
openid
FROM
bus_askforleave
WHERE
team_id = ? and
? BETWEEN DATE_FORMAT(start_time,'%Y-%m-%d') AND DATE_FORMAT(end_time,'%Y-%m-%d')
) and ? BETWEEN DATE_FORMAT(c.start_time,'%Y-%m-%d') AND DATE_FORMAT(c.end_time,'%Y-%m-%d')`,
g.Slice{req.TeamId, req.TeamId, req.LocalDate, req.LocalDate})
liberr.ErrIsNil(ctx, err, "获取请假人员失败")
err = all.Structs(&ry)
liberr.ErrIsNil(ctx, err, "获取请假人员转换失败")
for i := range ry {
cardMode := ""
cardNumber := ""
if ry[i].GangerOpinion == "1" && ry[i].ManagerOpinion == "1" {
cardMode = "待审核"
cardNumber = "1"
}
if ry[i].GangerOpinion == "2" || ry[i].ManagerOpinion == "2" {
cardMode = "审核中"
cardNumber = "2"
}
if ry[i].GangerOpinion == "3" || ry[i].ManagerOpinion == "3" {
cardMode = "已拒绝"
cardNumber = "3"
}
if ry[i].GangerOpinion == "2" && ry[i].ManagerOpinion == "2" {
cardMode = "已同意"
cardNumber = "4"
}
ry[i].CardMode = cardMode
ry[i].CardNumber = cardNumber
}
break
case "3":
all, err := g.DB().GetAll(ctx, `SELECT
a.openid,
a.pace_photo as userHead,
a.user_name as userName,
a.phone
FROM
bus_construction_user as a
WHERE
team_id = ? and deleted_at is null and
openid not in (
SELECT DISTINCT
a.openid
FROM
bus_attendance AS a
RIGHT JOIN bus_construction_user AS b ON ( b.team_id = ? AND b.openid = a.openid )
WHERE
a.is_pinch <> 4 AND
DATE_FORMAT( a.clock_on, "%Y-%m-%d" ) = ?
UNION
SELECT DISTINCT
openid
FROM
bus_askforleave
WHERE
team_id = ? AND
? BETWEEN DATE_FORMAT( start_time, '%Y-%m-%d' ) AND DATE_FORMAT( end_time, '%Y-%m-%d' )
)`, g.Slice{req.TeamId, req.TeamId, req.LocalDate, req.TeamId, req.LocalDate})
liberr.ErrIsNil(ctx, err, "获取未出勤人员失败")
err = all.Structs(&ry)
liberr.ErrIsNil(ctx, err, "获取未出勤人员转换失败")
break
}
res.List = ry
})
return
}
func (s *sSysProjectTeam) GetsTheAttendanceOfASpecifiedShiftGroupFunc(ctx context.Context, req *wxApplet.GetsTheAttendanceOfASpecifiedShiftGroupReq) (res *wxApplet.GetsTheAttendanceOfASpecifiedShiftGroupRes, err error) {
res = new(wxApplet.GetsTheAttendanceOfASpecifiedShiftGroupRes)
err = g.Try(ctx, func(ctx context.Context) {
//1、根据班组id获取到班组总人数
columns := dao.BusConstructionUser.Columns()
array, err := dao.BusConstructionUser.Ctx(ctx).Where(columns.TeamId, req.TeamId).Fields(columns.Openid).Array()
liberr.ErrIsNil(ctx, err, "获取当前班组总人数失败")
res.All = len(array)
//2、获取到打卡人数;根据班组获取到指定的人、在根据人去考勤里面查询数据
count, err := g.DB().GetCount(ctx, `SELECT
COUNT(DISTINCT a.openid)
FROM
bus_attendance AS a
RIGHT JOIN bus_construction_user AS b ON ( b.team_id = ? AND b.openid = a.openid )
WHERE
a.is_pinch <> 4 and DATE_FORMAT(clock_on,"%Y-%m-%d") = ?`,
g.Slice{req.TeamId, req.LocalDate})
liberr.ErrIsNil(ctx, err, "获取打卡人数失败")
res.ClockIn = count
//3、获取到请假人数
valOpenids, err := dao.BusAskforleave.Ctx(ctx).
Where(dao.BusAskforleave.Columns().TeamId, req.TeamId).
Where(gdb.Raw("current_date BETWEEN DATE_FORMAT(start_time,'%Y-%m-%d') AND DATE_FORMAT(end_time,'%Y-%m-%d')")).
Fields(dao.BusAskforleave.Columns().Openid).
Array()
liberr.ErrIsNil(ctx, err, "获取请假人数失败")
res.AskForLeave = len(valOpenids)
//4、获取到未出勤人数 = 总人数-打卡人数-请假人数
res.NotClockIn = res.All - res.ClockIn - res.AskForLeave
})
return
}
func (s *sSysProjectTeam) List(ctx context.Context, req *wxApplet.SysProjectTeamSearchReq) (listRes *wxApplet.SysProjectTeamSearchRes, err error) {
listRes = new(wxApplet.SysProjectTeamSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.SysProjectTeam.Ctx(ctx).WithAll()
if req.ProjectId != "" {
m = m.Where(dao.SysProjectTeam.Columns().ProjectId+" = ?", req.ProjectId)
}
if req.Name != "" {
m = m.Where(dao.SysProjectTeam.Columns().Name+" like ?", "%"+req.Name+"%")
}
//创建时间模糊查询
if req.CreateTime != "" {
date := tool.New().GetFormattedDate(gconv.Time(req.CreateTime))
m = m.Where(dao.SysProjectTeam.Columns().CreateTime+" like ?", "%"+date+"%")
}
if req.CreateTime != "" {
m = m.Where(dao.SysProjectTeam.Columns().CreateTime+" = ?", gconv.Time(req.CreateTime))
}
listRes.Total, err = m.Count()
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.SysProjectTeamInfoRes
err = m.Fields(wxApplet.SysProjectTeamSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.SysProjectTeamListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.SysProjectTeamListRes{
Id: v.Id,
ProjectId: v.ProjectId,
Name: v.Name,
IsClockIn: v.IsClockIn,
CreateTime: v.CreateTime,
}
}
})
return
}
func (s *sSysProjectTeam) GetById(ctx context.Context, id int64) (res *model.SysProjectTeamInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.SysProjectTeam.Ctx(ctx).WithAll().Where(dao.SysProjectTeam.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
//获取创建人 更新人
by := coryCommon.New().CreateByOrUpdateBy(ctx, res)
infoRes := by.(model.SysProjectTeamInfoRes)
res = &infoRes
})
return
}
func (s *sSysProjectTeam) Add(ctx context.Context, req *wxApplet.SysProjectTeamAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
//1、判断班组名称是否存在
count, err := dao.SysProjectTeam.
Ctx(ctx).Where(dao.SysProjectTeam.Columns().ProjectId, req.ProjectId).
Ctx(ctx).Where(dao.SysProjectTeam.Columns().Name, req.Name).
Count()
liberr.ErrIsNil(ctx, err, "获取班组名称失败")
if count > 0 {
liberr.ErrIsNil(ctx, errors.New("班组名称已存在"))
return
}
name := ct.New().GetLoginUser(ctx).Id
_, err = dao.SysProjectTeam.Ctx(ctx).Insert(do.SysProjectTeam{
ProjectId: req.ProjectId,
Name: req.Name,
IsClockIn: req.IsClockIn,
CreateBy: name,
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sSysProjectTeam) Edit(ctx context.Context, req *wxApplet.SysProjectTeamEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
name := ct.New().GetLoginUser(ctx).Id
count, err := dao.SysProjectTeam.Ctx(ctx).
Where(dao.SysProjectTeam.Columns().ProjectId, req.ProjectId).
Where(dao.SysProjectTeam.Columns().Name, req.Name).
Count()
liberr.ErrIsNil(ctx, err, "获取班组名称失败")
if count > 0 {
liberr.ErrIsNil(ctx, errors.New("班组名称已存在"))
return
}
_, err = dao.SysProjectTeam.Ctx(ctx).WherePri(req.Id).Update(do.SysProjectTeam{
ProjectId: req.ProjectId,
Name: req.Name,
UpdateBy: name,
IsClockIn: req.IsClockIn,
})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sSysProjectTeam) Delete(ctx context.Context, ids []int64) (err error) {
g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
//1、删除组成员
_, err = dao.SysProjectTeamMember.Ctx(ctx).Delete(dao.SysProjectTeamMember.Columns().TeamId+" in (?)", ids)
//2、清除施工人员中关联到这个项目的人
_, err = dao.BusConstructionUser.Ctx(ctx).Where(dao.SysProjectTeamMember.Columns().TeamId+" in (?)", ids).Update(g.Map{"team_id": nil})
//2、删除组
_, err = dao.SysProjectTeam.Ctx(ctx).Delete(dao.SysProjectTeam.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return err
})
return
}
// TeamOrGroupFunc 根据项目ID获取当前项目下的所有班组信息
func TeamOrGroupFunc(ctx context.Context, id int64) (teamEntity []*model.SysProjectTeamListRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.SysProjectTeam.Ctx(ctx).
Where(dao.SysProjectTeam.Columns().ProjectId, id).Scan(&teamEntity)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}
// TeamFunc 根据班组ID获取班组信息
func TeamFunc(ctx context.Context, id int64) (teamEntity []*model.SysProjectTeamListRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.SysProjectTeam.Ctx(ctx).
Where(dao.SysProjectTeam.Columns().Id, id).Scan(&teamEntity)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}

View File

@ -0,0 +1,340 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-15 09:34:52
// 生成路径: internal/app/wxApplet/logic/sys_project_team_member.go
// 生成人gfast
// desc:项目班组下的成员
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"errors"
"time"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/samber/lo"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
sdao "github.com/tiger1103/gfast/v3/internal/app/system/dao"
logic2 "github.com/tiger1103/gfast/v3/internal/app/system/logic/busConstructionUser"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
tool "github.com/tiger1103/gfast/v3/utility/coryUtils"
)
func init() {
service.RegisterSysProjectTeamMember(New())
}
func New() *sSysProjectTeamMember {
return &sSysProjectTeamMember{}
}
type sSysProjectTeamMember struct{}
func (s *sSysProjectTeamMember) List(ctx context.Context, req *wxApplet.SysProjectTeamMemberSearchReq) (listRes *wxApplet.SysProjectTeamMemberSearchRes, err error) {
listRes = new(wxApplet.SysProjectTeamMemberSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
// 获取人员名称
var openids []string
if req.UserName != "" {
values, err := dao.BusConstructionUser.Ctx(ctx).Where("user_name like ?", "%"+req.UserName+"%").Fields("openid").Array()
liberr.ErrIsNil(ctx, err, "获取数据失败")
if len(values) > 0 {
for i := range values {
openids = append(openids, values[i].String())
}
}
}
m := dao.SysProjectTeamMember.Ctx(ctx)
m = m.As("a").
RightJoin("bus_construction_user as b on a.openid = b.openid").
LeftJoin("bus_type_of_wage as c on b.type_of_work = c.type_of_work").
Fields("a.*," +
"b.head_icon," +
"b.nick_name,b.user_name," +
"b.phone," +
"c.standard as original,b.salary")
if req.TeamId != "" {
m = m.Where("a."+dao.SysProjectTeamMember.Columns().TeamId+" = ?", gconv.Int64(req.TeamId))
}
if req.Openid != "" {
m = m.Where("a."+dao.SysProjectTeamMember.Columns().Openid+" = ?", req.Openid)
}
if req.PostId != "" {
m = m.Where("a."+dao.SysProjectTeamMember.Columns().PostId+" = ?", gconv.Int64(req.PostId))
}
if req.IsPcSysUser != "" && (req.IsPcSysUser != "1" || req.IsPcSysUser != "2") {
m = m.Where("b.wx_or_pc", req.IsPcSysUser)
}
if len(openids) > 0 {
m = m.Where("a.openid in (?) ", openids)
}
// 创建时间模糊查询
if req.CreateTime != "" {
date := tool.New().GetFormattedDate(gconv.Time(req.CreateTime))
m = m.Where("a."+dao.SysProjectTeam.Columns().CreateTime+" like ?", "%"+date+"%")
}
if req.CreateTime != "" {
m = m.Where("a."+dao.SysProjectTeamMember.Columns().UpdateTime+" = ?", gconv.Time(req.CreateTime))
}
m = m.Where("`a`.`deleted_at` IS NULL")
m = m.Where("`b`.`deleted_at` IS NULL")
array, err := m.Array()
listRes.Total = len(array)
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.SysProjectTeamMemberInfoRes
err = m.Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.SysProjectTeamMemberListRes, len(res))
for k, v := range res {
// var sj *model.BusConstructionUserInfoRes
// dao.BusConstructionUser.Ctx(ctx).Where("openid", v.Openid).Fields("user_name,nick_name").Scan(&sj)
listRes.List[k] = &model.SysProjectTeamMemberListRes{
Id: v.Id,
TeamId: v.TeamId,
Openid: v.Openid,
PostId: v.PostId,
// HeadIcon: v.HeadIcon,
Phone: v.Phone,
UserName: v.UserName,
NickName: v.NickName,
Original: v.Original,
Salary: v.Salary,
}
}
})
return
}
func (s *sSysProjectTeamMember) GetById(ctx context.Context, id int64) (res *model.SysProjectTeamMemberInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.SysProjectTeamMember.Ctx(ctx).WithAll().Where(dao.SysProjectTeamMember.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sSysProjectTeamMember) Add(ctx context.Context, req *wxApplet.SysProjectTeamMemberAddReq) (err error) {
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
// 1、当前成员已经被添加就不允许再次添加
// count, err := dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Where("openid", req.Openid).Count()
count, err := dao.SysProjectTeamMember.Ctx(ctx).Where("openid", req.Openid).Count()
if count > 0 {
err = errors.New("当前成员已分配组!")
liberr.ErrIsNil(ctx, err)
return
}
// 2、获取当前项目的班组长openid
value, err := dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Where("post_id", "10").Fields("openid").Value()
liberr.ErrIsNil(ctx, err)
originalOpenid := value.String()
if req.PostId == 10 {
// 新增数据如果是组长,那么就将当前组的所有成员修改为组员
_, err = dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Update(g.Map{"post_id": 4})
liberr.ErrIsNil(ctx, err, "新增班组长失败")
}
// 删除班组长这个角色,如果当前用户没得班组长也不影响,不管如何先删再说
if originalOpenid != "" {
err := OpenidByDelFunc(ctx, originalOpenid)
liberr.ErrIsNil(ctx, err, "班组长交接失败")
}
// 新增数据
value, err = dao.SysProjectTeam.Ctx(ctx).WherePri(req.TeamId).Fields("project_id").Value()
_, err = dao.SysProjectTeamMember.Ctx(ctx).Insert(do.SysProjectTeamMember{
TeamId: req.TeamId,
Openid: req.Openid,
PostId: req.PostId,
ProjectId: value,
})
openidValue, err := dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Where("post_id", "10").Fields("openid").Value()
liberr.ErrIsNil(ctx, err)
if openidValue.String() != "" {
err := OpenidByAddFunc(ctx, openidValue.String())
liberr.ErrIsNil(ctx, err)
}
////如果与元原来班组长的补卡申请未处理完毕,那么就由新的班组长接任处理
//_, err = g.DB().Model("bus_reissue_a_card").
// Where("ganger", originalOpenid).
// Where("ganger_opinion", "1").
// Update(g.Map{"ganger": req.Openid})
//liberr.ErrIsNil(ctx, err, "新增失败")
//新增完还得操作一下用户的team_id字段
now := time.Now()
date := tool.New().GetFormattedDateTime(now)
g2 := g.Map{
"team_id": req.TeamId,
"project_id": value,
//"type_of_work": req.TypeOfWork,
//"native_place": req.NativePlace,
"entry_date": date,
"leave_date": "",
}
_, err = dao.BusConstructionUser.Ctx(ctx).Where("openid", req.Openid).Update(g2)
liberr.ErrIsNil(ctx, err, "修改失败")
subQuery := g.Model("sys_user").As("su").LeftJoin("bus_construction_user bcu", "bcu.phone = su.mobile").Where("bcu.openid", req.Openid).Fields("su.id")
//user_id := lo.Must(subQuery.Value()).Int()
user_ids, err := subQuery.Value()
liberr.ErrIsNil(ctx, err, "修改失败")
user_id := user_ids.Int()
if req.PostId == 4 { // 删除班组长角色菜单,添加施工人员角色菜单
_, err = sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Where("role_id", 1).Where("major_role", 1).Delete()
liberr.ErrIsNil(ctx, err, "修改失败")
sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Data(g.Map{"role_id": 2, "major_role": 1, "user_id": user_id}).Insert()
} else if req.PostId == 10 { // 添加班组长角色菜单
// 添加班组长角色
_, err = sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Where("role_id", 1).Where("major_role", 1).Delete()
_, err := sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Data(g.Map{"role_id": 1, "major_role": 1, "user_id": user_id}).Insert()
liberr.ErrIsNil(ctx, err, "修改失败")
}
})
return err
})
return
}
func (s *sSysProjectTeamMember) Edit(ctx context.Context, req *wxApplet.SysProjectTeamMemberEditReq) (err error) {
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
// 1、新增数据如果是组长那么就将当前组的所有成员修改为组员
value, err := dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Where("post_id", "10").Fields("openid").Value()
originalOpenid := value.String()
if req.PostId == 10 {
_, err = dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Update(g.Map{"post_id": 4})
liberr.ErrIsNil(ctx, err, "修改失败")
}
subQuery := g.Model("sys_user").As("su").LeftJoin("bus_construction_user bcu", "bcu.phone = su.mobile").Where("bcu.openid", req.Openid).Fields("su.id")
user_id := lo.Must(subQuery.Value()).Int()
if req.PostId == 4 { // 删除班组长角色菜单,添加施工人员角色菜单
_, err = sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Where("role_id", 1).Where("major_role", 1).Delete()
liberr.ErrIsNil(ctx, err, "修改失败")
sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Data(g.Map{"role_id": 2, "major_role": 1, "user_id": user_id}).Insert()
} else if req.PostId == 10 { // 添加班组长角色菜单
// 添加班组长角色
_, err = sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Where("role_id", 1).Where("major_role", 1).Delete()
_, err := sdao.AppUserRoles.Ctx(ctx).Where("user_id = ?", user_id).Data(g.Map{"role_id": 1, "major_role": 1, "user_id": user_id}).Insert()
liberr.ErrIsNil(ctx, err, "修改失败")
}
// 2、删除班组长角色不管如何先删再说
if originalOpenid != "" {
err := OpenidByDelFunc(ctx, originalOpenid)
liberr.ErrIsNil(ctx, err, "班组长交接失败")
}
// 3、修改用户信息
value, err = dao.SysProjectTeam.Ctx(ctx).WherePri(req.TeamId).Fields("project_id").Value()
_, err = dao.SysProjectTeamMember.Ctx(ctx).WherePri(req.Id).Update(do.SysProjectTeamMember{
TeamId: req.TeamId,
ProjectId: value,
Openid: req.Openid,
PostId: req.PostId,
})
// 4、查询是否有班组长有就增加班组长角色
openidValue, err := dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Where("post_id", "10").Fields("openid").Value()
liberr.ErrIsNil(ctx, err)
if openidValue.String() != "" {
err := OpenidByAddFunc(ctx, openidValue.String())
liberr.ErrIsNil(ctx, err)
}
// 5、如果与原来班组长的补卡申请未处理完毕那么就由新的班组长接任处理
_, err = g.DB().Model("bus_reissue_a_card").
Where("ganger", originalOpenid).
Where("ganger_opinion", "1").
Update(g.Map{"ganger": req.Openid})
liberr.ErrIsNil(ctx, err, "新增失败")
////如果是离场就操作一下施工人员,并且删除成员
//if req.SiteNum == "2" {
// g2 := g.Map{
// "leave_date": tool.New().GetFormattedDateTime(time.Now()),
// "team_id": nil,
// "project_id": nil,
// "if_management": nil,
// }
// _, err = dao.BusConstructionUser.Ctx(ctx).Where("openid", req.Openid).Update(g2)
// //1、查询数据
// value, err := dao.SysProjectTeamMember.Ctx(ctx).WherePri(req.Id).Fields("openid").Value()
// //2、更新数据
// _, err = dao.BusConstructionUser.Ctx(ctx).Where("openid", value.String()).Update(g.Map{"team_id": nil, "if_management": ""})
// liberr.ErrIsNil(ctx, err, "删除失败")
// //3、删除成员
// _, err = dao.SysProjectTeamMember.Ctx(ctx).Delete(dao.SysProjectTeamMember.Columns().Id+" = ", req.Id)
// liberr.ErrIsNil(ctx, err, "删除失败")
//}
liberr.ErrIsNil(ctx, err, "修改失败")
})
return err
})
return
}
// OpenidByDelFunc 根据openid查询用户删除班组长角色
func OpenidByDelFunc(ctx context.Context, openid string) error {
v, err := dao.BusConstructionUser.Ctx(ctx).Where(dao.BusConstructionUser.Columns().Openid, openid).Fields("id").Value()
_, err = g.DB().Model("sys_wechat_user_role").Ctx(ctx).
Where("user_id", v).
Where("role_id = 4").
Delete("user_id", v)
return err
}
// OpenidByAddFunc 根据openid查询用户增加班组长角色
func OpenidByAddFunc(ctx context.Context, openid string) error {
// 根据openid去获取到微信用户的主键ID
v, err := dao.BusConstructionUser.Ctx(ctx).Where(dao.BusConstructionUser.Columns().Openid, openid).Fields("id").Value()
liberr.ErrIsNil(ctx, err)
// 给当前用户追加班组长角色
var roleIds []int64
roleIds = append(roleIds, 4)
err = logic2.InsertRoleModuleFunc(ctx, roleIds, v.Int64())
return err
}
// 删除先不用给干掉
func (s *sSysProjectTeamMember) Delete(ctx context.Context, ids []int64) (err error) {
//err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
// //err = g.Try(ctx, func(ctx context.Context) {
// // for _, dataId := range ids {
// // //1、查询数据
// // value, err := dao.SysProjectTeamMember.Ctx(ctx).WherePri(dataId).Fields("openid").Value()
// // //2、更新数据
// // g2 := g.Map{
// // "leave_date": tool.New().GetFormattedDateTime(time.Now()),
// // "team_id": nil,
// // "if_management": nil,
// // }
// // _, err = dao.BusConstructionUser.Ctx(ctx).Where("openid", value.String()).Update(g2)
// // liberr.ErrIsNil(ctx, err, "删除失败")
// // }
// // //3、删除成员
// // _, err = dao.SysProjectTeamMember.Ctx(ctx).Delete(dao.SysProjectTeamMember.Columns().Id+" in (?)", ids)
// // liberr.ErrIsNil(ctx, err, "删除失败")
// //})
// //return err
//})
return err
}

View File

@ -0,0 +1,322 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-30 15:24:06
// 生成路径: internal/app/wxApplet/logic/sys_project_team_squad.go
// 生成人gfast
// desc:站班会
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"errors"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
busFolderFile "github.com/tiger1103/gfast/v3/internal/app/system/logic/busFolderFile"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
"strings"
)
func init() {
service.RegisterSysProjectTeamSquad(New())
}
func New() *sSysProjectTeamSquad {
return &sSysProjectTeamSquad{}
}
type sSysProjectTeamSquad struct{}
func (s *sSysProjectTeamSquad) SelectByOpenidTeamSquadSearch(ctx context.Context, req *wxApplet.SelectByOpenidTeamSquadSearchReq) (listRes *wxApplet.SelectByOpenidTeamSquadSearchRes, err error) {
listRes = new(wxApplet.SelectByOpenidTeamSquadSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.SysProjectTeamSquad.Ctx(ctx).WithAll().As("a").
LeftJoin("bus_construction_user as b on a.compere_id = b.openid").
Fields(
"DISTINCT a.id as s,a.*," +
"CASE WHEN b.user_name IS NULL OR b.user_name = '' THEN b.nick_name ELSE b.user_name END AS compere_name")
if req.Openid != "" {
m = m.Where("a."+dao.SysProjectTeamSquad.Columns().CompereId, req.Openid)
}
//创建时间模糊查询
if req.MeetingDate != "" {
m = m.Where("a."+dao.SysProjectTeamSquad.Columns().MeetingDate+" like ?", "%"+req.MeetingDate+"%")
}
if len(req.DateRange) != 0 {
m = m.Where("a."+dao.SysProjectTeamSquad.Columns().CreatedAt+" >=? AND "+"a."+dao.SysProjectTeamSquad.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
array, err := m.Array()
listRes.Total = len(array)
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.SysProjectTeamSquadInfoRes
err = m.Fields(wxApplet.SysProjectTeamSquadSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.SysProjectTeamSquadListRes, len(res))
for k, v := range res {
////单独获取参与人的名称
//str := ""
//split := strings.Split(v.ParticipantId, ",")
//for i := range split {
// str = str + "'" + split[i] + "',"
// if i == len(split)-1 {
// str = str + "'" + split[i] + "'"
// } else {
// str = str + "'" + split[i] + "',"
// }
//}
//name, _ := dao.BusConstructionUser.Ctx(ctx).
// Where("openid in (" + str + ")").
// Fields("GROUP_CONCAT(CASE WHEN user_name IS NULL OR user_name = '' THEN nick_name ELSE user_name END) AS participant_name").Value()
listRes.List[k] = &model.SysProjectTeamSquadListRes{
Id: v.Id,
TeamId: v.TeamId,
MeetingDate: v.MeetingDate,
CompereId: v.CompereId,
ParticipantId: v.ParticipantId,
Content: v.Content,
Picture: v.Picture,
CreatedAt: v.CreatedAt,
TeamName: v.TeamName,
LabourserviceName: v.LabourserviceName,
CompereName: v.CompereName,
//ParticipantName: name.String(),
}
}
})
return
}
func (s *sSysProjectTeamSquad) List(ctx context.Context, req *wxApplet.SysProjectTeamSquadSearchReq) (listRes *wxApplet.SysProjectTeamSquadSearchRes, err error) {
listRes = new(wxApplet.SysProjectTeamSquadSearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.SysProjectTeamSquad.Ctx(ctx).WithAll().As("a").
LeftJoin("bus_construction_user as b on a.compere_id = b.openid").
Fields(
"DISTINCT a.id as s,a.*," +
"CASE WHEN b.user_name IS NULL OR b.user_name = '' THEN b.nick_name ELSE b.user_name END AS compere_name")
if req.ProjectId != "" {
m = m.Where("a."+dao.SysProjectTeamSquad.Columns().ProjectId, req.ProjectId)
}
//创建时间模糊查询
if req.MeetingDate != "" {
m = m.Where("a."+dao.SysProjectTeamSquad.Columns().MeetingDate+" like ?", "%"+req.MeetingDate+"%")
}
////创建时间模糊查询
//if req.CreatedAt != "" {
// date := tool.New().GetFormattedDate(gconv.Time(req.CreatedAt))
// m = m.Where("a."+dao.SysProjectTeamSquad.Columns().CreatedAt+" like ?", "%"+date+"%")
//}
if len(req.DateRange) != 0 {
m = m.Where("a."+dao.SysProjectTeamSquad.Columns().CreatedAt+" >=? AND "+"a."+dao.SysProjectTeamSquad.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
array, err := m.Array()
listRes.Total = len(array)
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.SysProjectTeamSquadInfoRes
err = m.Fields(wxApplet.SysProjectTeamSquadSearchRes{}).Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.SysProjectTeamSquadListRes, len(res))
for k, v := range res {
////单独获取参与人的名称
//str := ""
//split := strings.Split(v.ParticipantId, ",")
//for i := range split {
// str = str + "'" + split[i] + "',"
// if i == len(split)-1 {
// str = str + "'" + split[i] + "'"
// } else {
// str = str + "'" + split[i] + "',"
// }
//}
//name, _ := dao.BusConstructionUser.Ctx(ctx).
// Where("openid in (" + str + ")").
// Fields("GROUP_CONCAT(CASE WHEN user_name IS NULL OR user_name = '' THEN nick_name ELSE user_name END) AS participant_name").Value()
listRes.List[k] = &model.SysProjectTeamSquadListRes{
Id: v.Id,
TeamId: v.TeamId,
MeetingDate: v.MeetingDate,
CompereId: v.CompereId,
ParticipantId: v.ParticipantId,
Content: v.Content,
Picture: v.Picture,
CreatedAt: v.CreatedAt,
TeamName: v.TeamName,
LabourserviceName: v.LabourserviceName,
CompereName: v.CompereName,
//ParticipantName: name.String(),
}
}
})
return
}
func (s *sSysProjectTeamSquad) GetById(ctx context.Context, id int64) (res *model.SysProjectTeamSquadInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.SysProjectTeamSquad.Ctx(ctx).WithAll().As("a").
LeftJoin("bus_construction_user as b on a.compere_id = b.openid").
Fields(
"a.*,"+
"CASE WHEN b.user_name IS NULL OR b.user_name = '' THEN b.nick_name ELSE b.user_name END AS compere_name").
Where("a."+dao.SysProjectTeamSquad.Columns().Id, id).Scan(&res)
//单独获取参与人的名称
str := ""
split := strings.Split(res.ParticipantId, ",")
for i := range split {
str = str + "'" + split[i] + "',"
if i == len(split)-1 {
str = str + "'" + split[i] + "'"
} else {
str = str + "'" + split[i] + "',"
}
}
name, _ := dao.BusConstructionUser.Ctx(ctx).
Where("openid in (" + str + ")").
Fields("GROUP_CONCAT(CASE WHEN user_name IS NULL OR user_name = '' THEN nick_name ELSE user_name END) AS participant_name").Value()
res.ParticipantName = name.String()
liberr.ErrIsNil(ctx, err, "获取信息失败")
})
return
}
func (s *sSysProjectTeamSquad) Add(ctx context.Context, req *wxApplet.SysProjectTeamSquadAddReq) (err error) {
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
//err = g.Try(ctx, func(ctx context.Context) {
//1、校验当前人是否在此班组下
count, err := dao.SysProjectTeamMember.Ctx(ctx).Where("team_id", req.TeamId).Where("openid", req.CompereId).Count()
if count == 0 {
err = errors.New("操作人与班组有误!")
}
splitStr := strings.Split(req.Picture, ",")
req.Picture = ""
for _, img := range splitStr {
req.Picture = req.Picture + strings.ReplaceAll(img, "/file", "/wxfile") + ","
}
req.Picture = strings.TrimRight(req.Picture, ",")
//2、数据组装
value, err := dao.SysProjectTeam.Ctx(ctx).WherePri(req.TeamId).Fields("project_id").Value()
squad := do.SysProjectTeamSquad{
TeamId: req.TeamId,
ProjectId: value,
MeetingDate: req.MeetingDate,
CompereId: req.CompereId,
ParticipantId: req.ParticipantId,
Content: req.Content,
Picture: req.Picture,
}
//3、填充 班组名称、劳务公司名称
var wxUserEntity *model.BusConstructionUserInfoRes
dao.BusConstructionUser.Ctx(ctx).Where("openid", req.CompereId).Scan(&wxUserEntity)
if wxUserEntity != nil {
//获取班组名称
var spt *model.SysProjectTeamInfoRes
err := dao.SysProjectTeam.Ctx(ctx).WherePri(req.TeamId).Scan(&spt)
if err != nil || spt == nil {
err = errors.New("代码错误,请联系管理员!")
//return
}
//bzName, _ := dao.SysProjectTeam.Ctx(ctx).WherePri(req.TeamId).Fields("name").Value()
//获取劳务名称
lwName, _ := dao.BusLabourservice.Ctx(ctx).WherePri(wxUserEntity.LabourserviceId).Fields("name").Value()
squad.ProjectId = spt.ProjectId
squad.TeamName = spt.Name
squad.LabourserviceName = lwName.String()
}
//4、新增数据
dataInfo, err := dao.SysProjectTeamSquad.Ctx(ctx).Insert(squad)
id, err := dataInfo.LastInsertId()
////百度转高德
//split := strings.Split(req.LongitudeAndLatitude, ",")
//lon, err := strconv.ParseFloat(split[0], 64)
//lat, err := strconv.ParseFloat(split[1], 64)
//gcj021, gcj022 := coryCommon.BD09toGCJ02(lon, lat)
//req.LongitudeAndLatitude = fmt.Sprintf("%.2f", gcj021) + "," + fmt.Sprintf("%.2f", gcj022)
////逆编码
//var res *coryCommon.InverseGeocodingRep
//we := coryCommon.InverseGeocoding(req.LongitudeAndLatitude)
//bodyData := []byte(we)
//err = json.Unmarshal(bodyData, &res)
//if err != nil {
// fmt.Println("Failed to parse JSON data:", err)
// return err
//}
////s2 := squad.TeamName.(string)
//site := res.Regeocode.FormattedAddress
//v, err := dao.BusConstructionUser.Ctx(ctx).Where("openid", req.CompereId).Fields("IFNULL(user_name,nick_name) as bzzName").Value()
//meetingDate := req.MeetingDate.Format("Y-m-d")
//给图片添加水印
//go coryCommon.MultiPicture(req.Picture, v.String(), meetingDate, site, squad.TeamName.(string), squad.LabourserviceName.(string))
//5、将图片信息添加到图库中
pe := strings.Split(req.Picture, ",")
err = busFolderFile.New().AllPicture(ctx,
pe,
2,
dao.SysProjectTeamSquad.Table(),
id,
"2",
req.CompereId,
"",
value.Int64(),
)
liberr.ErrIsNil(ctx, err, "添加失败")
return err
})
return
}
func (s *sSysProjectTeamSquad) Edit(ctx context.Context, req *wxApplet.SysProjectTeamSquadEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.SysProjectTeamSquad.Ctx(ctx).WherePri(req.Id).Update(do.SysProjectTeamSquad{})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sSysProjectTeamSquad) Delete(ctx context.Context, ids []int64) (err error) {
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
err = g.Try(ctx, func(ctx context.Context) {
//删除图库
err = busFolderFile.New().AllDelete(
ctx,
dao.SysProjectTeamSquad.Table(),
ids,
)
//删除站班会
_, err = dao.SysProjectTeamSquad.Ctx(ctx).Delete(dao.SysProjectTeamSquad.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return err
})
return
}

View File

@ -0,0 +1,143 @@
// ==========================================================================
// GFast自动生成logic操作代码。
// 生成日期2023-08-21 09:19:15
// 生成路径: internal/app/wxApplet/logic/sys_user_project_relevancy.go
// 生成人gfast
// desc:系统用户与项目关联
// company:云南奇讯科技有限公司
// ==========================================================================
package logic
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/tiger1103/gfast/v3/api/v1/common/coryCommon"
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
"github.com/tiger1103/gfast/v3/internal/app/system/consts"
ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/model/do"
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
"github.com/tiger1103/gfast/v3/library/liberr"
tool "github.com/tiger1103/gfast/v3/utility/coryUtils"
)
func init() {
service.RegisterSysUserProjectRelevancy(New())
}
func New() *sSysUserProjectRelevancy {
return &sSysUserProjectRelevancy{}
}
type sSysUserProjectRelevancy struct{}
func (s *sSysUserProjectRelevancy) List(ctx context.Context, req *wxApplet.SysUserProjectRelevancySearchReq) (listRes *wxApplet.SysUserProjectRelevancySearchRes, err error) {
listRes = new(wxApplet.SysUserProjectRelevancySearchRes)
err = g.Try(ctx, func(ctx context.Context) {
m := dao.SysUserProjectRelevancy.Ctx(ctx).WithAll().As("a").
LeftJoin("sys_project as b on a.project_id = b.id").
Fields(`a.*,
CASE WHEN (b.short_name IS NULL OR b.project_name = '') THEN b.project_name ELSE b.short_name END AS project_name,
b.lng,b.lat,b.type,b.project_site`)
if req.UserId != "" {
m = m.Where("a."+dao.SysUserProjectRelevancy.Columns().UserId+" = ?", gconv.Int64(req.UserId))
}
if req.ProjectId != "" {
m = m.Where("a."+dao.SysUserProjectRelevancy.Columns().ProjectId+" = ?", gconv.Int64(req.ProjectId))
}
if len(req.DateRange) != 0 {
m = m.Where("a."+dao.SysUserProjectRelevancy.Columns().CreatedAt+" >=? AND "+dao.SysUserProjectRelevancy.Columns().CreatedAt+" <=?", req.DateRange[0], req.DateRange[1])
}
// 创建时间模糊查询
if req.CreatedAt != "" {
date := tool.New().GetFormattedDate(gconv.Time(req.CreatedAt))
m = m.Where("a."+dao.SysUserProjectRelevancy.Columns().CreatedAt+" like ?", "%"+date+"%")
}
array, err := m.Array()
listRes.Total = len(array)
liberr.ErrIsNil(ctx, err, "获取总行数失败")
if req.PageNum == 0 {
req.PageNum = 1
}
listRes.CurrentPage = req.PageNum
if req.PageSize == 0 {
req.PageSize = consts.PageSize
}
order := "id desc"
if req.OrderBy != "" {
order = req.OrderBy
}
var res []*model.SysUserProjectRelevancyInfoRes
err = m.Page(req.PageNum, req.PageSize).Order(order).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取数据失败")
listRes.List = make([]*model.SysUserProjectRelevancyListRes, len(res))
for k, v := range res {
listRes.List[k] = &model.SysUserProjectRelevancyListRes{
Id: v.Id,
UserId: v.UserId,
ProjectId: v.ProjectId,
CreatedAt: v.CreatedAt,
ProjectName: v.ProjectName,
Lng: v.Lng,
Lat: v.Lat,
Type: v.Type,
ProjectSite: v.ProjectSite,
}
}
})
return
}
func (s *sSysUserProjectRelevancy) GetById(ctx context.Context, id int64) (res *model.SysUserProjectRelevancyInfoRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
err = dao.SysUserProjectRelevancy.Ctx(ctx).WithAll().As("a").
LeftJoin("sys_project as b on a.project_id = b.id").
Fields("a.*,b.project_name,b.lng,b.lat").
Where("a."+dao.SysUserProjectRelevancy.Columns().Id, id).Scan(&res)
liberr.ErrIsNil(ctx, err, "获取信息失败")
// 获取创建人 更新人
by := coryCommon.New().CreateByOrUpdateBy(ctx, res)
infoRes := by.(model.SysUserProjectRelevancyInfoRes)
res = &infoRes
})
return
}
func (s *sSysUserProjectRelevancy) Add(ctx context.Context, req *wxApplet.SysUserProjectRelevancyAddReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
name := ct.New().GetLoginUser(ctx).Id
_, err = dao.SysUserProjectRelevancy.Ctx(ctx).Insert(do.SysUserProjectRelevancy{
UserId: req.UserId,
ProjectId: req.ProjectId,
CreateBy: name,
})
liberr.ErrIsNil(ctx, err, "添加失败")
})
return
}
func (s *sSysUserProjectRelevancy) Edit(ctx context.Context, req *wxApplet.SysUserProjectRelevancyEditReq) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
name := ct.New().GetLoginUser(ctx).Id
_, err = dao.SysUserProjectRelevancy.Ctx(ctx).WherePri(req.Id).Update(do.SysUserProjectRelevancy{
UserId: req.UserId,
ProjectId: req.ProjectId,
UpdateBy: name,
})
liberr.ErrIsNil(ctx, err, "修改失败")
})
return
}
func (s *sSysUserProjectRelevancy) Delete(ctx context.Context, ids []int64) (err error) {
err = g.Try(ctx, func(ctx context.Context) {
_, err = dao.SysUserProjectRelevancy.Ctx(ctx).Delete(dao.SysUserProjectRelevancy.Columns().Id+" in (?)", ids)
liberr.ErrIsNil(ctx, err, "删除失败")
})
return
}