我这里有一个接口,是添加购物车的。商品有属性,例如颜色 尺码 我提交参数的时候会提示选择规格。。不知道是不是提交的格式不对。请求帮助
/**
* 加入购物车接口
*
* 输入:
* id:int 商品id
* deal_attr: array 结构如下
* Array
* (
* [属性组ID] => 11 int 属性值ID
* )
* =======新增两个参数============
* @param bool $outputReturn 是否以output返回
* @param array $param 该值不为空,则加入购物车的id,attr以此为准,否则取$_REQUEST
* @param
*$param = Array
* (
[id] => 商品id int
* [attr] => Array(
[属性组ID] => 11 int 属性值ID
)
* )
* =======//新增两个参数============ *
*
* 输出:
* status: int 状态 0错误 1加入成功 -1未登录需要登录
* info: string 状态为1时该值为空,否则为出错的提示
*/
public function addcart($outputReturn=true,$param=array())
{
$root = array();
//========
require_once APP_ROOT_PATH.'system/model/cart.php';
require_once APP_ROOT_PATH.'system/model/deal.php';
if( !empty($param)&&!empty($param['id']) ){
$id = intval($param['id']);
$deal_attr_req = $param['attr'];
}else{
$id = intval($GLOBALS['request']['id']);
$deal_attr_req = $GLOBALS['request']['deal_attr'];
}
$deal_attr = array();
foreach ($deal_attr_req as $k=>$v)
{
$sv = intval($v);
if($sv)
$deal_attr[$k] = intval($sv);
}
$user_login_status = check_login();
$deal_info = get_deal($id);
if(!$deal_info||($deal_info['buyin_app']==1&&APP_INDEX=="wap"))
{
if($outputReturn){
output("",0,"没有可以购买的产品");
}else{
return array('status'=>0,'info'=>'没有可以购买的产品');
}
}
if(($deal_info['is_lottery']==1||$deal_info['buy_type']==1))
{
if($user_login_status==LOGIN_STATUS_NOLOGIN)
{
if($outputReturn){
output($root,-1,"请先登录");
}else{
return array('status'=>-1,'info'=>'请先登录');
}
}
}
$check = check_deal_time($id);
if($check['status'] == 0)
{
$res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
if($outputReturn){
output($root,0,$res['info']);
}else{
return array('status'=>0,'info'=>$res['info']);
}
}
if(count($deal_attr)!=count($deal_info['deal_attr']))
{
$res['info'] = "请选择商品规格1";
if($outputReturn){
output($root,0,$res['info']);
}else{
return array('status'=>0,'info'=>'请选择商品规格2');
}
}
else
{
//加入购物车处理,有提交属性, 或无属性时
$attr_str = '0';
$attr_name = '';
$attr_name_str = '';
if($deal_attr)
{
$attr_str = implode(",",$deal_attr);
$attr_names = $GLOBALS['db']->getAll("select name from ".DB_PREFIX."deal_attr where id in(".$attr_str.")");
$attr_name = '';
foreach($attr_names as $attr)
{
$attr_name .=$attr['name'].",";
$attr_name_str.=$attr['name'];
}
$attr_name = substr($attr_name,0,-1);
}
$verify_code = md5($id."_".$attr_str);
$session_id = es_session::id();
if(app_conf("CART_ON")==0)
{
$GLOBALS['db']->query("delete from ".DB_PREFIX."deal_cart where session_id = '".$session_id."'");
load_cart_list(true);
}
$cart_result = load_cart_list();
foreach($cart_result['cart_list'] as $k=>$v)
{
if($v['verify_code']==$verify_code)
{
$cart_item = $v;
}
}
$add_number = $number = 1; //只加一件
//开始运算购物车的验证
if($cart_item)
{
// $check = check_deal_number($cart_item['deal_id'],$add_number);
// if($check['status']==0)
// {
// $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
// output($root,0,$res['info']);
// }
//属性库存的验证
$attr_setting_str = '';
if($cart_item['attr']!='')
{
$attr_setting_str = $cart_item['attr_str'];
}
// if($attr_setting_str!='')
// {
// $check = check_deal_number_attr($cart_item['deal_id'],$attr_setting_str,$add_number);
// if($check['status']==0)
// {
// $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
// output($root,0,$res['info']);
// }
// }
//属性库存的验证
}
else //添加时的验证
{
// $check = check_deal_number($deal_info['id'],$add_number);
// if($check['status']==0)
// {
// $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
// output($root,0,$res['info']);
// }
//属性库存的验证
$attr_setting_str = '';
if($attr_name_str!='')
{
$attr_setting_str =$attr_name_str;
}
// if($attr_setting_str!='')
// {
// $check = check_deal_number_attr($deal_info['id'],$attr_setting_str,$add_number);
// if($check['status']==0)
// {
// $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
// output("",0,$res['info']);
// }
// }
//属性库存的验证
}
if($deal_info['return_score']<0)
{
//需要积分兑换
$user_score = intval($GLOBALS['db']->getOne("select score from ".DB_PREFIX."user where id = ".intval($GLOBALS['user_info']['id'])));
if($user_score < abs(intval($deal_info['return_score'])*$add_number))
{
$res['info'] = $check['info']." "."积分不足";
if($outputReturn){
output($root,0,$res['info']);
}else{
return array('status'=>0,'info'=>$res['info']);
}
}
}
//验证over
if(!$cart_item)
{
$attr_price = $GLOBALS['db']->getOne("select sum(price) from ".DB_PREFIX."deal_attr where id in($attr_str)");
$add_balance_price = $GLOBALS['db']->getOne("select sum(add_balance_price) from ".DB_PREFIX."deal_attr where id in($attr_str)");
$cart_item['session_id'] = $session_id;
$cart_item['user_id'] = intval($GLOBALS['user_info']['id']);
$cart_item['deal_id'] = $id;
//属性
// if($attr_name != '')
// {
// $cart_item['name'] = $deal_info['name']." [".$attr_name."]";
// $cart_item['sub_name'] = $deal_info['sub_name']." [".$attr_name."]";
// }
if($attr_name != '')
{
$cart_item['name'] = $deal_info['name'];
$cart_item['sub_name'] = $attr_name;
}
else
{
$cart_item['name'] = $deal_info['name'];
$cart_item['sub_name'] = $deal_info['sub_name'];
}
$cart_item['name'] = strim($cart_item['name']);
$cart_item['sub_name'] = strim($cart_item['sub_name']);
$cart_item['attr'] = $attr_str;
$cart_item['add_balance_price'] = $add_balance_price;
$cart_item['unit_price'] = $deal_info['current_price'] + $attr_price;
$cart_item['number'] = $number;
$cart_item['total_price'] = $cart_item['unit_price'] * $cart_item['number'];
$cart_item['verify_code'] = $verify_code;
$cart_item['create_time'] = NOW_TIME;
$cart_item['update_time'] = NOW_TIME;
$cart_item['return_score'] = $deal_info['return_score'];
$cart_item['return_total_score'] = $deal_info['return_score'] * $cart_item['number'];
$cart_item['return_money'] = $deal_info['return_money'];
$cart_item['return_total_money'] = $deal_info['return_money'] * $cart_item['number'];
$cart_item['buy_type'] = $deal_info['buy_type'];
$cart_item['supplier_id'] = $deal_info['supplier_id'];
$cart_item['attr_str'] = $attr_name_str;
$cart_item['is_pick'] = $deal_info['is_pick'];
$GLOBALS['db']->autoExecute(DB_PREFIX."deal_cart",$cart_item);
}
else
{
if($number>0)
{
$cart_item['number'] += $number;
$cart_item['total_price'] = $cart_item['unit_price'] * $cart_item['number'];
$cart_item['return_total_score'] = $deal_info['return_score'] * $cart_item['number'];
$cart_item['return_total_money'] = $deal_info['return_money'] * $cart_item['number'];
$GLOBALS['db']->autoExecute(DB_PREFIX."deal_cart",$cart_item,"UPDATE","id=".$cart_item['id']);
}
}
syn_cart(); //同步购物车中的状态 cart_type
load_cart_list(true);
if($outputReturn){
output($root);
}else{
return $root;
}
}
//========
}
我提交的参数 url/index.php?c=cart&a=addcart&id=88&deal_attr=[{19:357},{20:359}]
但是提交后台会返回“请选择商品规格”,一头雾水,我应该提交怎样的参数结构
参数应该是在请求体里传吧,在服务端打印一下看看接收到数据了吗