func (p *ProductEdit) Setup() { // (string, string) { // page values p.Title = "create product post" fmt.Println(p.Id) fmt.Println(p.Product) if p.Id != nil { var err error if p.Product, err = service.Product.GetFullProduct(p.Id.Int); err != nil { panic(err) } // fill Colors and Sizes for ng. if p.Product != nil { if p.Product.Colors != nil { for _, c := range p.Product.Colors { p.Colors = append(p.Colors, model.NewObject(c)) } } if p.Product.Sizes != nil { for _, c := range p.Product.Sizes { p.Sizes = append(p.Sizes, model.NewObject(c)) } } } p.SubTitle = "编辑" } else { p.Product = model.NewProduct() p.SubTitle = "新建" p.Colors = model.NewObjectArray(2, "") p.Sizes = model.NewObjectArray(2, "") } // stock json if p.Product.Stocks != nil && len(p.Product.Stocks) > 0 { jsonbytes, err := json.Marshal(p.Product.Stocks) if err != nil { p.StockJson = "{}" } p.StockJson = string(jsonbytes) // p.StockJson = p.StockJson[1 : len(p.StockJson)-1] } else { p.StockJson = "{}" } }
func (p *ProductEdit) OnPrepareForSubmitFromProductForm() { if p.Id == nil { // if create p.Product = model.NewProduct() } else { // if edit // for security reason, TODO security check here. // 读取了数据库的order是为了保证更新的时候不会丢失form中没有的数据; model, err := service.Product.GetFullProduct(p.Id.Int) if err != nil { panic(err.Error()) } p.Product = model // 但是这样做就必须清除form更新的时候需要删除的值,否则form提交和原有值是叠加的,会引起错误; // 这里只需要清除列表等数据,这个Order中只有Details是列表。 p.Product.ClearColors() p.Product.ClearSizes() p.Product.ClearValues() } }
// get product productmap, err := service.Product.BatchFetchProductByIdMap(p.Data.ProductMap()) if err != nil { return exit.Error(err) } p.products = productmap return nil } func (p *ProductCalcTable) GetData(date string, productId int64) string { value := p.Data.Get(date, productId) if value == 0 { return "" } else { return fmt.Sprint(value) } } var emptyproduct = model.NewProduct() func (p *ProductCalcTable) GetProduct(productId int64) *model.Product { if nil != p.products { if product, ok := p.products[productId]; ok && nil != product { return product } } return emptyproduct }