package controllers import ( "Cold_Api/conf" "Cold_Api/controllers/lib" "Cold_Api/models/Account" "Cold_Api/models/AfterSales" "encoding/json" "math" beego "github.com/beego/beego/v2/server/web" ) type AfterSalesController struct { beego.Controller Admin_r Account.Admin // 登陆的用户 } func (c *AfterSalesController) Prepare() { GetCookie := c.Ctx.GetCookie("User_tokey") GetString := c.GetString("User_tokey") User_tokey := GetString if len(User_tokey) == 0 { User_tokey = GetCookie } if Account.Admin_r == nil { return } c.Admin_r = *Account.Admin_r } // AddAfterSales 添加售后服务 func (c *AfterSalesController) AddAfterSales() { var afterSales AfterSales.AfterSales // 获取参数 T_name := c.GetString("T_name") if len(T_name) == 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "售后服务名称不能为空"} c.ServeJSON() return } T_category, err := c.GetInt("T_category") if err != nil || T_category <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "分类参数错误,请选择有效的分类"} c.ServeJSON() return } // 检查分类是否存在 if _, err = AfterSales.Read_AfterSalesCategory_ById(T_category); err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "所选分类不存在"} c.ServeJSON() return } T_content := c.GetString("T_content") T_attachments := c.GetString("T_attachments") // JSON字符串,新格式 T_sort, _ := c.GetInt("T_sort") T_display, _ := c.GetInt("T_display") // 是否显示,默认为1(显示) // 验证附件JSON格式 if len(T_attachments) > 0 { var attachments []AfterSales.Attachment err = json.Unmarshal([]byte(T_attachments), &attachments) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "附件格式错误,请传入有效的JSON格式:[{\"name\":\"文件名\",\"url\":\"文件地址\"}]"} c.ServeJSON() return } } // 构建数据 afterSales.T_name = T_name afterSales.T_category = T_category afterSales.T_content = T_content afterSales.T_attachments = T_attachments afterSales.T_sort = T_sort afterSales.T_display = T_display afterSales.T_State = 1 // 保存到数据库 id, err := AfterSales.Add_AfterSales(afterSales) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "添加成功!", Data: map[string]interface{}{"id": id}} c.ServeJSON() return } // UpdateAfterSales 修改售后服务 func (c *AfterSalesController) UpdateAfterSales() { id, err := c.GetInt("T_id") if err != nil || id <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "ID参数错误"} c.ServeJSON() return } // 先查询记录是否存在 afterSales, err := AfterSales.Read_AfterSales_ById(id) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录不存在"} c.ServeJSON() return } // 更新字段 var updateCols []string T_name := c.GetString("T_name") if len(T_name) > 0 { afterSales.T_name = T_name updateCols = append(updateCols, "T_name") } T_category, err := c.GetInt("T_category") if err == nil && T_category > 0 { // 检查分类是否存在 if _, err := AfterSales.Read_AfterSalesCategory_ById(T_category); err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "所选分类不存在"} c.ServeJSON() return } afterSales.T_category = T_category updateCols = append(updateCols, "T_category") } T_content := c.GetString("T_content") if len(T_content) > 0 { afterSales.T_content = T_content updateCols = append(updateCols, "T_content") } T_attachments := c.GetString("T_attachments") if len(T_attachments) > 0 { // 验证JSON格式 var attachments []AfterSales.Attachment err = json.Unmarshal([]byte(T_attachments), &attachments) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "附件格式错误,请传入有效的JSON格式:[{\"name\":\"文件名\",\"url\":\"文件地址\"}]"} c.ServeJSON() return } afterSales.T_attachments = T_attachments updateCols = append(updateCols, "T_attachments") } T_sort, err := c.GetInt("T_sort") if err == nil { afterSales.T_sort = T_sort updateCols = append(updateCols, "T_sort") } T_display, err := c.GetInt("T_display") if err == nil { afterSales.T_display = T_display updateCols = append(updateCols, "T_display") } if len(updateCols) == 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有需要更新的字段"} c.ServeJSON() return } updateCols = append(updateCols, "UpdateTime") success := AfterSales.Update_AfterSales(afterSales, updateCols...) if !success { c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "修改成功"} c.ServeJSON() return } // DeleteAfterSales 删除售后服务 func (c *AfterSalesController) DeleteAfterSales() { id, err := c.GetInt("T_id") if err != nil || id <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "ID参数错误"} c.ServeJSON() return } // 查询记录是否存在 _, err = AfterSales.Read_AfterSales_ById(id) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录不存在"} c.ServeJSON() return } success := AfterSales.Delete_AfterSales_ById(id) if !success { c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除成功"} c.ServeJSON() return } // GetAfterSalesById 根据ID获取售后服务详情 func (c *AfterSalesController) GetAfterSalesById() { id, err := c.GetInt("T_id") if err != nil || id <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "ID参数错误"} c.ServeJSON() return } afterSales, err := AfterSales.Read_AfterSales_ById(id) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录不存在"} c.ServeJSON() return } result := AfterSales.AfterSalesToAfterSales_R(afterSales) c.Data["json"] = lib.JSONS{Code: 200, Msg: "查询成功", Data: result} c.ServeJSON() return } // GetAfterSalesList 获取售后服务列表 func (c *AfterSalesController) GetAfterSalesList() { var r_jsons lib.R_JSONS page, _ := c.GetInt("page") if page < 1 { page = 1 } page_z, _ := c.GetInt("page_z") if page_z < 1 { page_z = conf.Page_size } T_name := c.GetString("T_name") // 标题搜索 T_category, _ := c.GetInt("T_category") // 分类筛选 T_display, _ := c.GetInt("T_display") // 是否显示筛选 r_jsons.Data, r_jsons.Num = AfterSales.Read_AfterSales_List(T_name, T_category, T_display, page, page_z) r_jsons.Page = page r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z))) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons} c.ServeJSON() return } // GetCategoryList 获取分类列表 func (c *AfterSalesController) GetCategoryList() { categories := AfterSales.Read_AfterSalesCategory_All() c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: categories} c.ServeJSON() return } // GetCategoryCount 获取各分类的数量统计 func (c *AfterSalesController) GetCategoryCount() { categories := AfterSales.Read_AfterSalesCategory_All() var result []AfterSales.AfterSalesCategory_Count_R for _, category := range categories { count := AfterSales.Read_AfterSales_Count_ByCategoryId(category.Id) categoryWithCount := AfterSales.AfterSalesCategoryToAfterSalesCategory_Count_R( AfterSales.AfterSalesCategory{ Id: category.Id, T_name: category.T_name, T_sort: category.T_sort, }, count) result = append(result, categoryWithCount) } c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: result} c.ServeJSON() return } // ------------- 售后服务分类管理接口 ------------- // AddAfterSalesCategory 添加售后服务分类 func (c *AfterSalesController) AddAfterSalesCategory() { var category AfterSales.AfterSalesCategory // 获取参数 T_name := c.GetString("T_name") if len(T_name) == 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "分类名称不能为空"} c.ServeJSON() return } // 检查名称是否重复 if AfterSales.Check_AfterSalesCategory_Name_Exists(T_name, 0) { c.Data["json"] = lib.JSONS{Code: 202, Msg: "分类名称已存在"} c.ServeJSON() return } T_sort, _ := c.GetInt("T_sort") // 构建数据 category.T_name = T_name category.T_sort = T_sort category.T_State = 1 // 保存到数据库 id, err := AfterSales.Add_AfterSalesCategory(category) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "添加成功!", Data: map[string]interface{}{"id": id}} c.ServeJSON() return } // UpdateAfterSalesCategory 修改售后服务分类 func (c *AfterSalesController) UpdateAfterSalesCategory() { id, err := c.GetInt("T_id") if err != nil || id <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "ID参数错误"} c.ServeJSON() return } // 先查询记录是否存在 category, err := AfterSales.Read_AfterSalesCategory_ById(id) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录不存在"} c.ServeJSON() return } // 更新字段 var updateCols []string T_name := c.GetString("T_name") if len(T_name) > 0 { // 检查名称是否重复 if AfterSales.Check_AfterSalesCategory_Name_Exists(T_name, id) { c.Data["json"] = lib.JSONS{Code: 202, Msg: "分类名称已存在"} c.ServeJSON() return } category.T_name = T_name updateCols = append(updateCols, "T_name") } T_sort, err := c.GetInt("T_sort") if err == nil { category.T_sort = T_sort updateCols = append(updateCols, "T_sort") } if len(updateCols) == 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有需要更新的字段"} c.ServeJSON() return } updateCols = append(updateCols, "UpdateTime") success := AfterSales.Update_AfterSalesCategory(category, updateCols...) if !success { c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "修改成功"} c.ServeJSON() return } // DeleteAfterSalesCategory 删除售后服务分类 func (c *AfterSalesController) DeleteAfterSalesCategory() { id, err := c.GetInt("T_id") if err != nil || id <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "ID参数错误"} c.ServeJSON() return } // 查询记录是否存在 _, err = AfterSales.Read_AfterSalesCategory_ById(id) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录不存在"} c.ServeJSON() return } // 检查是否有售后服务使用此分类 count := AfterSales.Read_AfterSales_Count_ByCategoryId(id) if count > 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "该分类下还有售后服务,无法删除"} c.ServeJSON() return } success := AfterSales.Delete_AfterSalesCategory_ById(id) if !success { c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败"} c.ServeJSON() return } c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除成功"} c.ServeJSON() return } // GetAfterSalesCategoryById 根据ID获取售后服务分类详情 func (c *AfterSalesController) GetAfterSalesCategoryById() { id, err := c.GetInt("T_id") if err != nil || id <= 0 { c.Data["json"] = lib.JSONS{Code: 202, Msg: "ID参数错误"} c.ServeJSON() return } category, err := AfterSales.Read_AfterSalesCategory_ById(id) if err != nil { c.Data["json"] = lib.JSONS{Code: 202, Msg: "记录不存在"} c.ServeJSON() return } result := AfterSales.AfterSalesCategoryToAfterSalesCategory_R(category) c.Data["json"] = lib.JSONS{Code: 200, Msg: "查询成功", Data: result} c.ServeJSON() return } // GetAfterSalesCategoryList 获取售后服务分类列表 func (c *AfterSalesController) GetAfterSalesCategoryList() { var r_jsons lib.R_JSONS page, _ := c.GetInt("page") if page < 1 { page = 1 } page_z, _ := c.GetInt("page_z") if page_z < 1 { page_z = conf.Page_size } T_name := c.GetString("T_name") // 名称搜索 r_jsons.Data, r_jsons.Num = AfterSales.Read_AfterSalesCategory_List(T_name, page, page_z) r_jsons.Page = page r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z))) c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons} c.ServeJSON() return } // GetAfterSalesCategoryAll 获取所有售后服务分类(简化版本,用于下拉选择等) func (c *AfterSalesController) GetAfterSalesCategoryAll() { result := AfterSales.Read_AfterSalesCategory_All() c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: result} c.ServeJSON() return }