package v1 import ( "aps_crm/constvar" "aps_crm/model" "aps_crm/model/request" "aps_crm/model/response" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" "aps_crm/utils" "github.com/gin-gonic/gin" "strconv" "strings" ) type SalesRefundApi struct{} // Add // // @Tags 销售退款单 // @Summary 添加销售退款 // @Produce application/json // @Param object body request.AddSalesRefundRequest true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/salesRefund/add [post] func (s *SalesRefundApi) Add(c *gin.Context) { var params request.AddSalesRefundRequest ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, salesRefund := checkSalesRefundParams(params.SalesRefund) if errCode != ecode.OK { ctx.Fail(errCode) return } errCode = salesRefundService.AddSalesRefund(&salesRefund) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Delete // // @Tags 销售退款单 // @Summary 删除销售退款 // @Produce application/json // @Param id path int true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/salesRefund/delete/{id} [delete] func (s *SalesRefundApi) Delete(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } id, _ := strconv.Atoi(c.Param("id")) errCode := salesRefundService.DeleteSalesRefund(id) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // BatchDelete // @Tags 销售退款单 // @Summary 批量删除销售退款单 // @Produce application/json // @Param object body request.CommonIds true "参数" // @Success 200 {object} contextx.Response{} // @Router /api/salesRefund/delete [delete] func (s *SalesRefundApi) BatchDelete(c *gin.Context) { var params request.CommonIds ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } failIds, _ := salesRefundService.BatchDeleteSalesRefund(params.Ids) if len(failIds) == 0 { ctx.Ok() return } salesReturns, code := salesRefundService.GetSalesRefundListByIds(failIds) if code != ecode.OK { ctx.Ok() return } var numbers []string for _, salesReturn := range salesReturns { numbers = append(numbers, salesReturn.Number) } ctx.FailWithMsg(ecode.DBErr, strings.Join(numbers, ",")+"删除失败") } // Update // // @Tags 销售退款单 // @Summary 更新销售退款 // @Produce application/json // @Param object body request.UpdateSalesRefundRequest true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/salesRefund/update [put] func (s *SalesRefundApi) Update(c *gin.Context) { var params request.UpdateSalesRefundRequest ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, salesRefund := checkSalesRefundParams(params.SalesRefund) if errCode != ecode.OK { ctx.Fail(errCode) return } salesRefund.Id = params.Id errCode = salesRefundService.UpdateSalesRefund(&salesRefund) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } func checkSalesRefundParams(salesRefund request.SalesRefund) (errCode int, salesRefundRes model.SalesRefund) { salesRefundRes.RefundDate = salesRefund.RefundDate salesRefundRes.ClientId = salesRefund.ClientId salesRefundRes.Number = salesRefund.Number salesRefundRes.MemberId = salesRefund.MemberId salesRefundRes.PaymentTypeId = salesRefund.PaymentTypeId salesRefundRes.BankAccountId = salesRefund.BankAccountId salesRefundRes.IsInvoice = salesRefund.IsInvoice salesRefundRes.Reason = salesRefund.Reason salesRefundRes.Products = salesRefund.Products salesRefundRes.SourceType = salesRefund.SourceType salesRefundRes.SourceId = salesRefund.SourceId return ecode.OK, salesRefundRes } // List // // @Tags 销售退款单 // @Summary 销售退款单列表 // @Produce application/json // @Param object body request.GetSalesRefundList true "参数" // @Success 200 {object} contextx.Response{data=response.SalesRefundResponse} // @Router /api/salesRefund/list [post] func (con *SalesRefundApi) List(c *gin.Context) { var params request.GetSalesRefundList ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } var memberIds []int userInfo := utils.GetUserInfo(c) if userInfo.UserType == constvar.UserTypeSub { memberIds = []int{userInfo.CrmUserId} } salesRefunds, total, errCode := salesRefundService.GetSalesRefundList(params.Page, params.PageSize, params.KeywordType, params.Keyword, memberIds) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.SalesRefundResponse{ List: salesRefunds, Count: int(total), }) }