UpdateStatus BUG
来源:31-9 商品删除,更新

城中城
2022-06-23
不知道是不是我代码敲错了
我看到一个感觉非常有问题的代码
如下
go 的 具体路径的代码
func UpdateStatus(ctx *gin.Context) {
goodsStatusForm := forms.GoodsStatusForm{}
// 如果是传递 form 格式
if err := ctx.ShouldBindJSON(&goodsStatusForm); err != nil {
HandleValidatorError(ctx, err)
return
}
id := ctx.Param("id")
idInt, err := strconv.ParseInt(id, 10, 32)
if err != nil {
ctx.Status(http.StatusNotFound)
return
}
_, err = global.GoodsSrvClient.UpdateGoods(context.Background(), &proto.CreateGoodsInfo{
Id: int32(idInt),
IsNew: *goodsStatusForm.IsNew,
IsHot: *goodsStatusForm.IsHot,
OnSale: *goodsStatusForm.OnSale,
})
if err != nil {
HandleGrpcErrorToHttp(err, ctx)
return
}
ctx.JSON(http.StatusOK, gin.H{
"msg": "修改成功",
})
}
可以看到 这代码没有对 category 和 brand 等 参数 进行传递
只传递 了 IsNew IsHot OnSale 这三个参数
但是 底层 python 代码中 很明确规定了 你需要传递 category 和 brand 等 参数
如以下代码:
@logger.catch
def UpdateGoods(self, request: goods_pb2.GoodInfoRequest, context):
#商品更新
try:
category = Category.get(Category.id==request.categoryId)
except DoesNotExist as e:
context.set_code(grpc.StatusCode.NOT_FOUND)
context.set_details("商品分类不存在")
return goods_pb2.GoodsInfoResponse()
try:
brand = Brands.get(Brands.id==request.brandId)
except DoesNotExist as e:
context.set_code(grpc.StatusCode.NOT_FOUND)
context.set_details("品牌不存在")
return goods_pb2.GoodsInfoResponse()
try:
goods = Goods.get(Goods.id == request.id)
except DoesNotExist as e:
context.set_code(grpc.StatusCode.NOT_FOUND)
context.set_details("商品不存在")
return goods_pb2.GoodsInfoResponse()
goods.brand = brand
goods.category = category
goods.name = request.name
goods.goods_sn = request.goodsSn
goods.market_price = request.marketPrice
goods.shop_price = request.shopPrice
goods.goods_brief = request.goodsBrief
goods.ship_free = request.shipFree
goods.images = list(request.images)
goods.desc_images = list(request.descImages)
goods.goods_front_image = request.goodsFrontImage
goods.is_new = request.isNew
goods.is_hot = request.isHot
goods.on_sale = request.onSale
goods.save()
# TODO 此处完善库存的设置 - 分布式事务
return self.convert_model_to_message(goods)
这代码很明确的指出 如果你没传递 categoryId brandId 将直接返回错误
所有导致我很疑惑 为什么没人提出这个bug
还是我敲的代码漏敲的那个部分?
写回答
1回答
-
bobby
2022-06-25
这里确实有点细节问题, 需要修改一下
022022-08-16
相似问题