fonchain-fiee/pkg/service/recruit/recruit.go
2025-02-19 14:24:15 +08:00

2551 lines
67 KiB
Go

package recruit
import (
"context"
"encoding/json"
"errors"
"fmt"
"io/ioutil"
"mime/multipart"
"net/http"
"path/filepath"
"regexp"
"strings"
"sync"
"time"
"dubbo.apache.org/dubbo-go/v3/common/logger"
"github.com/fonchain_enterprise/fonchain-main/api/account"
"github.com/fonchain_enterprise/fonchain-main/api/department"
"github.com/fonchain_enterprise/fonchain-main/api/e_card"
"github.com/fonchain_enterprise/fonchain-main/api/position"
"github.com/fonchain_enterprise/fonchain-main/api/recruit"
"github.com/fonchain_enterprise/fonchain-main/pkg/config"
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
"github.com/fonchain_enterprise/fonchain-main/pkg/model"
"github.com/fonchain_enterprise/fonchain-main/pkg/model/login"
"github.com/fonchain_enterprise/fonchain-main/pkg/model/query"
"github.com/fonchain_enterprise/fonchain-main/pkg/model/union"
"github.com/fonchain_enterprise/fonchain-main/pkg/serializer"
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
account2 "github.com/fonchain_enterprise/fonchain-main/pkg/service/account"
"github.com/fonchain_enterprise/fonchain-main/pkg/service/approval"
employee1 "github.com/fonchain_enterprise/fonchain-main/pkg/utils/employee"
"github.com/fonchain_enterprise/utils/objstorage"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
uuid "github.com/satori/go.uuid"
)
var (
wg sync.WaitGroup
)
func PostSubmit(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
//获取环境变量
rep, err := service.GrpcRecruitClientImpl.PostSubmit(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PostCancelUp(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
tempPosition := &recruit.PositionProto{Weigh: 0}
tempEntity := &recruit.EntityProto{Position: tempPosition}
dealProcessProto.Entity = tempEntity
rep, err := service.GrpcRecruitClientImpl.PostSetWeigh(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PostUp(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
tempPosition := &recruit.PositionProto{Weigh: int32(time.Now().Unix())}
tempEntity := &recruit.EntityProto{Position: tempPosition}
dealProcessProto.Entity = tempEntity
rep, err := service.GrpcRecruitClientImpl.PostSetWeigh(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PostPass(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.PostPass(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PostReject(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.PostReject(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PostCheck(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.PostCheck(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PostClose(c *gin.Context) {
var postCloseReq req
if err := c.ShouldBind(&postCloseReq); err != nil {
logger.Errorf("postCloseReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Type = "post-approve"
dealProcessProto.Command = "position-terminate"
dealProcessProto.Id = postCloseReq.Id
rep, err := service.GrpcRecruitClientImpl.PostCheck(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
type resume struct {
ResumeFile string `json:"resumeFile"`
ResumeFileName string `json:"resumeFileName"`
Files []File `json:"files"` //附件
}
type File struct {
File string `json:"file"`
FileName string `json:"fileName"`
}
type req struct {
Id int64 `json:"id"`
PositionId int64 `json:"positionId"`
ResumeFile []string `json:"resumeFile"`
InterviewTime string `json:"interviewTime"`
TerminateReason string `json:"terminateReason"`
Name string `json:"name"`
Mobile string `json:"mobile"`
EmployeeType string `json:"employeeType"`
EmployeeNo string `json:"employeeNo"`
EntryTime string `json:"entryTime"`
InterviewFile string `json:"interviewFile"`
Resumes []resume `json:"resumes"`
}
func ResumeSubmitV2(c *gin.Context) {
var resumeSubmitReq req
if err := c.ShouldBind(&resumeSubmitReq); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
entityProto := &recruit.EntityProto{}
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
//user := &recruit.UserProto{
// Id: 1,
// Nickname: "张三",
//}
//dealProcessProto.User = user
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-submit"
for _, v := range resumeSubmitReq.Resumes {
resumeProto := &recruit.ResumeProto{
PositionId: resumeSubmitReq.PositionId,
ResumeFile: v.ResumeFile,
ResumeFileName: v.ResumeFileName,
}
//增加附件
if len(v.Files) > 0 {
for _, f := range v.Files {
resumeProto.Files = append(resumeProto.Files, &recruit.FileProto{
File: f.File,
FileName: f.FileName,
})
}
}
entityProto.Resume = append(entityProto.Resume, resumeProto)
}
dealProcessProto.Entity = entityProto
rep, err := service.GrpcRecruitClientImpl.ResumeSubmit(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeSubmit(c *gin.Context) {
var resumeSubmitReq req
if err := c.ShouldBind(&resumeSubmitReq); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
entityProto := &recruit.EntityProto{}
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
//user := &recruit.UserProto{
// Id: 1,
// Nickname: "张三",
//}
//dealProcessProto.User = user
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-submit"
for _, v := range resumeSubmitReq.ResumeFile {
resumeProto := &recruit.ResumeProto{
PositionId: resumeSubmitReq.PositionId,
ResumeFile: v,
}
entityProto.Resume = append(entityProto.Resume, resumeProto)
}
dealProcessProto.Entity = entityProto
rep, err := service.GrpcRecruitClientImpl.ResumeSubmit(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func GiveResumeOffer(c *gin.Context) {
var resumePassReq req
if err := c.ShouldBind(&resumePassReq); err != nil {
logger.Errorf("resumePassReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
userInfo := login.GetUserInfoFromC(c)
resumeReq := recruit.ResumeReq{ResumeId: resumePassReq.Id, PageSize: 1, CurPage: 1}
rep, err := service.GrpcRecruitClientImpl.ResumePageQuery(context.Background(), &resumeReq)
if err != nil {
service.Error(c, e.Error, err)
return
}
if len(rep.Resumes) <= 0 {
service.Error(c, e.Error, errors.New("没有对应的简历"))
return
}
resumeRes := rep.Resumes[0]
positionInfo, err := service.GrpcRecruitClientImpl.PositionDetail(context.Background(), &recruit.PositionDetailReq{Id: int32(resumeRes.PositionId)})
if err != nil {
service.Error(c, e.Error, err)
return
}
if positionInfo.Code != 0 {
service.Error(c, e.Error, errors.New(positionInfo.Msg))
return
}
fmt.Println("岗位和部门", positionInfo.Position.ApplierPosition, positionInfo.Position.ApplierDepartment)
err = approval.PassOfferApprove(userInfo, uint64(resumePassReq.Id))
if err != nil {
logger.Errorf("resumePassReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
registerUser := union.User{
Domain: "fontree",
NickName: resumeRes.Name,
TelNum: resumeRes.Mobile,
Status: "notactive",
EnterDate: time.Now().Format(model.DateFormat),
PositionUsers: nil,
JobNum: resumeRes.EmployeeNo,
Password: e.DEFAULT_PWD,
Source: "entryApplication",
}
registerUser.Operator = &account.Operator{
ID: uint32(positionInfo.Position.ApplierId),
Name: positionInfo.Position.Applier,
}
registerUser.PositionUsers = make([]*position.PositionUser, 0)
if positionInfo.Position != nil && positionInfo.Position.ApplyPositionId != 0 && positionInfo.Position.ApplyDepartmentId != 0 {
logger.Error("招聘-----------使用部门岗位id创建帐号")
fmt.Println("招聘-----------使用部门岗位id创建帐号")
registerUser.PositionUsers = append(registerUser.PositionUsers, &position.PositionUser{PositionID: uint64(positionInfo.Position.ApplyPositionId), DepartmentID: uint64(positionInfo.Position.ApplyDepartmentId)})
} else {
logger.Error("招聘-----------使用部门岗位名称创建帐号")
fmt.Println("招聘-----------使用部门岗位名称创建帐号")
registerUser.PositionUsers = append(registerUser.PositionUsers, &position.PositionUser{PositionName: positionInfo.Position.Post, DepartmentName: positionInfo.Position.ApplierDepartment})
}
err, user := account2.UserRegisters(c, registerUser)
if err != nil {
service.Error(c, e.Error, err)
return
}
//创建员工档案
err = employee1.CreateAnEmployeeProfile(c, user.ID, registerUser, rep, registerUser.Operator)
if err != nil {
service.Error(c, e.Error, err)
return
}
// 生成员工电子名片
var addChainRequest *e_card.AddChainRequest
addChainRequest, err = account2.GetECardInfo(user.ID, "人才招聘-确认入职")
if err != nil {
return
}
fmt.Println("++++++++++++++++++++ addChainRequest =============================")
fmt.Printf("addChainRequest : %+v\n", addChainRequest)
_, err = service.ECardProvider.AddChain(context.Background(), addChainRequest)
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: nil,
})
return
}
func ResumePass(c *gin.Context) {
var resumePassReq req
if err := c.ShouldBind(&resumePassReq); err != nil {
logger.Errorf("resumePassReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumePassReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-pass"
rep, err := service.GrpcRecruitClientImpl.ResumePass(context.Background(), &dealProcessProto)
fmt.Println("err", err)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeReject(c *gin.Context) {
var resumeRejectReq req
if err := c.ShouldBind(&resumeRejectReq); err != nil {
logger.Errorf("resumeRejectReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeRejectReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-reject"
rep, err := service.GrpcRecruitClientImpl.ResumeReject(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeInterviewTime(c *gin.Context) {
var resumeInterviewTimeReq req
if err := c.ShouldBind(&resumeInterviewTimeReq); err != nil {
logger.Errorf("resumeInterviewTimeReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeInterviewTimeReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-edit"
entity := &recruit.EntityProto{}
resume := &recruit.ResumeProto{
InterviewTime: resumeInterviewTimeReq.InterviewTime, //面试时间传参 虽然是数组但是只有一个面试时间
}
entity.Resume = append(entity.Resume, resume)
dealProcessProto.Entity = entity
rep, err := service.GrpcRecruitClientImpl.ResumeInterviewTime(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeModifyInterviewTime(c *gin.Context) {
var resumeModifyInterviewTimeReq req
if err := c.ShouldBind(&resumeModifyInterviewTimeReq); err != nil {
logger.Errorf("resumeModifyInterviewTimeReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeModifyInterviewTimeReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-modify-interview-time"
entity := &recruit.EntityProto{}
resume := &recruit.ResumeProto{
InterviewTime: resumeModifyInterviewTimeReq.InterviewTime, //修改面试时间传参
}
entity.Resume = append(entity.Resume, resume)
dealProcessProto.Entity = entity
rep, err := service.GrpcRecruitClientImpl.ResumeModifyInterviewTime(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeModifyInfo(c *gin.Context) {
var resumeModifyInfoReq req
if err := c.ShouldBind(&resumeModifyInfoReq); err != nil {
logger.Errorf("resumeModifyInfoReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeModifyInfoReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-modify-info"
entity := &recruit.EntityProto{}
resume := &recruit.ResumeProto{
Name: resumeModifyInfoReq.Name,
Mobile: resumeModifyInfoReq.Mobile,
EmployeeType: resumeModifyInfoReq.EmployeeType,
EmployeeNo: resumeModifyInfoReq.EmployeeNo,
EntryTime: resumeModifyInfoReq.EntryTime,
InterviewFile: resumeModifyInfoReq.InterviewFile,
}
entity.Resume = append(entity.Resume, resume)
dealProcessProto.Entity = entity
rep, err := service.GrpcRecruitClientImpl.ResumeModifyInfo(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeInterviewPass(c *gin.Context) {
var resumeInterviewPassReq req
if err := c.ShouldBind(&resumeInterviewPassReq); err != nil {
logger.Errorf("resumeInterviewPassReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeInterviewPassReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-interview-pass"
rep, err := service.GrpcRecruitClientImpl.ResumeInterviewPass(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeInterviewReject(c *gin.Context) {
var resumeInterviewRejectReq req
if err := c.ShouldBind(&resumeInterviewRejectReq); err != nil {
logger.Errorf("resumeInterviewRejectReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeInterviewRejectReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-interview-reject"
rep, err := service.GrpcRecruitClientImpl.ResumeInterviewReject(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func ResumeTerminate(c *gin.Context) {
var resumeTerminateReq req
if err := c.ShouldBind(&resumeTerminateReq); err != nil {
logger.Errorf("resumeTerminateReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
//查看用户是否已经入职,如果是已经入职了再终止简历,需要删除用户账户
var resumeReq recruit.ResumeReq
resumeReq.CurPage = 1
resumeReq.PageSize = 1
resumeReq.ResumeId = resumeTerminateReq.Id
resumePageQueryRep, err := service.GrpcRecruitClientImpl.ResumePageQuery(context.Background(), &resumeReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if resumePageQueryRep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: resumePageQueryRep.Msg,
Status: e.Failed,
})
return
}
//如果是已入职了,需要删除用户账户
if len(resumePageQueryRep.Resumes) != 0 {
if resumePageQueryRep.Resumes[0].StatusName == "已入职" {
//获取到用户id
//电话存在
if resumePageQueryRep.Resumes[0].Mobile != "" {
//先根据用户电话查询到id
var userByTelRequest account.UserByTelRequest
userByTelRequest.Tel = resumePageQueryRep.Resumes[0].Mobile
userByTelRep, err := service.AccountProvider.UserByTel(context.Background(), &userByTelRequest)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
//删除用户
var removeRequest account.RemoveRequest
if userByTelRep.Info != nil {
removeRequest.ID = userByTelRep.Info.ID
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("账户系统用户信息不存在").Error(),
Status: e.Failed,
})
return
}
_, err = service.AccountProvider.Remove(context.Background(), &removeRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
//岗位删除
positionReq := &position.RemoveUserRequest{
Domain: "",
ID: removeRequest.ID,
}
_, err1 := service.PositionProvider.RemoveUser(c, positionReq)
if err1 != nil {
service.Error(c, e.Error, err1)
return
}
//部门删除
DepartmentReq := &department.RemoveUserRequest{
Domain: "",
LeaderID: removeRequest.ID,
}
_, err2 := service.DepartmentProvider.RemoveUser(c, DepartmentReq)
if err2 != nil {
service.Error(c, e.Error, err2)
return
}
// 简历终止
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeTerminateReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-terminate"
entity := &recruit.EntityProto{}
resume := &recruit.ResumeProto{
TerminateReason: resumeTerminateReq.TerminateReason,
}
entity.Resume = append(entity.Resume, resume)
dealProcessProto.Entity = entity
rep, err := service.GrpcRecruitClientImpl.ResumeTerminate(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("用户简历信息缺失").Error(),
Status: e.Failed,
})
return
}
} else {
// 简历终止
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeTerminateReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-terminate"
entity := &recruit.EntityProto{}
resume := &recruit.ResumeProto{
TerminateReason: resumeTerminateReq.TerminateReason,
}
entity.Resume = append(entity.Resume, resume)
dealProcessProto.Entity = entity
rep, err := service.GrpcRecruitClientImpl.ResumeTerminate(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
}
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("用户简历信息缺失").Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: resumePageQueryRep,
})
}
type resumeUploadDetail struct {
Id int64 `json:"id"`
Name string `json:"name"`
Mobile string `json:"mobile"`
EmployeeType string `json:"employeeType"`
EmployeeNo string `json:"employeeNo"`
EntryTime string `json:"entryTime"`
InterviewFile string `json:"interviewFile"`
InterviewTime string `json:"interviewTime"`
}
func ResumeUploadDetail(c *gin.Context) {
var resumeUploadDetailReq resumeUploadDetail
if err := c.ShouldBind(&resumeUploadDetailReq); err != nil {
logger.Errorf("resumeUploadDetailReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
listRes, err := service.AccountProvider.ListV2(c, &account.ListV2Request{JobNum: resumeUploadDetailReq.EmployeeNo})
if err != nil {
service.Error(c, e.Error, err)
return
}
if listRes.Count >= 1 {
service.Error(c, e.Error, errors.New("当前工号已经被占用"))
return
}
var dealProcessProto recruit.DealProcessProto
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
user := &recruit.UserProto{
Id: int64(userInfo.ID),
Nickname: userInfo.NickName,
}
dealProcessProto.User = user
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
dealProcessProto.Id = resumeUploadDetailReq.Id
dealProcessProto.Type = "resume-approve"
dealProcessProto.Command = "resume-edit"
entityProto := &recruit.EntityProto{}
resumeProto := &recruit.ResumeProto{}
resumeProto.Name = resumeUploadDetailReq.Name
resumeProto.Mobile = resumeUploadDetailReq.Mobile
resumeProto.EmployeeType = resumeUploadDetailReq.EmployeeType
resumeProto.EmployeeNo = resumeUploadDetailReq.EmployeeNo
resumeProto.EntryTime = resumeUploadDetailReq.EntryTime
resumeProto.InterviewFile = resumeUploadDetailReq.InterviewFile
resumeProto.InterviewTime = resumeUploadDetailReq.InterviewTime
entityProto.Resume = append(entityProto.Resume, resumeProto)
dealProcessProto.Entity = entityProto
rep, err := service.GrpcRecruitClientImpl.ResumeUploadDetail(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func OfferSubmit(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.OfferSubmit(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func OfferPass(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.OfferPass(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func OfferReject(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.OfferReject(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func OfferCheck(c *gin.Context) {
var dealProcessProto recruit.DealProcessProto
if err := c.ShouldBind(&dealProcessProto); err != nil {
logger.Errorf("dealProcessProto ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.OfferCheck(context.Background(), &dealProcessProto)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
type Data struct {
Id int64 `json:"id"`
Applier string `json:"applier"`
ApplierId int64 `json:"applierId"`
ApplierPosition string `json:"applierPosition"`
ApplierDepartment string `json:"applierDepartment"`
Approver string `json:"approver"`
Copied string `json:"copied"`
Post string `json:"post"`
PostCapacity int32 `json:"postCapacity"`
PostRequirement string `json:"postRequirement"`
WantedDate string `json:"wantedDate"`
ApproveCountLast int32 `json:"approveCountLast"`
PostCountLast int32 `json:"postCountLast"`
ApproverIds []int64 `json:"approverIds"`
CopiedIds []int64 `json:"copiedIds"`
Status int32 `json:"status"`
ApplyPositionId int32 `json:"applyPositionId"`
ApplyDepartmentId int32 `json:"applyDepartmentId"`
SourceId int64 `json:"sourceId"`
CreatedTime string `json:"createdTime"`
CreatedBy string `json:"createdBy"`
UpdatedTime string `json:"updatedTime"`
UpdatedBy string `json:"updatedBy"`
StatusName string `json:"statusName"`
Weigh int32 `json:"weigh"`
RedNum int32 `json:"redNum"`
}
type DataRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*Data `json:"data"`
Count int32 `json:"count"`
}
//func PostQuery(c *gin.Context) {
// var postReq recruit.PostReq
// if err := c.ShouldBind(&postReq); err != nil {
// logger.Errorf("postReq ShouldBind err", err)
// service.ResponseMsg(c, e.SUCCESS, serializer.Response{
// Data: nil,
// Msg: err.Error(),
// Status: e.Failed,
// })
// return
// }
// rep, err := service.GrpcRecruitClientImpl.PostQuery(context.Background(), &postReq)
// if err != nil {
// service.ResponseMsg(c, e.SUCCESS, serializer.Response{
// Msg: err.Error(),
// Status: e.Failed,
// })
// return
// }
// if rep.Code == 1 {
// service.ResponseMsg(c, e.SUCCESS, serializer.Response{
// Msg: rep.Msg,
// Status: e.Failed,
// })
// return
// }
//
// //将返回的数据构造为符合规范的数据
// dataRep := &DataRep{}
//
// if rep != nil {
// dataRep.Code = rep.Code
// dataRep.Msg = rep.Msg
// dataRep.Count = rep.Count
// if len(rep.Posts) != 0 {
// for _, v := range rep.Posts {
// data := &Data{
// Id: v.Position.Id,
// Applier: v.Position.Applier,
// ApplierId: v.Position.ApplierId,
// ApplierPosition: v.Position.ApplierPosition,
// ApplierDepartment: v.Position.ApplierDepartment,
// Approver: v.Position.Approver,
// Copied: v.Position.Copied,
// Post: v.Position.Post,
// PostCapacity: v.Position.PostCapacity,
// PostRequirement: v.Position.PostRequirement,
// WantedDate: v.Position.WantedDate,
// ApproveCountLast: v.Position.ApproveCountLast,
// PostCountLast: v.Position.PostCountLast,
// ApproverIds: v.Position.ApproverIds,
// CopiedIds: v.Position.CopiedIds,
// Status: v.Position.Status,
// //SourceId: v.Position.SourceId,
// }
// dataRep.Data = append(dataRep.Data, data)
// }
// }
// }
//
// c.JSON(http.StatusOK, serializer.Response{
// Status: e.Ok,
// Code: e.SUCCESS,
// Data: dataRep,
// })
//}
//
//func ResumeQuery(c *gin.Context) {
// var postReq recruit.PostReq
// if err := c.ShouldBind(&postReq); err != nil {
// logger.Errorf("postReq ShouldBind err", err)
// service.ResponseMsg(c, e.SUCCESS, serializer.Response{
// Data: nil,
// Msg: err.Error(),
// Status: e.Failed,
// })
// return
// }
// rep, err := service.GrpcRecruitClientImpl.ResumeQuery(context.Background(), &postReq)
// if err != nil {
// service.ResponseMsg(c, e.SUCCESS, serializer.Response{
// Msg: err.Error(),
// Status: e.Failed,
// })
// return
// }
// if rep.Code == 1 {
// service.ResponseMsg(c, e.SUCCESS, serializer.Response{
// Msg: rep.Msg,
// Status: e.Failed,
// })
// return
// }
// c.JSON(http.StatusOK, serializer.Response{
// Status: e.Ok,
// Code: e.SUCCESS,
// Data: rep,
// })
//}
type OfferQueryData struct {
Id int64 `json:"id"`
ResumeId int64 `json:"resumeId"`
Applier string `json:"applier"`
BelongDepartment string `json:"belongDepartment"`
Post string `json:"post"`
Approver string `json:"approver"`
Copied string `json:"copied"`
Name string `json:"name"`
Mobile string `json:"mobile"`
EmployeeType string `json:"employeeType"`
EmployeeNo string `json:"employeeNo"`
EntryTime string `json:"entryTime"`
InterviewFile string `json:"interviewFile"`
ApproveCountLast int32 `json:"approveCountLast"`
ApproverIds []int64 `json:"approverIds"`
CopiedIds []int64 `json:"copiedIds"`
ResumeFile string `json:"resumeFile"`
Status int32 `json:"status"`
StatusName string `json:"statusName"`
}
type OfferQueryRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*OfferQueryData `json:"data"`
Count int32 `json:"count"`
}
func OfferQuery(c *gin.Context) {
var offerReq recruit.OfferReq
if err := c.ShouldBind(&offerReq); err != nil {
logger.Errorf("offerReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.OfferQuery(context.Background(), &offerReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &OfferQueryRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
dataRep.Count = rep.Count
if len(rep.Offers) != 0 {
for _, v := range rep.Offers {
data := &OfferQueryData{
Id: v.Id,
ResumeId: v.ResumeId,
Applier: v.Applier,
BelongDepartment: v.BelongDepartment,
Post: v.Post,
Approver: v.Approver,
Copied: v.Copied,
Name: v.Name,
Mobile: v.Mobile,
EmployeeType: v.EmployeeType,
EmployeeNo: v.EmployeeNo,
EntryTime: v.EntryTime,
InterviewFile: v.InterviewFile,
ApproveCountLast: v.ApproveCountLast,
ApproverIds: v.ApproverIds,
CopiedIds: v.CopiedIds,
ResumeFile: v.ResumeFile,
Status: v.Status,
StatusName: v.StatusName,
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: dataRep,
})
}
type DetailQueryData struct {
Id int64 `json:"id"`
Approver int64 `json:"approver"`
ApplyId int64 `json:"applyId"`
Status string `json:"status"`
QueryType string `json:"type"`
Result string `json:"result"`
RejectReason string `json:"employeeType"`
}
type DetailQueryRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*DetailQueryData `json:"data"`
Count int32 `json:"count"`
}
func DetailQuery(c *gin.Context) {
var detailReq recruit.DetailReq
if err := c.ShouldBind(&detailReq); err != nil {
logger.Errorf("detailReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.DetailQuery(context.Background(), &detailReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &DetailQueryRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
dataRep.Count = rep.Count
if len(rep.Details) != 0 {
for _, v := range rep.Details {
data := &DetailQueryData{
Id: v.Id,
Approver: v.Approver,
ApplyId: v.ApplyId,
Status: v.Status,
QueryType: v.Type,
Result: v.Result,
RejectReason: v.RejectReason,
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: dataRep,
})
}
type CopiedQueryData struct {
Id int64 `json:"id"`
Copied int64 `json:"copied"`
ApplyId int64 `json:"applyId"`
Status string `json:"status"`
RepType string `json:"type"`
}
type CopiedQueryRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*CopiedQueryData `json:"data"`
Count int32 `json:"count"`
}
func CopiedQuery(c *gin.Context) {
var copiedReq recruit.CopiedReq
if err := c.ShouldBind(&copiedReq); err != nil {
logger.Errorf("copiedReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.CopiedQuery(context.Background(), &copiedReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &CopiedQueryRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
dataRep.Count = rep.Count
if len(rep.Copies) != 0 {
for _, v := range rep.Copies {
data := &CopiedQueryData{
Id: v.Id,
Copied: v.Copied,
ApplyId: v.ApplyId,
Status: v.Status,
RepType: v.Type,
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: dataRep,
})
}
type ChangeRecordQueryData struct {
Id int64 `json:"id"`
ChangeId int64 `json:"changeId"`
ChangeTable string `json:"changeTable"`
ChangeField string `json:"changeField"`
Original string `json:"original"`
Present string `json:"present"`
Remark string `json:"remark"`
CreatedTime string `json:"createdTime"`
CreatedBy string `json:"createdBy"`
UpdatedTime string `json:"updatedTime"`
UpdatedBy string `json:"updatedBy"`
}
type ChangeRecordQueryRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*ChangeRecordQueryData `json:"data"`
}
func ChangeRecordQuery(c *gin.Context) {
var changeRecordReq recruit.ChangeRecordReq
if err := c.ShouldBind(&changeRecordReq); err != nil {
logger.Errorf("changeRecordReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.ChangeRecordQuery(context.Background(), &changeRecordReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &ChangeRecordQueryRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
if len(rep.Records) != 0 {
for _, v := range rep.Records {
data := &ChangeRecordQueryData{
Id: v.Id,
ChangeId: v.ChangeId,
ChangeTable: v.ChangeTable,
ChangeField: v.ChangeField,
Original: v.Original,
Present: v.Present,
Remark: v.Remark,
CreatedTime: v.CreatedTime,
CreatedBy: v.CreatedBy,
UpdatedTime: v.UpdatedTime,
UpdatedBy: v.UpdatedBy,
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: dataRep,
})
}
type StatusQueryData struct {
Type string `json:"type"`
State int32 `json:"state"`
Name string `json:"name"`
Alias string `json:"alias"`
}
type StatusQueryRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*StatusQueryData `json:"data"`
}
func DataInfo(c *gin.Context) {
var req *recruit.UserDataReq
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
userInfo := login.GetUserInfoFromC(c)
req.UserId = int32(userInfo.ID)
rep, err := service.GrpcRecruitClientImpl.UserData(context.Background(), req)
fmt.Println(rep, err)
fmt.Println("1-------------", err)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep.Data,
})
}
func StatusQuery(c *gin.Context) {
var statusReq recruit.StatusReq
if err := c.ShouldBind(&statusReq); err != nil {
logger.Errorf("changeRecordReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.StatusQuery(context.Background(), &statusReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &StatusQueryRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
if len(rep.Status) != 0 {
for _, v := range rep.Status {
data := &StatusQueryData{
Type: v.Type,
State: v.State,
Name: v.Name,
Alias: v.Alias,
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}
func PositionQuery(c *gin.Context) {
var positionReq recruit.PositionReq
if err := c.ShouldBind(&positionReq); err != nil {
logger.Errorf("changeRecordReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
//查看岗位功能增加个人查看自己的招聘员工的信息的接口
if positionReq.ReqType == 2 {
if mLoginInfoAny, exists := c.Get("mLoginInfo"); exists {
userInfo := mLoginInfoAny.(model.LoginInfo)
//传递 UserID 就行
req := &position.CreateResponse{ID: userInfo.ID}
puRes, err := service.PositionProvider.UserInfoV2(c, req)
if err != nil {
logger.Errorf("PositionProvider.UserInfoV2 err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
//是否是部门领导
isleader := isDepartmentLeader(puRes.DepPositions)
fmt.Println("是否是领导:", isleader)
if isleader {
//获取管理的部门id数组
depIds := getControlDepId(puRes.DepPositions)
fmt.Println("部门------", depIds)
//根据部门ids 获取 用户id
res, err := service.DepartmentProvider.UserIdsByFatherDepIds(c, &department.UserIdsByFatherDepIdRequest{
FatherIds: depIds,
})
if err != nil {
logger.Errorf("DepartmentProvider.UserIdsByFatherDepIds err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
fmt.Println("用户ids------", res.UserIds)
positionReq.ApplierIds = make([]int64, 0)
for _, v := range res.UserIds {
positionReq.ApplierIds = append(positionReq.ApplierIds, int64(v))
}
} else {
positionReq.ApplierId = int64(userInfo.ID)
}
} else {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: errors.New("未获取到用户信息").Error(),
Status: e.Failed,
})
return
}
}
rep, err := service.GrpcRecruitClientImpl.PositionQuery(context.Background(), &positionReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &DataRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
dataRep.Count = rep.Count
if len(rep.Positions) != 0 {
for _, v := range rep.Positions {
data := &Data{
Id: v.Id,
Applier: v.Applier,
ApplierId: v.ApplierId,
ApplierPosition: v.ApplierPosition,
ApplierDepartment: v.ApplierDepartment,
Approver: v.Approver,
Copied: v.Copied,
Post: v.Post,
PostCapacity: v.PostCapacity,
PostRequirement: v.PostRequirement,
PostCountLast: v.PostCountLast,
WantedDate: v.WantedDate,
ApproveCountLast: v.ApproveCountLast,
CreatedTime: v.CreatedTime,
CreatedBy: v.CreatedBy,
UpdatedTime: v.UpdatedTime,
UpdatedBy: v.UpdatedBy,
Status: v.Status,
ApplyPositionId: v.ApplyPositionId,
ApplyDepartmentId: v.ApplyDepartmentId,
StatusName: v.StatusName,
Weigh: v.Weigh,
RedNum: v.RedNum,
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: dataRep,
})
}
type ResumePageQueryData struct {
Id int64 `json:"id"`
PositionId int64 `json:"positionId"`
Name string `json:"name"`
Mobile string `json:"mobile"`
ResumeFile string `json:"resumeFile"`
InterviewTime string `json:"interviewTime"`
InterviewFile string `json:"interviewFile"`
EmployeeType string `json:"employeeType"`
EmployeeNo string `json:"employeeNo"`
EntryTime string `json:"entryTime"`
TerminateReason string `json:"terminateReason"`
CreatedTime string `json:"createdTime"`
CreatedBy string `json:"createdBy"`
UpdatedTime string `json:"updatedTime"`
UpdatedBy string `json:"updatedBy"`
Status int32 `json:"status"`
StatusName string `json:"statusName"`
Files []*recruit.FileProto `json:"files"`
ResumeFileName string `json:"resumeFileName"`
ApplyPositionId int32 `json:"applyPositionId"`
ApplyDepartmentId int32 `json:"applyDepartmentId"`
}
type ResumePageQueryRep struct {
Code int32 `json:"code"`
Msg string `json:"msg"`
Data []*ResumePageQueryData `json:"data"`
Count int32 `json:"count"`
}
func ResumePageQuery(c *gin.Context) {
var resumeReq recruit.ResumeReq
if err := c.ShouldBind(&resumeReq); err != nil {
logger.Errorf("resumeReq ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
//查看父级 岗位信息
positionRes, err := service.GrpcRecruitClientImpl.PositionDetail(context.Background(), &recruit.PositionDetailReq{Id: int32(resumeReq.PositionId)})
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
rep, err := service.GrpcRecruitClientImpl.ResumePageQuery(context.Background(), &resumeReq)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
//将返回的数据构造为符合规范的数据
dataRep := &ResumePageQueryRep{}
if rep != nil {
dataRep.Code = rep.Code
dataRep.Msg = rep.Msg
dataRep.Count = rep.Count
if len(rep.Resumes) != 0 {
for _, v := range rep.Resumes {
fmt.Println(v.ResumeFileName)
fmt.Println(v.ResumeFile)
fmt.Println()
data := &ResumePageQueryData{
Id: v.Id,
PositionId: v.PositionId,
Name: v.Name,
Mobile: v.Mobile,
ResumeFile: v.ResumeFile,
InterviewTime: v.InterviewTime,
InterviewFile: v.InterviewFile,
EmployeeType: v.EmployeeType,
EmployeeNo: v.EmployeeNo,
EntryTime: v.EntryTime,
TerminateReason: v.TerminateReason,
CreatedTime: v.CreatedTime,
CreatedBy: v.CreatedBy,
UpdatedTime: v.UpdatedTime,
UpdatedBy: v.UpdatedBy,
Status: v.Status,
StatusName: v.StatusName,
ResumeFileName: v.ResumeFileName, // 增加
Files: v.Files,
}
if positionRes != nil && positionRes.Position != nil {
data.ApplyPositionId = positionRes.Position.ApplyPositionId
data.ApplyDepartmentId = positionRes.Position.ApplyDepartmentId
}
dataRep.Data = append(dataRep.Data, data)
}
}
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: dataRep,
})
}
// UploadMulti 批量上传
func UploadMultiNew(c *gin.Context) {
form, err := c.MultipartForm()
source := c.PostForm("source")
mask := c.PostForm("mask")
mediaType := c.PostForm("type")
if mask == "" {
mask = "0"
}
if mediaType == "" || mediaType == "image" {
mediaType = "image"
}
if source == "" {
service.ResponseQuickMsg(c, e.Failed, e.GetMsg(e.InvalidParams), nil)
return
}
if err != nil {
logger.Errorf("UploadMulti err", err)
service.ResponseMsg(c, e.InvalidParams, serializer.Response{
Msg: err.Error(),
Code: e.Failed,
Error: err,
})
return
}
var data = make(map[string]string, len(form.File))
wg.Add(len(form.File))
var fileCh = make(chan string, len(form.File))
for _, files := range form.File {
for _, file := range files {
go func() {
defer wg.Done()
var uploadInfo model.UploadInfo
disp := file.Header["Content-Disposition"]
if len(disp) > 0 {
dispKv := strings.Split(disp[0], ";")
for _, vv := range dispKv {
vv = strings.Trim(vv, " ")
if vv[:4] == "name" {
uploadInfo.FileKName = vv[strings.Index(vv, "\"")+1 : strings.LastIndex(vv, "\"")]
}
}
}
newFile, _ := file.Open()
defer newFile.Close()
uuids, _ := uuid.NewV4()
filePath := fmt.Sprintf("%s/%s/%s/%s%s", mediaType, mask, source, uuids, filepath.Ext(file.Filename))
fileBytes, _ := ioutil.ReadAll(newFile)
if mediaType == "image" {
if err = service.BaiduCheckImage(fileBytes); err != nil {
uploadInfo.Err = err.Error()
return
}
}
var objectName string = fmt.Sprintf("%s/%s/%s", config.ConfigData.Oss.BaseDir, config.Env, filePath)
BOSClient, _ := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint)
_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, objectName, fileBytes)
if err != nil {
logger.Errorf("quickBos err", err)
return
}
//uploadInfo.Url = fmt.Sprintf("%s%s%s/%s", config.BosHttp, config.BosBucketName, config.BosUrl, objectName)
uploadInfo.Url = fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, objectName)
infoByte, _ := json.Marshal(uploadInfo)
fileCh <- string(infoByte)
}()
}
}
wg.Wait()
close(fileCh)
for v := range fileCh {
if v != "" {
var uploadInfo model.UploadInfo
if err = json.Unmarshal([]byte(v), &uploadInfo); err == nil {
data[uploadInfo.FileKName] = uploadInfo.Url
}
}
}
service.ResponseMsg(c, e.UpdatePasswordSuccess, serializer.Response{
Msg: e.GetMsg(e.SUCCESS),
Status: e.Ok,
Data: data,
})
}
// UploadMulti 批量上传
func UploadMulti(c *gin.Context) {
/*var form query.RecruitUploadReq
// 注意:请确保请求头中的 content-type 为 multipart/form-data
if err := c.ShouldBind(&form); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
*/
var warningInfo string
form, err := c.MultipartForm()
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
source := c.PostForm("source")
mask := c.PostForm("mask")
mediaType := c.PostForm("type")
if mask == "" {
mask = "0"
}
if mediaType == "" || mediaType == "image" {
mediaType = "image"
}
if source == "" {
service.ResponseQuickMsg(c, e.Failed, e.GetMsg(e.InvalidParams), nil)
return
}
files := form.File
docMap := make(map[string][]*query.DocFile, len(files))
resumesMap := make(map[string]*query.Resume, len(files))
for key, fileHeaders := range files {
for _, fileHeader := range fileHeaders {
//有resumes 和file 是最外层
if strings.Contains(key, "resumes") && strings.Contains(key, "[files]") { //附件
re := regexp.MustCompile(`resumes\[(\d+)\]\[files\]`)
// 查找子匹配的字符串
matches := re.FindStringSubmatch(key)
fmt.Println("2------------", matches)
fmt.Println("2------------", matches)
if len(matches) != 2 {
// 输出第一个子匹配(即中括号中的数字)
service.Error(c, e.Error, errors.New("files key"+key+"匹配失败"))
return
}
docMap[matches[1]] = append(docMap[matches[1]], &query.DocFile{Obj: fileHeader})
} else if strings.Contains(key, "resumes") && strings.Contains(key, "]file") { //简历
re := regexp.MustCompile(`resumes\[(\d+)\]file`)
// 查找子匹配的字符串
matches := re.FindStringSubmatch(key)
if len(matches) != 2 {
// 输出第一个子匹配(即中括号中的数字)
service.Error(c, e.Error, errors.New("file key "+key+"匹配失败"))
return
}
resumesMap[matches[1]] = &query.Resume{Obj: fileHeader}
} else {
service.Error(c, e.Error, errors.New("key"+key+"匹配失败"))
return
}
}
}
wgLen := 0
for i, _ := range resumesMap {
wgLen++
if _, ok := docMap[i]; ok {
resumesMap[i].Files = docMap[i]
wgLen += len(resumesMap[i].Files)
}
}
/*
for i, f := range resumesMap {
fmt.Println("2----", i, f.File.Filename, f.Files)
}
*/
//上传
for i, f := range resumesMap {
fmt.Println("2----", i, f.Obj.Filename, f.Files)
}
var tempWg sync.WaitGroup
tempWg.Add(wgLen)
var fileCh = make(chan string, wgLen)
for i, f := range resumesMap {
resumesMap[i].ResumeFileName = resumesMap[i].Obj.Filename
go uploadFile(resumesMap[i].Obj, mediaType, mask, source, resumesMap[i], nil, fileCh, &tempWg)
for i1, t := range f.Files {
resumesMap[i].Files[i1].FileName = t.Obj.Filename
go uploadFile(t.Obj, mediaType, mask, source, nil, resumesMap[i].Files[i1], fileCh, &tempWg)
}
}
tempWg.Wait()
close(fileCh)
if len(fileCh) >= 1 {
for ch := range fileCh {
warningInfo += ch + "\n"
}
/*
//删除图片,一荣俱荣,一损俱损
for i, f := range resumesMap {
//del resumesMap[i].ResumeFile
for i1, t := range f.Files {
//del resumesMap[i].Files[i1].File
}
}
*/
service.Error(c, e.Error, errors.New(warningInfo))
return
}
res := query.RecruitUploadRes{}
for i, _ := range resumesMap {
res.Resume = append(res.Resume, resumesMap[i])
}
service.Success(c, res)
return
}
func uploadFile(file *multipart.FileHeader, mediaType, mask, source string, resume *query.Resume, docFile *query.DocFile, fileCh chan<- string, tempWg *sync.WaitGroup) {
var err error
defer tempWg.Done()
netUrl, err := uploadFileCore(file, mediaType, mask, source)
if err != nil {
fileCh <- fmt.Sprintf("%s上传失败,提示:%s", file.Filename, err.Error())
return
}
if resume != nil {
resume.ResumeFile = netUrl
}
if docFile != nil {
docFile.File = netUrl
}
return
}
func uploadFileCore(file *multipart.FileHeader, mediaType, mask, source string) (netUrl string, err error) {
var uploadInfo model.UploadInfo
disp := file.Header["Content-Disposition"]
if len(disp) > 0 {
dispKv := strings.Split(disp[0], ";")
for _, vv := range dispKv {
vv = strings.Trim(vv, " ")
if vv[:4] == "name" {
uploadInfo.FileKName = vv[strings.Index(vv, "\"")+1 : strings.LastIndex(vv, "\"")]
}
}
}
newFile, _ := file.Open()
defer newFile.Close()
uuids, _ := uuid.NewV4()
filePath := fmt.Sprintf("%s/%s/%s/%s%s", mediaType, mask, source, uuids, filepath.Ext(file.Filename))
fileBytes, _ := ioutil.ReadAll(newFile)
if mediaType == "image" {
if err = service.BaiduCheckImage(fileBytes); err != nil {
uploadInfo.Err = err.Error()
return
}
}
var objectName string = fmt.Sprintf("%s/%s/%s", config.ConfigData.Oss.BaseDir, config.Env, filePath)
BOSClient, _ := objstorage.NewOSS(config.ConfigData.Oss.AccessKeyId, config.ConfigData.Oss.AccessKeySecret, config.ConfigData.Oss.Endpoint)
_, err = BOSClient.PutObjectFromBytes(config.ConfigData.Oss.BucketName, objectName, fileBytes)
if err != nil {
logger.Errorf("quickBos err", err)
return
}
//uploadInfo.Url = fmt.Sprintf("%s%s%s/%s", config.BosHttp, config.BosBucketName, config.BosUrl, objectName)
netUrl = fmt.Sprintf("%s/%s", config.ConfigData.Oss.CdnHost, objectName)
return
}
func isDepartmentLeader(list []*position.DepPosition) bool {
for _, v := range list {
if v.IsLeader == true {
return true
}
}
return false
}
func getControlDepId(list []*position.DepPosition) []uint32 {
var controlDepIds []uint32
for _, v := range list {
if v.IsLeader == true {
controlDepIds = append(controlDepIds, v.ID)
}
}
return controlDepIds
}
func CheckResumeExist(c *gin.Context) {
req := new(recruit.CheckResumeExistReq)
if err := c.ShouldBind(&req); err != nil {
logger.Errorf("CheckResumeExist ShouldBind err", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
fmt.Println("当前语言:", c.GetHeader("Accept-Language"))
req.Language = c.GetHeader("Accept-Language")
rep, err := service.GrpcRecruitClientImpl.CheckResumeExist(context.Background(), req)
if err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: err.Error(),
Status: e.Failed,
})
return
}
if rep.Code == 1 {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Msg: rep.Msg,
Status: e.Failed,
})
return
}
c.JSON(http.StatusOK, serializer.Response{
Status: e.Ok,
Code: e.SUCCESS,
Data: rep,
})
}