924 lines
42 KiB
Go
924 lines
42 KiB
Go
package controller
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
"os"
|
||
"path/filepath"
|
||
"strconv"
|
||
|
||
"github.com/samber/lo"
|
||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/tiger1103/gfast/v3/library/liberr"
|
||
|
||
"github.com/gogf/gf/v2/database/gdb"
|
||
"github.com/jinzhu/copier"
|
||
"github.com/tiger1103/gfast/v3/api/v1/common/coryCommon"
|
||
"github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
|
||
wxSystem "github.com/tiger1103/gfast/v3/api/wxApplet/wxApplet"
|
||
systemController "github.com/tiger1103/gfast/v3/internal/app/system/controller"
|
||
controllerDao "github.com/tiger1103/gfast/v3/internal/app/system/dao"
|
||
|
||
ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context"
|
||
"github.com/tiger1103/gfast/v3/internal/app/system/model"
|
||
"github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
|
||
serviceController "github.com/tiger1103/gfast/v3/internal/app/system/service"
|
||
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/dao"
|
||
wxAppletModel "github.com/tiger1103/gfast/v3/internal/app/wxApplet/model"
|
||
"github.com/tiger1103/gfast/v3/internal/app/wxApplet/service"
|
||
"golang.org/x/net/context"
|
||
)
|
||
|
||
type appPortController struct {
|
||
systemController.BaseController
|
||
}
|
||
|
||
var AppPortController = new(appPortController)
|
||
|
||
// ===========================================APP首页===========================================
|
||
// ===========================================APP首页===========================================
|
||
// ===========================================APP首页===========================================
|
||
|
||
// GetsTheAttendanceOfASpecifiedShiftGroupFunc 班组长人员打卡统计
|
||
func (c *appPortController) GetsTheAttendanceOfASpecifiedShiftGroupFunc(ctx context.Context, req *wxApplet.GetsTheAttendanceOfASpecifiedShiftGroupReq) (res *wxApplet.GetsTheAttendanceOfASpecifiedShiftGroupRes, err error) {
|
||
res, err = service.SysProjectTeam().GetsTheAttendanceOfASpecifiedShiftGroupFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// ListOfAttendancePersonnelFunc 获取用户对应出勤状态的人员列表
|
||
func (c *appPortController) ListOfAttendancePersonnelFunc(ctx context.Context, req *wxApplet.ListOfAttendancePersonnelReq) (res *wxApplet.ListOfAttendancePersonnelRes, err error) {
|
||
res, err = service.SysProjectTeam().ListOfAttendancePersonnelFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppUserMenuFunc 获取用户菜单
|
||
func (c *appPortController) AppUserMenuFunc(ctx context.Context, req *wxApplet.AppUserMenusReq) (*wxApplet.AppUserMenusRes, error) {
|
||
// 获取用户信息
|
||
userInfo := ct.New().GetLoginUser(ctx)
|
||
|
||
// 获取用户角色
|
||
roleIds, err := getUserRoles(ctx, userInfo, req.UserType)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
var userMenuList []wxApplet.AppUserMenu
|
||
// 获取用户菜单
|
||
if err := controllerDao.AppMenus.Ctx(ctx).As("menu").
|
||
InnerJoin("app_role_menus roleMenu", "menu.menu_id = roleMenu.menu_id").
|
||
Where("roleMenu.role_id IN (?)", roleIds).
|
||
Fields("menu.menu_id, menu.menu_name").Scan(&userMenuList); err != nil {
|
||
return nil, fmt.Errorf("获取用户菜单失败:%w", err)
|
||
}
|
||
|
||
userMenuList = lo.UniqBy(userMenuList, func(item wxApplet.AppUserMenu) uint {
|
||
return item.MenuID
|
||
})
|
||
|
||
return &wxApplet.AppUserMenusRes{MenuList: userMenuList}, nil
|
||
}
|
||
|
||
// getUserRoles 获取用户角色
|
||
func getUserRoles(ctx context.Context, user *model.ContextUser, role int) ([]int, error) {
|
||
rules := []model.Ruler{}
|
||
|
||
query := controllerDao.AppUserRoles.Ctx(ctx).As("aur").
|
||
InnerJoin("app_roles ar", "aur.role_id = ar.role_id").
|
||
Fields("ar.role_id,ar.role_name,aur.user_id").
|
||
Where("aur.user_id", user.Id).
|
||
Where("aur.major_role", role)
|
||
if err := query.Scan(&rules); err != nil {
|
||
return nil, fmt.Errorf("获取用户角色失败:%w", err)
|
||
}
|
||
|
||
roleID := lo.FilterMap(rules, func(item model.Ruler, _ int) (int, bool) {
|
||
return item.RoleId, true
|
||
})
|
||
|
||
return roleID, nil
|
||
}
|
||
|
||
// AppMyAttendanceFunc 我的考勤
|
||
func (c *appPortController) AppMyAttendanceFunc(ctx context.Context, req *wxApplet.AppMyAttendanceReq) (res *wxApplet.AppMyAttendanceRes, err error) {
|
||
res = new(wxApplet.AppMyAttendanceRes)
|
||
res, err = service.BusAttendance().AppMyAttendanceFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppMyAttendanceDetailsFunc 我的考勤详情数据
|
||
func (c *appPortController) AppMyAttendanceDetailsFunc(ctx context.Context, req *wxApplet.AppMyAttendanceDetailsReq) (res *wxApplet.AppMyAttendanceDetailsRes, err error) {
|
||
res = new(wxApplet.AppMyAttendanceDetailsRes)
|
||
res, err = service.BusAttendance().AppMyAttendanceDetailsFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppProjectOverviewFunc 项目概况
|
||
func (c *appPortController) AppProjectOverviewFunc(ctx context.Context, req *wxApplet.AppProjectOverviewReq) (res *wxApplet.AppProjectOverviewRes, err error) {
|
||
res = new(wxApplet.AppProjectOverviewRes)
|
||
res, err = service.BusAttendance().AppProjectOverviewFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppSafetyHazardTodayFunc 项目概况>今日AI安全隐患
|
||
func (c *appPortController) AppSafetyHazardTodayFunc(ctx context.Context, req *wxApplet.AppSafetyHazardTodayReq) (res *wxApplet.AppSafetyHazardTodayRes, err error) {
|
||
res, err = serviceController.BusViolationRecord().AppSafetyHazardTodayFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppWeatherFunc 【小程序】获取施工人员天气
|
||
func (c *appPortController) AppWeatherFunc(ctx context.Context, req *wxApplet.AppWeatherReq) (res *wxApplet.AppWeatherRes, err error) {
|
||
res = new(wxApplet.AppWeatherRes)
|
||
we := coryCommon.Weather(req.Location)
|
||
bodyData := []byte(we)
|
||
err = json.Unmarshal(bodyData, &res)
|
||
if err != nil {
|
||
fmt.Println("Failed to parse JSON data:", err)
|
||
return
|
||
}
|
||
return
|
||
}
|
||
|
||
// AppProjectNoticeListFunc 首页获取滚动的项目公告列表
|
||
func (c *appPortController) AppProjectNoticeListFunc(ctx context.Context, req *wxApplet.AppProjectNoticeReq) (*wxApplet.AppProjectNoticeRes, error) {
|
||
userId := ct.New().GetLoginUser(ctx).Id
|
||
|
||
noticeList := []*wxApplet.ProjectNoticeList{}
|
||
if err := controllerDao.Notifications.Ctx(ctx).
|
||
Fields(controllerDao.Notifications.Columns().Title).
|
||
LeftJoin("notification_recipients nf", "notifications.id = nf.notification_id").
|
||
Where(controllerDao.Notifications.Columns().ProjectId, req.ProjectId).
|
||
Where(controllerDao.Notifications.Columns().IsApp, 1).
|
||
Where("nf.recipient_id", userId).
|
||
Limit(20).OrderDesc("notifications.id").Scan(¬iceList); err != nil {
|
||
return nil, fmt.Errorf("获取项目公告失败:%w", err)
|
||
}
|
||
return &wxApplet.AppProjectNoticeRes{
|
||
List: noticeList,
|
||
}, nil
|
||
}
|
||
|
||
// AppRegisteredButNotVerifiedWithRealName 获取所有已注册未实名的用户
|
||
func (c *appPortController) AppRegisteredButNotVerifiedWithRealName(ctx context.Context, req *wxApplet.AppRegisteredButNotVerifiedWithRealNameReq) (res *wxApplet.AppRegisteredButNotVerifiedWithRealNameRes, err error) {
|
||
res, err = serviceController.BusConstructionUser().AppRegisteredButNotVerifiedWithRealNameFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// ===========================================定位考勤===========================================
|
||
// ===========================================定位考勤===========================================
|
||
// ===========================================定位考勤===========================================
|
||
|
||
// AppCodedBackwardsByLatitudeAndLongitudeFunc 根据经度纬度逆编码为省市区信息
|
||
func (c *appPortController) AppCodedBackwardsByLatitudeAndLongitudeFunc(ctx context.Context, req *wxApplet.AppCodedBackwardsByLatitudeAndLongitudeReq) (res *wxApplet.AppCodedBackwardsByLatitudeAndLongitudeRes, err error) {
|
||
res = new(wxApplet.AppCodedBackwardsByLatitudeAndLongitudeRes)
|
||
we := coryCommon.InverseGeocoding(req.Location)
|
||
bodyData := []byte(we)
|
||
err = json.Unmarshal(bodyData, &res)
|
||
if err != nil {
|
||
return
|
||
}
|
||
return
|
||
}
|
||
|
||
// AppOpenidByFounderFunc 返回当前用户所在项目的打卡范围
|
||
func (c *appPortController) AppOpenidByFounderFunc(ctx context.Context, req *wxApplet.AppOpenidByFounderReq) (res *wxApplet.AppOpenidByFounderRes, err error) {
|
||
res = new(wxApplet.AppOpenidByFounderRes)
|
||
founderFunc, err := OpenidByFounderFunc(ctx, req.Openid)
|
||
err = copier.Copy(&res, founderFunc)
|
||
return
|
||
}
|
||
|
||
// AppWhetherToEnterTheClockRangeFunc 判断当前用户是否进入打卡范围
|
||
func (c *appPortController) AppWhetherToEnterTheClockRangeFunc(ctx context.Context, req *wxApplet.AppWhetherToEnterTheClockRangeReq) (res *wxApplet.AppWhetherToEnterTheClockRangeRes, err error) {
|
||
res = new(wxApplet.AppWhetherToEnterTheClockRangeRes)
|
||
res, err = service.BusAttendance().AppWhetherToEnterTheClockRangeFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppClockingStatusOfTheDayFunc 判断当前用户当天的打卡状态(1未打卡、2已打上班卡、3已打下班卡)
|
||
func (c *appPortController) AppClockingStatusOfTheDayFunc(ctx context.Context, req *wxApplet.AppClockingStatusOfTheDayReq) (res *wxApplet.AppClockingStatusOfTheDayRes, err error) {
|
||
res = new(wxApplet.AppClockingStatusOfTheDayRes)
|
||
res, err = service.BusAttendance().AppClockingStatusOfTheDayFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppFaceDetectionFunc 人脸检测
|
||
func (c *appPortController) AppFaceDetectionFunc(ctx context.Context, req *wxApplet.AppFaceDetectionReq) (res *wxApplet.AppFaceDetectionRes, err error) {
|
||
res = new(wxApplet.AppFaceDetectionRes)
|
||
res.Path, err = FaceDetectionFunc(ctx, req.File)
|
||
return
|
||
}
|
||
|
||
// AppAttendanceCardFunc 考勤打卡
|
||
func (c *appPortController) AppAttendanceCardFunc(ctx context.Context, req *wxApplet.AppAttendanceCardReq) (res *wxApplet.AppAttendanceCardRes, err error) {
|
||
res = new(wxApplet.AppAttendanceCardRes)
|
||
addReq := wxApplet.BusAttendanceAddReq{}
|
||
copier.Copy(&addReq, &req)
|
||
err = service.BusAttendance().Add(ctx, &addReq)
|
||
return
|
||
}
|
||
|
||
// AppAllMembersOfTheCurrentGroupFunc 获取当前组的所有成员(除自己)
|
||
func (c *appPortController) AppAllMembersOfTheCurrentGroupFunc(ctx context.Context, req *wxApplet.AppAllMembersOfTheCurrentGroupReq) (res *wxApplet.AppAllMembersOfTheCurrentGroupRes, err error) {
|
||
res, err = service.BusConstructionUser().AppAllMembersOfTheCurrentGroupFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppSelectThisUserByCardRecordFunc 为指定用户查询打卡记录
|
||
func (c *appPortController) AppSelectThisUserByCardRecordFunc(ctx context.Context, req *wxApplet.AppSelectThisUserByCardRecordReq) (res *wxApplet.AppSelectThisUserByCardRecordRes, err error) {
|
||
res, err = service.BusAttendance().AppSelectThisUserByCardRecordFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppLocationAttendanceStatisticsFunc 定位考勤统计
|
||
func (c *appPortController) AppLocationAttendanceStatisticsFunc(ctx context.Context, req *wxApplet.AppLocationAttendanceStatisticsReq) (res *wxApplet.AppLocationAttendanceStatisticsRes, err error) {
|
||
res, err = service.BusAttendance().AppLocationAttendanceStatisticsFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppSelectBySiteDateAndTimeFunc 根据openid获取到项目的逆编码地址及项目的上下班打卡时间
|
||
func (c *appPortController) AppSelectBySiteDateAndTimeFunc(ctx context.Context, req *wxApplet.AppSelectBySiteDateAndTimeReq) (res *wxApplet.AppSelectBySiteDateAndTimeRes, err error) {
|
||
res = new(wxApplet.AppSelectBySiteDateAndTimeRes)
|
||
data, err := serviceController.SysProject().GetById(ctx, req.ProjectId)
|
||
res.PunchRange = data.PunchRange
|
||
res.Lng = data.Lng
|
||
res.Lat = data.Lat
|
||
// 逆编码
|
||
var entity *coryCommon.InverseGeocodingRep
|
||
we := coryCommon.InverseGeocoding(data.Lng + "," + data.Lat)
|
||
bodyData := []byte(we)
|
||
err = json.Unmarshal(bodyData, &entity)
|
||
if err != nil {
|
||
return
|
||
}
|
||
res.Site = entity.Regeocode.FormattedAddress
|
||
return
|
||
}
|
||
|
||
// AppMyProjectListFunc 获取项目列表
|
||
func (c *appPortController) AppMyProjectListFunc(ctx context.Context, req *wxApplet.AppMyProjectListReq) (*wxApplet.SysUserProjectRelevancySearchRes, error) {
|
||
// 获取当前登录用户ID
|
||
userInfo := ct.New().GetLoginUser(ctx)
|
||
|
||
// 当前登录用户ID
|
||
userID := userInfo.Id
|
||
|
||
// 用户手机号
|
||
phone := userInfo.Mobile
|
||
|
||
var query *gdb.Model
|
||
|
||
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.ProjectType == 0 {
|
||
// 管理员获取项目时,将获取后台所拥有的项目
|
||
query = dao.SysUserProjectRelevancy.Ctx(ctx).As("a").
|
||
InnerJoin("sys_project as b on a.project_id = b.id").
|
||
Fields(fields).Where("a.user_id", userID)
|
||
} else {
|
||
// 当请求者为施工人员时,从 bus_construction_user 表中获取其绑定的项目信息
|
||
query = dao.BusConstructionUser.Ctx(ctx).As("a").
|
||
InnerJoin("sys_project as b on a.project_id = b.id").
|
||
Fields(fields).Where("a.phone", phone)
|
||
}
|
||
|
||
var projectList []*wxAppletModel.SysUserProjectRelevancyListRes
|
||
if err := query.Scan(&projectList); err != nil {
|
||
return nil, fmt.Errorf("获取项目列表失败:%w", err)
|
||
}
|
||
|
||
return &wxApplet.SysUserProjectRelevancySearchRes{
|
||
List: projectList,
|
||
}, nil
|
||
}
|
||
|
||
// AppReissueACardListFunc 补卡申请列表(目前只会展示缺卡的数据)
|
||
func (c *appPortController) AppReissueACardListFunc(ctx context.Context, req *wxApplet.AppReissueACardListReq) (res *wxApplet.AppReissueACardListRes, err error) {
|
||
res, err = service.BusAttendance().AppReissueACardListFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppReissueACardIdFunc 补卡申请ID查询
|
||
func (c *appPortController) AppReissueACardIdFunc(ctx context.Context, req *wxApplet.AppReissueACardIdReq) (res *wxApplet.AppReissueACardIdRes, err error) {
|
||
res, err = service.BusAttendance().AppReissueACardIdFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppCardReplacementApplicationAddFunc 新增补卡申请
|
||
func (c *appPortController) AppCardReplacementApplicationAddFunc(ctx context.Context, req *wxApplet.AppCardReplacementApplicationAddReq) (res *wxApplet.AppCardReplacementApplicationAddRes, err error) {
|
||
r := wxApplet.ReissueACardWxAddReq{}
|
||
copier.Copy(&r, &req)
|
||
err = serviceController.BusReissueACard().ReissueACardWxAdd(ctx, &r)
|
||
return
|
||
}
|
||
|
||
// AppReplacementCardApplicationRecordFunc 申请人补卡记录(分页)
|
||
func (c *appPortController) AppReplacementCardApplicationRecordFunc(ctx context.Context, req *wxApplet.AppReplacementCardApplicationRecordReq) (res *wxApplet.AppReplacementCardApplicationRecordRes, err error) {
|
||
res = new(wxApplet.AppReplacementCardApplicationRecordRes)
|
||
// 请求
|
||
r := wxApplet.ReissueACardWxGetByIdReq{}
|
||
copier.Copy(&r, &req)
|
||
// 返回
|
||
idFunc, err := serviceController.BusReissueACard().ReissueACardWxGetByIdFunc(ctx, &r)
|
||
copier.Copy(&res, &idFunc)
|
||
return
|
||
}
|
||
|
||
// AppTheTeamLeaderSupplementCardApprovalListFun 班组长补卡审批列表(分页)
|
||
func (c *appPortController) AppTheTeamLeaderSupplementCardApprovalListFun(ctx context.Context, req *wxApplet.AppTheTeamLeaderSupplementCardApprovalListReq) (res *wxApplet.AppTheTeamLeaderSupplementCardApprovalListRes, err error) {
|
||
entity := model.AppTheTeamLeaderSupplementCardApprovalRes{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Type = "1"
|
||
res, err = serviceController.BusReissueACard().AppTheTeamLeaderSupplementCardApprovalListFun(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// AppTheTeamLeaderSupplementCardApprovalRecordListFunc 班组长补卡审批记录列表(分页)
|
||
func (c *appPortController) AppTheTeamLeaderSupplementCardApprovalRecordListFunc(ctx context.Context, req *wxApplet.AppTheTeamLeaderSupplementCardApprovalRecordListReq) (res *wxApplet.AppTheTeamLeaderSupplementCardApprovalListRes, err error) {
|
||
entity := model.AppTheTeamLeaderSupplementCardApprovalRes{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Type = "2"
|
||
res, err = serviceController.BusReissueACard().AppTheTeamLeaderSupplementCardApprovalListFun(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// AppApprovalRecordDetailsFunc 审批记录详情
|
||
func (c *appPortController) AppApprovalRecordDetailsFunc(ctx context.Context, req *wxApplet.AppApprovalRecordDetailsReq) (res *wxApplet.AppApprovalRecordDetailsRes, err error) {
|
||
res, err = serviceController.BusReissueACard().AppApprovalRecordDetailsFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppForemanApprovalFunc 班组长审批
|
||
func (c *appPortController) AppForemanApprovalFunc(ctx context.Context, req *wxApplet.AppForemanApprovalReq) (res *wxApplet.AppForemanApprovalRes, err error) {
|
||
entity := wxApplet.ReissueACardWxEditTeamReq{}
|
||
copier.Copy(&entity, &req)
|
||
err = serviceController.BusReissueACard().ReissueACardWxEditTeam(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// @Title AdministratorApprovalFunc 2024/7/26 15:20:00
|
||
// @Description 管理员审批(仅限于管理员操作)
|
||
// @Auth Cory
|
||
func (c *appPortController) AdministratorApprovalFunc(ctx context.Context, req *wxApplet.AdministratorApprovalReq) (res *wxApplet.AdministratorApprovalRes, err error) {
|
||
editReq := system.BusReissueACardEditReq{}
|
||
copier.Copy(&editReq, &req)
|
||
err = serviceController.BusReissueACard().Edit(ctx, &editReq)
|
||
return
|
||
}
|
||
|
||
// ===========================================安全(HSE)巡检工单===========================================
|
||
// ===========================================安全(HSE)巡检工单===========================================
|
||
// ===========================================安全(HSE)巡检工单===========================================
|
||
|
||
// AppManagementAppletListInformFunc 安全巡检工单列表-全部(分页)
|
||
func (c *appPortController) AppManagementAppletListInformFunc(ctx context.Context, req *wxApplet.AppManagementAppletListInformReq) (res *wxApplet.AppManagementAppletListRes, err error) {
|
||
res = new(wxApplet.AppManagementAppletListRes)
|
||
entity := wxApplet.HseManagementAppletListReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Status = "0"
|
||
listFunc, err := serviceController.BusHseManagement().HseManagementAppletListFunc(ctx, &entity)
|
||
copier.Copy(&res, listFunc)
|
||
return
|
||
}
|
||
|
||
// AppManagementAppletListAbarbeitungFunc 安全巡检工单列表-整改(分页)
|
||
func (c *appPortController) AppManagementAppletListAbarbeitungFunc(ctx context.Context, req *wxApplet.AppManagementAppletListAbarbeitungReq) (res *wxApplet.AppManagementAppletListRes, err error) {
|
||
res = new(wxApplet.AppManagementAppletListRes)
|
||
entity := wxApplet.HseManagementAppletListReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Status = "1"
|
||
listFunc, err := serviceController.BusHseManagement().HseManagementAppletListFunc(ctx, &entity)
|
||
copier.Copy(&res, listFunc)
|
||
return
|
||
}
|
||
|
||
// AppManagementAppletListReviewFunc 安全巡检工单列表-复查(分页)
|
||
func (c *appPortController) AppManagementAppletListReviewFunc(ctx context.Context, req *wxApplet.AppManagementAppletListReviewReq) (res *wxApplet.AppManagementAppletListRes, err error) {
|
||
res = new(wxApplet.AppManagementAppletListRes)
|
||
entity := wxApplet.HseManagementAppletListReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Status = "2"
|
||
listFunc, err := serviceController.BusHseManagement().HseManagementAppletListFunc(ctx, &entity)
|
||
copier.Copy(&res, listFunc)
|
||
return
|
||
}
|
||
|
||
// APPAddedDataSecurityForBackgroundUsersFunc APP的后台用户新增安全数据
|
||
func (c *appPortController) APPAddedDataSecurityForBackgroundUsersFunc(ctx context.Context, req *wxApplet.APPAddedDataSecurityForBackgroundUsersReq) (res *wxApplet.APPAddedDataSecurityForBackgroundUsersRes, err error) {
|
||
entity := system.BusHseManagementAddReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.HseManagementAdd = 1
|
||
entity.FileTwo = req.File
|
||
err = serviceController.BusHseManagement().Add(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// APPReviewDataSecurityForBackgroundUsersFunc APP的后台用户复查安全数据
|
||
func (c *appPortController) APPReviewDataSecurityForBackgroundUsersFunc(ctx context.Context, req *wxApplet.APPReviewDataSecurityForBackgroundUsersReq) (res *wxApplet.APPReviewDataSecurityForBackgroundUsersRes, err error) {
|
||
entity := system.EditReviewReq{}
|
||
copier.Copy(&entity, &req)
|
||
err = serviceController.BusHseManagement().EditReview(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// ===========================================质量管理===========================================
|
||
// ===========================================质量管理===========================================
|
||
// ===========================================质量管理===========================================
|
||
|
||
// AppInspectionTicketAppletListInformFunc 质量管理列表-全部(分页)
|
||
func (c *appPortController) AppInspectionTicketAppletListInformFunc(ctx context.Context, req *wxApplet.AppInspectionTicketAppletListInformReq) (res *wxApplet.AppInspectionTicketAppletListRes, err error) {
|
||
res = new(wxApplet.AppInspectionTicketAppletListRes)
|
||
entity := wxApplet.InspectionTicketAppletListReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Status = "0"
|
||
listFunc, err := serviceController.BusInspectionTicket().InspectionTicketAppletListFunc(ctx, &entity)
|
||
copier.Copy(&res, listFunc)
|
||
return
|
||
}
|
||
|
||
// AppInspectionTicketAppletListAbarbeitungFunc 质量管理列表-整改(分页)
|
||
func (c *appPortController) AppInspectionTicketAppletListAbarbeitungFunc(ctx context.Context, req *wxApplet.AppInspectionTicketAppletListAbarbeitungReq) (res *wxApplet.AppInspectionTicketAppletListRes, err error) {
|
||
res = new(wxApplet.AppInspectionTicketAppletListRes)
|
||
entity := wxApplet.InspectionTicketAppletListReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Status = "1"
|
||
listFunc, err := serviceController.BusInspectionTicket().InspectionTicketAppletListFunc(ctx, &entity)
|
||
copier.Copy(&res, listFunc)
|
||
return
|
||
}
|
||
|
||
// AppInspectionTicketAppletListReviewFunc 质量管理列表-复查(分页)
|
||
func (c *appPortController) AppInspectionTicketAppletListReviewFunc(ctx context.Context, req *wxApplet.AppInspectionTicketAppletListReviewReq) (res *wxApplet.AppInspectionTicketAppletListRes, err error) {
|
||
res = new(wxApplet.AppInspectionTicketAppletListRes)
|
||
entity := wxApplet.InspectionTicketAppletListReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.Status = "2"
|
||
listFunc, err := serviceController.BusInspectionTicket().InspectionTicketAppletListFunc(ctx, &entity)
|
||
copier.Copy(&res, listFunc)
|
||
return
|
||
}
|
||
|
||
// AppQualityDataIsAddedForBackgroundUsersFunc APP的后台用户新增质量数据
|
||
func (c *appPortController) AppQualityDataIsAddedForBackgroundUsersFunc(ctx context.Context, req *wxApplet.AppQualityDataIsAddedForBackgroundUsersReq) (res *wxApplet.AppQualityDataIsAddedForBackgroundUsersRes, err error) {
|
||
entity := system.BusInspectionTicketAddReq{}
|
||
copier.Copy(&entity, &req)
|
||
entity.HseManagementAdd = 1
|
||
entity.FileTwo = req.File
|
||
err = serviceController.BusInspectionTicket().Add(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// AppBackgroundUsersReviewQualityDataFunc APP的后台用户复查质量数据
|
||
func (c *appPortController) AppBackgroundUsersReviewQualityDataFunc(ctx context.Context, req *wxApplet.AppBackgroundUsersReviewQualityDataReq) (res *wxApplet.AppBackgroundUsersReviewQualityDataRes, err error) {
|
||
entity := system.BusInspectionTicketVerificationReq{}
|
||
copier.Copy(&entity, &req)
|
||
err = serviceController.BusInspectionTicket().EditVerification(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// ===========================================AI===========================================
|
||
// ===========================================AI===========================================
|
||
// ===========================================AI===========================================
|
||
|
||
// AppAiInformFunc 选择处理人
|
||
func (c *appPortController) AppAiInformFunc(ctx context.Context, req *wxApplet.AppAiInformReq) (res *wxApplet.AppAiInformRes, err error) {
|
||
err = serviceController.BusViolationRecord().AppAiInformFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppGetsAllThePeopleUnderTheCurrentPersonsProjectFunc 取当前人所在项目下的所有人
|
||
func (c *appPortController) AppGetsAllThePeopleUnderTheCurrentPersonsProjectFunc(ctx context.Context, req *wxApplet.AppGetsAllThePeopleUnderTheCurrentPersonsProjectReq) (res *wxApplet.AppGetsAllThePeopleUnderTheCurrentPersonsProjectRes, err error) {
|
||
res = new(wxApplet.AppGetsAllThePeopleUnderTheCurrentPersonsProjectRes)
|
||
projectFunc, err := serviceController.BusViolationRecord().AppGetsAllThePeopleUnderTheCurrentPersonsProjectFunc(ctx, req)
|
||
res = projectFunc
|
||
return
|
||
}
|
||
|
||
// AppWorkOrderPcListFunc AI工单列表(根据pc用户主键ID进行分页获取)
|
||
func (c *appPortController) AppWorkOrderPcListFunc(ctx context.Context, req *wxApplet.AppWorkOrderPcListReq) (res *wxApplet.AppWorkOrderPcListRes, err error) {
|
||
res = new(wxApplet.AppWorkOrderPcListRes)
|
||
projectFunc, err := serviceController.BusViolationRecord().AppWorkOrderPcListFunc(ctx, req)
|
||
res = projectFunc
|
||
return
|
||
}
|
||
|
||
// AppWorkOrderAppListFunc AI工单列表(根据App用户主键ID进行分页获取)
|
||
func (c *appPortController) AppWorkOrderAppListFunc(ctx context.Context, req *wxApplet.AppWorkOrderAppListReq) (res *wxApplet.AppWorkOrderPcListRes, err error) {
|
||
res = new(wxApplet.AppWorkOrderPcListRes)
|
||
projectFunc, err := serviceController.BusViolationRecord().AppWorkOrderAppListFunc(ctx, req)
|
||
res = projectFunc
|
||
return
|
||
}
|
||
|
||
// AppRectificationReplyFunc AI整改回复
|
||
func (c *appPortController) AppRectificationReplyFunc(ctx context.Context, req *wxApplet.AppRectificationReplyReq) (res *wxApplet.AppRectificationReplyRes, err error) {
|
||
res = new(wxApplet.AppRectificationReplyRes)
|
||
err = serviceController.BusViolationRecord().AppRectificationReplyFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppReviewFuncFunc AI复查
|
||
func (c *appPortController) AppReviewFuncFunc(ctx context.Context, req *wxApplet.AppReviewReq) (res *wxApplet.AppReviewRes, err error) {
|
||
res = new(wxApplet.AppReviewRes)
|
||
req.Operator = ct.New().GetLoginUser(ctx).OpenId
|
||
err = serviceController.BusViolationRecord().AppReviewFuncFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppWorkOrderParticularsFunc AI工单详情
|
||
func (c *appPortController) AppWorkOrderParticularsFunc(ctx context.Context, req *wxApplet.AppWorkOrderParticularsReq) (res *wxApplet.AppWorkOrderParticularsRes, err error) {
|
||
res = new(wxApplet.AppWorkOrderParticularsRes)
|
||
particularsFunc, err := serviceController.BusViolationRecord().AppWorkOrderParticularsFunc(ctx, req)
|
||
res = particularsFunc
|
||
return
|
||
}
|
||
|
||
// =========================================== 消息 ===========================================
|
||
// =========================================== 消息 ===========================================
|
||
// =========================================== 消息 ===========================================
|
||
|
||
// AppMessageListFunc 消息列表
|
||
func (c *appPortController) AppMessageListFunc(ctx context.Context, req *wxApplet.AppMessageListReq) (res *wxApplet.AppMessageListRes, err error) {
|
||
// 获取用户信息
|
||
user := ct.New().GetLoginUser(ctx)
|
||
|
||
res = new(wxApplet.AppMessageListRes)
|
||
|
||
fields := "title,created_at, (SELECT COUNT(*) FROM reminders WHERE is_read = 0 and user_id = '%s' and project_id = %s) AS unread_count"
|
||
|
||
userID := lo.If(req.OpenID != "", user.OpenId).Else(strconv.Itoa(int(user.Id)))
|
||
|
||
// 查询提醒
|
||
controllerDao.Reminders.Ctx(ctx).Fields(fmt.Sprintf(fields, userID, req.ProjectId)).
|
||
Where("is_read", 0).
|
||
Where("project_id", req.ProjectId).
|
||
OrderDesc("id").
|
||
Where("user_id", userID).
|
||
Limit(1).Scan(&res.Remind)
|
||
|
||
fields = "content as title,created_at, (SELECT COUNT(*) FROM comment_list WHERE is_read = 0 and receiver = %d and project_id = %s) AS unread_count"
|
||
controllerDao.CommentList.Ctx(ctx).Fields(fmt.Sprintf(fields, user.Id, req.ProjectId)).
|
||
Where("is_read", 0).
|
||
Where("receiver", user.Id).
|
||
Where("project_id", req.ProjectId).
|
||
OrderDesc("id").
|
||
Limit(1).Scan(&res.Comment)
|
||
|
||
return
|
||
}
|
||
|
||
// ===========================================人员管理===========================================
|
||
// ===========================================人员管理===========================================
|
||
// ===========================================人员管理===========================================
|
||
|
||
// AppChangeThePunchStatusForTheSpecifiedPersonFunc 给指定人更改打卡状态
|
||
func (c *appPortController) AppChangeThePunchStatusForTheSpecifiedPersonFunc(ctx context.Context, req *wxApplet.AppChangeThePunchStatusForTheSpecifiedPersonReq) (res *wxApplet.AppChangeThePunchStatusForTheSpecifiedPersonRes, err error) {
|
||
entity := system.ClockingConditionReq{}
|
||
copier.Copy(&entity, &req)
|
||
err = serviceController.BusConstructionUser().ClockingConditionFunc(ctx, &entity)
|
||
return
|
||
}
|
||
|
||
// AppSelectAppointProjectAllTeamFunc 获取指定项目所有班组
|
||
func (c *appPortController) AppSelectAppointProjectAllTeamFunc(ctx context.Context, req *wxApplet.AppSelectAppointProjectAllTeamReq) (res *wxApplet.AppSelectAppointProjectAllTeamRes, err error) {
|
||
res = new(wxApplet.AppSelectAppointProjectAllTeamRes)
|
||
var entity []*wxAppletModel.SysProjectTeamListRes
|
||
err = dao.SysProjectTeam.Ctx(ctx).Where(dao.SysProjectTeam.Columns().ProjectId, req.ProjectId).Scan(&entity)
|
||
res.List = entity
|
||
return
|
||
}
|
||
|
||
// AppListOfParticipatingUnitsFunc 参建单位列表
|
||
func (c *appPortController) AppListOfParticipatingUnitsFunc(ctx context.Context, req *wxApplet.AppListOfParticipatingUnitsReq) (res *wxApplet.AppListOfParticipatingUnitsRes, err error) {
|
||
res, err = service.BusLabourservice().AppListOfParticipatingUnitsFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppListOfConstructionPersonnelFunc 施工人员列表(分页)
|
||
func (c *appPortController) AppListOfConstructionPersonnelFunc(ctx context.Context, req *wxApplet.AppListOfConstructionPersonnelReq) (res *wxApplet.AppListOfConstructionPersonnelRes, err error) {
|
||
res, err = service.BusConstructionUser().AppListOfConstructionPersonnelFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppExitFunc 退场
|
||
func (c *appPortController) AppExitFunc(ctx context.Context, req *wxApplet.AppExitReq) (res *wxApplet.AppExitRes, err error) {
|
||
res = new(wxApplet.AppExitRes)
|
||
err = serviceController.BusConstructionUser().AppExitFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppResubmitTheExitAttachmentFunc 补交退场附件
|
||
func (c *appPortController) AppResubmitTheExitAttachmentFunc(ctx context.Context, req *wxApplet.AppResubmitTheExitAttachmentReq) (res *wxApplet.AppResubmitTheExitAttachmentRes, err error) {
|
||
res = new(wxApplet.AppResubmitTheExitAttachmentRes)
|
||
err = serviceController.BusConstructionUser().AppResubmitTheExitAttachmentFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppTeamAttendanceFunc 团队出勤
|
||
func (c *appPortController) AppTeamAttendanceFunc(ctx context.Context, req *wxApplet.AppTeamAttendanceReq) (res *wxApplet.AppTeamAttendanceRes, err error) {
|
||
res, err = service.BusAttendance().AppTeamAttendanceFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppGetsThePeopleUnderTheSpecifiedProjectFunc 获取指定项目下已实名认证或已退出班组的人
|
||
func (c *appPortController) AppGetsThePeopleUnderTheSpecifiedProjectFunc(ctx context.Context, req *wxApplet.AppGetsThePeopleUnderTheSpecifiedProjectReq) (res *wxApplet.AppGetsThePeopleUnderTheSpecifiedProjectRes, err error) {
|
||
res, err = service.BusConstructionUser().AppGetsThePeopleUnderTheSpecifiedProjectFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppJoinATeamFunc 加入指定项目下的指定班组
|
||
func (c *appPortController) AppJoinATeamFunc(ctx context.Context, req *wxApplet.AppJoinATeamReq) (res *wxApplet.AppJoinATeamRes, err error) {
|
||
err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
||
err = g.Try(ctx, func(ctx context.Context) {
|
||
for _, openid := range req.Openids {
|
||
r := new(wxSystem.SysProjectTeamMemberAddReq)
|
||
r.Openid = openid
|
||
r.PostId = 4
|
||
copier.Copy(r, req)
|
||
err = service.SysProjectTeamMember().Add(ctx, r)
|
||
liberr.ErrIsNil(ctx, err)
|
||
}
|
||
})
|
||
return err
|
||
})
|
||
return
|
||
}
|
||
|
||
// AppGetPersonnelDetailsFunc 获取人员详情
|
||
func (c *appPortController) AppGetPersonnelDetailsFunc(ctx context.Context, req *wxApplet.AppGetPersonnelDetailsReq) (res *wxApplet.AppGetPersonnelDetailsRes, err error) {
|
||
res, err = service.BusConstructionUser().AppGetPersonnelDetailsFunc(ctx, req)
|
||
return
|
||
}
|
||
|
||
// ===========================================提醒===========================================
|
||
// ===========================================提醒===========================================
|
||
// ===========================================提醒===========================================
|
||
|
||
// AIWorkOrderDetailsFunc AI工单详情
|
||
func (c *appPortController) AIWorkOrderDetailsFunc(ctx context.Context, req *wxApplet.AIWorkOrderDetailsReq) (res *wxApplet.AIWorkOrderDetailsRes, err error) {
|
||
res = new(wxApplet.AIWorkOrderDetailsRes)
|
||
err = g.Try(ctx, func(ctx context.Context) {
|
||
// 1、获取主体信息
|
||
err = g.DB().Model("reminders").As("e").
|
||
LeftJoin("bus_violation_record", "a", "a.id = e.order_id").
|
||
LeftJoin("sys_dict_data", "b", "b.dict_type = 'tour_type' and b.dict_value = a.tour_type").
|
||
LeftJoin("sys_dict_data", "c", "c.dict_type = 'violation_record_data_source' and c.dict_value = a.data_source").
|
||
LeftJoin("sys_project", "d", "d.id = a.project_id").
|
||
Fields("a.*,b.dict_label as tt,c.dict_label as ds,d.project_name as projectName,e.status").
|
||
Where("e.id", req.Id).Scan(&res)
|
||
liberr.ErrIsNil(ctx, err, "获取当前AI数据失败")
|
||
if res.Openid != "" { // 获取处理人名称
|
||
value, _ := dao.BusConstructionUser.Ctx(ctx).Where("openid", res.Openid).Fields("user_name").Value()
|
||
res.OpenidName = value.String()
|
||
}
|
||
if res.Status == "3" { // 复查人名称
|
||
value, _ := g.DB().Model("sys_user").Ctx(ctx).Where("id", res.SelectPeople).Fields("user_nickname").Value()
|
||
res.ReviewName = value.String()
|
||
}
|
||
i2, _ := g.DB().Model("bus_violation_record_correlation").Ctx(ctx).
|
||
Where("a.record_id", res.Id).As("a").
|
||
LeftJoin("sys_user", "b", "b.id = a.user_id").
|
||
Fields("b.user_nickname").Array()
|
||
for i3 := range i2 { // 哪些人可以复查(只需有一个复查就行了)
|
||
res.SuperintendName = append(res.SuperintendName, i2[i3].String())
|
||
}
|
||
// 2、获取附件
|
||
var pathEntity []*model.BusViolationRecordPathLogicRes
|
||
err = g.DB().Model("bus_violation_record_path").Ctx(ctx).Where("ticket_id", req.Id).Scan(&pathEntity)
|
||
liberr.ErrIsNil(ctx, err, "查询失败")
|
||
// 3、分类附件
|
||
var one []*model.BusViolationRecordPathLogicRes
|
||
var two []*model.BusViolationRecordPathLogicRes
|
||
for i := range pathEntity {
|
||
if pathEntity[i].Type == "1" {
|
||
one = append(one, pathEntity[i])
|
||
} else {
|
||
two = append(two, pathEntity[i])
|
||
}
|
||
}
|
||
res.CheckAttachment = one
|
||
res.AbarbeitungAttachment = two
|
||
})
|
||
return
|
||
}
|
||
|
||
// QualityControlDetailsFunc 质量管理详情
|
||
func (c *appPortController) QualityControlDetailsFunc(ctx context.Context, req *wxApplet.QualityControlDetailsReq) (res *wxApplet.QualityControlDetailsRes, err error) {
|
||
res = new(wxApplet.QualityControlDetailsRes)
|
||
err = g.Try(ctx, func(ctx context.Context) {
|
||
m := g.DB().Model("reminders").As("e").
|
||
LeftJoin("bus_inspection_ticket", "a", "a.id = e.order_id").
|
||
LeftJoin("sys_project", "b", "b.id = a.project_id").
|
||
LeftJoin("sys_dict_data", "c", "dict_type = 'inspection_type' and dict_value = a.Inspection_type").
|
||
LeftJoin(dao.BusConstructionUser.Table(), "d", "d.openid = a.corrector").
|
||
Fields(
|
||
"a.id,b.project_name as projectName," + // 主键ID、项目名称
|
||
"c.dict_label," + // 巡检类型
|
||
"a.inspection_headline," + // 巡检主题
|
||
"a.inspection_result," + // 巡检结果
|
||
"d.user_name as abarbeitung," + // 整改人
|
||
"a.is_reply,a.reply_date," + // 是否回复、回复时间
|
||
"a.created_by as fill,a.created_at," + // 填报人、填报时间
|
||
"a.feedback," + // 整改反馈
|
||
"a.verification_result," + // 验证结果
|
||
"e.status,a.verification_type," + // 工单状态、验证状态
|
||
"a.updated_at as updatedAt," + // 更新时间
|
||
"a.rectification_time as rectificationTime", // 整改时间
|
||
)
|
||
err = m.Where("e.id", req.Id).Scan(&res)
|
||
liberr.ErrIsNil(ctx, err, "查询失败")
|
||
// 2、获取附件
|
||
var pathEntity []*wxApplet.SecurityManagementDetailsPath
|
||
err = g.DB().Model("bus_inspection_ticket_path").Ctx(ctx).Where("ticket_id", res.Id).Scan(&pathEntity)
|
||
liberr.ErrIsNil(ctx, err, "查询失败")
|
||
// 3、分类附件
|
||
var one []*wxApplet.SecurityManagementDetailsPath
|
||
var two []*wxApplet.SecurityManagementDetailsPath
|
||
for i := range pathEntity {
|
||
if pathEntity[i].Type == "1" {
|
||
one = append(one, pathEntity[i])
|
||
} else {
|
||
two = append(two, pathEntity[i])
|
||
}
|
||
}
|
||
res.Inspectionccessories = one
|
||
res.CorrectiveAttachment = two
|
||
// 3、获取
|
||
res.Fill = coryCommon.SelectByString(ctx, coryCommon.IsNumeric(res.Fill), res.Fill)
|
||
})
|
||
return
|
||
}
|
||
|
||
// SecurityManagementDetailsFunc 安全管理详情
|
||
func (c *appPortController) SecurityManagementDetailsFunc(ctx context.Context, req *wxApplet.SecurityManagementDetailsReq) (res *wxApplet.SecurityManagementDetailsRes, err error) {
|
||
res = new(wxApplet.SecurityManagementDetailsRes)
|
||
err = g.Try(ctx, func(ctx context.Context) {
|
||
m := g.DB().Model("reminders").As("f").
|
||
LeftJoin("bus_hse_management", "a", "a.id = f.order_id").
|
||
LeftJoin("sys_project", "b", "b.id = a.project_id").
|
||
LeftJoin("sys_dict_data", "c", "c.dict_type = 'study_type' and c.dict_value = a.study_type").
|
||
LeftJoin("sys_dict_data", "e", "e.dict_type = 'tour_type' and e.dict_value = a.tour_type").
|
||
LeftJoin(dao.BusConstructionUser.Table(), "d", "d.openid = a.corrector").
|
||
Fields(
|
||
"a.id,b.project_name as projectName," + // 主键ID、项目名称
|
||
"c.dict_label as studyTypeName," + // 检查类型
|
||
"e.dict_label as tourTypeName," + // 违章类型
|
||
"a.inspection_result," + // 巡检结果
|
||
"a.check_time," + // 检查时间
|
||
"a.reply_date," + // 要求整改期限
|
||
"a.team_name as teamName," + // 班组
|
||
"d.user_name as abarbeitung," + // 整改人
|
||
"a.rectification_time," + // 整改时间
|
||
"a.hidden_danger," + // 问题隐患
|
||
"a.measure," + // 整改措施
|
||
"a.review_time," + // 复查时间
|
||
"a.review," + // 复查情况
|
||
"f.status," + // 工单状态
|
||
"a.review_type," + // 复查状态
|
||
"a.created_by as fill," + // 复查状态
|
||
"a.created_at") // 创建人(检查、复查)
|
||
err = m.Where("f.id", req.Id).Scan(&res)
|
||
|
||
liberr.ErrIsNil(ctx, err, "查询失败")
|
||
// 2、获取附件
|
||
var pathEntity []*wxApplet.SecurityManagementDetailsPath
|
||
err = g.DB().Model("bus_hse_management_path").Ctx(ctx).Where("ticket_id", req.Id).Scan(&pathEntity)
|
||
liberr.ErrIsNil(ctx, err, "查询失败")
|
||
// 3、分类附件
|
||
var one []*wxApplet.SecurityManagementDetailsPath
|
||
var two []*wxApplet.SecurityManagementDetailsPath
|
||
for i := range pathEntity {
|
||
if pathEntity[i].Type == "1" {
|
||
one = append(one, pathEntity[i])
|
||
} else {
|
||
two = append(two, pathEntity[i])
|
||
}
|
||
}
|
||
res.CheckAttachment = one
|
||
res.AbarbeitungAttachment = two
|
||
// 3、获取
|
||
res.Fill = coryCommon.SelectByString(ctx, coryCommon.IsNumeric(res.Fill), res.Fill)
|
||
})
|
||
return
|
||
}
|
||
|
||
// ===========================================请假===========================================
|
||
// ===========================================请假===========================================
|
||
// ===========================================请假===========================================
|
||
|
||
// AppAskForLeaveAdd 务工者-请假新增
|
||
func (c *appPortController) AppAskForLeaveAdd(ctx context.Context, req *wxApplet.AppAskForLeaveAddReq) (res *wxApplet.AppBusAskforleaveAddRes, err error) {
|
||
err = service.BusAskforleave().AppAskForLeaveAdd(ctx, req)
|
||
return
|
||
}
|
||
|
||
// AppAskForLeaveListPage 务工者-请假记录列表-分页
|
||
func (c *appPortController) AppAskForLeaveListPage(ctx context.Context, req *wxApplet.AppAskForLeaveListPageReq) (res *wxApplet.AppAskForLeaveListPageRes, err error) {
|
||
return service.BusAskforleave().AppAskForLeaveListPage(ctx, req)
|
||
}
|
||
|
||
// AppAskForLeaveInfo 务工者-请假详情
|
||
func (c *appPortController) AppAskForLeaveInfo(ctx context.Context, req *wxApplet.AppAskForLeaveInfoReq) (res *wxApplet.AppAskForLeaveInfoRes, err error) {
|
||
return service.BusAskforleave().AppAskForLeaveInfo(ctx, req)
|
||
}
|
||
|
||
// AppBzzAskForLeaveListPage 班组长-审批
|
||
func (c *appPortController) AppBzzAskForLeaveUpdate(ctx context.Context, req *wxApplet.AppBzzAskForLeaveUpdateReq) (res *wxApplet.AppBzzAskForLeaveUpdateRes, err error) {
|
||
err = service.BusAskforleave().AppBzzAskForLeaveUpdate(ctx, req)
|
||
return
|
||
}
|
||
|
||
// ===========================================其它===========================================
|
||
// ===========================================其它===========================================
|
||
// ===========================================其它===========================================
|
||
|
||
// AppBase64ToImgFuncFunc 将图片的base64转成png存储到本地,返回相对路径
|
||
func (c *appPortController) AppBase64ToImgFuncFunc(ctx context.Context, req *wxApplet.AppBase64ToImgFuncReq) (res *wxApplet.AppBase64ToImgFuncRes, err error) {
|
||
res = new(wxApplet.AppBase64ToImgFuncRes)
|
||
path, err := coryCommon.Base64ToImgFunc(req.Base64Str, "1", coryCommon.Helmet)
|
||
res.Path = "/" + path
|
||
return
|
||
}
|
||
|
||
// AppGetLatestAppVersionFunc 获取最新的App版本号
|
||
func (c *appPortController) AppGetLatestAppVersionFunc(ctx context.Context, req *wxApplet.GetLatestAppVersionReq) (*wxApplet.GetLatestAppVersionRes, error) {
|
||
var AppVersionInfo entity.AppVersions
|
||
err := controllerDao.AppVersions.Ctx(ctx).Fields(entity.AppVersions{}).
|
||
Where(controllerDao.AppVersions.Columns().Platform, req.Platform).
|
||
OrderDesc(controllerDao.AppVersions.Columns().Id).Limit(1).Scan(&AppVersionInfo)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &wxApplet.GetLatestAppVersionRes{
|
||
Info: AppVersionInfo,
|
||
}, nil
|
||
}
|
||
|
||
// AppReleaseAppVersionFunc 发布一个新的版本
|
||
func (c *appPortController) AppReleaseAppVersionFunc(ctx context.Context, req *wxApplet.ReleaseAppVersionReq) (*wxApplet.ReleaseAppVersionRes, error) {
|
||
var (
|
||
path, _ = os.Getwd()
|
||
Version = req.Version
|
||
plantType = req.Platform
|
||
)
|
||
|
||
// 根据平台类型拼接版本号
|
||
var devicePlatform string
|
||
switch plantType {
|
||
case 0:
|
||
devicePlatform = "Android"
|
||
case 1:
|
||
devicePlatform = "IOS"
|
||
}
|
||
|
||
// 拼接文件保存路径: 当前路径 + resource + public + version + 版本号 + 平台类型
|
||
filePath := filepath.Join(path, "resource", "public", "version", Version, devicePlatform)
|
||
|
||
// 保存到数据库的静态文件托管路径: file + version + 版本号 + 平台类型 + 文件名
|
||
savePath := filepath.Join("file", "version", Version, devicePlatform, req.File.Filename)
|
||
|
||
// 检查版本号是否已存在,如果存在则用新版本替换旧版本
|
||
var appVersion entity.AppVersions
|
||
if err := controllerDao.AppVersions.Ctx(ctx).Where(controllerDao.AppVersions.Columns().Version, Version).Where(controllerDao.AppVersions.Columns().Platform, plantType).Scan(&appVersion); err == nil {
|
||
// 删除旧版本文件
|
||
if err := os.RemoveAll(filepath.Join(filePath, filepath.Base(appVersion.FilePath))); err != nil {
|
||
return nil, fmt.Errorf("删除以往的版本文件失败:%w", err)
|
||
}
|
||
|
||
// 保存新版本文件
|
||
if _, err := req.File.Save(filePath); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 更新数据库中的文件路径
|
||
if _, err := controllerDao.AppVersions.Ctx(ctx).Data(gdb.Map{controllerDao.AppVersions.Columns().FilePath: savePath}).Where(controllerDao.AppVersions.Columns().Id, appVersion.Id).Update(); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &wxApplet.ReleaseAppVersionRes{}, nil
|
||
}
|
||
|
||
if _, err := req.File.Save(filePath); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
// 构造数据库记录
|
||
appVersionInfo := entity.AppVersions{
|
||
Version: Version, // 版本号
|
||
FilePath: savePath, // 文件路径
|
||
Platform: plantType, // 平台类型
|
||
}
|
||
|
||
// 保存到数据库
|
||
_, err := controllerDao.AppVersions.Ctx(ctx).Data(appVersionInfo).Insert()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &wxApplet.ReleaseAppVersionRes{}, nil
|
||
}
|