Browse Source

12月21日 对返回前端的方法进行修改,实现代码重用

dev_ljk
lijikun 5 months ago
parent
commit
d89b88cc32
  1. 85
      link_homework/internal/controller/clientPage/clientPage.go
  2. 85
      link_homework/internal/controller/record/manageRecord.go
  3. 42
      link_homework/internal/logic/client/client.go
  4. 2
      link_homework/internal/logic/middleware/interceptor.go
  5. 31
      link_homework/internal/model/dto/Result.go

85
link_homework/internal/controller/clientPage/clientPage.go

@ -16,89 +16,70 @@ func NewClientPage() *ClientPage {
// 查询作业列表 // 查询作业列表
func (c *ClientPage) GetHomeworkList(r *ghttp.Request) { func (c *ClientPage) GetHomeworkList(r *ghttp.Request) {
//请求中不需要携带任何参数
//token := r.Request.Header.Get("token")
// 获取请求头中的token
token := r.Header.Get("token") token := r.Header.Get("token")
//fmt.Println("======")
//fmt.Println(token)
//fmt.Println("------")
// 调用utility包中的GetJwcodeJSON函数,传入token,获取jwcode
jwcode, err := utility.GetJwcodeJSON(token) jwcode, err := utility.GetJwcodeJSON(token)
//fmt.Println(token)
// 如果出现错误,则返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 调用service包中的ClientGetHomeworkList函数,传入r.Context()和jwcode,获取作业列表
result, err := service.Client().ClientGetHomeworkList(r.Context(), jwcode) result, err := service.Client().ClientGetHomeworkList(r.Context(), jwcode)
// 如果出现错误,则返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
// 返回作业列表
r.Response.WriteJsonExit(dto.SuccessWithData(result))
} }
// 查询题目列表 // 查询题目列表
func (c *ClientPage) GetHomeworkQuestion(r *ghttp.Request) { func (c *ClientPage) GetHomeworkQuestion(r *ghttp.Request) {
// 定义一个CPage.GetHomeworkQuestionReq类型的变量req
var req CPage.GetHomeworkQuestionReq var req CPage.GetHomeworkQuestionReq
// 解析请求参数,将解析结果赋值给req
if err := r.Parse(&req); err != nil { if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
// 如果解析失败,返回错误信息
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 调用service.Client().GetHomeworkQuestion方法,传入req.Id作为参数,获取作业题目
result, err := service.Client().GetHomeworkQuestion(r.Context(), req.Id) result, err := service.Client().GetHomeworkQuestion(r.Context(), req.Id)
// 如果获取作业题目失败,返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 如果获取的作业题目为空,返回错误信息
if result == nil { if result == nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: "该作业没有题目",
})
r.Response.WriteJsonExit(dto.Error("该作业没有题目"))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
// 返回作业题目
r.Response.WriteJsonExit(dto.SuccessWithData(result))
} }
func (c *ClientPage) CommitHomework(r *ghttp.Request) { func (c *ClientPage) CommitHomework(r *ghttp.Request) {
// 获取请求头中的token
token := r.Request.Header.Get("token") token := r.Request.Header.Get("token")
// 根据token获取jwcode
jwcode, err := utility.GetJwcodeJSON(token) jwcode, err := utility.GetJwcodeJSON(token)
// 如果获取失败,返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 定义提交作业请求结构体
var req CPage.CommitHomeworkReq var req CPage.CommitHomeworkReq
// 解析请求参数
if err := r.Parse(&req); err != nil { if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
// 如果解析失败,返回错误信息
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 调用服务提交作业
err = service.Client().CommitHomework(r.Context(), req, jwcode) err = service.Client().CommitHomework(r.Context(), req, jwcode)
// 如果提交失败,返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "提交作业成功",
})
// 提交成功,返回成功信息
r.Response.WriteJsonExit(dto.SuccessWithMsg("提交作业成功"))
} }

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

