检查错误 // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.7; import "./goods.sol"; contract Category{ struct GoodsData { Goods traceData; //用Goods结构定义相关信息; bool isExists; //判断是否存在; } bytes32 currentCategory; //当前商品种类; // goodsid => Goods; mapping(uint256 => GoodsData) goods; event NewGoods(address _operator, uint256 _goodsID); constructor(bytes32 _category){ currentCategory = _category; } function createGoods(uint256 _goodsID) public returns(Goods){ require(goods[_goodsID].isExists == false); //判断goodsID是否已经存在; goods[_goodsID].isExists = true; Goods _goods = new Goods(_goodsID); goods[_goodsID].traceData = _goods; emit NewGoods(msg.sender, _goodsID); return _goods; } function getStatus(uint256 _goodsID) public view returns (uint8){ if(!goods[_goodsID].isExists){ return 255; } return goods[_goodsID].traceData.getStatus(); } function changeStatus(uint256 _goodsID,uint8 _status,string memory _remark) public returns(bool){ return goods[_goodsID].traceData.changeStatus(_status, _remark); } function getGoods(uint256 _goodsID)public view returns(bool,Goods){ return (goods[_goodsID].isExists,goods[_goodsID].traceData); } }
时间: 2024-04-26 14:25:53 浏览: 141
_SPDX-License-Identifier:MIT_pragma_Solidity_^0._0x8a47f3
根据你提供的代码,我没有发现任何明显的语法错误或逻辑错误。因此,我无法确定你遇到的具体问题。但是,你可以尝试使用以下方法来查找和解决问题:
1. 确保 `Goods` 合约已经正确导入并部署,或者你已经正确实现了 `Goods` 合约。
2. 在调用 `createGoods` 函数时,确保你提供了一个唯一的 `_goodsID` 参数。如果你以前使用过相同的 `_goodsID` 参数,将会出现 `require` 语句失败的情况。
3. 确认 `Goods` 合约中的 `changeStatus` 函数是否正确实现,并且它需要的参数与你提供的参数数量和类型匹配。
希望这些提示可以帮助你解决问题。如果问题仍然存在,请提供更多上下文信息或完整的代码,以便我可以更好地帮助你。
阅读全文