php 实现店铺装修3

    /**
     * @title 装修店铺
     * @param plate_id 是 int 店铺装修样式ID
     * @param type 是 int 模板样式子板块类型(4-海景、6-二宫格、8-三宫格、9-四宫格)
     * @param sort 是 int 模块排序位置
     * @param sku_id 是 string 商品sku_id
     * @param index 是 int 商品sku排序位置
     * @param operate_type 是 int 1-替换商品、2-删除商品
     * @param type_id 否 int 装修商品的类型(1-平台商品、2-特色商品)
     * @example FlagShipShopDecorate.decorateShop? 调试参数:{"operate_type":"1","username":"17721355485","check_code":"123456","method":"FlagShipShopDecorate.decorateShop","plate_id":1,"type":8,"sort":"3","sku_id": "8032717999","index":"1","type_id":"1"}
     * @return {"status":"0","errorCode":"0","msg":"成功","result":true}
     * @method POST
     * @author 邹柯
     */
    public function decorateShop($res){
        $user_id=session("user.user_id");
        $plate_id=$res['plate_id'];
        if(empty($plate_id)){
            E('700401');
        }
        $type=$res['type'];
        if($type !=4 && $type !=6 && $type !=8 && $type !=9){
            E('700405');
        }
        $type_id=$res['type_id'];
        if($type_id !=1 && $type_id !=2){
            E('700416');
        }
        $sort=$res['sort'];
        if(!is_numeric($sort) || $sort <= 0){
            E('700406');
        }
        $sku_id=$res['sku_id'];
        if(empty($sku_id)){
            E('700402');
        }
        $index=$res['index'];
        if(!is_numeric($index) || $index <= 0){
            E('700407');
        }
        $operate_type=$res['operate_type'];
        if($operate_type !=1 && $operate_type !=2){
            E('700414');
        }
        $user_shop_decorate=M('user_shop_decorate');
        $where['flagship_shop']=1;
        $where['create_id']=$user_id;
        $usd_info=$user_shop_decorate->field('id,plate_id,plate_content_draft,plate_content_draft_features,select_status')->where($where)->order('create_time desc')->find();
        if($type_id==1){
            if(empty($usd_info['plate_content_draft'])){
                $plate_content_draft=$this->getDefaultStyleByPlateId($plate_id,$type_id);
            }else{
                $plate_content_draft=json_decode($usd_info['plate_content_draft'],true);
            }
        }else{
            if(empty($usd_info['plate_content_draft_features'])){
                $plate_content_draft=$this->getDefaultStyleByPlateId($plate_id,$type_id);
            }else{
                $plate_content_draft=json_decode($usd_info['plate_content_draft_features'],true);
            }
        }

        foreach($plate_content_draft as $k=>$v){
            if($v['type']==$type && $v['sort']==$sort){
                foreach($v['goods'] as $k2=>$v2){
                    if($v2['index']==$index){
                        $plate_content_draft[$k]['goods'][$k2]['sku_id']=$sku_id;
                        $plate_content_draft[$k]['goods'][$k2]['operate_type']=$operate_type;
                    }
                }
            }
        }
        $plate_content_draft_arr=json_encode($plate_content_draft);
        $time=date("Y-m-d H:i:s",time());
        if(!empty($usd_info)){ //修改
            $u_where['id']=$usd_info['id'];
            if($type_id==1){
                $data=array(
                    'plate_id' => $plate_id,
                    'plate_content_draft'=>$plate_content_draft_arr,
                    'status'=>1,
                    'update_time'=>$time,
                    'update_id'=>$user_id,
                    'select_status'=>2,
                );
            }else{
                $data=array(
                    'plate_id_features' => $plate_id,
                    'plate_content_draft_features'=>$plate_content_draft_arr,
                    'status'=>1,
                    'update_time'=>$time,
                    'update_id'=>$user_id,
                    'select_status'=>2,
                );
            }
            $res=$user_shop_decorate->data($data)->where($u_where)->save();
            if(!$res && $res !=0){
                E('700403');
            }
        }else{  //添加
            if($type_id==1) {
                $data = array(
                    'plate_id' => $plate_id,
                    'plate_content_draft' => $plate_content_draft_arr,
                    'status' => 1,
                    'create_time' => $time,
                    'create_id' => $user_id,
                    'update_time' => $time,
                    'update_id' => $user_id,
                    'use_status' => 1,
                    'select_status' => 2
                );
            }else{
                $data = array(
                    'plate_id_features' => $plate_id,
                    'plate_content_draft_features' => $plate_content_draft_arr,
                    'status' => 1,
                    'create_time' => $time,
                    'create_id' => $user_id,
                    'update_time' => $time,
                    'update_id' => $user_id,
                    'use_status' => 1,
                    'select_status' => 2
                );
            }
            $res=$user_shop_decorate->data($data)->add();
            if(!$res){
                E('700404');
            }
        }
        $usd_where['plate_id']=array("neq",$plate_id);
        $usd_where['create_id']=$user_id;
        $res_info=$user_shop_decorate->data(['select_status'=>1])->where($usd_where)->save();
        if(!$res_info && $res_info !=0){
            E('700404');
        }
        return true;
    }
    //根据指定样式id获取样式下的默认商品信息
    public function getDefaultStyleByPlateId($plate_id,$type_id){
        $shop_decorate_template=M('shop_decorate_template');
        $sd_where['id']=$plate_id;
        $sd_where['is_deleted']=0;
        $sdt_info=$shop_decorate_template->field('id,plate_content,goods_nums')->where($sd_where)->find();
        $plate_content=json_decode($sdt_info['plate_content'],true);
        if($type_id==1){
            $goods_info=$this->getDefaultGoodsInfo($sdt_info['goods_nums'],"sell_nums desc",null,null,null,null,null,null,null,true,$plate_id);
            foreach($goods_info as $k=>$v){
                unset($goods_info[$k]['activity_info']);
                unset($goods_info[$k]['store_id']);
                unset($goods_info[$k]['sell_nums']);
                unset($goods_info[$k]['sell_price']);
                unset($goods_info[$k]['img']);
                unset($goods_info[$k]['title']);
                unset($goods_info[$k]['sku_no']);
                unset($goods_info[$k]['short_name']);
                unset($goods_info[$k]['search_name']);
                unset($goods_info[$k]['product_id']);
                unset($goods_info[$k]['imgs']);
                unset($goods_info[$k]['seascapes']);
                $goods_info[$k]['index']=$k+1;
            }
            $total_nums=0;
            foreach($plate_content as $k=>$v){
                $at=array_slice($goods_info,$total_nums,$v['goods_nums']);
                $plate_content[$k]['goods']=$at;
                $total_nums +=$v['goods_nums'];
                unset($plate_content[$k]['goods_nums']);
            }
        }else{
            $goods_info=$this->getDefaultGoodsNull($sdt_info['goods_nums'],$type_id);
            $total_nums=0;
            foreach($plate_content as $k=>$v){
                $at=array_slice($goods_info,$total_nums,$v['goods_nums']);
                $plate_content[$k]['goods']=$at;
                $total_nums +=$v['goods_nums'];
            }
        }

        return $plate_content;
    }

    //获取默认空商品
    public function getDefaultGoodsNull($goods_nums,$type_id){
        $user_id=session("user.user_id");
        $store=M('store');
        $s_where['user_id']=$user_id;
        $store_id=$store->where($s_where)->getField('id');
        $store_goods=M('store_goods');
        $gs_where['is_deleted']=1;
        $gs_where['is_open']=1;
        if($type_id==1){
            $gs_where['pt_cats']="0/1";
        }else{
            $gs_where['store_id']=$store_id;
        }
        $gs_info=$store_goods->where($gs_where)->field('sku_id')->find();
        for($i=0;$i<$goods_nums;$i++){
            $goods[]=[
                'sku_id'=>$gs_info['sku_id'],
                'operate_type'=>2,
                'index'=>$i+1
            ];
        }
        return $goods;
    }
原文地址:https://www.cnblogs.com/zouke1220/p/9298960.html