@ -18,93 +18,71 @@ func NewManageRecord() *ManageRecord {
// 查询所有提交记录 // 查询所有提交记录
func (m *ManageRecord) GetRecordList(r *ghttp.Request) { func (m *ManageRecord) GetRecordList(r *ghttp.Request) {
// 定义一个record.GetRecordListReq类型的变量req
var req record.GetRecordListReq var req record.GetRecordListReq
// 解析请求参数,如果解析失败,则返回错误信息
if err := r.Parse(&req); err != nil { if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error("参数解析失败: " + err.Error()))
} }
// 调用service.Record().GetRecordList方法,获取记录列表,如果获取失败,则返回错误信息
result, err := service.Record().GetRecordList(r.Context(), req.Id, req.PageNo, req.PageSize) result, err := service.Record().GetRecordList(r.Context(), req.Id, req.PageNo, req.PageSize)
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
// 返回成功信息,并附带记录列表
r.Response.WriteJsonExit(dto.SuccessWithData(result))
} }
// 根据条件查询提交记录 // 根据条件查询提交记录
func (m *ManageRecord) GetRecordByCondition(r *ghttp.Request) { func (m *ManageRecord) GetRecordByCondition(r *ghttp.Request) {
// 定义一个record.GetRecordByConditionReq类型的变量req
var req record.GetRecordByConditionReq var req record.GetRecordByConditionReq
// 解析请求参数,将解析结果赋值给req
if err := r.Parse(&req); err != nil { if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
// 如果解析失败,返回错误信息
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 调用service.Record().GetRecordByCondition方法,根据req中的参数查询记录
result, err := service.Record().GetRecordByCondition(r.Context(), req.Id, req.Jwcode, req.DeptId, req.ShopId, req.PageNo, req.PageSize) result, err := service.Record().GetRecordByCondition(r.Context(), req.Id, req.Jwcode, req.DeptId, req.ShopId, req.PageNo, req.PageSize)
// 如果查询失败,返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 如果查询结果为空,返回错误信息
if result == nil { if result == nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: "没有查询到记录",
})
r.Response.WriteJsonExit(dto.Error("没有查询到记录"))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
// 返回查询结果
r.Response.WriteJsonExit(dto.SuccessWithData(result))
} }
// 查询用户部门信息 // 查询用户部门信息
func (m *ManageRecord) GetDeptInfo(r *ghttp.Request) { func (m *ManageRecord) GetDeptInfo(r *ghttp.Request) {
// 调用service.Record().GetDeptInfo()方法,获取部门信息
result, err := service.Record().GetDeptInfo(r.Context()) result, err := service.Record().GetDeptInfo(r.Context())
// 如果出现错误,则返回错误信息
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
// 如果没有错误,则返回成功信息
r.Response.WriteJsonExit(dto.SuccessWithData(result))
} }
// 查询用户门店信息 // 查询用户门店信息
func (m *ManageRecord) GetShopInfo(r *ghttp.Request) { func (m *ManageRecord) GetShopInfo(r *ghttp.Request) {
// 定义一个结构体变量req,用于存储请求参数
var req record.GetShopInfoByDeptIdReq var req record.GetShopInfoByDeptIdReq
// 解析请求参数,如果解析失败,则返回错误信息
if err := r.Parse(&req); err != nil { if err := r.Parse(&req); err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
// 调用service.Record().GetShopInfoByDeptId方法,根据部门ID获取店铺信息,如果获取失败,则返回错误信息
result, err := service.Record().GetShopInfoByDeptId(r.Context(), req.DeptId) result, err := service.Record().GetShopInfoByDeptId(r.Context(), req.DeptId)
if err != nil { if err != nil {
r.Response.WriteJsonExit(dto.Result{
Code: 400,
Message: err.Error(),
})
r.Response.WriteJsonExit(dto.Error(err.Error()))
} }
r.Response.WriteJsonExit(dto.Result{
Code: 200,
Message: "success",
Data: result,
})
// 返回成功信息,包含获取到的店铺信息
r.Response.WriteJsonExit(dto.SuccessWithData(result))
} }
// ExportRecordByCondition 导出记录 // ExportRecordByCondition 导出记录
@ -174,7 +152,10 @@ func (m *ManageRecord) ExportRecordByCondition(r *ghttp.Request) {
return return
} }
// 设置响应头,指定内容类型为Excel文件
r.Response.Header().Set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") r.Response.Header().Set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
// 设置响应头,指定文件名为fileName
r.Response.Header().Set("Content-Disposition", "attachment; filename="+fileName) r.Response.Header().Set("Content-Disposition", "attachment; filename="+fileName)
// 将buffer中的内容写入响应
r.Response.Write(buffer.Bytes()) r.Response.Write(buffer.Bytes())
} }

