package controller import ( "github.com/gin-gonic/gin" "hepa-calc-admin-api/api/dao" "hepa-calc-admin-api/api/dto" "hepa-calc-admin-api/api/requests" "hepa-calc-admin-api/api/responses" "hepa-calc-admin-api/api/service" "hepa-calc-admin-api/global" "hepa-calc-admin-api/utils" "strconv" ) type OrderMember struct{} // GetOrderMemberPage 获取会员订单列表-分页 func (b *OrderMember) GetOrderMemberPage(c *gin.Context) { orderMemberRequest := requests.OrderMemberRequest{} req := orderMemberRequest.GetOrderMemberPage if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if req.Page == 0 { req.Page = 1 } if req.PageSize == 0 { req.PageSize = 20 } userId := c.GetInt64("UserId") req.UserId = userId // 获取数据 orderMemberDao := dao.OrderMemberDao{} orderMember, total, err := orderMemberDao.GetOrderMemberPageSearch(req, req.Page, req.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 g := dto.GetOrderMemberListDto(orderMember) result := make(map[string]interface{}) result["page"] = req.Page result["page_size"] = req.PageSize result["total"] = total result["data"] = g responses.OkWithData(result, c) } // GetOrderMember 获取会员订单详情 func (b *OrderMember) GetOrderMember(c *gin.Context) { id := c.Param("order_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 orderId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取订单数据 orderMemberDao := dao.OrderMemberDao{} orderMember, err := orderMemberDao.GetOrderMemberPreloadById(orderId) if err != nil { responses.FailWithMessage("订单异常", c) return } // 处理返回值 g := dto.GetOrderMemberDto(orderMember) // 加载会员数据 g.LoadSystemMember(orderMember.SystemMember) // 加载用户数据 g.LoadUserAttr(orderMember.User) responses.OkWithData(g, c) } // PutCancelOrderMember 取消会员订单 func (b *OrderMember) PutCancelOrderMember(c *gin.Context) { id := c.Param("order_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 orderId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取订单数据 orderMemberDao := dao.OrderMemberDao{} orderMember, err := orderMemberDao.GetOrderMemberById(orderId) if err != nil { responses.FailWithMessage("订单异常", c) return } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() // 取消单项订单 orderMemberService := service.OrderMemberService{} res, err := orderMemberService.CancelOrderMember(tx, orderMember.UserId, orderId, 2) if err != nil { tx.Rollback() responses.FailWithMessage(err.Error(), c) return } if res == false { tx.Rollback() responses.FailWithMessage("取消订单失败", c) return } tx.Commit() responses.Ok(c) } // PutOrderMemberDeleteStatus 操作会员订单删除状态 func (b *OrderMember) PutOrderMemberDeleteStatus(c *gin.Context) { orderMemberRequest := requests.OrderMemberRequest{} req := orderMemberRequest.PutOrderMemberDeleteStatus if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if req.IsDelete != 0 && req.IsDelete != 1 { responses.FailWithMessage("参数错误", c) return } id := c.Param("order_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 orderId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取订单数据 orderMemberDao := dao.OrderMemberDao{} orderMember, err := orderMemberDao.GetOrderMemberById(orderId) if err != nil { responses.FailWithMessage("订单异常", c) return } // 检测订单状态 if orderMember.OrderStatus == 2 { responses.FailWithMessage("订单不允许删除", c) return } // 检测订单删除状态 if orderMember.IsDelete == req.IsDelete { responses.Ok(c) return } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() orderMemberData := make(map[string]interface{}) orderMemberData["is_delete"] = req.IsDelete err = orderMemberDao.EditOrderMemberById(tx, orderId, orderMemberData) if err != nil { tx.Rollback() responses.FailWithMessage("删除失败", c) return } tx.Commit() responses.Ok(c) }