Browse Source

12月17日完成后台查看明细页面所有接口

details_ljk
lijikun 5 months ago
parent
commit
0d3c157f2e
  1. 41
      link_homework/api/v1/record/Record.go
  2. 8
      link_homework/internal/cmd/cmd.go
  3. 88
      link_homework/internal/controller/record/manageRecord.go
  4. 6
      link_homework/internal/logic/homework/homeworkList.go
  5. 1
      link_homework/internal/logic/logic.go
  6. 138
      link_homework/internal/logic/record/record.go
  7. 24
      link_homework/internal/model/dto/ToolStruct.go
  8. 39
      link_homework/internal/service/record.go

41
link_homework/api/v1/record/Record.go

@ -1,17 +1,46 @@
package record
import "github.com/gogf/gf/v2/os/gtime"
import "link_homework/internal/model/dto"
type GetRecordListReq struct {
Id int `json:"id" orm:"" dc:"作业id"`
PageNo int `json:"pageNo" dc:"当前页"`
PageSize int `json:"pageSize" dc:"每页条数"`
}
// 合并并返回的提交详情所用信息
type GetRecordListRes struct {
Name string `json:"name" orm:"db:cms;table:member_info;column:name" dc:"用户名字"`
Total int `json:"total" dc:"总条数"`
Jwcode int `json:"jwcode" orm:"db:cms;table:member_info;column:jwcode" dc:"精网号"`
DeptId int `json:"deptId" orm:"db:cms;table:member_info;column:deptId" dc:"部门id"`
Name string `json:"name" orm:"db:cms;table:member_info;column:name" dc:"用户名字"`
DeptId string `json:"deptId" orm:"db:cms;table:member_info;column:deptId" dc:"部门id"`
DeptName string `json:"deptName" orm:"db:cms;member_info;column:deptName" dc:"部门名"`
Content string `json:"content" orm:"db:default;table:activity_interactive_record;column:content" dc:"作答内容"`
ContentTitle string `json:"contentTitle" orm:"db:default;table:activity_interactive_record;column:content_title" dc:"作答标题"`
SubmitTime gtime.Time `json:"submitTime" orm:"db:default;table:activity_interactive_record;column:updated_at" dc:"提交时间/更新时间"`
ShopId string `json:"shopId" orm:"db:cms;member_info;column:shopId" dc:"门店id"`
ShopName string `json:"shopName" orm:"db:cms;member_info;column:shopName" dc:"门店名"`
Reply []dto.RecordInfo
}
type GetRecordByConditionReq struct {
Id int `json:"id" orm:"" dc:"作业id"`
Jwcode int `json:"jwcode" dc:"精网号"`
DeptId string `json:"deptId" dc:"部门id"`
ShopId string `json:"shopId" dc:"门店id"`
PageNo int `json:"pageNo" dc:"当前页"`
PageSize int `json:"pageSize" dc:"每页条数"`
}
/*GetRecordByConditionRes的返回值与GetRecordListRes的一致,所以直接套用*/
type GetDeptInfoRes struct {
DeptId string `json:"deptId" orm:"db:cms;table:member_info;column:deptId" dc:"部门id"`
DeptName string `json:"deptName" orm:"db:cms;member_info;column:deptName" dc:"部门名"`
}
type GetShopInfoByDeptIdReq struct {
DeptId string `json:"deptId" dc:"部门id"`
}
type GetShopInfoByDeptIdRes struct {
ShopId string `json:"shopId" orm:"db:cms;member_info;column:shopId" dc:"门店id"`
ShopName string `json:"shopName" orm:"db:cms;member_info;column:shopName" dc:"门店名"`
}

8
link_homework/internal/cmd/cmd.go