42
link_homework/internal/logic/client/client.go

@ -20,33 +20,30 @@ func init() {
func (s *sClient) ClientGetHomeworkList(ctx context.Context, jwcode int) (homeworkList []ClientPage.GetHomeworkListRse, err error) { func (s *sClient) ClientGetHomeworkList(ctx context.Context, jwcode int) (homeworkList []ClientPage.GetHomeworkListRse, err error) {
// 从Redis中获取数据 // 从Redis中获取数据
value, _ := g.Redis().Get(ctx, "ClientHomeworkList")
if value.String() != "" {
value, _ := g.Redis().Get(ctx, "ClientHomeworkList") //从Redis中获取ClientHomeworkList的值
if value.String() != "" { //如果值不为空
err = json.Unmarshal(value.Bytes(), &homeworkList) //JSON -> Go数据结构 err = json.Unmarshal(value.Bytes(), &homeworkList) //JSON -> Go数据结构
if err != nil {
return nil, errors.New("从Redis获取数据,JSON解析失败")
if err != nil { //如果解析失败
return nil, errors.New("从Redis获取数据,JSON解析失败") //返回错误信息
} }
return return
} }
// 如果Redis中没有数据,查询数据库 // 如果Redis中没有数据,查询数据库
//var jwcode = 90038794 //需要从token中获取当前的数据
// 查询活动互动组表,根据条件查询id、name、end_date字段,并按照end_date降序排列
err = dao.ActivityInteractiveGroup.Ctx(ctx).Fields("id", "name", "DATE_FORMAT(end_date, '%Y-%m-%d') as end_date"). err = dao.ActivityInteractiveGroup.Ctx(ctx).Fields("id", "name", "DATE_FORMAT(end_date, '%Y-%m-%d') as end_date").
Where("end_date>?", gtime.Now()).Where("status", 1).OrderDesc("end_date").Scan(&homeworkList) Where("end_date>?", gtime.Now()).Where("status", 1).OrderDesc("end_date").Scan(&homeworkList)
if err != nil { if err != nil {
//fmt.Println("作业列表查询失败:", err)
return return
} }
for i, item := range homeworkList { for i, item := range homeworkList {
var count int var count int
count, err = dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id=?", item.Id).Where("jwcode", jwcode).Count() //只有精网号和作业id查出来的结果是所需要的结果的题目数倍数 count, err = dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id=?", item.Id).Where("jwcode", jwcode).Count() //只有精网号和作业id查出来的结果是所需要的结果的题目数倍数
if err != nil { if err != nil {
//fmt.Println("提交记录数查询失败:", err)
return return
} }
num, err1 := dao.ActivityInteractiveForm.Ctx(ctx).Where("group_id", item.Id).Count() num, err1 := dao.ActivityInteractiveForm.Ctx(ctx).Where("group_id", item.Id).Count()
if err1 != nil { if err1 != nil {
//fmt.Println("题目数查询失败:", err1)
return return
} }
homeworkList[i].Submit = count / num homeworkList[i].Submit = count / num
@ -87,32 +84,35 @@ func (s *sClient) CommitHomework(ctx context.Context, req ClientPage.CommitHomew
//req中需要有:作业id,提交的每一个题的答案,每一个提的类型 //req中需要有:作业id,提交的每一个题的答案,每一个提的类型
for _, answer := range req.CommitedAnswer { for _, answer := range req.CommitedAnswer {
if answer.Type == 1 { //单选或者多选 if answer.Type == 1 { //单选或者多选
// 插入单选或者多选答案
_, err := dao.ActivityInteractiveRecord.Ctx(ctx).Data(g.Map{ _, err := dao.ActivityInteractiveRecord.Ctx(ctx).Data(g.Map{
"jwcode": jwcode,
"form_id": answer.Id,
"group_id": req.GroupId,
"content": answer.Answer[0],
"jwcode": jwcode, // 问卷编号
"form_id": answer.Id, // 答案编号
"group_id": req.GroupId, // 组编号
"content": answer.Answer[0], // 答案内容
}).Insert() }).Insert()
if err != nil { if err != nil {
return err return err
} }
} else if answer.Type == 2 { //多选 } else if answer.Type == 2 { //多选
// 插入多选答案
_, err := dao.ActivityInteractiveRecord.Ctx(ctx).Data(g.Map{ _, err := dao.ActivityInteractiveRecord.Ctx(ctx).Data(g.Map{
"jwcode": jwcode,
"form_id": answer.Id,
"group_id": req.GroupId,
"content": answer.Answer,
"jwcode": jwcode, // 问卷编号
"form_id": answer.Id, // 答案编号
"group_id": req.GroupId, // 组编号
"content": answer.Answer, // 答案内容
}).Insert() }).Insert()
if err != nil { if err != nil {
return err return err
} }
} else if answer.Type == 3 { //简答 } else if answer.Type == 3 { //简答
// 插入简答答案
_, err := dao.ActivityInteractiveRecord.Ctx(ctx).Data(g.Map{ _, err := dao.ActivityInteractiveRecord.Ctx(ctx).Data(g.Map{
"jwcode": jwcode,
"form_id": answer.Id,
"group_id": req.GroupId,
"content_title": answer.Answer[0],
"content": answer.Answer[1],
"jwcode": jwcode, // 问卷编号
"form_id": answer.Id, // 答案编号
"group_id": req.GroupId, // 组编号
"content_title": answer.Answer[0], // 答案标题
"content": answer.Answer[1], // 答案内容
}).Insert() }).Insert()
if err != nil { if err != nil {
return err return err

2
link_homework/internal/logic/middleware/interceptor.go

@ -30,7 +30,7 @@ func MiddlewareIsLoginClient(r *ghttp.Request) {
if token != LocalToken { if token != LocalToken {
r.Response.WriteJsonExit(dto.Result{ r.Response.WriteJsonExit(dto.Result{
Code: 401, Code: 401,
Message: "Token 无效123",
Message: "客户端Token 无效123",
}) })
} else { } else {
r.Middleware.Next() r.Middleware.Next()

31
link_homework/internal/model/dto/Result.go

@ -1,9 +1,5 @@
package dto package dto
import (
"github.com/gogf/gf/v2/frame/g"
)
// 定义响应结构 // 定义响应结构
type Result struct { type Result struct {
Code int `json:"code"` Code int `json:"code"`
@ -16,7 +12,18 @@ func Success() *Result {
return &Result{ return &Result{
Code: 200, Code: 200,
Message: "success", Message: "success",
Data: g.Map{},
//Data: g.Map{},
Data: nil,
}
}
/*成功,自定义相应信息*/
func SuccessWithMsg(msg string) *Result {
return &Result{
Code: 200,
Message: msg,
//Data: g.Map{},
Data: nil,
} }
} }
@ -32,9 +39,10 @@ func SuccessWithData(data interface{}) *Result {
/*错误,只有错误信息,错误码0*/ /*错误,只有错误信息,错误码0*/
func Error(msg string) *Result { func Error(msg string) *Result {
return &Result{ return &Result{
Code: 0, // 错误码
Code: 400, // 错误码
Message: msg, // 错误信息 Message: msg, // 错误信息
Data: g.Map{},
//Data: g.Map{},
Data: nil,
} }
} }
@ -43,7 +51,8 @@ func ErrorWithCode(code int, msg string) *Result {
return &Result{ return &Result{
Code: code, // 错误码 Code: code, // 错误码
Message: msg, // 错误信息 Message: msg, // 错误信息
Data: g.Map{},
//Data: g.Map{},
Data: nil,
} }
} }
@ -52,7 +61,8 @@ func Unauthorized(msg string) *Result {
return &Result{ return &Result{
Code: 401, // 错误码 Code: 401, // 错误码
Message: msg, // 错误信息 Message: msg, // 错误信息
Data: g.Map{},
//Data: g.Map{},
Data: nil,
} }
} }
@ -61,6 +71,7 @@ func UnauthorizedWithCode(code int, msg string) *Result {
return &Result{ return &Result{
Code: code, // 错误码 Code: code, // 错误码
Message: msg, // 错误信息 Message: msg, // 错误信息
Data: g.Map{},
//Data: g.Map{},
Data: nil,
} }
} }
Loading…
Cancel
Save