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" ) type ContractApi struct{} // Add // // @Tags Contract // @Summary 添加合同 // @Produce application/json // @Param object body request.AddContract true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/contract/add [post] func (s *ContractApi) Add(c *gin.Context) { var params request.AddContract ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, contract := checkContractParams(params.Contract) if errCode != ecode.OK { ctx.Fail(errCode) return } count, err := model.NewContractSearch().SetNumber(params.Number).Count() if err != nil { ctx.FailWithMsg(ecode.UnknownErr, "编码验证失败") return } if count > 0 { ctx.FailWithMsg(ecode.UnknownErr, "编码已存在") return } if contract.MemberId == 0 { userInfo := utils.GetUserInfo(c) if userInfo.UserType == constvar.UserTypeSub { contract.MemberId = userInfo.CrmUserId } } errCode = contractService.AddContract(&contract) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Delete // // @Tags Contract // @Summary 删除合同 // @Produce application/json // @Param object body request.DeleteContract true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/contract/delete [delete] func (s *ContractApi) Delete(c *gin.Context) { id := c.Param("id") ctx, _ := contextx.NewContext(c, nil) if id == "" { ctx.Fail(ecode.ParamsErr) return } atoi, err := strconv.Atoi(id) if err != nil { ctx.FailWithMsg(ecode.UnknownErr, "数据转换失败") return } errCode := contractService.DeleteContract(atoi) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Update // // @Tags Contract // @Summary 更新合同 // @Produce application/json // @Param object body request.UpdateContract true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/contract/update [put] func (s *ContractApi) Update(c *gin.Context) { var params request.UpdateContract ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode, contract := checkContractParams(params.Contract) if errCode != ecode.OK { ctx.Fail(errCode) return } contract.Id = params.Id errCode = contractService.UpdateContract(&contract) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } func checkContractParams(contract request.Contract) (errCode int, contractModel model.Contract) { //if contract.Number == "" { // return ecode.InvalidParams, contractModel //} //if contract.MemberId == 0 { // return ecode.InvalidParams, contractModel //} contractModel = model.Contract{ ClientId: contract.ClientId, MemberId: contract.MemberId, Number: contract.Number, QuotationId: contract.QuotationId, StatusId: contract.StatusId, File: contract.File, CodeStandID: contract.CodeStandID, ContractName: contract.ContractName, SendTime: contract.SendTime, } return ecode.OK, contractModel } // List // // @Tags Contract // @Summary 销售合同列表 // @Produce application/json // @Param object body request.GetContractList true "参数" // @Success 200 {object} contextx.Response{data=response.ContractResponse} // @Router /api/contract/list [post] func (con *ContractApi) List(c *gin.Context) { var params request.GetContractList ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } if params.SearchMap == nil { params.SearchMap = make(map[string]interface{}, 0) } userInfo := utils.GetUserInfo(c) if userInfo.UserType == constvar.UserTypeSub { params.SearchMap["member_ids"] = userInfo.SubUserIds } contracts, total, errCode := contractService.GetContractList(params.Page, params.PageSize, params.SearchMap, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.ContractResponse{ List: contracts, Count: int(total), }) }