123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514 |
- <?php
- /**
- * 商品基础数据模型
- * Created by PhpStorm.
- * User: XiaoMing
- * Date: 2019/10/30
- * Time: 14:26
- */
- namespace JinDouYun\Model\GoodsManage;
- use JinDouYun\Cache\PageCache;
- use JinDouYun\Controller\Common\Logger;
- use JinDouYun\Dao\GoodsManage\DSku;
- use JinDouYun\Dao\Shop\DShop;
- use JinDouYun\Model\Merchant\MMerchant;
- use JinDouYun\Model\Purchase\MSupplier;
- use Mall\Framework\Core\StatusCode;
- use Mall\Framework\Core\ErrorCode;
- use Mall\Framework\Core\ResultWrapper;
- use Jindouyun\Cache\RoleAclCache;
- use JinDouYun\Cache\SpecCache;
- use JinDouYun\Cache\GoodsBasicCache;
- use JinDouYun\Cache\GoodsBasicRelevant;
- use JinDouYun\Cache\OverviewCache;
- use JinDouYun\Dao\GoodsManage\DGoodsBrand;
- use JinDouYun\Dao\GoodsManage\DGoodsBasic;
- use JinDouYun\Dao\GoodsCategory\DGoodsCategory;
- use JinDouYun\Model\Goods\BasicAndSkuCache;
- use JinDouYun\Model\Stock\MInventory;
- use JinDouYun\Model\MBaseModel;
- use JinDouYun\Model\Shop\MShop;
- use JinDouYun\Model\GoodsCategory\MGoodsCategory;
- use Util\Common\ChineseCharacter;
- class MGoodsBasic extends MBaseModel
- {
- /**
- * BasicAndSkuCache
- */
- use BasicAndSkuCache;
- /**
- * @var DGoodsBasic
- */
- private $objDGoodsBasic;
- /**
- * @var MSku
- */
- private $objMSku;
- /**
- * @var int
- */
- private $onlineUserId;
- /**
- * @var
- */
- private $onlineEnterpriseId;
- /**
- * @var GoodsBasicCache
- */
- private $objGoodsBasicCache;
- /**
- * @var OverviewCache
- */
- private $objOverviewCache;
- /**
- * @var SpecCache
- */
- private $objSpecCache;
- /**
- * @var MInventory
- */
- private $objMInventory;
- /**
- * @var GoodsBasicRelevant
- */
- private $objGoodsBasicRelevant;
- /**
- * @var DGoodsCategory
- */
- private $objDGoodsCategory;
- /**
- * @var DGoodsBrand
- */
- private $objDGoodsBrand;
- /**
- * @var DShop
- */
- private $objDShop;
- /**
- * @var DSku
- */
- private $objDSku;
- /**
- * MGoodsBasic constructor.
- * @param $onlineUserId
- * @param $onlineEnterpriseId
- */
- public function __construct($onlineUserId, $onlineEnterpriseId)
- {
- $this->onlineUserId = $onlineUserId;
- $this->onlineEnterpriseId = $onlineEnterpriseId;
- parent::__construct($this->onlineEnterpriseId, $this->onlineUserId);
- $this->objMSku = new MSku($this->onlineUserId, $this->onlineEnterpriseId);
- $this->objDGoodsBasic = new DGoodsBasic('default');
- $this->objOverviewCache = new OverviewCache();
- $this->objDGoodsBasic->setTable($this->objDGoodsBasic->get_Table() . '_' . $onlineEnterpriseId);
- $this->objDGoodsBasic->setSearchIndex('goods_basic_search')->setType('goodsBasic');
- $this->objGoodsBasicCache = new GoodsBasicCache($this->onlineEnterpriseId);
- $this->objGoodsBasicRelevant = new GoodsBasicRelevant($this->onlineEnterpriseId);
- $this->objSpecCache = new SpecCache($this->onlineEnterpriseId);
- $this->objMInventory = new MInventory($this->onlineEnterpriseId, $this->onlineUserId);
- $this->objDGoodsCategory = new DGoodsCategory();
- $this->objDGoodsCategory->setTable('qianniao_goods_category_'.$this->onlineEnterpriseId);
- $this->objDGoodsBrand = new DGoodsBrand();
- $this->objDGoodsBrand->setTable('qianniao_goods_brand_'.$this->onlineEnterpriseId);
- $this->objDShop = new DShop();
- $this->objDShop->setTable('qianniao_shop_1');
- $this->objDSku = new DSku();
- $this->objDSku->setTable('qianniao_sku_'.$this->onlineEnterpriseId);
- }
- /**
- * @param $id
- * @return string
- */
- public function getGoodsBasicSubTableName()
- {
- return $this->objDGoodsBasic->get_Table();
- }
- /**
- * specType => 2
- * 添加多规格基础商品资料
- * @param $params
- * @return ResultWrapper
- */
- public function addMultipleSpecGoodsBasic($params)
- {
- $unitData = $params['unitData'];
- $specMultiple = $params['specMultiple'];
- unset($params['unitData']);
- unset($params['specMultiple']);
- $this->objDGoodsBasic->beginTransaction();
- $params['addUserId'] = $this->onlineUserId;//创建人id
- $objRoleAclCache = new RoleAclCache();
- $staffId = $objRoleAclCache->getStaffIdAndUserCenterId($this->onlineEnterpriseId, $this->onlineUserId);
- $params['salesManId'] = empty($staffId) ? 0 : $staffId;
- //商品名称转换搜索条件
- $objChineseCharacter = new ChineseCharacter();
- $params['condition'] = $objChineseCharacter->getInitials(trim($params['title']));
- $dbResult = $this->objDGoodsBasic->insert($params);
- $goodsBasicId = $dbResult;
- if ($dbResult === false) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- if (!empty($unitData)) {
- $insert = [];
- foreach ($unitData as $unit) {
- $specGroupIds = [];
- $hash = '';
- foreach ($specMultiple as $spec) {
- $specGroupIds = array_column($spec['specGroup'], 'specValueId');
- $hash = md5(implode('|', $specGroupIds));
- $insert[] = [
- 'goodsId' => $dbResult,
- 'specData' => json_encode($spec['specGroup']),
- 'specImage' => json_encode($spec['specImage']),
- 'specType' => $params['specType'],
- 'unitId' => $unit['unitId'],
- 'isMaster' => $unit['isMaster'],
- 'unitName' => $unit['unitName'],
- 'conversion' => isset($unit['conversion']) ? $unit['conversion'] : 0,
- 'specGroupHash' => $hash,
- 'barCode' => isset($spec['barCode'][$unit['unitId']]) ? $spec['barCode'][$unit['unitId']] : '',
- 'isDefault' => isset($spec['isDefault'][$unit['unitId']]) ? $spec['isDefault'][$unit['unitId']] : StatusCode::$delete,
- 'weight' => isset($spec['weight'][$unit['unitId']]) ? $spec['weight'][$unit['unitId']] : 0,
- 'isNew' => StatusCode::$standard,
- ];
- }
- }
- $result = $this->objMSku->addSku($insert, true);
- if (!$result->isSuccess()) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($result->getData(), $result->getErrorCode());
- }
- unset($insert);
- }
- //缓存商品分类下基础商品数量
- $categoryIds = explode(',', $params['categoryPath']);
- foreach ($categoryIds as $v) {
- $this->objGoodsBasicCache->categoryKeyScoreIncr($v);
- }
- $this->objGoodsBasicCache->brandKeyScoreIncr($params['brandId']);
- //缓存商品数据
- $this->isUpdateBasicCache = true;
- $this->objectId = $goodsBasicId;
- $this->objDGoodsBasic->commit();
- //self::updateEsData($dbResult);
- return ResultWrapper::success($dbResult);
- }
- /**
- * specType => 1
- * 添加单规格商品基础数据
- * @param $params
- * @return ResultWrapper
- * @throws \Exception
- */
- public function addGoodsBasic($params)
- {
- $unitData = $params['unitData'];
- unset($params['unitData']);
- $beginStatus = $this->objDGoodsBasic->beginTransaction();
- $params['addUserId'] = $this->onlineUserId;//创建人id
- $objRoleAclCache = new RoleAclCache();
- $staffId = $objRoleAclCache->getStaffIdAndUserCenterId($this->onlineEnterpriseId, $this->onlineUserId);
- $params['salesManId'] = empty($staffId) ? 0 : $staffId;
- //商品名称转换搜索条件
- $objChineseCharacter = new ChineseCharacter();
- $params['condition'] = $objChineseCharacter->getInitials(trim($params['title']));
- $dbResult = $this->objDGoodsBasic->insert($params);
- $goodsBasicId = $dbResult;
- if ($dbResult === false) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- if (!empty($unitData)) {
- $insert = [];
- foreach ($unitData as $key => $unit) {
- $insert[] = [
- 'unitName' => $unit['unitName'],
- 'unitId' => $unit['unitId'],//单位ID
- 'goodsId' => $dbResult,
- 'isMaster' => $unit['isMaster'],
- 'conversion' => isset($unit['conversion']) ? $unit['conversion'] : 0,
- 'specType' => StatusCode::$specType['single'],//无属性
- 'barCode' => isset($unit['barCode']) ? $unit['barCode'] : '',
- 'isDefault' => isset($unit['isDefault']) ? $unit['isDefault'] : StatusCode::$delete,
- 'weight' => isset($unit['weight']) ? $unit['weight'] : '',
- 'isNew' => StatusCode::$standard,
- ];
- }
- $result = $this->objMSku->addSku($insert, true);
- if (!$result->isSuccess()) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($result->getData(), $result->getErrorCode());
- }
- }
- //缓存商品分类下基础商品数量
- $categoryIds = explode(',', $params['categoryPath']);
- foreach ($categoryIds as $v) {
- $this->objGoodsBasicCache->categoryKeyScoreIncr($v);
- }
- $this->objGoodsBasicCache->brandKeyScoreIncr($params['brandId']);
- //缓存商品数据
- //缓存商品数据
- $this->isUpdateBasicCache = true;
- $this->objectId = $goodsBasicId;
- $beginStatus && $this->objDGoodsBasic->commit();
- //self::updateEsData($dbResult);
- return ResultWrapper::success($dbResult);
- }
- private function createEsDocumentId($goodsBasicId)
- {
- return 'EnterpriseId_' . $this->onlineEnterpriseId . '_GoodsBasicId_' . $goodsBasicId;
- }
- /**
- * 更新ES
- * @param $goodsBasicId
- */
- public function updateEsData($goodsBasicId)
- {
- //每次查询一遍,避免商品在数据库存在,在ES中不存在的情况
- $goodsBasic = $this->objDGoodsBasic->get_by('id', $goodsBasicId);
- if ($goodsBasic !== false && !empty($goodsBasic)) {
- $goodsBasic['goodsCode'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $goodsBasicId, StatusCode::$code['goodsBasic']['length']);//商品编码
- $goodsBasic['enterpriseId'] = $this->onlineEnterpriseId;
- $goodsBasic['images'] = json_decode($goodsBasic['images'], true);
- //处理sku数据
- $skuInfo = $this->objMSku->getSkuInfo(['goodsId' => [$goodsBasicId]]);
- if ($skuInfo->isSuccess()) {
- $skuData = $skuInfo->getData();
- $goodsBasic['skuData'] = array_shift($skuData);
- }
- /*
- $_id = self::createEsDocumentId($goodsBasicId);
- $result = $this->objDGoodsBasic->addUpSearchIndexDocument($goodsBasic, $_id);
- if (isset($result['_shards']) && isset($result['_shards']['successful']) && $result['_shards']['successful'] == 1) {
- //echo "es操作成功";die;
- } else {
- file_put_contents('/www/wwwroot/logs/apiqnys.liuniukj.com/elasticsearch.log', date('Y-m-d H:i:s') . '操作商品资料es错误,错误原因' . var_export($result, true) . PHP_EOL, FILE_APPEND);
- }*/
- }
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2020/8/22
- * Time: 4:29 下午
- * @param array $data
- * @param string $source
- * @return ResultWrapper
- */
- private function getExportDataBySelectParams($data,string $source)
- {
- if (empty($data)){
- return ResultWrapper::success([]);
- }
- switch ($source){
- case 'db':
- $result = self::getGoodsBasicBySelectParams($data);
- break;
- case 'es':
- $allIds = [];
- foreach ($data as $value){
- $allIds[] = $value['id'];
- }
- $result = self::getGoodsBasicBySelectParams(['id' => $allIds]);
- break;
- }
- if (!$result->isSuccess()){
- return ResultWrapper::fail($result->getData(),$result->getErrorCode());
- }
- return ResultWrapper::success($result->getData());
- }
- /**
- * Doc: (des="获取export查询方法返回的数据集合")
- * User: XMing
- * Date: 2020/8/22
- * Time: 11:42 上午
- * @param $object
- * @return array
- */
- private static function getGeneratorData($object)
- {
- $arrayList = [];
- foreach ($object as $value){
- $arrayList[] = $value;
- }
- return $arrayList;
- }
- /**
- * Doc: (des="基础商品资料导出")
- * User: XMing
- * Date: 2020/8/22
- * Time: 5:54 下午
- * @param array $data
- * @param string $source
- * @return ResultWrapper
- */
- private function exportGoodsBasic($data,string $source)
- {
- $listResult = self::getExportDataBySelectParams($data,$source);
- if (!$listResult->isSuccess()){
- return ResultWrapper::fail($listResult->getData(),$listResult->getErrorCode());
- }
- $list = $listResult->getData();
- if (empty($list)){
- return ResultWrapper::success([]);
- }
- $formatListsResult = self::formatExportList($list);
- if (!$formatListsResult->isSuccess()){
- return ResultWrapper::fail($formatListsResult->getData(),$formatListsResult->getErrorCode());
- }
- $formatLists = $formatListsResult->getData();
- self::exportCsv($formatLists);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2020/8/24
- * Time: 4:01 下午
- * @param array $result
- */
- private function exportCsv(array $result)
- {
- //导出到本地
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:filename=GoodsBasicCsv.csv");
- header('Cache-Control: max-age=0');
- $fp = fopen('php://output', 'a');
- $head = ['ID', '商品编码', '商品名称', '商品分类', '商品品牌','发布来源','状态', '保质期(天)', '创建时间',
- '商品卖点', '货架编码', '禁止销售店铺', '关键词', '计量单位', '规格', '主单位(主/辅)', '主辅换算比率', '商品条码'];//定义标题
- foreach ($head as $i => $v) {
- $head[$i] = mb_convert_encoding($v, 'GBK', 'utf-8'); //将中文标题转换编码,否则乱码
- }
- fputcsv($fp, $head);
- $limit = 10000;
- $num = 0;//计数器
- $rows = [];
- foreach ($result as $v) {
- $num++;
- if($num == $limit){
- ob_flush(); //释放内存
- flush();
- }
- foreach ($v['specMultiple'] as $index => $item){
- self::buildExportFinalData($rows,$v,$item,$index);
- foreach ($rows as $kk => $vv) {
- $rs[$kk] = mb_convert_encoding($vv, 'GBK', 'utf-8'); //转译编码
- }
- fputcsv($fp, $rs);
- $rows = [];
- }
- }
- exit;
- }
- /**
- * Doc: (des="映射导出的数据")
- * User: XMing
- * Date: 2020/8/24
- * Time: 4:20 下午
- * @param $rows
- * @param array $v
- * @param array $item
- * @param int $index
- */
- private function buildExportFinalData(&$rows,array $v,array $item,int $index)
- {
- $rows['id'] = '';
- $rows['goodsCode'] = '';
- $rows['goodsName'] = '';
- $rows['categoryName'] = '';
- $rows['brandName'] = '';
- $rows['sourceMsg'] ='';
- $rows['enableStatusMsg'] = '';
- $rows['expireTime'] = '';
- $rows['createTime'] = '';
- $rows['describe'] = '';
- $rows['storageCode'] = '';
- $rows['noSalesShopNames'] = '';
- $rows['tag'] = '';
- if ($index == 0){
- $rows['id'] = $v['id'];
- $rows['goodsCode'] = $v['goodsCode'];
- $rows['goodsName'] = $v['title'];
- $rows['categoryName'] = $v['categoryName'];
- $rows['brandName'] = $v['brandName'];
- $rows['sourceMsg'] =$v['sourceMsg'];
- $rows['enableStatusMsg'] = $v['enableStatusMsg'];
- $rows['expireTime'] = $v['expireTime'];
- $rows['createTime'] = $v['createTime'];
- $rows['describe'] = $v['describe'];
- $rows['storageCode'] = $v['storage'];
- $rows['noSalesShopNames'] = $v['noSalesShopNames'];
- $rows['tag'] = $v['tag'];
- }
- $rows['unitName'] = $item['unitName'];
- $rows['specGroup'] = $item['specGroup'];
- $rows['skuMsg'] = $item['skuMsg'];
- $rows['conversion'] = $item['conversion'];
- $rows['barCode'] = $item['barCode'];
- }
- /**
- * Doc: (des="格式化导出数据")
- * User: XMing
- * Date: 2020/8/22
- * Time: 6:12 下午
- * @param array $data
- * @return ResultWrapper
- */
- private function formatExportList(array $data)
- {
- if (empty($data)){
- return ResultWrapper::success([]);
- }
- $allCategoryIds = [];
- $allBrandIds = [];
- $allNoSalesShopIds = [];
- $allBasicIds = [];
- $merchantIds = [];
- $shopIds = [];
- $supplierIds = [];
- foreach ($data as $value){
- $allBasicIds[] = $value['id'];
- $allCategoryIds[] = $value['categoryId'];
- $merchantIds[] = $value['merchantId'];
- if (!empty($value['brandId'])){
- $allBrandIds[] = $value['brandId'];
- }
- if (!empty($value['noSalesShop'])){
- $array = explode(',',$value['noSalesShop']);
- $allNoSalesShopIds = array_merge($allNoSalesShopIds,$array);
- }
- if ($value['noSalesShop']) {
- $shopIds = array_merge($shopIds, explode(',', $value['noSalesShop']));
- }
- !empty($value['storeId']) && $shopIds[] = $value['storeId'];
- !empty($value['supplierId']) && $supplierIds[] = $value['supplierId'];
- }
- $allCategoryIds = array_values(array_unique($allCategoryIds));
- $allBrandIds = array_values(array_unique($allBrandIds));
- $allNoSalesShopIds = array_values(array_unique($allNoSalesShopIds));
- $merchantIds = array_values(array_unique($merchantIds));
- //查询分类
- $categoryMap = [];
- if (!empty($allCategoryIds)){
- $categoryLists = $this->objDGoodsCategory->exportSelect(['id' => $allCategoryIds],'id,title');
- if ($categoryLists === false){
- return ResultWrapper::fail($this->objDGoodsCategory->error(),ErrorCode::$dberror);
- }
- $categoryLists = self::getGeneratorData($categoryLists);
- foreach ($categoryLists as $value){
- $categoryMap[$value['id']] = $value['title'];
- }
- unset($value);
- unset($categoryLists);
- }
- //查询品牌
- $brandMap = [];
- if (!empty($allBrandIds)){
- $brandLists = $this->objDGoodsBrand->exportSelect(['id' => $allBrandIds],'id,title');
- if ($brandLists === false){
- return ResultWrapper::fail($this->objDGoodsBrand->error(),ErrorCode::$dberror);
- }
- $brandLists = self::getGeneratorData($brandLists);
- foreach ($brandLists as $value){
- $brandMap[$value['id']] = $value['title'];
- }
- unset($value);
- unset($brandLists);
- }
- //查询店铺
- $shopMap = [];
- if (!empty($allNoSalesShopIds)){
- $shopLists = $this->objDShop->exportSelect(['id'=>$allNoSalesShopIds],'id,name');
- if ($shopLists === false){
- return ResultWrapper::fail($this->objDShop->error(),ErrorCode::$dberror);
- }
- $shopLists = self::getGeneratorData($shopLists);
- foreach ($shopLists as $value){
- $shopMap[$value['id']] = $value['name'];
- }
- unset($value);
- unset($shopLists);
- }
- //查询sku
- $skuMap = [];
- if (!empty($allBasicIds)){
- $skuLists = $this->objDSku->exportSelect(['goodsId' => $allBasicIds,'deleteStatus' => StatusCode::$standard],'id,goodsId,conversion,unitName,isMaster,specData,barCode');
- if ($skuLists === false){
- return ResultWrapper::fail($this->objDSku->error(),ErrorCode::$dberror);
- }
- $skuLists = self::getGeneratorData($skuLists);
- foreach ($skuLists as &$value){
- $value['skuMsg'] = $value['isMaster'] == StatusCode::$standard ? '主' : '辅';
- $value['specGroup'] = empty($value['specData']) ? '无' : self::createSpecName(json_decode($value['specData'],true));
- $skuMap[$value['goodsId']][] = $value;
- }
- unset($value);
- unset($skuLists);
- }
- //查询发布来源(商户)
- if(!empty($merchantIds)){
- $objMMerchant = new MMerchant($this->onlineEnterpriseId, $this->onlineUserId);
- $modelResult = $objMMerchant->selectMerchantData(['id' => $merchantIds, 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $merchantResult = $modelResult->getData();
- unset($modelResult);
- $merchantData =[];
- foreach($merchantResult as $value){
- $merchantData[$value['id']] = $value;
- }
- }
-
- //商铺
- $objMShop = new MShop($this->onlineEnterpriseId, $this->onlineUserId);
- $shops = $objMShop->getShopName(array_values(array_unique($shopIds)));
-
-
- //供应商
- $objMSupplier = new MSupplier($this->onlineUserId,$this->onlineEnterpriseId);
- $supplierResult = $objMSupplier->getSupplierNameByIds($supplierIds);
- $supplierMap = [];
- if ($supplierResult->isSuccess()){
- $supplierMap = MSupplier::supplierMap($supplierResult->getData());
- }
-
- foreach ($data as $key => &$value){
- $value['categoryName'] = isset($categoryMap[$value['categoryId']]) ? $categoryMap[$value['categoryId']] : '无';
- $value['brandName'] = isset($brandMap[$value['brandId']]) ? $brandMap[$value['brandId']] : '无';
- if (empty($value['noSalesShop'])){
- $value['noSalesShopNames'] = '';
- }else{
- $noSalesShopStr = '';
- $noSalesShopArr = explode(',',$value['noSalesShop']);
- foreach ($noSalesShopArr as $shopId){
- !empty($noSalesShopStr) && $noSalesShopStr .= ',';
- $noSalesShopStr .= isset($shopMap[$shopId]) ? $shopMap[$shopId] : '无';
- }
- $value['noSalesShopNames'] = $noSalesShopStr;
- }
- $value['specMultiple'] = isset($skuMap[$value['id']]) ? $skuMap[$value['id']] : [];
- $value['goodsCode'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $value['id'], StatusCode::$code['goodsBasic']['length']);;
-
- $data[$key]['sourceMsg'] = '平台';
- if (isset($value['storeId']) && !empty($value['storeId'])){
- $data[$key]['sourceMsg'] = getArrayItem($shops,$value['storeId'],'');
- }
- if (isset($value['supplierId']) && !empty($value['supplierId'])){
- $row = getArrayItem($supplierMap,$value['supplierId'],[]);
- if (!empty($row)){
- $data[$key]['sourceMsg'] = getArrayItem($row,'title','');
- }
- }
- $data[$key]['merchantName'] = '';
- if(isset($value['merchantId']) && !empty($value['merchantId']) && isset($merchantData[$value['merchantId']])){
- $data[$key]['sourceMsg'] = $merchantData[$value['merchantId']]['name'];
- $data[$key]['merchantName'] = $merchantData[$value['merchantId']]['name'];
- }
-
- $value['enableStatusMsg'] = $value['enableStatus'] == StatusCode::$standard ? '启用' : '禁用';
- $value['createTime'] = date('Y-m-d H:i:s',$value['createTime']);
- $value['storage'] = '无';
- if (!empty($value['extends'])){
- $value['storage'] = empty($value['extends']) ? '' : json_decode($value['extends'],true)['storage'];
- }
- }
- return ResultWrapper::success($data);
- }
- /**
- * Doc: (des="生成规格名字")
- * User: XMing
- * Date: 2020/8/22
- * Time: 2:47 下午
- * @param array $specGroup
- * @return string
- */
- private static function createSpecName(array $specGroup)
- {
- $str = '';
- foreach ($specGroup as $value){
- empty($str) && $str .= ' ';
- if (!empty($value['specName'])){
- $str .= $value['specName'].':';
- }
- if (!empty($value['specValueName'])){
- $str .= $value['specValueName'];
- }
- }
- return empty($str) ? '无' : $str;
- }
- /**
- * Doc: (des="导出查询数据")
- * User: XMing
- * Date: 2020/8/22
- * Time: 4:58 下午
- * @param array $selectParams
- * @return ResultWrapper
- */
- private function getGoodsBasicBySelectParams(array $selectParams)
- {
- $goodsBasicLists = $this->objDGoodsBasic->exportSelect($selectParams,'*','createTime DESC');
- if ($goodsBasicLists === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- $goodsBasicLists = self::getGeneratorData($goodsBasicLists);
- return ResultWrapper::success($goodsBasicLists);
- }
- /**
- * 获取全部商品基础数据列表
- * @param $selectParams
- * @param boolean $is_export
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getAllGoodsBasic($selectParams,$is_export = false)
- {
- $limit = $selectParams['limit'];
- unset($selectParams['limit']);
- $offset = $selectParams['offset'];
- unset($selectParams['offset']);
- // $selectParams = parent::getSalesManQueryParams($selectParams, 'salesManId');
- $selectParams['deleteStatus'] = StatusCode::$standard;
- if ($is_export === true) self::exportGoodsBasic($selectParams,'db');
- $dbResult = $this->objDGoodsBasic->select($selectParams, '*', 'id desc', $limit, $offset);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $total = $this->objDGoodsBasic->count($selectParams);
- $format = self::formatJson($dbResult);
- $format = self::formatCategory($format);
- foreach ($format as &$formatData) {
- $formatData['unitData'] = [];
- $formatData['specGroup'] = [];
- $formatData['specMultiple'] = [];
- $formatData = self::formatSingleSkuMapping($formatData);
- $formatData = self::formatMultipleSkuMapping($formatData);
- }
- $return = [
- 'data' => $format,
- 'total' => ($total) ? intval($total) : 0,
- ];
- return ResultWrapper::success($return);
- }
- public function fixEsData($selectParams)
- {
- $limit = $selectParams['limit'];
- unset($selectParams['limit']);
- $offset = $selectParams['offset'];
- unset($selectParams['offset']);
- //$selectParams['deleteStatus'] = StatusCode::$standard;
- $dbResult = $this->objDGoodsBasic->select($selectParams, 'id', null, $limit, $offset);
- foreach ($dbResult as $goods) {
- self::updateEsData($goods['id']);
- }
- print_r(count($dbResult) . '条数据');
- }
- /**
- * 获取商铺下允许销售的商品
- * @param $selectParams
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getGoodsBasicOfShopId($selectParams)
- {
- $limit = $selectParams['limit'];
- $offset = $selectParams['offset'];
- /*
- $where = 'deleteStatus = ' . StatusCode::$standard;
- $where .= ' AND !FIND_IN_SET(' . $selectParams['shopId'] . ',noSalesShop)';
- if (isset($selectParams['title'])) {
- $where .= ' AND title LIKE "%' . $selectParams['title'] . '%"';
- }
- $dbResult = $this->objDGoodsBasic->select($where, '*', 'createTime desc', $limit, $offset);*/
- //查询已经发布的基础物料id
- $sql = 'SELECT `basicGoodsId` from qianniao_goods_' . $this->onlineEnterpriseId . ' WHERE `shopId` = ' . $selectParams['shopId'] . ' AND `deleteStatus` = '.StatusCode::$standard;
- $result = $this->objDGoodsBasic->query($sql);
- if ($result === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- unset($sql);
- $havingIds = [];
- foreach ($result as $item) {
- $havingIds[] = $item['basicGoodsId'];
- }
- $sql = 'SELECT `id` from qianniao_goods_basic_'.$this->onlineEnterpriseId.' WHERE FIND_IN_SET(' . $selectParams['shopId'] . ',`noSalesShop`)';
- $result = $this->objDGoodsBasic->query($sql);
- if ($result === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- unset($sql);
- $noSaleIds = [];
- foreach ($result as $item){
- $noSaleIds[] = $item['id'];
- }
- $notIds = array_merge($havingIds,$noSaleIds);
- $sql = 'SELECT * FROM qianniao_goods_basic_' . $this->onlineEnterpriseId . ' WHERE `enableStatus` = ' . StatusCode::$standard . ' AND `deleteStatus` = ' . StatusCode::$standard;
- if (!empty($notIds)){
- $notIds = trim(implode(',',$notIds),',');
- $sql .= ' AND id NOT IN ('. $notIds .')';
- }
- $sql .= ' AND level = '.StatusCode::$standard;
- if (isset($selectParams['title'])) {
- $sql .= ' AND title LIKE "%' . $selectParams['title'] . '%" ';
- }
- //筛选分类
- if (isset($selectParams['categoryId']) && !empty($selectParams['categoryId'])){
- $sql .= ' AND find_in_set('.$selectParams['categoryId'].',categoryPath) ';
- }
- $sql .= ' order by createTime desc limit ' . $offset . ',' . $limit;
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $sql = 'select count(id) as total from qianniao_goods_basic_' . $this->onlineEnterpriseId . ' where id not in(select basicGoodsId from qianniao_goods_' . $this->onlineEnterpriseId . ' where shopid = ' . $selectParams['shopId'] . ' AND deleteStatus = '.StatusCode::$standard.' ) and !FIND_IN_SET(' . $selectParams['shopId'] . ',noSalesShop) and enableStatus = ' . StatusCode::$standard . ' and deleteStatus =' . StatusCode::$standard;
- $sql .= ' AND level = '.StatusCode::$standard;
- if (isset($selectParams['title'])) {
- $sql .= ' AND title LIKE "%' . $selectParams['title'] . '%"';
- }
- //筛选分类
- if (isset($selectParams['categoryId']) && !empty($selectParams['categoryId'])){
- $sql .= ' AND find_in_set('.$selectParams['categoryId'].',categoryPath) ';
- }
- $total = $this->objDGoodsBasic->query($sql);
- if ($total === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $total = $total[0]['total'];
- $format = self::formatJson($dbResult);
- $format = self::formatCategory($format);
- foreach ($format as &$detail) {
- $detail['unitData'] = [];
- $detail = self::formatSingleSkuMapping($detail);
- }
- $return = [
- 'data' => $format,
- 'total' => ($total) ? intval($total) : 0,
- ];
- return ResultWrapper::success($return);
- }
- /**
- * 获取指定基础商品详情
- * @param $id
- * @param $isAddGoods
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getGoodsBasicInfoById($id, $isAddGoods)
- {
- $dbResult = $this->objDGoodsBasic->get_by('id', $id);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $formatData = self::formatJson($dbResult);
- $formatData = self::formatCategory($formatData);
- $formatData = array_shift($formatData);
- $formatData = self::formatSingleSkuMapping($formatData);
- $formatData = self::formatMultipleSkuMapping($formatData, $isAddGoods);
- $formatData = self::formatMultipleSkuIndex($formatData);
- $formatData = self::getSkuInventorySpec($formatData);
- return ResultWrapper::success($formatData);
- }
- /**
- * @param $data
- * @return mixed
- */
- private function getSkuInventorySpec($data)
- {
- //print_r(array_column($data['specMultiple'],'id'));die;
- $InventoryResult = $this->objMInventory->getInventoryBySkuIds(array_column($data['specMultiple'], 'id'));
- $inventoryData = [];
- if (!$InventoryResult->isSuccess()) {
- file_put_contents('/www/wwwroot/logs/apiqnys.liuniukj.com/MGoodsBasic_error.log', date('Y-m-d H:i:s') . '错误信息|sql错误 :' . $InventoryResult->getData() . PHP_EOL, FILE_APPEND);
- } else {
- $inventoryData = $InventoryResult->getData();
- }
- foreach ($data['specMultiple'] as &$row) {
- if (isset($inventoryData[$row['id']])) {
- $row['isEditSpec'] = StatusCode::$delete;//采购过,不能编辑
- } else {
- $row['isEditSpec'] = StatusCode::$standard;
- }
- $row['inventory'] = isset($inventoryData[$row['id']]) ? $inventoryData[$row['id']] : 0;
- }
- //查询物料库存
- $materielResult = $this->objMInventory->getInventoryByMaterielIds([$data['id']]);
- $materielMap = [];
- if (!$materielResult->isSuccess()) {
- file_put_contents('/www/wwwroot/logs/apiqnys.liuniukj.com/MGoodsBasic_error.log', date('Y-m-d H:i:s') . '错误信息|sql错误 :' . var_export($materielResult->getData()) . PHP_EOL, FILE_APPEND);
- } else {
- $materielMap = $materielResult->getData();
- }
- if (!isset($materielMap[$data['id']])) {
- //从来没有采购过
- $data['isEditSpec'] = StatusCode::$standard;
- } else {
- //采购过
- $data['isEditSpec'] = StatusCode::$delete;
- }
- return $data;
- }
- /**
- *
- */
- public static function formatMultipleSkuIndex($details)
- {
- //生成规格唯一索引
- $specMultiple = $details['specMultiple'];
- if (empty($specMultiple)) {
- return $details;
- }
- foreach ($specMultiple as &$spec) {
- $index = $details['id'] . ':' . $spec['unitId'];//商品ID
- //$subName = '';
- if (!empty($spec['specGroup'])) {
- foreach ($spec['specGroup'] as $row) {
- $index .= empty($index) ? $row['specValueId'] : ':' . $row['specValueId'];
- //$subName .= empty($subName) ? $row['specIdName'] . ':' . $row['specValueIdName'] : '-' . $row['specIdName'] . ':' . $row['specValueIdName'];
- //$subName .= empty($subName) ? $row['specValueIdName'] : ':' . $row['specValueIdName'];
- }
- }
- $spec['index'] = $index;
- $spec['indexGroup'] = explode(':', $index);
- //$spec['subName'] = $subName;
- }
- $details['specMultiple'] = $specMultiple;
- return $details;
- }
- /**
- * 将相同的辅单位合并在一起(兼容之前数据所以使用md5判断)
- * @param $data
- * @return array
- */
- public function branchMerge($data)
- {
- if (empty($data)) {
- return $data;
- }
- $hash = [];
- $sku = [];
- foreach ($data as $key => $unit) {
- $thisHash = md5($unit['conversion'] . $unit['unitName'] . $unit['unitId']);
- $hash[$thisHash]['skuIds'][] = $unit['id'];
- $hash[$thisHash]['sku'] = $unit;
- }
- $mapping = [];
- foreach ($hash as &$value) {
- $value['sku']['skuIds'] = $value['skuIds'];
- $mapping[] = $value['sku'];
- }
- return $mapping;
- }
- /**
- * 单位
- * @param $data
- * @return mixed
- * @throws \Exception
- */
- public function formatSingleSkuMapping($data)
- {
- if(isset($data['basicGoodsId'])){
- $id = $data['basicGoodsId'];
- }else{
- $id = $data['id'];
- }
- //计量单位
- $selectParams = [
- 'goodsId' => $data['id'],
- ];
- if (isset($data['basicGoodsId'])){
- $id = $data['basicGoodsId'];
- }else{
- $id = $data['id'];
- }
- $objMSku = new MSku($this->onlineUserId, $this->onlineEnterpriseId);
- $sql = "SELECT id,barCode,unitId,unitName,conversion,isMaster,barCode,specType,isDefault,`weight`,isNew,specGroupHash FROM qianniao_sku_" . $this->onlineEnterpriseId . " WHERE goodsId=" . $id . " AND deleteStatus=" . StatusCode::$standard . " ORDER BY isMaster DESC";
- $skuResult = $objMSku->getQuery($sql);
- $skuData = [];
- if ($skuResult->isSuccess()) {
- $skuData = $skuResult->getData();
- $haveMaster = 0;
- $newSkuData = [];
- $noMasterUnidIds = [];
- foreach ($skuData as $key => &$value) {
- if ($data['specType'] == StatusCode::$specType['multiple']) {
- $value['barCode'] = '';
- }
- if ($value['isMaster'] == StatusCode::$standard && $haveMaster == 0) {
- $newSkuData[] = $value;
- $haveMaster = 1;
- }
- if ($value['isMaster'] == StatusCode::$delete && !in_array($value['unitId'], $noMasterUnidIds)) {
- $newSkuData[] = $value;
- $noMasterUnidIds[] = $value['unitId'];
- }
- }
- unset($skuData);
- $skuData = $newSkuData;
- }
- $data['unitData'] = $skuData;
- return $data;
- }
- /**
- * @param $data
- * @param $isAddGoods
- * @return mixed
- * @throws \Exception
- */
- public function formatMultipleSkuMapping($data, $isAddGoods = 4)
- {
- switch ($isAddGoods) {
- case StatusCode::$standard:
- $sql = "SELECT id,unitId,unitName,conversion,isDefault,isMaster,specGroupHash,specImage,specData,barCode,`weight`,isNew FROM qianniao_sku_" . $this->onlineEnterpriseId . " WHERE goodsId=" . $data['id'] . " AND deleteStatus=" . StatusCode::$standard;
- break;
- case StatusCode::$delete:
- $sql = "SELECT id,unitId,unitName,conversion,isDefault,isMaster,specGroupHash,specImage,specData,barCode,`weight`,isNew FROM qianniao_sku_" . $this->onlineEnterpriseId . " WHERE goodsId=" . $data['id'] . " AND deleteStatus=" . StatusCode::$standard . " AND isMaster=" . StatusCode::$standard . " GROUP BY specGroupHash";
- break;
- }
- //$sql = "SELECT id,unitId,unitName,conversion,isMaster,specGroupHash,specImage,specData FROM qianniao_sku_" . $this->onlineEnterpriseId . " WHERE goodsId=" . $data['id'] . " AND deleteStatus=" . StatusCode::$standard . " AND isMaster=" . StatusCode::$standard . " GROUP BY specGroupHash";
- $skuResult = $this->objMSku->getQuery($sql);
- $skuData = [];
- if ($skuResult->isSuccess()) {
- $skuData = $skuResult->getData();
- }
- $specMultiple = [];
- foreach ($skuData as $spec) {
- $specGroup = json_decode($spec['specData'], true);
- $specMultiple[] = [
- 'id' => $spec['id'],
- 'unitId' => $spec['unitId'],
- 'unitName' => $spec['unitName'],
- 'isMaster' => $spec['isMaster'],
- 'conversion' => $spec['conversion'],
- 'specGroup' => $specGroup,
- 'specGroupHash' => $spec['specGroupHash'],
- 'specImage' => json_decode($spec['specImage'], true),
- 'barCode' => $spec['barCode'],
- 'isDefault' => $spec['isDefault'],
- 'weight' => $spec['weight'],
- 'isNew' => $spec['isNew']
- ];
- }
- $data['specMultiple'] = $specMultiple;
- if ($isAddGoods == StatusCode::$delete) $data = self::formatBarCode($data);
- return $data;
- }
- /**
- *
- */
- public function formatBarCode(array $data)
- {
- if (empty($data)) {
- return $data;
- }
- if ($data['specType'] == StatusCode::$specType['single']) {
- return $data;
- }
- $skuResult = $this->objMSku->getSkuByParams(
- [
- 'specGroupHash' => array_column($data['specMultiple'], 'specGroupHash'),
- 'goodsId' => $data['id'],
- 'deleteStatus' => StatusCode::$standard
- ]
- );
- if (!$skuResult->isSuccess()) {
- file_put_contents('/www/wwwroot/logs/apiqnys.liuniukj.com/MGoodsBasic_error.log', date('Y-m-d H:i:s') . '错误原因|sql:' . $skuResult->getData() . PHP_EOL, FILE_APPEND);
- return $data;
- }
- $skuData = $skuResult->getData();
- $map = [];
- $isDefaultMap = [];
- $weightMap = [];
- foreach ($skuData as $item) {
- $map[$item['specGroupHash']][$item['unitId']] = $item['barCode'];
- $isDefaultMap[$item['specGroupHash']][$item['unitId']] = $item['isDefault'];
- $weightMap[$item['specGroupHash']][$item['unitId']] = $item['weight'];
- }
- foreach ($data['specMultiple'] as &$spec) {
- $spec['barCode'] = isset($map[$spec['specGroupHash']]) ? $map[$spec['specGroupHash']] : (object)[];
- $spec['isDefault'] = isset($isDefaultMap[$spec['specGroupHash']]) ? $isDefaultMap[$spec['specGroupHash']] : (object)[];
- $spec['weight'] = isset($weightMap[$spec['specGroupHash']]) ? $weightMap[$spec['specGroupHash']] : (object)[];
- }
- return $data;
- }
- /**
- * specType => 1
- * 编辑单规格基础商品数据
- * @param $params
- * @return ResultWrapper
- * @throws \Exception
- */
- public function editGoodsBasic($params)
- {
- if (empty($params['id'])) {
- return ResultWrapper::fail('没有指定要修改的商品数据id', ErrorCode::$paramError);
- }
- ;
- $id = $params['id'];
- unset($params['id']);
- $unitData = $params['unitData'];
- $delUnitIds = $params['delUnitIds'];
- $delSpecSkuIds = $params['delSpecSkuIds'];
- unset($params['delSpecSkuIds']);//属性删除
- unset($params['delUnitIds']);
- unset($params['unitData']);
- unset($params['merchantId']);
- $beginStatus = $this->objDGoodsBasic->beginTransaction();
- $objMSku = new MSku($this->onlineUserId, $this->onlineEnterpriseId);
- $dbResult = $objMSku->editSku($unitData, $id, $delUnitIds, $delSpecSkuIds);
- if (!$dbResult->isSuccess()) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $dbResult = $this->objDGoodsBasic->update($params, ['id' => $id]);
- if ($dbResult === false) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //缓存商品名称
- $this->isUpdateBasicCache = true;
- $this->objectId = $id;
- $beginStatus && $this->objDGoodsBasic->commit();
- //self::updateEsData($id);
- $this->objMSku->delSkuCache($id);
- // 每编辑一件商品需要清除一下小程序商品首页的缓存;
- $objPageCache = new PageCache();
- $objPageCache->delPage();
- return ResultWrapper::success($dbResult);
- }
- /**
- * specType => 2
- * 编辑多规格基础商品资料
- * @param $params
- * @return ResultWrapper
- * @throws \Exception
- */
- public function editMultipleGoodsBasic($params)
- {
- if (empty($params['id'])) {
- return ResultWrapper::fail('没有指定要修改的商品数据id', ErrorCode::$paramError);
- }
- $id = $params['id'];//商品id
- $delUnitIds = $params['delUnitIds'];//辅单位
- $delSpecSkuIds = $params['delSpecSkuIds'];//属性
- $specMultiple = $params['specMultiple'];
- $unitData = $params['unitData'];
- unset($params['unitData']);
- unset($params['specMultiple']);
- unset($params['delUnitIds']);
- unset($params['delSpecSkuIds']);
- unset($params['id']);
- //编辑sku
- $objMSku = new MSku($this->onlineUserId, $this->onlineEnterpriseId);
- $dbResult = $objMSku->editMultipleSku($specMultiple, $id, $delUnitIds, $delSpecSkuIds, $unitData);
- if (!$dbResult->isSuccess()) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //编辑基础资料
- $dbResult = $this->objDGoodsBasic->update($params, ['id' => $id]);
- if ($dbResult === false) {
- $this->objDGoodsBasic->rollBack();
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //缓存商品名称
- $this->isUpdateBasicCache = true;
- $this->objectId = $id;
- $this->objDGoodsBasic->commit();
- //self::updateEsData($id);
- $this->objMSku->delSkuCache($id);
-
- // 每编辑一件商品需要清除一下小程序商品首页的缓存;
- $objPageCache = new PageCache();
- $objPageCache->delPage();
- return ResultWrapper::success($dbResult);
- }
- /**
- * 更新基础商品的启用/禁用
- * @param $params
- * @return ResultWrapper
- * @throws \Exception
- */
- public function updateEnableStatus($params)
- {
- if (!empty($params['deleteStatus'])){
- $is_status['deleteStatus'] = $params['deleteStatus'];
- }else{
- $is_status['enableStatus'] = $params['enableStatus'];
- }
- $dbResult = $this->objDGoodsBasic->update($is_status, ['id' => $params['id']]);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- /*if (is_array($params['id'])) {
- foreach ($params['id'] as $id) {
- self::updateEsData($id);
- }
- }*/
- return ResultWrapper::success($dbResult);
- }
- /**
- * 删除指定商品基础资料
- * @param $id
- * @return ResultWrapper
- * @throws \Exception
- */
- public function delGoodsBasic($id)
- {
- $detail = $this->objDGoodsBasic->get($id, 'categoryPath,brandId');
- if (empty($detail)) {
- return ResultWrapper::fail('没有找到指定数据', ErrorCode::$dberror);
- }
- $dbResult = $this->objDGoodsBasic->update(['deleteStatus' => StatusCode::$delete], $id);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $categoryIds = explode(',', $detail['categoryPath']);
- foreach ($categoryIds as $v) {
- $this->objGoodsBasicCache->categoryKeyScoreDecr($v);
- }
- $this->objGoodsBasicCache->brandKeyScoreDecr($detail['brandId']);
- /*
- $_id = self::createEsDocumentId($id);
- $this->objDGoodsBasic->esupdateTypeFieldVaule(['deleteStatus' => StatusCode::$delete], $_id); */
- return ResultWrapper::success($dbResult);
- }
- /**
- * Doc: (des="发布为平台商品")
- * User: XMing
- * Date: 2020/12/7
- * Time: 12:02 下午
- * @param int $id
- * @return ResultWrapper
- */
- public function pushPlatform(int $id): ResultWrapper
- {
- $dbResult = $this->objDGoodsBasic->update(['level' => StatusCode::$standard,'updateTime' => time()], $id);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- /*
- $_id = self::createEsDocumentId($id);
- $this->objDGoodsBasic->esupdateTypeFieldVaule(['level' => StatusCode::$standard,'updateTime' => time()], $_id);*/
- return ResultWrapper::success(true);
- }
- /**
- * 格式化Json数据
- * @param $data
- * @return mixed
- * @throws \Exception
- */
- private function formatJson($data)
- {
- if (isset($data['id'])) {
- $data['images'] = empty($data['images']) ? '' : json_decode($data['images'], true);
- $data['code'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $data['id'], StatusCode::$code['goodsBasic']['length']);
- $data['description'] = empty($data['description']) ? '' : htmlspecialchars_decode($data['description'], ENT_QUOTES);
- $data['specGroup'] = empty($data['specGroup']) ? [] : json_decode($data['specGroup'], true);
- $extends = empty($data['extends']) ? [] : json_decode($data['extends'], true);
- $data['storage'] = isset($extends['storage']) ? $extends['storage'] : '';
- return $data;
- }
- foreach ($data as &$v) {
- $v['code'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $v['id'], StatusCode::$code['goodsBasic']['length']);
- $v['images'] = empty($v['images']) ? '' : json_decode($v['images'], true);
- $v['description'] = empty($v['description']) ? '' : htmlspecialchars_decode($v['description'], ENT_QUOTES);
- $v['specGroup'] = empty($v['specGroup']) ? [] : json_decode($v['specGroup'], true);
- $extends = empty($v['extends']) ? [] : json_decode($v['extends'], true);
- $v['storage'] = isset($extends['storage']) ? $extends['storage'] : '';
- }
- return $data;
- }
- /**
- * 获取品牌下的商品数量
- * @param $where
- * @param $enterpriseId
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getGoodsBasicTotalByBrandId($where)
- {
- $tableName = self::getGoodsBasicSubTableName();
- $sql = "SELECT brandId,count(id) num FROM " . $tableName . " where brandId IN (" . implode(',', $where['brandId']) . ') and deleteStatus=' . $where['deleteStatus'] . ' group by brandId';
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 获取分类下的商品数量
- * @param $where
- * @param $enterpriseId
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getGoodsBasicTotalByCategoryId($where)
- {
- $tableName = self::getGoodsBasicSubTableName();
- $sql = "SELECT categoryId,count(id) num FROM " . $tableName . " where categoryId IN (" . implode(',', $where['categoryId']) . ') and deleteStatus=' . $where['deleteStatus'] . ' group by brandId';
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * Doc: (des="格式化物料列表")
- * User: XMing
- * Date: 2021/3/4
- * Time: 11:39 上午
- * @param array $data
- * @return ResultWrapper
- * @throws \Exception
- */
- public function formatMaterielLists(array $data): ResultWrapper
- {
- if (empty($data)){
- return ResultWrapper::success($data);
- }
- $materielIds = [];
- $categoryIds = [];
- $brandIds = [];
- $supplierIds = [];
- $shopIds = [];
- foreach ($data as $key => $value) {
- if (!in_array($value['id'],$materielIds)){
- $materielIds[] = $value['id'];
- }
- if (!in_array($value['categoryId'],$categoryIds) && !empty($value['categoryId'])){
- $categoryIds[] = $value['categoryId'];
- }
- if (!in_array($value['assistCategoryId'],$categoryIds) && !empty($value['assistCategoryId'])){
- $categoryIds[] = $value['assistCategoryId'];
- }
- if (!in_array($value['brandId'],$brandIds) && !empty($value['brandId'])){
- $brandIds[] = $value['brandId'];
- }
- if (!empty($value['noSalesShop'])){
- $noSalesShopArray = explode(',', $value['noSalesShop']);
- $shopIds = array_merge($shopIds,$noSalesShopArray);
- }
- if (!empty($value['storeId']) && !in_array($value['storeId'],$shopIds)){
- $shopIds[] = $value['storeId'];
- }
- if (!empty($value['supplierId']) && !in_array($value['supplierId'],$supplierIds)){
- $supplierIds[] = $value['supplierId'];
- }
- }
- $categoryMap = [];
- $objMGoodsCategory = new MGoodsCategory($this->onlineUserId, $this->onlineEnterpriseId);
- if (!empty($categoryIds)){
- $categoryResult = $objMGoodsCategory->getCategoryTitleByIds($categoryIds);
- if (!$categoryResult->isSuccess()){
- return ResultWrapper::fail($categoryResult->getData(),$categoryResult->getErrorCode());
- }
- $categoryData = $categoryResult->getData();
- $categoryMap = self::arrayToArrayMapping($categoryData);
- if ($categoryMap === false){
- return ResultWrapper::fail('ArrayToMap映射错误',ErrorCode::$paramError);
- }
- }
- $brandMap = [];
- if (!empty($brandIds)){
- $objMGoodsBrand = new MGoodsBrand($this->onlineUserId, $this->onlineEnterpriseId);
- $brandResult = $objMGoodsBrand->getBrandTitleByBrandId($brandIds);
- if (!$brandResult->isSuccess()){
- return ResultWrapper::fail($brandResult->getData(),$brandResult->getErrorCode());
- }
- $brandData = $brandResult->getData();
- $brandMap = self::arrayToArrayMapping($brandData);
- if ($brandMap === false){
- return ResultWrapper::fail('ArrayToMap映射错误',ErrorCode::$paramError);
- }
- }
- //商铺
- $shopMap = [];
- if (!empty($shopIds)){
- $objMShop = new MShop($this->onlineEnterpriseId, $this->onlineUserId);
- $shopResult = $objMShop->getShopByIds($shopIds);
- if (!$shopResult->isSuccess()){
- return ResultWrapper::fail($shopResult->getData(),$shopResult->getErrorCode());
- }
- $shopData = $shopResult->getData();
- $shopMap = self::arrayToArrayMapping($shopData);
- if ($shopMap === false){
- return ResultWrapper::fail('ArrayToMap映射错误',ErrorCode::$paramError);
- }
- }
- $supplierMap = [];
- if (!empty($supplierIds)){
- $objMSupplier = new MSupplier($this->onlineUserId,$this->onlineEnterpriseId);
- $supplierResult = $objMSupplier->getSupplierNameByIds($supplierIds);
- if (!$supplierResult->isSuccess()){
- return ResultWrapper::fail($supplierResult->getData(),$supplierResult->getErrorCode());
- }
- $supplierData = $supplierResult->getData();
- $supplierMap = self::arrayToArrayMapping($supplierData);
- if ($supplierMap === false){
- return ResultWrapper::fail('ArrayToMap映射错误',ErrorCode::$paramError);
- }
- }
- $specTotalMapResult = self::getSpecTotal($data);
- if (!$specTotalMapResult->isSuccess()){
- return ResultWrapper::fail($specTotalMapResult->getData(),$specTotalMapResult->getErrorCode());
- }
- $specTotalMap = $specTotalMapResult->getData();
- $masterUnitNameResult = $this->objMSku->getMasterUnitNameByMaterielIds($materielIds);
- if (!$masterUnitNameResult->isSuccess()){
- return ResultWrapper::fail($masterUnitNameResult->getData(),$masterUnitNameResult->getErrorCode());
- }
- $masterUnitNameMap = $masterUnitNameResult->getData();
- foreach ($data as &$item){
- $item['assistCategoryPath'] = json_decode($value['assistCategoryPath'], true);
- $item['assistCategoryTitle'] = isset($categoryMap[$item['assistCategoryId']]) ? $categoryMap[$item['assistCategoryId']]['title'] : '';
- $item['categoryTitle'] = isset($categoryMap[$item['categoryId']]) ? $categoryMap[$item['categoryId']]['title'] : '';
- $item['brandTitle'] = isset($brandMap[$item['brandId']]['title']) ? $brandMap[$item['brandId']]['title'] : '';
- $item['specTotal'] = isset($specTotalMap[$item['id']]) ? $specTotalMap[$item['id']] : 0;
- $noSalesShopArray = explode(',', $item['noSalesShop']);
- $noSalesShopNames = [];
- foreach ($noSalesShopArray as $shopId) {
- if ($shopId) {
- $noSalesShopNames[] = isset($shopMap[$shopId]) ? $shopMap[$shopId]['name'] : '';
- }
- }
- $item['noSalesShopNames'] = trim(implode(',', $noSalesShopNames),',');
- $item['sourceMsg'] = '平台';
- if (isset($item['storeId']) && !empty($item['storeId'])){
- $item['sourceMsg'] = isset($shopMap[$item['storeId']]) ? $shopMap[$item['storeId']]['name'] : '';
- }
- if (isset($item['supplierId']) && !empty($item['supplierId'])){
- $row = getArrayItem($supplierMap,$item['supplierId'],[]);
- if (!empty($row)){
- $item['sourceMsg'] = getArrayItem($row,'title','');
- }
- }
- $item['code'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $item['id'], StatusCode::$code['goodsBasic']['length']);//当前状态
- $extends = empty($item['extends']) ? [] : json_decode($item['extends'],true);
- $item['storage']= isset($extends['storage']) ? $extends['storage'] : '';
- $item['unitNameMaster'] = getArrayItem($masterUnitNameMap,$item['id'],'');
- }
- unset($item);
- return ResultWrapper::success($data);
- }
- /**
- * 查询基础商品对应规格数量
- * @param $data
- * @return array
- */
- public function getSpecTotal(array $data): ResultWrapper
- {
- $goodsIds = array_values(array_unique(array_column($data, 'id')));
- $goodsIds = trim(implode(',', $goodsIds), ',');
- if (empty($goodsIds)){
- return ResultWrapper::success([]);
- }
- $sql = 'SELECT COUNT(id) as total,goodsId FROM qianniao_sku_' . $this->onlineEnterpriseId . ' WHERE deleteStatus = ' . StatusCode::$standard . ' AND goodsId IN(' . $goodsIds . ') GROUP BY goodsId;';
- $dbResult = $this->objMSku->getQuery($sql);
- if (!$dbResult->isSuccess()) {
- Logger::logs(E_USER_ERROR,'sql error',__CLASS__,__LINE__,$dbResult->getData());
- }
- $allSpec = $dbResult->getData();
- $mapping = [];
- foreach ($allSpec as $spec) {
- $mapping[$spec['goodsId']] = $spec['total'];
- }
- return ResultWrapper::success($mapping);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2021/3/4
- * Time: 12:03 下午
- * @param array $array
- * @param string $index
- * @return array|false
- */
- public static function arrayToArrayMapping(array $array,string $index = 'id')
- {
- if (empty($array)){
- return [];
- }
- $map = [];
- foreach ($array as $key => $value){
- if (!isset($value['id'])){
- return false;
- }
- $map[$value[$index]] = $value;
- }
- return $map;
- }
- /**
- * 格式化数据
- * @param $data
- * @param $enterpriseId
- * @return mixed
- * @throws \Exception
- */
- public function formatCategory($data)
- {
- if (empty($data)) {
- return $data;
- }
- if (isset($data['categoryId'])) {
- $dimension = $data;
- unset($data);
- $data[] = $dimension;
- }
- $allBrandIds = [];
- $allCategoryIds = [];
- //$noSalesShopIds = [];
- $allGoodsBasicIds = [];
- $shopIds = [];
- $supplierIds = [];
- $merchantIds = [];
- foreach ($data as $key => $value) {
- $allGoodsBasicIds[] = $value['id'];
- $allCategoryIds[] = $value['categoryId'];
- $allCategoryIds[] = $value['assistCategoryId'];
- $allBrandIds[] = $value['brandId'];
- !empty($value['merchantId']) && $merchantIds[] = $value['merchantId'];
- if ($value['noSalesShop']) {
- $shopIds = array_merge($shopIds, explode(',', $value['noSalesShop']));
- }
- !empty($value['storeId']) && $shopIds[] = $value['storeId'];
- !empty($value['supplierId']) && $supplierIds[] = $value['supplierId'];
- }
- $allCategoryData = [];
- $allBrandData = [];
- //分类
- $objMGoodsCategory = new MGoodsCategory($this->onlineUserId, $this->onlineEnterpriseId);
- $categoryResult = $objMGoodsCategory->getCategoryTitleByIds(array_values(array_filter($allCategoryIds)));
- if ($categoryResult->isSuccess()) {
- $categoryData = $categoryResult->getData();
- foreach ($categoryData as $key => $value) {
- $allCategoryData[$value['id']] = $value;
- }
- }
- //品牌
- $objMGoodsBrand = new MGoodsBrand($this->onlineUserId, $this->onlineEnterpriseId);
- $brandResult = $objMGoodsBrand->getBrandTitleByBrandId(array_values(array_filter($allBrandIds)));
- if ($brandResult->isSuccess()) {
- $brandData = $brandResult->getData();
- //创建映射关系
- foreach ($brandData as $key => $value) {
- $allBrandData[$value['id']] = $value;
- }
- }
- //商铺
- $objMShop = new MShop($this->onlineEnterpriseId, $this->onlineUserId);
- $shops = $objMShop->getShopName(array_values(array_unique($shopIds)));
- //供应商
- $objMSupplier = new MSupplier($this->onlineUserId,$this->onlineEnterpriseId);
- $supplierResult = $objMSupplier->getSupplierNameByIds($supplierIds);
- $supplierMap = [];
- if ($supplierResult->isSuccess()){
- $supplierMap = MSupplier::supplierMap($supplierResult->getData());
- }
- //商户
- if(!empty($merchantIds)){
- $objMMerchant = new MMerchant($this->onlineEnterpriseId, $this->onlineUserId);
- $modelResult = $objMMerchant->selectMerchantData(['id' => $merchantIds, 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $merchantResult = $modelResult->getData();
- unset($modelResult);
- $merchantData = [];
- foreach($merchantResult as $value){
- $merchantData[$value['id']] = $value;
- }
- }
- foreach ($data as $key => &$value) {
- $data[$key]['categoryTitle'] = isset($allCategoryData[$value['categoryId']]['title']) ? $allCategoryData[$value['categoryId']]['title'] : '';
- $data[$key]['assistCategoryTitle'] = isset($allCategoryData[$value['assistCategoryId']]['title']) ? $allCategoryData[$value['assistCategoryId']]['title'] : '';
- $data[$key]['assistCategoryPath'] = json_decode($value['assistCategoryPath'], true);
- $data[$key]['brandTitle'] = isset($allBrandData[$value['brandId']]['title']) ? $allBrandData[$value['brandId']]['title'] : '';
- $noSalesShop = explode(',', $value['noSalesShop']);
- $noSalesShopNames = [];
- foreach ($noSalesShop as $v) {
- if ($v) {
- $noSalesShopNames[] = isset($shops[$v]) ? $shops[$v]['name'] : '';
- }
- }
- $data[$key]['noSalesShopNames'] = implode(',', $noSalesShopNames);
- //$data[$key]['masterUnit'] = isset($skuData[$value['id']]['masterUnit']) ? $skuData[$value['id']]['masterUnit'] : '';
- //$data[$key]['branchUnit'] = isset($skuData[$value['id']]['branchUnit']) ? $skuData[$value['id']]['branchUnit'] : '';
- $data[$key]['sourceMsg'] = '平台';
- if (isset($value['storeId']) && !empty($value['storeId'])){
- $data[$key]['sourceMsg'] = getArrayItem($shops,$value['storeId'],'');
- }
- if (isset($value['supplierId']) && !empty($value['supplierId'])){
- $row = getArrayItem($supplierMap,$value['supplierId'],[]);
- if (!empty($row)){
- $data[$key]['sourceMsg'] = getArrayItem($row,'title','');
- }
- }
- $data[$key]['merchantName'] = '';
- if(isset($value['merchantId']) && !empty($value['merchantId']) && isset($merchantData[$value['merchantId']])){
- $data[$key]['sourceMsg'] = $merchantData[$value['merchantId']]['name'];
- $data[$key]['merchantName'] = $merchantData[$value['merchantId']]['name'];
- }
- }
- return $data;
- }
- /**
- * 获取商品名称
- * @param $goodsBasicIds
- * @param string $fields
- * @return array
- */
- public function getGoodsBasicNames($goodsBasicIds, $fields = "*"): ResultWrapper
- {
- if (!$goodsBasicIds) {
- return ResultWrapper::success([]);
- }
- $dbResult = $this->objDGoodsBasic->select($goodsBasicIds, $fields);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- foreach ($dbResult as $goodsBasic) {
- $return[$goodsBasic['id']] = $goodsBasic;
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 统计分类下的商品数量
- * @param $id
- * @return ResultWrapper
- */
- public function getBasicTotalByIds($id)
- {
- $tableName = $this->objDGoodsBasic->get_Table();
- $status = StatusCode::$standard;
- $sql = "select categoryId,count(id) num from {$tableName} where deleteStatus={$status} AND FIND_IN_SET({$id},categoryPath)";
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $dbResult = empty($dbResult) ? '' : $dbResult[0];
- return ResultWrapper::success($dbResult);
- }
- /**
- * 搜索条件 ES
- * @param $selectParams
- * @param boolean $is_export
- * @return array
- */
- public function setSearchWhere($selectParams = [],bool $is_export = false)
- {
- $defaultDSL = [];
- if ($is_export === false) {
- if (isset($selectParams['offset']) && $selectParams['offset']) {
- $defaultDSL['from'] = $selectParams['offset'];
- }
- $defaultDSL['size'] = 2000;
- if (isset($selectParams['limit']) && $selectParams['limit']) {
- $defaultDSL['size'] = $selectParams['limit'];
- }
- }
- $defaultDSL['sort'] = [
- 'createTime' => [
- 'order' => 'desc'
- ],
- ];
- $dsl = [];
- $dsl['query']['bool']['must'][] = [
- 'bool' => [
- 'must' => [
- 'term' => ['enterpriseId' => $this->onlineEnterpriseId],
- ],
- ]
- ];
- //商品名称/编码/条码
- if (isset($selectParams['keyword'])) {
- if (!empty($selectParams['keyword'])) {
- $dsl['query']['bool']['must'][] = [
- 'bool'=>[
- 'must' => [
- 'multi_match' => [
- 'fields' => ['title', 'code', 'barCode', 'goodsCode'],
- 'query' => $selectParams['keyword'],
- //'fuzziness' => 'AUTO',
- "type" => "best_fields",
- "tie_breaker" => 0.3,
- "minimum_should_match" => "100%"
- ]
- ]
- ],
- ];
- }
- }
- //销售状态 goods_basic表
- if (isset($selectParams['enableStatus'])) {
- if (!empty($selectParams['enableStatus'])) {
- $dsl['query']['bool']['filter'][] =
- ['term' => ['enableStatus' => $selectParams['enableStatus']]];
- }
- }
- if (isset($selectParams['supplierId']) && !empty($selectParams['supplierId'])){
- $dsl['query']['bool']['filter'][] =
- ['term' => ['supplierId' => $selectParams['supplierId']]];
- }
- if (isset($selectParams['level']) && !empty($selectParams['level'])){
- $dsl['query']['bool']['filter'][] =
- ['term' => ['level' => $selectParams['level']]];
- }
- //删除状态
- if (isset($selectParams['deleteStatus'])) {
- $dsl['query']['bool']['filter'][] =
- ['term' => ['deleteStatus' => $selectParams['deleteStatus']]];
- }
- //商品分类
- if (isset($selectParams['categoryId'])) {
- if (!empty($selectParams['categoryId'])) {
- $dsl['query']['bool']['filter'][] =
- ['term' => ['categoryId' => $selectParams['categoryId']]];
- }
- }
- if (isset($selectParams['categoryPath'])) {
- if (!empty($selectParams['categoryPath'])) {
- $dsl['query']['bool']['must'][] = [
- 'bool' => [
- 'should' => [
- [
- 'wildcard' => ['categoryPath' => $selectParams['categoryPath'].',*'],
- ],
- [
- 'wildcard' => ['categoryPath' => $selectParams['categoryPath']],
- ],
- ],
- ]
- ];
- }
- }
- //商品品牌
- if (isset($selectParams['brandId'])) {
- if (!empty($selectParams['brandId'])) {
- $dsl['query']['bool']['filter'][] =
- ['term' => ['brandId' => $selectParams['brandId']]];
- }
- }
- /*多选
- * if (!empty($selectParams['brandIds'])) {
- $dsl['query']['bool']['must'][] = [
- 'terms' => [
- 'brandId' => $selectParams['brandIds']
- ]
- ];
- }*/
- //销售员id
- parent::getAccessSalesManIds();
- if (!empty(parent::$salesManIds) && empty($selectParams['salesManId'])) {
- $dsl['query']['bool']['filter'][] = [
- 'terms' => ['salesManId' => parent::$salesManIds]
- ];
- }
- //基本资料ids
- if (isset($selectParams['ids'])) {
- if (!empty($selectParams['ids'])) {
- $dsl['query']['bool']['must'][] = [
- 'terms' => [
- 'id' => array_values($selectParams['ids'])
- ]
- ];
- }
- }
- //导出
- $dsl = array_merge($defaultDSL,$dsl);
- return $dsl;
- }
- /**
- * 搜索符合条件的GoodsBasic
- * @param array $selectParams
- * @return ResultWrapper
- */
- public function searchGoodsBasics($selectParams = [])
- {
- $dsl = $this->setSearchWhere($selectParams);
- $result = $this->objDGoodsBasic->getSearchQueryDsl($dsl);
- if (isset($result['status']) && $result['status'] == 400) {
- file_put_contents('/www/wwwroot/logs/apiqnys.liuniukj.com/elasticsearch.log', date('Y-m-d H:i:s') . '获取基本资料失败,错误原因' . var_export($result, true) . PHP_EOL, FILE_APPEND);
- if ($result['error']['reason'] == 'all shards failed') {
- return ResultWrapper::success([]);
- }
- return ResultWrapper::fail('基本资料id获取失败' . $result['error']['reason'], ErrorCode::$apiNotResult);
- }
- if (!isset($result['hits']) || $result['hits']['total'] == 0) {
- return ResultWrapper::success([]);
- }
- $total = $result['hits']['total'];
- $dbResult = $result['hits']['hits'];
- $goodsBasicIds = [];
- foreach ($dbResult as $key => &$value) {
- $goodsBasicIds[] = $value['_source'];
- }
- return ResultWrapper::success($goodsBasicIds);
- }
- public function buildSqlBySelectParams(array $selectParams): array
- {
- $countField = ' COUNT(id) as total ';
- $fields = ' * ';
- $tableName = $this->objDGoodsBasic->get_Table();
- $where = '';
- if (isset($selectParams['enableStatus']) && !empty($selectParams['enableStatus'])){
- $where .= ' AND `enableStatus` = '.$selectParams['enableStatus'];
- }
- if (isset($selectParams['brandId']) && !empty($selectParams['brandId'])){
- $where .= ' AND `brandId` = '.$selectParams['brandId'];
- }
- if (isset($selectParams['supplierId']) && !empty($selectParams['supplierId'])){
- $where .= ' AND `supplierId` = '.$selectParams['supplierId'];
- }
- if (isset($selectParams['level']) && !empty($selectParams['level'])){
- $where .= ' AND `level` = '.$selectParams['level'];
- }
- if (isset($selectParams['categoryId']) && !empty($selectParams['categoryId'])){
- $where .= ' AND `categoryId` = '.$selectParams['categoryId'].' or find_in_set('.$selectParams['categoryId'].',assistCategoryId) ';
- }
- if (isset($selectParams['merchantId']) && !empty($selectParams['merchantId'])){
- $where .= ' AND `merchantId` = '.$selectParams['merchantId'];
- }
- //商品关键字
- if (isset($selectParams['keyword']) && !empty($selectParams['keyword'])){
- $where .= ' and title like "%'.$selectParams['keyword'].'%"';
- }
- //分类路径
- if (isset($selectParams['categoryPath']) && !empty($selectParams['categoryPath'])){
- if (is_string($selectParams['categoryPath']) || is_int($selectParams['categoryPath'])){
- $selectParams['categoryPath'] = explode(',',$selectParams['categoryPath']);
- }
- $endPathId = array_pop($selectParams['categoryPath']);
- if (!empty($endPathId)){
- $where .= ' and find_in_set('.$endPathId.',categoryPath) or find_in_set('.$endPathId.',assistCategoryId) ';
- }
- }
- //排序
- if (isset($selectParams['orderBy']) && !empty($selectParams['orderBy'])){
- $where .= ' order by '.$selectParams['orderBy'];
- }else{
- $where .= ' order by createTime DESC ';
- }
- $countSql = 'SELECT '.$countField.' FROM '.$tableName.' WHERE `deleteStatus` ='.StatusCode::$standard.$where;
- //分页
- if (isset($selectParams['offset']) && isset($selectParams['limit']) && !empty($selectParams['limit'])){
- $where .= ' limit '.$selectParams['offset'].','.$selectParams['limit'];
- }
- $sql = 'SELECT '.$fields.' FROM '.$tableName.' WHERE `deleteStatus` ='.StatusCode::$standard.$where;
- return [
- 'sql' => $sql,
- 'countSql' => $countSql
- ];
- }
- /**
- * 搜索
- * @param array $selectParams 过滤条件
- * @param boolean $is_export
- * @return ResultWrapper
- * @throws \Exception
- */
- public function search($selectParams,bool $is_export = false)
- {
- $buildSql =self::buildSqlBySelectParams($selectParams);
- $lists = $this->objDGoodsBasic->query($buildSql['sql']);
- if ($lists === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- $count = $this->objDGoodsBasic->query($buildSql['countSql']);
- if ($count === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- if (empty($lists)){
- return ResultWrapper::success([
- 'data' => [],
- 'total' => 0
- ]);
- }
- if ($is_export === true){
- self::exportGoodsBasic($lists,'db');
- die;
- }
- $format = self::formatJson($lists);
- $format = self::formatCategory($format);
- foreach ($format as &$formatData) {
- $formatData['unitData'] = [];
- $formatData['specGroup'] = [];
- $formatData['specMultiple'] = [];
- $formatData = self::formatSingleSkuMapping($formatData);
- $formatData = self::formatMultipleSkuMapping($formatData);
- }
- $return = [
- 'data' => $format,
- 'total' => isset($count[0]['total']) ? $count[0]['total'] : 0,
- ];
- return ResultWrapper::success($return);
- /*$dsl = $this->setSearchWhere($selectParams);
- $result = $this->objDGoodsBasic->getSearchQueryDsl($dsl);
- if (isset($result['status']) && $result['status'] == 400) {
- return ResultWrapper::fail('获取数据失败' . $result['error']['reason'], ErrorCode::$apiNotResult);
- }
- if (!isset($result['hits']) || $result['hits']['total'] == 0) {
- return ResultWrapper::success([
- 'data' => [],
- 'total' => 0
- ]);
- }
- $total = $result['hits']['total'];
- $dbResult = $result['hits']['hits'];
- $list = [];
- foreach ($dbResult as $key => &$value) {
- $data = [];
- $data = $value['_source'];
- //$data['id'] = $value['_id'];
- $list[] = $data;
- }
- if ($is_export === true) self::exportGoodsBasic($list,'es');
- foreach ($list as &$v) {
- $v['masterUnit'] = isset($v['skuData']['masterUnit']) ? $v['skuData']['masterUnit'] : [];
- $v['branchUnit'] = isset($v['skuData']['branchUnit']) ? $v['skuData']['branchUnit'] : [];
- $v['code'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $v['id'], StatusCode::$code['goodsBasic']['length']);
- $v['description'] = empty($v['description']) ? '' : htmlspecialchars_decode($v['description'], ENT_QUOTES);
- }
- $return = [
- 'data' => self::formatCategory($list),
- 'total' => ($total) ? intval($total) : 0,
- ];
- return ResultWrapper::success($return);*/
- }
- /**
- * 根据商品ids数组获取商品信息
- * @param $whereIds
- * @return array|ResultWrapper
- */
- public function getGoodsDataByGoodsIds($whereIds)
- {
- $GoodsBasic = $this->objDGoodsBasic->select($whereIds, 'title,id,images,expireTime,specType');
- if ($GoodsBasic === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- if (empty($GoodsBasic)) {
- return ResultWrapper::fail('商品基础资料为空', ErrorCode::$paramError);
- }
- $returnData = array_column($GoodsBasic, null, 'id');
- return ResultWrapper::success($returnData);
- }
- /**
- * 根据ids数组获取分类信息
- * @param $ids
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getCategoryByIds($ids)
- {
- if (empty($ids)) return ResultWrapper::success($ids);
- $objDGoodsCategory = new DGoodsCategory('default');
- $objDGoodsCategory->setTable($objDGoodsCategory->get_Table() . '_' . $this->onlineEnterpriseId);
- $sql = "select b.id,c.id categoryId,c.title from " . $this->objDGoodsBasic->get_Table() . " b LEFT JOIN " . $objDGoodsCategory->get_Table() . " c on b.categoryId = c.id where b.id in(" . implode(',', $ids) . ")";
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $categoryNames = [];
- foreach ($dbResult as $value) {
- $categoryNames[$value['id']] = $value;
- }
- return ResultWrapper::success($categoryNames);
- }
- /**
- * 根据ids数组获取品牌
- * @param $ids
- * @return ResultWrapper
- * @throws \Exception
- */
- public function getBrandByIds($ids)
- {
- if (empty($ids)) return ResultWrapper::success($ids);
- $objDGoodsBrand = new DGoodsBrand('default');
- $objDGoodsBrand->setTable($objDGoodsBrand->get_Table() . '_' . $this->onlineEnterpriseId);
- $sql = "select b.id,c.id brandId,c.title from " . $this->objDGoodsBasic->get_Table() . " b LEFT JOIN " . $objDGoodsBrand->get_Table() . " c on b.brandId = c.id where b.id in(" . implode(',', $ids) . ")";
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- $brandNames = [];
- foreach ($dbResult as $value) {
- $brandNames[$value['id']] = $value;
- }
- return ResultWrapper::success($brandNames);
- }
- /**
- * 更新基础商品分类
- * @param $params
- * @return ResultWrapper
- */
- public function updateCategory($params)
- {
- $dbResult = $this->objDGoodsBasic->select($params['id'], 'categoryPath');
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //todo(减原来分类下的商品数量)
- foreach ($dbResult as $value) {
- $allCategoryIds = explode(',', $value['categoryPath']);
- foreach ($allCategoryIds as $categoryId) {
- $this->objGoodsBasicCache->categoryKeyScoreDecr($categoryId);
- }
- }
- unset($allCategoryIds);
- //更新商品分类
- $dbResult = $this->objDGoodsBasic->update(['categoryId' => $params['categoryId'], 'categoryPath' => $params['categoryPath']], $params['id']);
- if ($dbResult == false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //todo(增加现在分类下的商品数量)
- $allCategoryIds = explode(',', $params['categoryPath']);
- foreach ($allCategoryIds as $categoryId) {
- $this->objGoodsBasicCache->categoryKeyScoreIncr($categoryId);
- }
- //修改ES中的数据
- /*
- foreach ($params['id'] as $id) {
- $_id = self::createEsDocumentId($id);
- $this->objDGoodsBasic->esupdateTypeFieldVaule(['categoryId' => $params['categoryId'], 'categoryPath' => $params['categoryPath']], $_id);
- }
- usleep(500000);//500ms */
- return ResultWrapper::success($dbResult);
- }
- /**
- * 批量设置不可销售店铺
- * @param $params
- * @return ResultWrapper
- */
- public function setNoSalesShop($params)
- {
- $dbResult = $this->objDGoodsBasic->update(['noSalesShop' => $params['noSalesShop']], $params['id']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //修改ES中的数据
- foreach ($params['id'] as $id) {
- $_id = self::createEsDocumentId($id);
- $this->objDGoodsBasic->esupdateTypeFieldVaule(['noSalesShop' => $params['noSalesShop']], $_id);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 批量设置品牌
- * @param $params
- * @return ResultWrapper
- */
- public function setBrand($params)
- {
- $dbResult = $this->objDGoodsBasic->update(['brandId' => $params['brandId']], $params['id']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- //修改ES中的数据
- foreach ($params['id'] as $id) {
- $_id = self::createEsDocumentId($id);
- $this->objDGoodsBasic->esupdateTypeFieldVaule(['brandId' => $params['brandId']], $_id);
- }
- return ResultWrapper::success($dbResult);
- }
- public function todayGoodsRanking($ranking = 1, $shopId = null)
- {
- if ($ranking == 1) {
- $result = $this->objOverviewCache->getRanking($this->onlineEnterpriseId, 'goodsRanking', $shopId);
- } else {
- $result = $this->objOverviewCache->getSalesMoneyRanking($this->onlineEnterpriseId, 'goodsRanking', $shopId);
- }
- if (empty($result)) {
- return [];
- }
- $total = array_sum($result);
- //拼接goodsBasicId
- $goodsBasicIds = [];
- $i = 1;
- foreach ($result as $goodsBasicId => $v) {
- $goodsBasicIds[] = $goodsBasicId;
- $i++;
- if ($i >= 8) {
- break;
- }
- }
- $goodsBasicResult = self::getGoodsBasicNames($goodsBasicIds);
- if (!$goodsBasicResult->isSuccess()){
- return [];
- }
- $goodsBasicResult = $goodsBasicResult->getData();
- $goodsBasicNameData = [];
- foreach ($goodsBasicResult as $goodsBasicData) {
- $goodsBasicNameData[$goodsBasicData['id']] = $goodsBasicData['title'];
- }
- //拼接返回数据
- $return = [];
- foreach ($result as $goodsBasicId => $v) {
- $i = 1;
- $rank = [];
- $rank['id'] = $i;
- $rank['goodsName'] = isset($goodsBasicNameData[$goodsBasicId]) ? $goodsBasicNameData[$goodsBasicId] : '';
- $rank['numberOrMoney'] = $v;
- $rank['percent'] = $v ? (float)bcmul(bcdiv($v, $total), 100, 2) : 0;
- $return[] = $rank;
- $i++;
- if ($i >= 8) {
- break;
- }
- }
- return $return;
- }
- public function getBasicInfoByIds($params, $field = "*")
- {
- $dbResult = $this->objDGoodsBasic->select($params, $field);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 查
- * @param $id
- * @return array|bool
- */
- public function getBasicById($id)
- {
- $dbResult = $this->objDGoodsBasic->get(['id' => $id]);
- if($dbResult === false){
- return [];
- }
- if(isset($dbResult['images']) && !empty($dbResult['images'])){
- $dbResult['images'] = json_decode($dbResult['images'], true);
- }else{
- $dbResult['images'] = [];
- }
- return $dbResult;
- }
- /**
- * 基础商品资料按照sku列表显示
- * @param array $selectParams
- * @return ResultWrapper
- */
- public function getAllGoodsBasicBySku(array $selectParams)
- {
- $fields ='b.isEq,s.id as skuId,s.unitName,s.unitId,s.specType,s.conversion,s.specData as specGroup,s.isMaster as isMaster,b.title,b.images as images,b.id,c.title as categoryName,c.id as categoryId';
- $sql = 'SELECT '.$fields.' FROM qianniao_sku_'.$this->onlineEnterpriseId.' as s
- LEFT JOIN qianniao_goods_basic_'.$this->onlineEnterpriseId.' as b
- ON b.id = s.goodsId
- LEFT JOIN qianniao_goods_category_'.$this->onlineEnterpriseId.' as c
- ON c.id = b.categoryId
- WHERE s.deleteStatus = '.StatusCode::$standard.'
- AND b.deleteStatus= '.StatusCode::$standard.'';
- //是否显示全部单位主/辅
- if (isset($selectParams['isRevealSku']) && $selectParams['isRevealSku'] == StatusCode::$standard){
- $sql .= ' AND s.isMaster = '.$selectParams['isRevealSku'];
- }
- if (isset($selectParams['materielId']) && !empty($selectParams['materielId'])){
- $sql .= ' AND s.goodsId = '.$selectParams['materielId'];
- }
- //筛选分类
- if (isset($selectParams['categoryId']) && !empty($selectParams['categoryId'])){
- $sql .= ' and find_in_set('.$selectParams['categoryId'].',b.categoryPath) ';
- }
- if (isset($selectParams['keyword']) && !empty($selectParams['keyword'])){
- $keyword = '%'.$selectParams['keyword'].'%';
- $sql .= ' AND (b.title LIKE "'.$keyword.'" OR b.condition LIKE "'.$keyword.'")';
- }
- if (isset($selectParams['shopId']) && !empty($selectParams['shopId'])){
- $sql .= ' AND b.storeId = '.$selectParams['shopId'];
- }
-
- if( isset($selectParams['merchantId']) ){
- $sql .= ' AND b.merchantId = '.$selectParams['merchantId'];
- } else {
- if (isset($selectParams['ifMerchant']) ){
- if($selectParams['ifMerchant'] == StatusCode::$delete){
- $sql .= ' AND b.merchantId = 0';
- } else {
- $sql .= ' AND b.merchantId <> 0';
- }
- }
- }
-
- $total = count((array)$this->objDGoodsBasic->query($sql));
- $sql .= ' ORDER BY b.createTime DESC LIMIT '.$selectParams['offset'].','.$selectParams['limit'].'';
- $dbResult = $this->objDGoodsBasic->query($sql);
- if ($dbResult === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- $return = [
- 'data' => self::format($dbResult),
- 'total' => $total,
- ];
- return ResultWrapper::success($return);
- }
- /**
- * @param $data
- * @return mixed
- */
- public static function format($data)
- {
- if (empty($data)){
- return $data;
- }
- foreach ($data as &$value){
- $value['specGroup'] = empty($value['specGroup']) ? [] : json_decode($value['specGroup'],true);
- $value['images'] = empty($value['images']) ? [] : json_decode($value['images'],true);
- $value['conversion'] = empty($value['conversion']) ? 0 : $value['conversion'];
- $value['code'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $value['id'], StatusCode::$code['goodsBasic']['length']);
- }
- return $data;
- }
- /**
- * @After
- */
- public function __destruct()
- {
- // TODO: Implement __destruct() method.
- self::cacheBasic();
- }
- /**
- * Doc: (des="根据基础商品资料id获取商品数据,及分类名称,品牌名称")
- * User: XMing
- * Date: 2020/7/9
- * Time: 7:01 下午
- * @param array $ids
- * @return ResultWrapper
- */
- public function getBasicGoodsFieldByIds(array $ids)
- {
- $mapping = [];
- $notFoundCacheIds = [];
- foreach ($ids as $id){
- $result = $this->objGoodsBasicRelevant->getNameByBasicId($id,true);
- if ($result===false || empty($result)){
- //缓存中没有
- $notFoundCacheIds[] = $id;
- continue;
- }
- $mapping[$id] = $result;
- }
- if (!empty($notFoundCacheIds)){
- //查询数据库
- $fields = "c.title as categoryName,b.*,d.title as brandName";
- $idStr = implode(',',$notFoundCacheIds);
- $sql = 'select '.$fields.' from qianniao_goods_basic_'.$this->onlineEnterpriseId.' as b
- left join qianniao_goods_category_'.$this->onlineEnterpriseId.' as c
- on b.categoryId = c.id
- left join qianniao_goods_brand_'.$this->onlineEnterpriseId.' as d
- on d.id = b.brandId
- where b.id in('.$idStr.')';
- $basicResult = $this->objDGoodsBasic->query($sql);
- if ($basicResult === false){
- Logger::logs(E_USER_ERROR,'查询出错',__CLASS__,__LINE__,$this->objDGoodsBasic->error());
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- foreach ($basicResult as $item){
- $this->objGoodsBasicRelevant->cacheBasicIdRelationName($item,$item['id']);
- $item['images'] = json_decode($item['images'], true);
- $mapping[$item['id']] = $item;
- }
- }
- return ResultWrapper::success($mapping);
- }
- /**
- * Doc: (des="根据供应商获取商品数量")
- * User: XMing
- * Date: 2020/12/26
- * Time: 4:54 下午
- * @param $supplierId
- * @return ResultWrapper
- */
- public function getTotalBySupplierId($supplierId): ResultWrapper
- {
- $selectParams = [
- 'supplierId' => $supplierId,
- 'deleteStatus' => StatusCode::$standard,
- ];
- $total = $this->objDGoodsBasic->count($selectParams);
- if ($total === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- return ResultWrapper::success($total);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2020/12/19
- * Time: 9:41 上午
- * @param $ids
- * @return ResultWrapper
- */
- public function getMapsByIds($ids): ResultWrapper
- {
- if (empty($ids)){
- return ResultWrapper::success([]);
- }
- $lists = $this->objDGoodsBasic->select(['id' => $ids],'id,images,title');
- if ($lists === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- $map = [];
- foreach ($lists as $list){
- $list['code'] = createCode(StatusCode::$code['goodsBasic']['prefix'], $list['id'], StatusCode::$code['goodsBasic']['length']);
- $list['images'] = !empty($list['images']) ? json_decode($list['images'],true) : [];
- $map[$list['id']] = $list;
- }
- return ResultWrapper::success($map);
- }
- /**
- * 根据商品名称关键字查询商品ids
- */
- public function getBasicGoodsIdsByGoodsTitleKeyword($keyword)
- {
- $sql = 'select id from qianniao_goods_basic_'.$this->onlineEnterpriseId.' where title like "%'.$keyword.'%" and deleteStatus = '.StatusCode::$standard;
- $dbResult = $this->objDGoodsBasic->query($sql);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDGoodsBasic->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success(array_pop($dbResult));
- }
- }
|