@ -6,6 +6,7 @@ import (
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/os/gcmd"
"link_homework/internal/controller/clientPage"
"link_homework/internal/controller/record"
"link_homework/internal/logic/middleware"
)
@ -35,9 +36,14 @@ var (
// //GlobalMiddleware: true,
//}
s.Group("/api/homework_manage", func(group *ghttp.RouterGroup) {
group.Middleware(middleware.MiddlewareIsLogin)
group.Middleware(middleware.MiddlewareCORS)
//group.Middleware(middleware.MiddlewareIsLogin)
//gfToken.Middleware(ctx, group)
//直接写接口,不用再分组
group.POST("/getrecordlist", record.NewManageRecord().GetRecordList)
group.POST("/getrecordbycondition", record.NewManageRecord().GetRecordByCondition)
group.POST("/getdeptinfo", record.NewManageRecord().GetDeptInfo)
group.POST("/getshopinfo", record.NewManageRecord().GetShopInfo)
})
//客户端
s.Group("/api/homework_client", func(group *ghttp.RouterGroup) {

88
link_homework/internal/controller/record/manageRecord.go

@ -4,6 +4,7 @@ import (
"github.com/gogf/gf/v2/net/ghttp"
"link_homework/api/v1/record"
"link_homework/internal/model/dto"
"link_homework/internal/service"
)
type ManageRecord struct{}
@ -12,6 +13,7 @@ func NewManageRecord() *ManageRecord {
return &ManageRecord{}
}
// 查询所有提交记录
func (m *ManageRecord) GetRecordList(r *ghttp.Request) {
var req record.GetRecordListReq
if err := r.Parse(&req); err != nil {
@ -20,5 +22,89 @@ func (m *ManageRecord) GetRecordList(r *ghttp.Request) {
Message: err.Error(),
})
}
//result, err := service
groupId := req.Id
pageNo := req.PageNo
pageSize := req.PageSize
result, err := service.Record().GetRecordList(r.Context(), groupId, pageNo, pageSize)
if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
}
// 根据条件查询提交记录
func (m *ManageRecord) GetRecordByCondition(r *ghttp.Request) {
var req record.GetRecordByConditionReq
if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
groupId := req.Id
jwcode := req.Jwcode
deptId := req.DeptId
shopId := req.ShopId
pageNo := req.PageNo
pageSize := req.PageSize
result, err := service.Record().GetRecordByCondition(r.Context(), groupId, jwcode, deptId, shopId, pageNo, pageSize)
if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
}
// 查询用户部门信息
func (m *ManageRecord) GetDeptInfo(r *ghttp.Request) {
result, err := service.Record().GetDeptInfo(r.Context())
if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
}
// 查询用户门店信息
func (m *ManageRecord) GetShopInfo(r *ghttp.Request) {
var req record.GetShopInfoByDeptIdReq
if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
deptId := req.DeptId
result, err := service.Record().GetShopInfoByDeptId(r.Context(), deptId)
if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
}
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
}

6
link_homework/internal/logic/homework/homeworkList.go

@ -30,9 +30,9 @@ func (s *sHomework) GetHomeworkList(ctx context.Context) (homeworkList []ClientP
fmt.Println("提交记录数查询失败:", err)
return
}
num, err := dao.ActivityInteractiveForm.Ctx(ctx).Where("group", item.Id).Count()
if err != nil {
fmt.Println("题目数查询失败:", err)
num, err1 := dao.ActivityInteractiveForm.Ctx(ctx).Where("group", item.Id).Count()
if err1 != nil {
fmt.Println("题目数查询失败:", err1, num)
return
}
homeworkList[i].Submit = count / num

1
link_homework/internal/logic/logic.go

@ -2,4 +2,5 @@ package logic
import (
_ "link_homework/internal/logic/homework"
_ "link_homework/internal/logic/record"
)

138
link_homework/internal/logic/record/record.go

@ -0,0 +1,138 @@
package record
import (
"context"
"errors"
"fmt"
"github.com/gogf/gf/v2/frame/g"
pkgRecord "link_homework/api/v1/record"
"link_homework/internal/dao"
"link_homework/internal/model/dto"
"link_homework/internal/service"
)
type sRecord struct{}
func init() {
service.RegisterRecord(&sRecord{})
}
func NewRecord() *sRecord {
return &sRecord{}
}
// 无条件全查
func (s *sRecord) GetRecordList(ctx context.Context, groupId, pageNo, pageSize int) (record []pkgRecord.GetRecordListRes, err error) {
//从record表中查询出jwcode,根据group_id
err = dao.ActivityInteractiveRecord.Ctx(ctx).Fields("jwcode").Where("group_id", groupId).Group("jwcode").
Page(pageNo, pageSize).Scan(&record)
if err != nil {
panic("无条件查jwcode失败")
}
fmt.Println(record)
//根据jwcode在member_info表中查询姓名(name), 部门id(deptId), 部门名(deptName), 门店id(shopId), 门店名(shopName)
for i, info := range record {
err = g.DB("cms").Model("member_info").Fields("jwcode", "name", "deptId", "deptName", "shopId", "shopName").
Where("jwcode", info.Jwcode).Scan(&record[i])
if err != nil {
panic("无条件根据jwcode查member_info表失败")
}
total, err1 := dao.ActivityInteractiveRecord.Ctx(ctx).Fields("jwcode").Where("group_id", groupId).Group("jwcode").Count()
if err1 != nil {
return
}
record[i].Total = total
//根据jwcode,groupId在record表中查询最新的提交记录进行存放
var recordInfo []dto.RecordInfo
err = dao.ActivityInteractiveRecord.Ctx(ctx).Fields("content", "content_title", "updated_at", "form_id").
Where("jwcode", info.Jwcode).Where("group_id", groupId).Group("form_id").Order("updated_at desc").Scan(&recordInfo) //不是最新的,需要再改
for i, title := range recordInfo {
err = dao.ActivityInteractiveForm.Ctx(ctx).Fields("description", "type").Where("id", title.FormId).Scan(&recordInfo[i])
}
record[i].Reply = recordInfo
fmt.Println(record)
}
return
}
// 根据条件查询
func (s *sRecord) GetRecordByCondition(ctx context.Context, groupId, jwcode int, deptId, shopId string, pageNo, pageSize int) (record []pkgRecord.GetRecordListRes, err error) {
//全查
recordList, err := s.GetRecordList(ctx, groupId, pageNo, pageSize)
if err != nil {
return nil, err
}
//判断传来的jwcode, deptId, shopId是否为空,根据情况进行不同的筛选
if jwcode == 0 { //没有传jwcode
if deptId == "" && shopId == "" { //000
return recordList, nil
} else if deptId != "" && shopId == "" { //010
for _, info := range recordList {
if info.DeptId == deptId {
record = append(record, info)
}
}
if record == nil {
return nil, errors.New("只部门没有查询到相关记录")
}
return record, err
} else if deptId != "" && shopId != "" { //011
for _, info := range recordList {
if info.DeptId == deptId && info.ShopId == shopId {
record = append(record, info)
}
}
if record == nil {
return nil, errors.New("部门,门店 没有查询到相关记录")
}
return record, err
}
} else { //传了jwcode
if deptId == "" && shopId == "" { //100
for _, info := range recordList {
if info.Jwcode == jwcode {
record = append(record, info)
}
}
if record == nil {
return nil, errors.New("只精网号没有查询到相关记录")
}
return record, err
} else if deptId != "" && shopId == "" { //110
for _, info := range recordList {
if info.Jwcode == jwcode && info.DeptId == deptId {
record = append(record, info)
}
}
if record == nil {
return nil, errors.New("精网号,部门 没有查询到相关记录")
}
return record, err
} else if deptId != "" && shopId != "" { //111
for _, info := range recordList {
if info.Jwcode == jwcode && info.DeptId == deptId && info.ShopId == shopId {
record = append(record, info)
}
}
if record == nil {
return nil, errors.New("精网号,部门,门店 没有查询到相关记录")
}
return record, err
}
}
return nil, errors.New("检查一下穿的参数是否正常")
}
// 查询部门信息
func (s *sRecord) GetDeptInfo(ctx context.Context) (depts []pkgRecord.GetDeptInfoRes, err error) {
err = g.DB("cms").Model("member_info").Fields("deptId", "deptName").Group("deptId").Scan(&depts)
return
}
// 根据部门信息查询门店信息
func (s *sRecord) GetShopInfoByDeptId(ctx context.Context, deptId string) (shops []pkgRecord.GetShopInfoByDeptIdRes, err error) {
err = g.DB("cms").Model("member_info").Fields("shopId", "shopName").
Where("deptId", deptId).Group("shopId").Scan(&shops)
return
}

24
link_homework/internal/model/dto/ToolStruct.go

@ -0,0 +1,24 @@
package dto
import "github.com/gogf/gf/v2/os/gtime"
// 从cms库中查询用户信息
type MemberInfo struct {
Jwcode int `json:"jwcode" orm:"db:cms;table:member_info;column:jwcode" dc:"精网号"`
Name string `json:"name" orm:"db:cms;table:member_info;column:name" dc:"用户名字"`
DeptId string `json:"deptId" orm:"db:cms;table:member_info;column:deptId" dc:"部门id"`
DeptName string `json:"deptName" orm:"db:cms;member_info;column:deptName" dc:"部门名"`
ShopId string `json:"shopId" orm:"db:cms;member_info;column:shopId" dc:"门店id"`
ShopName string `json:"shopName" orm:"db:cms;member_info;column:shopName" dc:"门店名"`
}
// 从live库里查询作业信息
type RecordInfo struct {
//Jwcode int `json:"jwcode" orm:"db:default;table:activity_interactive_record;column:jwcode" dc:"精网号"`
FormId int `json:"formId" orm:"db:default;table:activity_interactive_record;column:form_id" dc:"题目id"`
Type int `json:"type" orm:"db:default;table:activity_interactive_form;column:type" dc:"题目类型"`
Description string `json:"formTitle" orm:"db:default;table:activity_interactive_form;column:description" dc:"题目"`
ContentTitle string `json:"contentTitle" orm:"db:default;table:activity_interactive_record;column:content_title" dc:"作答标题"`
Content string `json:"content" orm:"db:default;table:activity_interactive_record;column:content" dc:"作答内容"`
UpdatedAt gtime.Time `json:"submitTime" orm:"db:default;table:activity_interactive_record;column:updated_at" dc:"提交时间/更新时间"`
}

39
link_homework/internal/service/record.go

@ -0,0 +1,39 @@
// ================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// You can delete these comments if you wish manually maintain this interface file.
// ================================================================================
package service
import (
"context"
pkgRecord "link_homework/api/v1/record"
)
type (
IRecord interface {
// 无条件全查
GetRecordList(ctx context.Context, groupId int, pageNo int, pageSize int) (record []pkgRecord.GetRecordListRes, err error)
// 根据条件查询
GetRecordByCondition(ctx context.Context, groupId int, jwcode int, deptId string, shopId string, pageNo int, pageSize int) (record []pkgRecord.GetRecordListRes, err error)
// 查询部门信息
GetDeptInfo(ctx context.Context) (depts []pkgRecord.GetDeptInfoRes, err error)
// 根据部门信息查询门店信息
GetShopInfoByDeptId(ctx context.Context, deptId string) (shops []pkgRecord.GetShopInfoByDeptIdRes, err error)
}
)
var (
localRecord IRecord
)
func Record() IRecord {
if localRecord == nil {
panic("implement not found for interface IRecord, forgot register?")
}
return localRecord
}
func RegisterRecord(i IRecord) {
localRecord = i
}
Loading…
Cancel
Save