zouke1220

    /**
     * @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;
    }

 

分类:

技术点:

相关文章: