初始
This commit is contained in:
@ -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
|
||||
}
|
Reference in New Issue
Block a user