123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package pick
- import (
- "github.com/gin-gonic/gin"
- "zhiyuan/pkg/app"
- "zhiyuan/pkg/param/material/item"
- pkgParam "zhiyuan/pkg/param/material/pkg"
- "zhiyuan/pkg/utils"
- "zhiyuan/services/form"
- "zhiyuan/services/material/pick"
- "zhiyuan/services/material/pkg"
- )
- func BuildList(c *gin.Context) {
- pkgID := utils.StrTo(c.Query("pkg_id")).MustInt()
- if pkgID <= 0 {
- app.Error(c, "套餐id有误")
- return
- }
- pkgInfo, err := pkg.GetPkg(map[string]interface{}{"id": pkgID}, []string{"id", "room_types", "pkg_name"}, nil)
- if err != nil {
- app.Error(c, "套餐id有误")
- return
- }
- type BuildList struct {
- ID int `json:"id"`
- BuildName string `json:"build_name"`
- BuildType int `json:"build_type"`
- Price float64 `json:"price"`
- Unit int `json:"unit"`
- UnitName string `json:"unit_name"`
- BuildTypeName string `json:"build_type_name"`
- }
- buildList := make([]BuildList, 0)
- if _, err := pick.GetBuilds(map[string]interface{}{"pkg_id": pkgID}, nil, app.Page{}, &buildList); err != nil {
- app.Error(c, err.Error())
- return
- }
- BuildListMap := make(map[int][]BuildList, 0)
- unitTypes := utils.ParseSliceMap(item.Params.Unit, "id")
- for _, v := range buildList {
- v.UnitName = utils.ToStr(unitTypes[utils.ToStr(v.Unit)]["name"])
- BuildListMap[v.BuildType] = append(BuildListMap[v.BuildType], v)
- }
- type PkgBuildList struct {
- BuildType int `json:"build_type"`
- BuildTypeName string `json:"build_type_name"`
- Builds []BuildList `json:"builds"`
- }
- pkgBuildListGroup := make([]PkgBuildList, 0)
- for _, v := range pkgParam.Params.BuildType {
- if BuildListMap[v.ID] == nil {
- BuildListMap[v.ID] = make([]BuildList, 0)
- }
- pkgBuildListGroup = append(pkgBuildListGroup, PkgBuildList{
- BuildType: v.ID,
- BuildTypeName: v.Name,
- Builds: BuildListMap[v.ID],
- })
- }
- pkgBuildList := make([]map[string]interface{}, 0)
- for _, v := range pkgBuildListGroup {
- pkgBuildList = append(pkgBuildList, map[string]interface{}{
- "build_type": v.BuildType,
- "build_type_name": v.BuildTypeName,
- "rowspan": len(v.Builds) + 1,
- "colspan": 1,
- })
- for _, build := range v.Builds {
- pkgBuildList = append(pkgBuildList, map[string]interface{}{
- "id": build.ID,
- "unit_name": build.UnitName,
- "unit": build.Unit,
- "price": build.Price,
- "build_type": build.BuildType,
- "build_name": build.BuildName,
- "rowspan": 0,
- "colspan": 0,
- })
- }
- }
- app.Success(c, map[string]interface{}{"build_list": pkgBuildList, "pkg_info": pkgInfo})
- }
- func BuildAdd(c *gin.Context) {
- var form form.MaterialPickBuildAdd
- if app.Bind(c, &form) != nil {
- return
- }
- if id, err := pick.AddBuild(form); err != nil {
- app.Error(c, err.Error())
- return
- } else {
- app.Success(c, gin.H{"id": id})
- }
- }
- func BuildEdit(c *gin.Context) {
- id := utils.StrTo(c.Param("id")).MustInt()
- if id <= 0 {
- app.Error(c, "id有误")
- return
- }
- var form form.MaterialPickBuildAdd
- if app.Bind(c, &form) != nil {
- return
- }
- if _, err := pick.EditBuild(form, id); err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
- func BuildDel(c *gin.Context) {
- id := utils.StrTo(c.Param("id")).MustInt()
- if id <= 0 {
- app.Error(c, "id有误")
- return
- }
- if _, err := pick.DelBuild(id); err != nil {
- app.ErrorMsg(c, err.Error(), nil)
- return
- }
- app.Success(c, nil)
- }
|