Beispiel #1
0
 function act_autoCreateSpu()
 {
     $data = array();
     $prefix = trim($_POST['prefix']);
     if (!preg_match("/^[A-Z]{2}\$/", $prefix)) {
         self::$errCode = 11;
         self::$errMsg = 'error';
         return false;
     }
     $prefixList = OmAvailableModel::getTNameList('pc_auto_create_spu_prefix', 'isSingSpu', "WHERE prefix='{$prefix}'");
     $isSingSpu = $prefixList[0]['isSingSpu'];
     //该prefix下试单还是虚拟料号
     $autoSpuList = OmAvailableModel::getTNameList('pc_auto_create_spu', 'sort', "WHERE spu REGEXP '^{$prefix}[0-9]{6}\$' order by sort desc limit 1");
     $maxNumberAuto = $autoSpuList[0]['sort'];
     //auto表中最大的max
     $maxNumberTrue = OmAvailableModel::getMaxSpu($prefix, $isSingSpu);
     //对应goods表或combine表中最大的max
     $maxNumber = $maxNumberTrue > $maxNumberAuto ? $maxNumberTrue : $maxNumberAuto;
     //return $maxNumberTrue;
     //$maxNumber = OmAvailableModel::getMaxSpu($prefix, $isSingSpu);
     $spu = $prefix . str_pad($maxNumber + 1, 6, '0', STR_PAD_LEFT);
     $data = array('spu' => $spu, 'sort' => $maxNumber + 1, 'prefix' => $prefix, 'isSingSpu' => $isSingSpu);
     if (!empty($data)) {
         return $data;
     } else {
         self::$errCode = 1;
         self::$errMsg = 'error';
         return false;
     }
 }
 function act_searchOrAddCombineInfo()
 {
     $spu = isset($_GET['goods_sn']) ? post_check(trim($_GET['goods_sn'])) : '';
     $amount = isset($_GET['amount']) ? $_GET['amount'] : '';
     $amount = intval($amount);
     $combineUserId = isset($_GET['truename']) ? $_GET['truename'] : '';
     $combineUserId = intval($combineUserId);
     $now = time();
     if (!preg_match("/^[A-Z0-9]+\$/", $spu)) {
         //sku不合规范
         self::$errCode = '101';
         self::$errMsg = 'SPU不合法';
         return false;
     }
     if ($amount <= 0) {
         //不是正数
         self::$errCode = '102';
         self::$errMsg = '数量不合法';
         return false;
     }
     if ($combineUserId <= 0) {
         //不是正数
         self::$errCode = '103';
         self::$errMsg = '组合人id不合法';
         return false;
     }
     $tName = 'pc_goods';
     $select = 'spu,sku';
     $where = "WHERE spu='{$spu}' and is_delete=0";
     $pcGoodsList = OmAvailableModel::getTNameList($tName, $select, $where);
     if (empty($pcGoodsList)) {
         //如果spu找不到
         $select = 'spu,sku';
         $where = "WHERE sku='{$spu}' and is_delete=0";
         $pcGoodsList = OmAvailableModel::getTNameList($tName, $select, $where);
         if (empty($pcGoodsList)) {
             //spu找不到去sku找
             self::$errCode = '104';
             self::$errMsg = "SPU {$spu} 不存在";
             return false;
         }
     }
     $tName = 'pc_sku_combine_relation';
     $select = '*';
     $where = "WHERE sku REGEXP '^{$spu}(_[A-Z0-9]+)*\$' and count={$amount} and combineSku REGEXP '^CB[0-9]{6}(_[A-Z0-9]+)*\$'";
     //符合条件
     $pcCombineRelList = OmAvailableModel::getTNameList($tName, $select, $where);
     if (!empty($pcCombineRelList)) {
         //如果真实料号对应的虚拟料号存在,则直接返回
         $arr = array();
         $arrDetail = array();
         foreach ($pcCombineRelList as $value) {
             $arrTmp = array();
             $arrTmp['CBSku'] = $value['combineSku'];
             $arrTmp['bindSku'] = $value['sku'] . '*' . $amount;
             $arrDetail[] = $arrTmp;
         }
         $arr['spu'] = substr($pcCombineRelList[0]['combineSku'], 0, 8);
         //spu
         $arr['detail'] = $arrDetail;
         self::$errCode = '200';
         self::$errMsg = "信息存在,查询返回成功";
         return json_encode($arr);
     } else {
         //如果不存在的话,则插入数据,然后再返回,此时要现在autoCreateSpu表中和combine表中,选出最大的CB为前缀的数字
         $numberCombine = OmAvailableModel::getMaxSpu('CB', 2);
         //取得pc_goods_combine表中以CB为前缀的最大的数字
         $tName = 'pc_auto_create_spu';
         $select = 'spu';
         $where = "WHERE prefix='CB' order by sort desc limit 1";
         $autoCreSpuList = OmAvailableModel::getTNameList($tName, $select, $where);
         $numberAutoCreSpu = intval(substr($autoCreSpuList[0]['spu'], 2, 6));
         $maxNumber = $numberCombine > $numberAutoCreSpu ? $numberCombine : $numberAutoCreSpu;
         $maxNumber = $maxNumber + 1;
         //要生成CB为前缀的最大数字
         try {
             BaseModel::begin();
             $arr = array();
             //返回数组
             $arrDetail = array();
             //要同步到深圳ERP组合料号的数据变量
             $insertIdCom = 1;
             //添加组合料号的insert_id
             $dataRelation = array();
             //关联真实料号的数组
             $dataRelationMem = array();
             //关联真实料号的mem
             $ebayProductsCombineArr = array();
             if (count($pcGoodsList) == 1) {
                 //如果真实SPU料号只有一条记录的话,表示该SPU下没有分料号
                 $tmpSpu = 'CB' . str_pad($maxNumber, 6, '0', STR_PAD_LEFT);
                 $tName = 'pc_auto_create_spu';
                 $set = "SET spu='{$tmpSpu}',purchaseId='{$combineUserId}',createdTime='{$now}',sort='{$maxNumber}',status=2,prefix='CB',isSingSpu=2";
                 OmAvailableModel::addTNameRow($tName, $set);
                 //add by zqt ,20140403 添加关联销售记录
                 //addSalerInfoForAny($tmpSpu, 2, $combineUserId, $combineUserId);//改变逻辑
                 $tName = 'pc_goods_combine';
                 $set = "SET combineSpu='{$tmpSpu}',combineSku='{$tmpSpu}',combineUserId={$combineUserId},addTime='{$now}'";
                 $insertIdCom = OmAvailableModel::addTNameRow($tName, $set);
                 $tName = 'pc_sku_combine_relation';
                 $set = "SET combineSku='{$tmpSpu}',sku='{$pcGoodsList[0]['sku']}',count={$amount}";
                 OmAvailableModel::addTNameRow($tName, $set);
                 $arr['spu'] = $tmpSpu;
                 $arrTmp = array();
                 $arrTmp['CBSku'] = $tmpSpu;
                 $arrTmp['bindSku'] = $pcGoodsList[0]['sku'] . '*' . $amount;
                 $arrDetail[] = $arrTmp;
                 $arr['detail'] = $arrDetail;
                 $dataRelation[] = array('combineSku' => $tmpSpu, 'sku' => $pcGoodsList[0]['sku'], 'count' => $amount);
                 $dataRelationMem[] = array('sku' => $pcGoodsList[0]['sku'], 'count' => $amount);
                 //将新添加的sku添加到mem中
                 $dataCom = array();
                 $dataCom['combineSpu'] = $tmpSpu;
                 $dataCom['combineSku'] = $tmpSpu;
                 $dataCom['combineNote'] = $amount . '个' . $pcGoodsList[0]['sku'] . '#';
                 $dataCom['combineUserId'] = $combineUserId;
                 $dataCom['addTime'] = time();
                 $dataCom['detail'] = $dataRelationMem;
                 $value = $dataCom;
                 $key = 'pc_goods_combine_' . $tmpSpu;
                 setMemNewByKey($key, $value);
                 //这里不保证能添加成功
                 //同步新数据到旧系统中
                 $ebayProductsCombine = array();
                 $ebayProductsCombine['id'] = $insertIdCom;
                 $ebayProductsCombine['goods_sn'] = $tmpSpu;
                 $str = $pcGoodsList[0]['sku'] . '*' . $amount;
                 $strTrue = '[' . $pcGoodsList[0]['sku'] . ']';
                 $ebayProductsCombine['goods_sncombine'] = $str;
                 $ebayProductsCombine['cguser'] = getPersonNameById($combineUserId);
                 $ebayProductsCombine['ebay_user'] = '******';
                 $ebayProductsCombine['createdtime'] = time();
                 $ebayProductsCombine['truesku'] = $strTrue;
                 $ebayProductsCombineArr[] = $ebayProductsCombine;
             } else {
                 //有分料号
                 $tmpSpu = 'CB' . str_pad($maxNumber, 6, '0', STR_PAD_LEFT);
                 $tName = 'pc_auto_create_spu';
                 $set = "SET spu='{$tmpSpu}',purchaseId='{$combineUserId}',createdTime='{$now}',sort='{$maxNumber}',status=2,prefix='CB',isSingSpu=2";
                 OmAvailableModel::addTNameRow($tName, $set);
                 //add by zqt ,20140403 添加关联销售记录
                 //addSalerInfoForAny($tmpSpu, 2, $combineUserId, $combineUserId);//改变逻辑
                 $i = 0;
                 foreach ($pcGoodsList as $value) {
                     $suffTmp = explode($spu, $value['sku']);
                     $suff = isset($suffTmp[1]) ? $suffTmp[1] : '';
                     //取得分料号去除SPU后的后缀
                     $i++;
                     if (strpos($suff, '_') !== 0) {
                         //如果找出的spu下的sku不带_,则默认按1,2,3,来区分
                         $suff = '_' . $i;
                     }
                     $tmpSku = 'CB' . str_pad($maxNumber, 6, '0', STR_PAD_LEFT) . $suff;
                     $tmpSku = trim($tmpSku);
                     $goods_sncom = $value['sku'] . '*' . $amount;
                     $now = time();
                     $tName = 'pc_goods_combine';
                     $set = "SET combineSpu='{$tmpSpu}',combineSku='{$tmpSku}',combineUserId='{$combineUserId}',addTime='{$now}'";
                     $insertIdCom = OmAvailableModel::addTNameRow($tName, $set);
                     $tName = 'pc_sku_combine_relation';
                     $set = "SET combineSku='{$tmpSku}',sku='{$value['sku']}',count={$amount}";
                     OmAvailableModel::addTNameRow($tName, $set);
                     $arrTmp = array();
                     $arrTmp['CBSku'] = $tmpSku;
                     $arrTmp['bindSku'] = $goods_sncom;
                     $arrDetail[] = $arrTmp;
                     $dataRelation[] = array('combineSku' => $tmpSku, 'sku' => $value['sku'], 'count' => $amount);
                     $dataRelationMem[] = array('sku' => $value['sku'], 'count' => $amount);
                     //将新添加的sku添加到mem中
                     $dataCom = array();
                     $dataCom['combineSpu'] = $tmpSpu;
                     $dataCom['combineSku'] = $tmpSku;
                     $dataCom['combineNote'] = $amount . '个' . $value['sku'] . '#';
                     $dataCom['combineUserId'] = $combineUserId;
                     $dataCom['addTime'] = time();
                     $dataCom['detail'] = $dataRelationMem;
                     $valueMem = $dataCom;
                     $key = 'pc_goods_combine_' . $tmpSku;
                     setMemNewByKey($key, $valueMem);
                     //这里不保证能添加成功
                     //同步新数据到旧系统中
                     $ebayProductsCombine = array();
                     $ebayProductsCombine['id'] = $insertIdCom;
                     $ebayProductsCombine['goods_sn'] = $tmpSku;
                     $str = $value['sku'] . '*' . $amount;
                     $strTrue = '[' . $value['sku'] . ']';
                     $ebayProductsCombine['goods_sncombine'] = $str;
                     $ebayProductsCombine['cguser'] = getPersonNameById($combineUserId);
                     $ebayProductsCombine['ebay_user'] = '******';
                     $ebayProductsCombine['createdtime'] = time();
                     $ebayProductsCombine['truesku'] = $strTrue;
                     $ebayProductsCombineArr[] = $ebayProductsCombine;
                 }
                 $arr['spu'] = $tmpSpu;
                 $arr['detail'] = $arrDetail;
             }
             BaseModel::commit();
             BaseModel::autoCommit();
             if (!empty($tmpSpu)) {
                 //添加销售人员信息
                 addSalerInfoForAny($tmpSpu, 2, $combineUserId, $combineUserId);
             }
             $dataAuto = array();
             $dataAuto['sku'] = $tmpSpu;
             $dataAuto['cguser'] = getPersonNameById($combineUserId);
             $dataAuto['mainsku'] = $maxNumber;
             $dataAuto['status'] = 2;
             $dataAuto['addtime'] = time();
             $dataAuto['type'] = 7;
             OmAvailableModel::newData2ErpInterfOpen('pc.erp.addAutoCreatSpu', $dataAuto, 'gw88');
             //插入自動生成spu
             foreach ($ebayProductsCombineArr as $value) {
                 $ret = OmAvailableModel::newData2ErpInterfOpen('pc.erp.addGoodsCombine', $value, 'gw88');
                 //插入生成的CB料號
             }
             self::$errCode = '200';
             self::$errMsg = "不存在真实料号信息,插入记录成功";
             return json_encode($arr);
         } catch (Exception $e) {
             BaseModel::rollback();
             BaseModel::autoCommit();
             self::$errCode = '404';
             self::$errMsg = $e->getMessage();
             return false;
         }
     }
 }