The important basis for the existence and development of the "new retail" business model is precisely the gradual improvement of people's requirements for personalization, immediacy, convenience, interactivity, accuracy and fragmentation in the shopping process. To meet the above needs, it depends on the "intelligent" shopping method to a certain extent.
新零售概念是什么?新零售,即企业依靠互联网,利用大数据、人工智能等先进技术,升级商品的生产、流通和销售流程,进而重塑商业结构和生态圈,是一种新的零售模式,它将线上服务、线下经验和现代物流紧密结合在一起。
//SPDX-License-Identifier:MIT
pragma solidity^0.6.0;
library SafeMath{
function add(uint256 a,uint256 b)internal pure returns(uint256){
uint256 c=a+b;
require(c>=a,"SafeMath:addition overflow");
return c;
}
function sub(uint256 a,uint256 b)internal pure returns(uint256){
return sub(a,b,"SafeMath:subtraction overflow");
}
function sub(uint256 a,uint256 b,string memory errorMessage)internal pure returns(uint256){
require(b<=a,errorMessage);
uint256 c=a-b;
return c;
}
function mul(uint256 a,uint256 b)internal pure returns(uint256){
if(a==0){
return 0;
}
uint256 c=a*b;
require(c/a==b,"SafeMath:multiplication overflow");
return c;
}
function div(uint256 a,uint256 b)internal pure returns(uint256){
return div(a,b,"SafeMath:division by zero");
}
function div(uint256 a,uint256 b,string memory errorMessage)internal pure returns(uint256){
require(b>0,errorMessage);
uint256 c=a/b;
//assert(a==b*c+a%b);//There is no case in which this doesn't hold
return c;
}
function mod(uint256 a,uint256 b)internal pure returns(uint256){
return mod(a,b,"SafeMath:modulo by zero");
}
function mod(uint256 a,uint256 b,string memory errorMessage)internal pure returns(uint256){
require(b!=0,errorMessage);
return a%b;
}
}
interface IERC20{
function totalSupply()external view returns(uint256);
function balanceOf(address account)external view returns(uint256);
function transfer(address recipient,uint256 amount)external returns(bool);
function allowance(address owner,address spender)external view returns(uint256);
function approve(address spender,uint256 amount)external returns(bool);
function transferFrom(address sender,address recipient,uint256 amount)external returns(bool);
event Transfer(address indexed from,address indexed to,uint256 value);
event Approval(address indexed owner,address indexed