作者 yangfu

feat: 产品信息优化

1 1
2 -- 表product_material_group 增加唯一索引 idx_unq_product_material_group_company_id_org_id_material_group_number 2 -- 表product_material_group 增加唯一索引 idx_unq_product_material_group_company_id_org_id_material_group_number
3 3
4 -create UNIQUE INDEX idx_unq_product_material_group_company_id_org_id_material_group_number on manufacture.product_material_group using btree(company_id,org_id,material_group_number);  
  4 +create UNIQUE INDEX idx_unq_product_material_group_company_id_org_id_material_group_number on manufacture.product_material_group using btree(company_id,org_id,material_group_number);
  5 +
  6 +-- 表product_material 增加唯一索引 idx_unq_product_material_company_id_material_number
  7 +create UNIQUE INDEX idx_unq_product_material_company_id_material_number on manufacture.product_material using btree(company_id,material_number);
@@ -14,19 +14,15 @@ type CreateProductCommand struct { @@ -14,19 +14,15 @@ type CreateProductCommand struct {
14 // 组织ID 14 // 组织ID
15 OrgId int `cname:"组织ID" json:"orgId" valid:"Required"` 15 OrgId int `cname:"组织ID" json:"orgId" valid:"Required"`
16 // 产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001 16 // 产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001
17 - ProductCode string `cname:"产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001" json:"productCode"` 17 + ProductCode string `cname:"产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001" json:"productCode" valid:"Required"`
18 // 产品名称 18 // 产品名称
19 - ProductName string `cname:"产品名称" json:"productName" valid:"Required"` 19 + // ProductName string `cname:"产品名称" json:"productName" valid:"Required"`
20 // 产品类别 20 // 产品类别
21 - ProductCategory string `cname:"产品类别" json:"productCategory" valid:"Required"`  
22 - // 数量(保留两位小数)  
23 - //Quantity float64 `cname:"数量(保留两位小数)" json:"quantity" valid:"Required"` 21 + // ProductCategory string `cname:"产品类别" json:"productCategory" valid:"Required"`
24 // 单位 22 // 单位
25 - Unit string `cname:"单位" json:"unit" valid:"Required"` 23 + // Unit string `cname:"单位" json:"unit" valid:"Required"`
26 // 单份重量(原材料) 24 // 单份重量(原材料)
27 UnitWeight float64 `cname:"单份重量(原材料)" json:"unitWeight" valid:"Required"` 25 UnitWeight float64 `cname:"单份重量(原材料)" json:"unitWeight" valid:"Required"`
28 - // 重量  
29 - //Weight float64 `cname:"重量" json:"weight" valid:"Required"`  
30 } 26 }
31 27
32 func (createProductCommand *CreateProductCommand) Valid(validation *validation.Validation) { 28 func (createProductCommand *CreateProductCommand) Valid(validation *validation.Validation) {
@@ -12,19 +12,15 @@ type UpdateProductCommand struct { @@ -12,19 +12,15 @@ type UpdateProductCommand struct {
12 // 产品ID 12 // 产品ID
13 ProductId int `cname:"产品ID" json:"productId" valid:"Required"` 13 ProductId int `cname:"产品ID" json:"productId" valid:"Required"`
14 // 产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001 14 // 产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001
15 - ProductCode string `cname:"产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001" json:"productCode"` 15 + //ProductCode string `cname:"产品编号 编码规则为“CP”+2 位年+2 位月+2 位日+3 位流水码,如 CP211229001" json:"productCode"`
16 // 产品名称 16 // 产品名称
17 - ProductName string `cname:"产品名称" json:"productName" valid:"Required"` 17 + ProductName string `cname:"产品名称" json:"productName" `
18 // 产品类别 18 // 产品类别
19 - ProductCategory string `cname:"产品类别" json:"productCategory" valid:"Required"`  
20 - // 数量(保留两位小数)  
21 - //Quantity float64 `cname:"数量(保留两位小数)" json:"quantity" valid:"Required"` 19 + ProductCategory string `cname:"产品类别" json:"productCategory"`
22 // 单位 20 // 单位
23 - Unit string `cname:"单位" json:"unit" valid:"Required"` 21 + Unit string `cname:"单位" json:"unit"`
24 // 单份重量(原材料) 22 // 单份重量(原材料)
25 UnitWeight float64 `cname:"单份重量(原材料)" json:"unitWeight" valid:"Required"` 23 UnitWeight float64 `cname:"单份重量(原材料)" json:"unitWeight" valid:"Required"`
26 - // 重量  
27 - //Weight float64 `cname:"重量" json:"weight" valid:"Required"`  
28 } 24 }
29 25
30 func (updateProductCommand *UpdateProductCommand) Valid(validation *validation.Validation) { 26 func (updateProductCommand *UpdateProductCommand) Valid(validation *validation.Validation) {
@@ -14,7 +14,6 @@ import ( @@ -14,7 +14,6 @@ import (
14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis" 14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis"
15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils" 15 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
16 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log" 16 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log"
17 - "time"  
18 ) 17 )
19 18
20 // 产品服务 19 // 产品服务
@@ -22,7 +21,7 @@ type ProductService struct { @@ -22,7 +21,7 @@ type ProductService struct {
22 } 21 }
23 22
24 // 创建产品服务 23 // 创建产品服务
25 -func (productService *ProductService) CreateProduct(createProductCommand *command.CreateProductCommand) (interface{}, error) { 24 +func (productService *ProductService) CreateProduct(opt *domain.OperateInfo, createProductCommand *command.CreateProductCommand) (interface{}, error) {
26 if err := createProductCommand.ValidateCommand(); err != nil { 25 if err := createProductCommand.ValidateCommand(); err != nil {
27 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 26 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
28 } 27 }
@@ -37,50 +36,23 @@ func (productService *ProductService) CreateProduct(createProductCommand *comman @@ -37,50 +36,23 @@ func (productService *ProductService) CreateProduct(createProductCommand *comman
37 transactionContext.RollbackTransaction() 36 transactionContext.RollbackTransaction()
38 }() 37 }()
39 38
40 - if len(createProductCommand.ProductCode) == 0 {  
41 - generator := redis.NewProductCodeCache(createProductCommand.CompanyId)  
42 - code, err := redis.GenCode(generator)  
43 - if err != nil {  
44 - log.Logger.Error(err.Error())  
45 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "服务器异常")  
46 - }  
47 - createProductCommand.ProductCode = code 39 + batchAddProductService, _ := domainService.NewPGBatchAddProductService(transactionContext.(*pgTransaction.TransactionContext))
  40 + item := &domain.ImportProductItem{
  41 + ProductCode: createProductCommand.ProductCode,
  42 + UnitWeight: utils.AssertString(createProductCommand.UnitWeight),
48 } 43 }
49 - var userService = domainService.NewUserService()  
50 - var org *domain.Org  
51 - org, err = userService.Organization(createProductCommand.OrgId)  
52 - if err != nil {  
53 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 44 + if _, err = batchAddProductService.BatchAddProduct(opt, []*domain.ImportProductItem{
  45 + item,
  46 + }, false); err != nil {
  47 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
54 } 48 }
55 -  
56 - newProduct := &domain.Product{  
57 - CompanyId: createProductCommand.CompanyId,  
58 - OrgId: createProductCommand.OrgId,  
59 - ProductCode: createProductCommand.ProductCode,  
60 - ProductName: createProductCommand.ProductName,  
61 - ProductCategory: createProductCommand.ProductCategory,  
62 - ProductSpec: &domain.UnitQuantity{  
63 - Unit: createProductCommand.Unit,  
64 - UnitWeight: createProductCommand.UnitWeight,  
65 - },  
66 - CreatedAt: time.Now(),  
67 - UpdatedAt: time.Now(),  
68 - Ext: domain.NewExt(org.OrgName),  
69 - }  
70 - productRepository, _, _ := factory.FastPgProduct(transactionContext, 0)  
71 -  
72 - if item, err := productRepository.FindOne(map[string]interface{}{"companyId": createProductCommand.CompanyId, "productCode": createProductCommand.ProductCode}); err == nil && item != nil {  
73 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "产品编号重复,请重新提交") 49 + if len(item.FailReason) > 0 {
  50 + return nil, application.ThrowError(application.TRANSACTION_ERROR, item.FailReason)
74 } 51 }
75 -  
76 - if product, err := productRepository.Save(newProduct); err != nil {  
77 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
78 - } else {  
79 - if err := transactionContext.CommitTransaction(); err != nil {  
80 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
81 - }  
82 - return product, nil 52 + if err := transactionContext.CommitTransaction(); err != nil {
  53 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
83 } 54 }
  55 + return struct{}{}, nil
84 } 56 }
85 57
86 // 返回产品服务 58 // 返回产品服务
@@ -242,7 +214,7 @@ func (productService *ProductService) BatchRemoveProduct(cmd *command.BatchRemov @@ -242,7 +214,7 @@ func (productService *ProductService) BatchRemoveProduct(cmd *command.BatchRemov
242 } 214 }
243 215
244 // 更新产品服务 216 // 更新产品服务
245 -func (productService *ProductService) UpdateProduct(updateProductCommand *command.UpdateProductCommand) (interface{}, error) { 217 +func (productService *ProductService) UpdateProduct(opt *domain.OperateInfo, updateProductCommand *command.UpdateProductCommand) (interface{}, error) {
246 if err := updateProductCommand.ValidateCommand(); err != nil { 218 if err := updateProductCommand.ValidateCommand(); err != nil {
247 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 219 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
248 } 220 }
@@ -260,19 +232,11 @@ func (productService *ProductService) UpdateProduct(updateProductCommand *comman @@ -260,19 +232,11 @@ func (productService *ProductService) UpdateProduct(updateProductCommand *comman
260 if err != nil { 232 if err != nil {
261 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 233 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
262 } 234 }
263 - if len(updateProductCommand.ProductCode) == 0 {  
264 - generator := redis.NewProductCodeCache(product.CompanyId)  
265 - code, err := redis.GenCode(generator)  
266 - if err != nil {  
267 - log.Logger.Error(err.Error())  
268 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "服务器异常")  
269 - }  
270 - updateProductCommand.ProductCode = code  
271 - }  
272 - if updateProductCommand.ProductCode != product.ProductCode {  
273 - if item, err := productRepository.FindOne(map[string]interface{}{"companyId": product.CompanyId, "productCode": updateProductCommand.ProductCode}); err == nil && item != nil {  
274 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "产品编号重复,请重新提交")  
275 - } 235 +
  236 + var material *domain.ProductMaterial
  237 + productMaterialRepository, _, _ := factory.FastProductMaterial(transactionContext, 0)
  238 + if material, err = productMaterialRepository.FindOne(map[string]interface{}{"companyId": product.CompanyId, "materialNumber": product.ProductCode}); err != nil || material == nil {
  239 + return nil, application.ThrowError(application.BUSINESS_ERROR, "物料不存在")
276 } 240 }
277 241
278 var userService = domainService.NewUserService() 242 var userService = domainService.NewUserService()
@@ -281,8 +245,13 @@ func (productService *ProductService) UpdateProduct(updateProductCommand *comman @@ -281,8 +245,13 @@ func (productService *ProductService) UpdateProduct(updateProductCommand *comman
281 if err != nil { 245 if err != nil {
282 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 246 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
283 } 247 }
  248 +
  249 + updateProductCommand.ProductName = material.MaterialName
  250 + updateProductCommand.Unit = material.ProductMaterialExt.Unit
  251 + updateProductCommand.ProductCategory = material.MaterialCategory.Category
284 data := tool_funs.SimpleStructToMap(updateProductCommand) 252 data := tool_funs.SimpleStructToMap(updateProductCommand)
285 data["orgName"] = org.OrgName 253 data["orgName"] = org.OrgName
  254 +
286 if err := product.Update(data); err != nil { 255 if err := product.Update(data); err != nil {
287 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) 256 return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
288 } 257 }
@@ -2,6 +2,7 @@ package domain @@ -2,6 +2,7 @@ package domain
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
5 "strconv" 6 "strconv"
6 "time" 7 "time"
7 ) 8 )
@@ -99,15 +100,18 @@ type ImportProductItem struct { @@ -99,15 +100,18 @@ type ImportProductItem struct {
99 } 100 }
100 101
101 func (item *ImportProductItem) Valid() error { 102 func (item *ImportProductItem) Valid() error {
102 - if len(item.ProductName) == 0 {  
103 - return fmt.Errorf("品名不能为空")  
104 - }  
105 - if len(item.Unit) == 0 {  
106 - return fmt.Errorf("规格不能为空")  
107 - }  
108 - if len(item.ProductCategory) == 0 {  
109 - return fmt.Errorf("类别不能为空") 103 + if len(item.ProductCode) == 0 {
  104 + return fmt.Errorf("产品编号不能为空")
110 } 105 }
  106 + //if len(item.ProductName) == 0 {
  107 + // return fmt.Errorf("品名不能为空")
  108 + //}
  109 + //if len(item.Unit) == 0 {
  110 + // return fmt.Errorf("规格不能为空")
  111 + //}
  112 + //if len(item.ProductCategory) == 0 {
  113 + // return fmt.Errorf("类别不能为空")
  114 + //}
111 if len(item.UnitWeight) == 0 { 115 if len(item.UnitWeight) == 0 {
112 item.UnitWeight = "0" 116 item.UnitWeight = "0"
113 } 117 }
@@ -116,3 +120,13 @@ func (item *ImportProductItem) Valid() error { @@ -116,3 +120,13 @@ func (item *ImportProductItem) Valid() error {
116 } 120 }
117 return nil 121 return nil
118 } 122 }
  123 +
  124 +type Products []*Product
  125 +
  126 +func (products Products) ProductCodes() []string {
  127 + var result = utils.NewSet()
  128 + for _, v := range products {
  129 + result.Add(v.ProductCode)
  130 + }
  131 + return result.KeysStr()
  132 +}
@@ -59,3 +59,11 @@ func (productMaterials ProductMaterials) ToMapById() map[int]*ProductMaterial { @@ -59,3 +59,11 @@ func (productMaterials ProductMaterials) ToMapById() map[int]*ProductMaterial {
59 } 59 }
60 return mapProductMaterial 60 return mapProductMaterial
61 } 61 }
  62 +
  63 +func (productMaterials ProductMaterials) ToMapByNumber() map[string]*ProductMaterial {
  64 + var mapProductMaterial = make(map[string]*ProductMaterial, 0)
  65 + for _, v := range productMaterials {
  66 + mapProductMaterial[v.MaterialNumber] = v
  67 + }
  68 + return mapProductMaterial
  69 +}
@@ -6,8 +6,8 @@ import ( @@ -6,8 +6,8 @@ import (
6 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 6 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
7 "github.com/linmadan/egglib-go/utils/tool_funs" 7 "github.com/linmadan/egglib-go/utils/tool_funs"
8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain" 8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain"
9 - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/redis"  
10 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/repository" 9 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/repository"
  10 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/utils"
11 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log" 11 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/log"
12 "strconv" 12 "strconv"
13 "time" 13 "time"
@@ -36,10 +36,22 @@ func (ptr *PGBatchAddProductService) BatchAddProduct(opt *domain.OperateInfo, li @@ -36,10 +36,22 @@ func (ptr *PGBatchAddProductService) BatchAddProduct(opt *domain.OperateInfo, li
36 if err != nil { 36 if err != nil {
37 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 37 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
38 } 38 }
39 -  
40 - var generator = redis.NewProductCodeCache(opt.CompanyId) 39 + var materials domain.ProductMaterials
  40 + if materials, err = ptr.GetProductMaterialByImportItems(opt.CompanyId, list); err != nil {
  41 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  42 + }
  43 + mapMaterials := materials.ToMapByNumber()
41 for i := range list { 44 for i := range list {
42 item := list[i] 45 item := list[i]
  46 + if v, ok := mapMaterials[item.ProductCode]; !ok {
  47 + item.FailReason = "导入的产品编号不存在"
  48 + failRows = append(failRows, item)
  49 + continue
  50 + } else {
  51 + item.Unit = v.ProductMaterialExt.Unit
  52 + item.ProductName = v.MaterialName
  53 + item.ProductCategory = v.MaterialCategory.Category
  54 + }
43 if err := item.Valid(); err != nil { 55 if err := item.Valid(); err != nil {
44 item.FailReason = err.Error() 56 item.FailReason = err.Error()
45 failRows = append(failRows, item) 57 failRows = append(failRows, item)
@@ -69,14 +81,6 @@ func (ptr *PGBatchAddProductService) BatchAddProduct(opt *domain.OperateInfo, li @@ -69,14 +81,6 @@ func (ptr *PGBatchAddProductService) BatchAddProduct(opt *domain.OperateInfo, li
69 continue 81 continue
70 } 82 }
71 } 83 }
72 - if len(newItem.ProductCode) == 0 {  
73 - code, err := redis.GenCode(generator)  
74 - if err != nil {  
75 - log.Logger.Error(err.Error())  
76 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "服务器异常")  
77 - }  
78 - newItem.ProductCode = code  
79 - }  
80 84
81 if _, ok := mapProduct[newItem.ProductCode]; !ok { 85 if _, ok := mapProduct[newItem.ProductCode]; !ok {
82 mapProduct[newItem.ProductCode] = newItem 86 mapProduct[newItem.ProductCode] = newItem
@@ -105,6 +109,28 @@ func (ptr *PGBatchAddProductService) updateProduct(opt *domain.OperateInfo, item @@ -105,6 +109,28 @@ func (ptr *PGBatchAddProductService) updateProduct(opt *domain.OperateInfo, item
105 return nil 109 return nil
106 } 110 }
107 111
  112 +func (ptr *PGBatchAddProductService) GetProductMaterialByProductCodes(companyId int, productCodes []string) ([]*domain.ProductMaterial, error) {
  113 + productMaterialRepository, _ := repository.NewProductMaterialRepository(ptr.transactionContext)
  114 + _, productMaterials, err := productMaterialRepository.Find(map[string]interface{}{"companyId": companyId, "materialNumbers": productCodes})
  115 + return productMaterials, err
  116 +}
  117 +
  118 +func (ptr *PGBatchAddProductService) GetProductMaterialByImportItems(companyId int, list []*domain.ImportProductItem) ([]*domain.ProductMaterial, error) {
  119 + productCodes := ptr.GetProductCodesByImportItems(list)
  120 + if len(productCodes) == 0 {
  121 + return []*domain.ProductMaterial{}, nil
  122 + }
  123 + return ptr.GetProductMaterialByProductCodes(companyId, productCodes)
  124 +}
  125 +
  126 +func (ptr *PGBatchAddProductService) GetProductCodesByImportItems(list []*domain.ImportProductItem) []string {
  127 + var result = utils.NewSet()
  128 + for _, v := range list {
  129 + result.Add(v.ProductCode)
  130 + }
  131 + return result.KeysStr()
  132 +}
  133 +
108 func NewPGBatchAddProductService(transactionContext *pgTransaction.TransactionContext) (*PGBatchAddProductService, error) { 134 func NewPGBatchAddProductService(transactionContext *pgTransaction.TransactionContext) (*PGBatchAddProductService, error) {
109 if transactionContext == nil { 135 if transactionContext == nil {
110 return nil, fmt.Errorf("transactionContext参数不能为nil") 136 return nil, fmt.Errorf("transactionContext参数不能为nil")
@@ -157,6 +157,9 @@ func (repository *ProductMaterialRepository) Find(queryOptions map[string]interf @@ -157,6 +157,9 @@ func (repository *ProductMaterialRepository) Find(queryOptions map[string]interf
157 if v, ok := queryOptions["productMaterialIds"]; ok && len(v.([]int)) > 0 { 157 if v, ok := queryOptions["productMaterialIds"]; ok && len(v.([]int)) > 0 {
158 query.Where("product_material_id in (?)", pg.In(v)) 158 query.Where("product_material_id in (?)", pg.In(v))
159 } 159 }
  160 + if v, ok := queryOptions["materialNumbers"]; ok && len(v.([]string)) > 0 {
  161 + query.Where("material_number in (?)", pg.In(v))
  162 + }
160 query.SetOffsetAndLimit(domain.MaxQueryRow) 163 query.SetOffsetAndLimit(domain.MaxQueryRow)
161 query.SetOrderDirect("product_material_id", "DESC") 164 query.SetOrderDirect("product_material_id", "DESC")
162 if count, err := query.SelectAndCount(); err != nil { 165 if count, err := query.SelectAndCount(); err != nil {
@@ -19,7 +19,7 @@ func (controller *ProductController) CreateProduct() { @@ -19,7 +19,7 @@ func (controller *ProductController) CreateProduct() {
19 op := ParseOperateInfo(controller.BaseController) 19 op := ParseOperateInfo(controller.BaseController)
20 createProductCommand.CompanyId = op.CompanyId 20 createProductCommand.CompanyId = op.CompanyId
21 createProductCommand.OrgId = op.OrgId 21 createProductCommand.OrgId = op.OrgId
22 - data, err := productService.CreateProduct(createProductCommand) 22 + data, err := productService.CreateProduct(ParseOperateInfo(controller.BaseController), createProductCommand)
23 controller.Response(data, err) 23 controller.Response(data, err)
24 } 24 }
25 25
@@ -29,7 +29,7 @@ func (controller *ProductController) UpdateProduct() { @@ -29,7 +29,7 @@ func (controller *ProductController) UpdateProduct() {
29 Must(controller.Unmarshal(updateProductCommand)) 29 Must(controller.Unmarshal(updateProductCommand))
30 productId, _ := controller.GetInt(":productId") 30 productId, _ := controller.GetInt(":productId")
31 updateProductCommand.ProductId = productId 31 updateProductCommand.ProductId = productId
32 - data, err := productService.UpdateProduct(updateProductCommand) 32 + data, err := productService.UpdateProduct(ParseOperateInfo(controller.BaseController), updateProductCommand)
33 controller.Response(data, err) 33 controller.Response(data, err)
34 } 34 }
35 35