| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591 |
- <?php
- /**
- * 商铺管理模块
- * Created by PhpStorm.
- * User: wxj
- * Date: 2019/10/31
- * Time: 15:02
- */
- namespace JinDouYun\Model\Shop;
- use Exception;
- use JinDouYun\Controller\Common\Logger;
- use JinDouYun\Dao\Department\DStaff;
- use JinDouYun\Dao\GoodsManage\DGoodsBasic;
- use JinDouYun\Dao\UserCenter\DUserCenter;
- use JinDouYun\Model\Common\Location;
- use JinDouYun\Model\Customer\MMemberBalanceDetail;
- use JinDouYun\Model\System\MBasicSetup;
- use Mall\Framework\Core\ErrorCode;
- use Mall\Framework\Core\StatusCode;
- use Mall\Framework\Core\ResultWrapper;
- use JinDouYun\Dao\Shop\DShop;
- use JinDouYun\Dao\Shop\DEnterpriseBindShop;
- use Jindouyun\Cache\EnterpriseCache;
- use JinDouYun\Cache\RoleAclCache;
- use JinDouYun\Cache\ShopCache;
- use JinDouYun\Cache\SysAreaChinaCache;
- use JinDouYun\Cache\GoodsBasicRelevant;
- use JinDouYun\Model\ShopPartner\MShopPartner;
- use JinDouYun\Model\Stock\MWarehouse;
- use JinDouYun\Model\SysAreaChina\MSysAreaChina;
- use JinDouYun\Model\Customer\MCustomer;
- use JinDouYun\Model\Enterprise\MEnterprise;
- use JinDouYun\Model\Department\MStaff;
- use JinDouYun\Model\MBaseModel;
- use Monolog\Handler\IFTTTHandler;
- class MShop extends MBaseModel
- {
- private $objDShop;
- private $objDEnterpriseBindShop;
- private $objSysAreaChinaCache;
- private $cutTable = 250000;
- private $enterpriseId;
- private $userCenterId;
- private $objMShopPartner;
- private $objRoleAclCache;
- private $objShopCache;
- private $objMEnterprise;
- private $objMStaff;
- private $objMMemberBalanceDetail;
- public function __construct($enterpriseId, $userCenterId = '')
- {
- $this->enterpriseId = $enterpriseId;
- $this->userCenterId = $userCenterId;
- parent::__construct($this->enterpriseId, $this->userCenterId);
- $this->objMShopPartner = new MShopPartner($this->enterpriseId, $this->userCenterId);
- $this->objDShop = new DShop('default');
- $this->objDEnterpriseBindShop = new DEnterpriseBindShop('default');
- $this->objSysAreaChinaCache = new SysAreaChinaCache();
- $this->objRoleAclCache = new RoleAclCache();
- $this->objShopCache = new ShopCache();
- $this->objMEnterprise = new MEnterprise();
- $this->objMStaff = new MStaff($enterpriseId,$userCenterId);
- $this->objMMemberBalanceDetail = new MMemberBalanceDetail($enterpriseId,$userCenterId);
- $tableName = $this->objDShop->getTableName('qianniao_shop', $this->enterpriseId, $this->cutTable);
- $this->objDShop->setTable($tableName);
- $this->objDShop->setSearchIndex('shop_search')->setType('shop');
- }
- /**
- * Doc: (des="添加店铺")
- * User: XMing
- * Date: 2020/7/15
- * Time: 10:42 上午
- * @throws Exception
- * @param array $params
- * @return ResultWrapper
- */
- public function addShop(array $params)
- {
- $params['enterpriseId'] = $this->enterpriseId;
- $objMEnterprise = new MEnterprise();
- $modelResult = $objMEnterprise->createAppid($this->userCenterId);
- $params['token'] = $modelResult['token'];
- //获取仓库
- if(isset($params['warehouseId']) && !empty($params['warehouseId'])){
- if(is_array($params['warehouseId'])){
- $warehouseId = $params['warehouseId'];
- $params['warehouseId'] = implode(',',$params['warehouseId']);
- }else{
- $warehouseId = [$params['warehouseId']];
- }
- $objMWarehouse = new MWarehouse($this->enterpriseId);
- $modelResult = $objMWarehouse->selectWarehouse(['id' => $warehouseId, 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $warehouseResult = $modelResult->getData();
- unset($modelResult);
- if(empty($warehouseResult)){
- return ResultWrapper::fail('仓库查询失败', ErrorCode::$paramError);
- }
- $selectWarehouseId = array_column($warehouseResult, 'id');
- foreach($warehouseId as $value){
- if(!in_array($value,$selectWarehouseId)){
- return ResultWrapper::fail($value.'仓库查询失败', ErrorCode::$paramError);
- }
- }
- }
- $beginStatus = $this->objDShop->beginTransaction();
- $ShopId = $this->objDShop->insert($params);
- if ($ShopId === false) {
- $this->objDShop->rollBack();
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- //缓存token
- $this->objShopCache->setShopToken($this->enterpriseId, $ShopId, $params['token']);
- unset($params['token']);
- //缓存企业下的销售区域
- self::cacheSalesAreaInEnterprise();
- //增加企业商铺关联表
- $EnterpriseBindShopData = [
- 'enterpriseId' => $params['enterpriseId'],
- 'shopId' => $ShopId,
- 'updateTime' => time(),
- 'createTime' => time(),
- ];
- $dbResult = $this->objDEnterpriseBindShop->insert($EnterpriseBindShopData);
- if($dbResult === false){
- $this->objDShop->rollBack();
- return ResultWrapper::fail($this->objDEnterpriseBindShop->error(),ErrorCode::$dberror);
- }
- if($params['recommend_user_id']>0)
- {
- $objMBasicSetup = new MBasicSetup($this->enterpriseId);
- var_dump($objMBasicSetup->getBasicField('yhtjmd')->getData());
- $memberBalanceDetailData = [
- 'customerId' => $params['customerId'],
- 'type' => 5,
- 'userCenterId' => $params['recommend_user_id'],
- 'money' => $objMBasicSetup->getBasicField('yhtjmd')->getData(),
- 'purpose' => '推荐门店获得',
- 'orderIds' =>'',
- 'remark' => '推荐门店获得'.$objMBasicSetup->getBasicField('yhtjmd')->getData(),
- 'financeType' => '推荐门店获得',
- 'accountId' => isset($params['accountId']) ? $params['accountId']: 0,
- 'accountName' => isset($params['accountName']) ? $params['accountName']: '',
- 'accountNumber' => isset($params['accountNumber']) ? $params['accountNumber']: '',
- 'explain' => isset($params['explain']) ? $params['explain']: '',
- ];
- $result = $this->objMMemberBalanceDetail->addMemberBalanceDetail($memberBalanceDetailData,$isbackstage=true);
- if($result) {
- $this->objDShop > update(['is_send' => 1], ['id' => $ShopId]);
- }
- }
- /*//自动创建仓库
- $wareHouseParam = [
- 'warehouseName' => $params['name'] . '仓库',
- 'shopId' => $ShopId,
- 'shopName' => $params['name'],
- 'contactMobile' => $params['mobile'],
- 'provinceCode' => $params['provinceCode'],
- 'cityCode' => $params['cityCode'],
- 'districtCode' => $params['districtCode'],
- 'contactAddress' => $params['address'],
- 'updateTime' => time(),
- 'deleteStatus' => StatusCode::$standard,
- 'enableStatus' => StatusCode::$standard,
- ];
- //添加仓库
- $objMWarehouse = new MWarehouse($this->enterpriseId);
- $warehouseResult = $objMWarehouse->addWarehouse($wareHouseParam);
- if(!$warehouseResult->isSuccess()){
- $this->objDShop->rollBack();
- return ResultWrapper::fail($warehouseResult->getData(),$warehouseResult->getErrorCode());
- }
- $warehouseId =(int) $warehouseResult->getData();
- $this->objDShop->update(['warehouseId' => $warehouseId], $ShopId);
- $objGoodsBasicRelevant = new GoodsBasicRelevant($this->enterpriseId);
- $cacheResult = $objGoodsBasicRelevant->cacheShopIdRelationName($ShopId,
- [
- 'name' => $params['name'],
- 'warehouseId' => $warehouseId,
- 'warehouseName' => $wareHouseParam['warehouseName'],
- 'costType' => $params['costType']
- ]);
- if (!$cacheResult->isSuccess()) {
- $this->objDShop->rollBack();
- return ResultWrapper::fail($cacheResult->getData(), $cacheResult->getErrorCode());
- }
- $this->objRoleAclCache->cacheShopIdAndWarehouseId($this->enterpriseId, $ShopId, $warehouseId);
- //修改商铺数据
- $update = [
- 'warehouseId' => $warehouseId,
- 'updateTime' => time(),
- ];
- $result = $this->objDShop->update($update, ['id' => $ShopId]);
- if($result === false){
- $this->objDShop->rollBack();
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }*/
- //更新ES
- $beginStatus && $this->objDShop->commit();
- // self::updateEsData($params, $ShopId, true);
- return ResultWrapper::success($ShopId);
- }
- private function createEsDocumentId($shopId)
- {
- return 'EnterpriseId_' . $this->enterpriseId . '_ShopId_' . $shopId;
- }
- public function getShopTable() {
- return $this->objDShop->get_Table();
- }
- public function updateEsData($params, $shopId, $insert = false)
- {
- $objMSysAreaChina = new MSysAreaChina();
- if (isset($params['provinceCode']) && isset($params['cityCode']) && isset($params['districtCode'])) {
- $areaName = $objMSysAreaChina->getNameByCode([
- $params['provinceCode'],
- $params['cityCode'],
- $params['districtCode']
- ]);
- $params['provinceName'] = isset($areaName[$params['provinceCode']]) ? $areaName[$params['provinceCode']] : '';
- $params['cityName'] = isset($areaName[$params['cityCode']]) ? $areaName[$params['cityCode']] : '';
- $params['districtName'] = isset($areaName[$params['districtCode']]) ? $areaName[$params['districtCode']] : '';
- }
- if (!empty($params['latitude']) && !empty($params['longitude'])) {
- $params['shoplocation'] = [
- 'lat' => $params['latitude'],
- 'lon' => $params['longitude']
- ];
- }
- unset($params['latitude']);
- unset($params['longitude']);
- unset($params['openTime']);
- if(isset($params['salesArea']) && !empty($params['salesArea'])){
- $params['salesArea'] = json_decode($params['salesArea'], true);
- $params['salesArea'] = implode(',', $params['salesArea']);
- }
- $params['id'] = $shopId;
- $params['enterpriseId'] = $this->enterpriseId;
- $_id = self::createEsDocumentId($shopId);
- $result = $this->objDShop->addUpSearchIndexDocument($params, $_id);
- //print_r($result);
- if (isset($result['_shards']) && isset($result['_shards']['successful']) && $result['_shards']['successful'] == 1) {
- //echo "es操作成功";die;
- }
- //echo "es操作失败";
- }
- /**
- * 获取指定商铺信息
- * @param $params
- * @return ResultWrapper
- * @throws Exception
- */
- public function getShopInfo($params)
- {
- $dbResult = $this->objDShop->get($params);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- } else {
- $dbResult = $this->format([$dbResult]);
- $dbResult = array_shift($dbResult);
- return ResultWrapper::success($dbResult);
- }
- }
- /**
- * 编辑商铺
- * @param int|array $params 修改商铺的数据
- * @return ResultWrapper
- * @throws Exception
- */
- public function editShop($params)
- {
- if (empty($params['id'])) {
- return ResultWrapper::fail('没有指定要修改的商铺id', ErrorCode::$paramError);
- }
- $shopInfo = $this->objDShop->get(['id' => $params['id']], 'id,warehouseId');
- if ($shopInfo === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$paramError);
- }
- $updateShopId = $params['id'];
- unset($params['id']);
- $shopPartnerId = isset($params['shopPartnerId']) ? $params['shopPartnerId'] : '';
- unset($params['shopPartnerId']);
- unset($params['partnerName']);
- //获取仓库
- if(isset($params['warehouseId']) && !empty($params['warehouseId'])){
- if(is_array($params['warehouseId'])){
- $warehouseId = $params['warehouseId'];
- $params['warehouseId'] = implode(',',$params['warehouseId']);
- }else{
- $warehouseId = [$params['warehouseId']];
- }
- $objMWarehouse = new MWarehouse($this->enterpriseId);
- $modelResult = $objMWarehouse->selectWarehouse(['id' => $warehouseId, 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $warehouseResult = $modelResult->getData();
- unset($modelResult);
- if(empty($warehouseResult)){
- return ResultWrapper::fail('仓库查询失败', ErrorCode::$paramError);
- }
- $selectWarehouseId = array_column($warehouseResult, 'id');
- foreach($warehouseId as $value){
- if(!in_array($value,$selectWarehouseId)){
- return ResultWrapper::fail($value.'仓库查询失败', ErrorCode::$paramError);
- }
- }
- }
- $dbResult = $this->objDShop->update($params, $updateShopId);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- if ($shopPartnerId) {
- self::changeManagerForShop(['id'=>$updateShopId,'shopPartnerId'=>$shopPartnerId]);
- }
- //查出企业的店铺下所有的销售区域,缓存到redis
- self::cacheSalesAreaInEnterprise();
- $objGoodsBasicRelevant = new GoodsBasicRelevant($this->enterpriseId);
- $objGoodsBasicRelevant->cacheShopIdRelationName($updateShopId,
- [
- 'name' => $params['name'],
- 'warehouseId' => isset($params['warehouseId']) ? $params['warehouseId'] :$shopInfo['warehouseId'],
- 'warehouseName' => isset($params['warehouseName']) ? $params['warehouseName'] : $params['name'] . '仓库',
- 'costType' => $params['costType']
- ]);
- //更新ES
- //self::updateEsData($params, $updateShopId);
- return ResultWrapper::success($dbResult);
- }
- /**
- * 更换负责人
- * @param int|array $params 修改商铺的数据
- *
- * @return ResultWrapper
- * @throws Exception
- */
- public function changeManagerForShop($params)
- {
- if (empty($params['id'])) {
- return ResultWrapper::fail('没有指定要修改的商铺id', ErrorCode::$paramError);
- }
- $shopPartnerId = isset($params['shopPartnerId']) ? $params['shopPartnerId'] : '';
- //修改原来负责人的商铺数据
- $shopPartnerInfo = $this->objMShopPartner->getShopPartnerInfo($shopPartnerId);
- if($shopPartnerInfo->isSuccess() == false) {
- return ResultWrapper::fail($shopPartnerInfo->getData(), $shopPartnerInfo->getErrorCode());
- }
- $shopPartnerInfo = $shopPartnerInfo->getData();
- $shopIds = explode(',', $shopPartnerInfo['shopId']);
- foreach($shopIds as $k => $shopId) {
- if($shopId == $params['id']) {
- unset($shopIds[$k]);
- }
- }
- $result = $this->objMShopPartner->updateShopIds(trim(implode(',',$shopIds),','),$shopPartnerId);
- if($result->isSuccess() == false) {
- return ResultWrapper::fail($result->getData(), $result->getErrorCode());
- }
- //更改商铺的合伙人
- $result = self::updateShopPartnerId(['id'=>$params['id'], 'shopPartnerId'=>$shopPartnerId]);
- if($result->isSuccess() == false) {
- return ResultWrapper::fail($result->getData(), $result->getErrorCode());
- }
- //更改合伙人的商铺
- //查出该合伙人管理的所有商铺
- $shopIds = $this->objMShopPartner->getShopIdsByPartnerId($shopPartnerId);
- $dbResult = $this->objMShopPartner->updateShopIds(trim(implode(',', array_filter(array_merge($shopIds, [$params['id']]))),","), $shopPartnerId);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- } else {
- return ResultWrapper::success($dbResult);
- }
- }
- /**
- * 删除商铺
- * @param array $params
- * @return ResultWrapper
- */
- public function delShop($params)
- {
- if (empty($params)) {
- return ResultWrapper::fail('参数错误', ErrorCode::$paramError);
- }
- $dbResult = $this->objDShop->update(['deleteStatus' => StatusCode::$delete], $params);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- } else {
- //在ES删除
- //$_id = self::createEsDocumentId($params['id']);
- //$this->objDShop->esdeleteTypeDocument($_id);
- return ResultWrapper::success($dbResult);
- }
- }
- /**
- * 商铺启用和禁用
- * @param array $params
- * @return ResultWrapper
- */
- public function updateShopStatus($params)
- {
- $dbResult = $this->objDShop->update(['enableStatus' => $params['enableStatus']], $params['id']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- } else {
- /*$_id = self::createEsDocumentId($params['id']);
- $result = $this->objDShop->esupdateTypeFieldVaule(['enableStatus' => $params['enableStatus']], $_id);*/
- return ResultWrapper::success($dbResult);
- }
- }
- public function updateShopPartnerId($params)
- {
- $dbResult = $this->objDShop->update(['shopPartnerId' => $params['shopPartnerId']], $params['id']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- } else {
- return ResultWrapper::success($dbResult);
- }
- }
- /*
- * 处理搜索条件
- */
- public function search($params)
- {
- $limit = $params['limit'];
- unset($params['limit']);
- $offset = $params['offset'];
- unset($params['offset']);
- $condition = 'deleteStatus = ' . StatusCode::$standard.' AND enterpriseId='.$this->enterpriseId;
- if ($params['name']) {
- $condition .= " AND name like '%" . $params['name'] . "%'";
- }
- if ($params['shopPartnerId']) {
- $condition .= " AND shopPartnerId = " . $params['shopPartnerId'];
- }
- if ($params['shopType']) {
- $condition .= " AND shopType = " . $params['shopType'];
- }
- if ($params['enableStatus']) {
- $condition .= " AND enableStatus = " . $params['enableStatus'];
- }
- $dbResult = $this->objDShop->select($condition, '*', 'createTime desc', $limit, $offset);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $dbResult = self::format($dbResult);
- $return = [
- 'data' => $dbResult,
- 'total' => $this->getShopTotal($condition)
- ];
- return ResultWrapper::success($return);
- }
- /**
- * 获取所有商铺数据
- * @param array $selectParams 过滤条件
- * @param string $fields 查询的字段
- * @return ResultWrapper
- * @throws Exception
- */
- public function getAllShop($selectParams, $fields = '*')
- {
- $fields = ' * ';
- $countField = ' COUNT(id) as total ';
- $where = '';
- if (isset($selectParams['enableStatus']) && !empty($selectParams['enableStatus'])){
- $where .= ' AND enableStatus = '.$selectParams['enableStatus'];
- }
- if (isset($selectParams['action']) && $selectParams['action'] == 1){
- //基础资料详情页面用来过滤禁止销售店铺
- if (isset($selectParamsp['materielId']) && !empty($selectParams['materielId'])){
- $objDGoodsBasic = new DGoodsBasic();
- $objDGoodsBasic->setTable('qianniao_goods_basic_'.$this->enterpriseId);
- $row = $objDGoodsBasic->get($selectParams['materielId']);
- if ($row === false){
- return ResultWrapper::fail($objDGoodsBasic->error(),ErrorCode::$dberror);
- }
- $noSaleShopIds = '';
- if (isset($row['noSalesShop']) && !empty($row['noSalesShop'])){
- $noSaleShopIds = trim(explode($row['noSalesShop'],','),',');
- }
- if (!empty($noSaleShopIds)){
- $where .= ' AND id NOT IN('.$noSaleShopIds.')';
- }
- }
- }
- $sql = 'SELECT '.$fields.' FROM qianniao_shop_1 WHERE enterpriseId = '.$this->enterpriseId.' AND deleteStatus = '.StatusCode::$standard.' AND merchantId IS NULL '.$where;
- $countSql = 'SELECT '.$countField.' FROM qianniao_shop_1 WHERE enterpriseId = '.$this->enterpriseId.' AND deleteStatus = '.StatusCode::$standard.' AND merchantId IS NULL '.$where;
- if (isset($selectParams['limit']) && !empty($selectParams['limit'])){
- $sql .= ' LIMIT '.$selectParams['offset'].','.$selectParams['limit'];
- }
- $dbResult = $this->objDShop->query($sql);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $dbResult = self::format($dbResult);
- $count = $this->objDShop->query($countSql);
- if ($count === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $return = [
- 'data' => $dbResult,
- 'total' => isset($count[0]['total']) ? $count[0]['total'] : 0,
- ];
- return ResultWrapper::success($return);
- }
- /**
- * 获取商品总数
- * @param $where mixed
- * @return int
- */
- public function getShopTotal($where)
- {
- $total = $this->objDShop->count($where);
- return ($total) ? intval($total) : 0;
- }
- /**
- * 处理开业时间 和省市区
- * @param $data
- * @return mixed
- */
- public function format($data)
- {
- $objMSysAreaChina = new MSysAreaChina();
- $managerIds = [];
- $warehouseIds = [];
- foreach ($data as $key => $shop) {
- $data[$key]['openTime'] = isset($shop['openTime']) ? (array)json_decode($shop['openTime'], true) : '';
- $data[$key]['shopCode'] = createCode(StatusCode::$code['shop']['prefix'], $shop['id'], StatusCode::$code['shop']['length']);
- if (isset($shop['provinceCode']) && isset($shop['cityCode']) && isset($shop['districtCode'])) {
- $areaName = $objMSysAreaChina->getNameByCode([
- $shop['provinceCode'],
- $shop['cityCode'],
- $shop['districtCode']
- ]);
- $data[$key]['area']['provinceName'] = isset($areaName[$shop['provinceCode']]) ? $areaName[$shop['provinceCode']] : '';
- $data[$key]['area']['cityName'] = isset($areaName[$shop['cityCode']]) ? $areaName[$shop['cityCode']] : '';
- $data[$key]['area']['districtName'] = isset($areaName[$shop['districtCode']]) ? $areaName[$shop['districtCode']] : '';
- $data[$key]['area']['address'] = $shop['address'];
- }
- if(!empty($shop['managerId'])) {
- $managerIds[] = $shop['managerId'];
- }
- if(!empty($shop['warehouseId'])) {
- if (strpos($shop['warehouseId'], ',')) {
- $warehouseIds = array_merge($warehouseIds, explode(',', $shop['warehouseId']));
- } else {
- $warehouseIds[] = $shop['warehouseId'];
- }
- }
- if (!isset($shop['meters'])){
- $data[$key]['meters'] = null;
- }
- }
- $staff = [];
- if (!empty($managerIds)) {
- //查出商铺的所有店长
- $where = [
- 'shopId' => 0,
- 'userCenterId' => $managerIds,
- 'deleteStatus' => StatusCode::$standard
- ];
- $modelResult = $this->objMStaff->getAllStaffData($where);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $staffResult = $modelResult->getData();
- unset($modelResult);
- foreach($staffResult as $value){
- $staff[$value['userCenterId']] = $value;
- }
- }
- $warehouseData = [];
- if (isset($warehouseIds) && $warehouseIds) {
- //查出仓库信息
- $objMWarehouse = new MWarehouse($this->enterpriseId);
- $warehouseResult = $objMWarehouse->getNameByIds($warehouseIds);
- if ($warehouseResult->isSuccess()) {
- $warehouseData = $warehouseResult->getData();
- }
- }
- foreach ($data as &$shop) {
- $shop['warehouseData'] = [];
- $shop['managerName'] = isset($staff[$shop['managerId']]) ? $staff[$shop['managerId']]['staffName'] : '';//店长名称
- $shop['salesArea'] = !empty($shop['salesArea']) ? json_decode($shop['salesArea'], true) : [];
- /*if (in_array('100000-0-0', $shop['salesArea'])) {
- $pos = array_search('100000-0-0', $shop['salesArea']);
- unset($shop['salesArea'][$pos]);
- $shop['isAllCountry'] = 1;
- }else {
- $shop['isAllCountry'] = 2;
- }*/
- if (!empty($shop['warehouseId'])) {
- if(strpos($shop['warehouseId'],',')){
- $wid = explode(',', $shop['warehouseId']);
- }else{
- $wid = [$shop['warehouseId']];
- }
- foreach($wid as $v){
- if(isset($warehouseData[$v])){
- $shop['warehouseData'][$v] = [
- 'warehouseId' => $v,
- 'warehouseCode' => createCode(StatusCode::$code['warehouse']['prefix'], $v, StatusCode::$code['warehouse']['length']),
- 'warehouseName' => $warehouseData[$v]['warehouseName']
- ];
- }
- }
- }
- }
- //$data['warehouseData'] = array_values($data['warehouseData']);
- return $data;
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2021/3/4
- * Time: 12:10 下午
- * @param array $shopIds
- * @param string $field
- * @return ResultWrapper
- */
- public function getShopByIds(array $shopIds,string $field = "*"): ResultWrapper
- {
- if (empty($shopIds)){
- return ResultWrapper::success([]);
- }
- $dbResult = $this->objDShop->select(array_values($shopIds), $field);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(),ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 获取指定商铺信息
- * @param $shopIds
- * @param string $field
- * @return array
- * @deprecated
- */
- public function getShopName($shopIds, $field = "*")
- {
- $return = [];
- if (!$shopIds) {
- return $return;
- }
- $dbResult = $this->objDShop->select(array_values($shopIds), $field);
- if ($dbResult === false) {
- return $return;
- }
- foreach ($dbResult as $shop) {
- $return[$shop['id']] = $shop;
- }
- return $return;
- }
- /**
- * 单个商铺Id查询商铺名称
- * @param $shopId
- * @return string
- */
- public function getShopNameById($shopId)
- {
- $return = '';
- if (empty($shopId)) {
- return $return;
- }
- $dbResult = $this->objDShop->get($shopId, 'name');
- if ($dbResult === false || empty($dbResult)) {
- return $return;
- }
- return isset($dbResult['name']) ? $dbResult['name'] : $return;
- }
- /**
- * 会员所在地区销售商品的店铺
- * @param $userCenterId
- * @param $areaCode
- * @return ResultWrapper
- * @throws Exception
- */
- public function getShopIdsByArea($userCenterId, $areaCode='')
- {
- $defaultDSL = [
- 'sort' => [
- 'createTime' => [
- 'order' => 'desc'
- ],
- ],
- ];
- $dsl = [];
- $dsl['query']['bool']['must'][] = [
- 'term' => ['enterpriseId' => $this->enterpriseId],
- ];
- $dsl['query']['bool']['must'][] = [
- 'term' => ['enableStatus' => StatusCode::$standard],
- ];
- if (!empty($areaCode)) {
- $dsl['query']['bool']['must'][] = [
- 'term' => [
- 'salesArea' => $areaCode
- ],
- ];
- } elseif ($userCenterId){
- //查出当前用户的省市区
- $objMCustomer = new MCustomer($this->enterpriseId, $this->userCenterId);
- $customerData = $objMCustomer->getCustomerInfoByUserCenterId($userCenterId);
- if ($customerData->isSuccess()) {
- $customerInfo = $customerData->getData();
- $provinceCode = isset($customerInfo['provinceCode']) ? $customerInfo['provinceCode'] : 0;
- $cityCode = isset($customerInfo['cityCode']) ? $customerInfo['cityCode'] : 0;
- $districtCode = isset($customerInfo['districtCode']) ? $customerInfo['districtCode'] : 0;
- //V($provinceCode.'-'.$cityCode.'-'.$districtCode);
- $dsl['query']['bool']['must'][] = [
- 'term' => [
- 'salesArea' => $provinceCode . '-' . $cityCode . '-' . $districtCode
- ],
- ];
- /*
- * 处理全国销售
- * $dsl['query']['bool']['should'][] = [
- 'term' => [
- 'salesArea' => '100000-0-0'
- ],
- ];
- $dsl['query']['bool']['minimum_should_match'] = 1;*/
- }
- }else {
- return ResultWrapper::success([]);
- }
- //V($dsl);
- $dsl = array_merge($defaultDSL, $dsl);
- $result = $this->objDShop->getSearchQueryDsl($dsl);
- if (isset($result['status']) && $result['status'] == 400) {
- file_put_contents('/www/wwwroot/logs/api.junhailan.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('获取商铺数据失败' . $result['error']['reason'], ErrorCode::$apiNotResult);
- }
- if (!isset($result['hits']) || $result['hits']['total'] == 0) {
- return ResultWrapper::success([]);
- }
- $dbResult = $result['hits']['hits'];
- $list = [];
- foreach ($dbResult as $key => &$value) {
- $data = [];
- $data = $value['_source'];
- //$data['id'] = $value['_id'];
- $list[] = $data['id'];
- }
- return ResultWrapper::success($list);
- }
- /**
- * 根据省市区获取商铺
- * @param $params
- * @return ResultWrapper
- * @throws Exception
- */
- public function getShopIdByArea($params)
- {
- $defaultDSL = [
- 'sort' => [
- 'createTime' => [
- 'order' => 'desc'
- ],
- ],
- ];
- $dsl = [];
- $dsl['query']['bool']['must'][] = [
- 'term' => ['enterpriseId' => $this->enterpriseId],
- ];
- $dsl['query']['bool']['must'][] = [
- 'term' => ['enableStatus' => StatusCode::$standard],
- ];
- $provinceCode = isset($params['provinceCode']) ? $params['provinceCode'] : 0;
- $cityCode = isset($params['cityCode']) ? $params['cityCode'] : 0;
- $districtCode = isset($params['districtCode']) ? $params['districtCode'] : 0;
- $dsl['query']['bool']['must'][] = [
- 'term' => [
- 'salesArea' => $provinceCode . '-' . $cityCode . '-' . $districtCode
- ]
- ];
- $dsl = array_merge($defaultDSL, $dsl);
- $result = $this->objDShop->getSearchQueryDsl($dsl);
- if (isset($result['status']) && $result['status'] == 400) {
- return '';
- /*if($result['error']['reason'] == 'all shards failed') {
- return ResultWrapper::success('');
- }
- return ResultWrapper::fail('获取商铺数据失败' . $result['error']['reason'], ErrorCode::$apiNotResult);*/
- }
- if (!isset($result['hits']) || $result['hits']['total'] == 0) {
- return '';
- }
- $dbResult = $result['hits']['hits'];
- $list = [];
- foreach ($dbResult as $key => &$value) {
- $data = [];
- $data = $value['_source'];
- $list[] = $data['id'];
- }
- return array_shift($list);
- }
- /**
- * 获取当前企业下的销售区域
- */
- public function getSalesAreaInEnterprise()
- {
- $salesArea = $this->objShopCache->getEnterpriseSalesArea($this->enterpriseId);
- return !empty($salesArea) ? array_values(json_decode($salesArea, true)) : [];
- }
- /**
- * sql查询企业下的所有商铺销售区域
- */
- public function cacheSalesAreaInEnterprise() {
- $selectParams['enterpriseId'] = $this->enterpriseId;
- $selectParams['deleteStatus'] = StatusCode::$standard;
- $dbResult = $this->objDShop->select($selectParams, 'salesArea');
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $allAreaByEnterprise = [];
- foreach ($dbResult as $area) {
- $salesArea = !empty($area['salesArea']) ? json_decode($area['salesArea'], true) : [];
- if($salesArea) {
- $allAreaByEnterprise = array_merge($allAreaByEnterprise, $salesArea);
- }
- }
- $this->objShopCache->cacheEnterpriseSalesArea($this->enterpriseId, $allAreaByEnterprise);
- }
- /**
- * 获取企业下商铺总数
- * @param $enterpriseId
- * @return ResultWrapper
- */
- public function getShopTotalByEnterpriseId($enterpriseId)
- {
- if(empty($enterpriseId)) return ResultWrapper::fail('参数为空', ErrorCode::$paramError);
- $cacheEnterpriseCache = new EnterpriseCache();
- $cacheResult = $cacheEnterpriseCache->delShopTotalByEnterpriseId($enterpriseId);
- unset($cacheResult);
- $cacheResult = $cacheEnterpriseCache->getShopTotalByEnterpriseId($enterpriseId);
- if($cacheResult){
- return ResultWrapper::success($cacheResult);
- }
- $dbResult = $this->objDShop->count(['enterpriseId' => $enterpriseId, 'deleteStatus' => StatusCode::$standard]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- if(empty($dbResult)){
- $returnData = 0;
- }else{
- $returnData = $dbResult;
- }
- unset($cacheResult);
- $cacheResult = $cacheEnterpriseCache->setShopTotalByEnterpriseId($enterpriseId, $returnData);
- return ResultWrapper::success($returnData);
- }
- /**
- * @param $enterpriseId
- * @return ResultWrapper
- * @throws Exception
- */
- public function checkAllowAddShop($enterpriseId)
- {
- $enterpriseResult = $this->objMEnterprise->getEnterpriseDataByEnterpriseId($enterpriseId);
- if (!$enterpriseResult->isSuccess()){
- return ResultWrapper::fail($enterpriseResult->getData(),$enterpriseResult->getErrorCode());
- }
- $enterprise = $enterpriseResult->getData();
- if ($enterprise['scope'] == StatusCode::$standard){
- //多店铺,不限制创建数量
- return ResultWrapper::success($enterprise['scope']);
- }
- //单店铺,查询已创建数量
- $shopResult = self::getShopTotalByEnterpriseId($enterpriseId);
- if (!$shopResult->isSuccess()){
- return ResultWrapper::fail($shopResult->getData(),$shopResult->getErrorCode());
- }
- $shopNum =(int) $shopResult->getData();
- if ($shopNum == 0){
- return ResultWrapper::success($enterprise['scope']);
- }
- return ResultWrapper::fail('您已经创建过店铺了',ErrorCode::$paramError);
- }
- /**
- * @param int $enterpriseId
- * @param string $fields
- * @return ResultWrapper
- */
- public function getScopeShopInfo(int $enterpriseId, string $fields)
- {
- $dbResult = $this->objDShop->get(['enterpriseId' => $enterpriseId,'deleteStatus'=>StatusCode::$standard],$fields);
- if ($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(),ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 根据shopIds获取商铺数据
- * @param $shopIds
- * @return ResultWrapper
- */
- public function getShopDataByShopIds($shopIds)
- {
- if(empty($shopIds)) return ResultWrapper::fail('shopIds参数错误', ErrorCode::$paramError);
- $dbResult = $this->objDShop->select(['id' => $shopIds]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- if(empty($dbResult)){
- return ResultWrapper::fail('商铺不存在', ErrorCode::$dberror);
- }
- $objGoodsBasicRelevant = new GoodsBasicRelevant($this->enterpriseId);
- $formatData = [];
- foreach($dbResult as $value){
- if(isset($value['warehouseId']) && !empty($value['warehouseId'])){
- $value['warehouseName'] = '';
- if(!isset($value['warehouseName']) || empty($value['warehouseName'])){
- $value['warehouseName'] = $objGoodsBasicRelevant->getNameByWarehouseId($value['warehouseId']);
- }
- }
- $formatData[$value['id']] = $value;
- }
- return ResultWrapper::success($formatData);
- }
- /**
- * 获取员工所在商铺列表
- * @param $params
- * @return ResultWrapper
- */
- public function getShopByStaff($params)
- {
- //1.判断当前登录人角色 区分是否返回所有商铺列表
- $modelResult = $this->objMEnterprise->getEnterpriseDataByEnterpriseId($this->enterpriseId);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $enterprise = $modelResult->getData();
- unset($modelResult);
- //如果是管理员返回所有商铺列表
- if($enterprise['userCenterId'] == $this->userCenterId){
- $modelResult = self::getAllShop($params);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- return ResultWrapper::success($modelResult->getData());
- }
- //如果不是管理员 则返回该用户绑定的商铺列表
- $sql = 'select * from qianniao_user_bind_enterprise where userCenterId = '.$this->userCenterId.' and enterpriseId = '.$this->enterpriseId;
- $dbResult = $this->objDShop->query($sql);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $shopIds = [];
- foreach($dbResult as $value){
- !empty($value['shopId']) && $shopIds[] = $value['shopId'];
- }
- unset($dbResult);
- $whereSql = ' WHERE deleteStatus = '.StatusCode::$standard.' and enterpriseId = '.$this->enterpriseId;
- if (!empty($shopIds)){
- $whereSql .= ' AND id in ('.implode(',',$shopIds).') ';
- }
- $sql = 'select * from qianniao_shop_1 '.$whereSql.' order by createTime ASC limit '.$params['offset'].','.$params['limit'];
- $dbResult = $this->objDShop->query($sql);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $data = $dbResult;
- unset($dbResult);
- $countSql = 'select count(*) as count from qianniao_shop_1 '.$whereSql;
- $dbResult = $this->objDShop->query($countSql);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $count = array_shift($dbResult)['count'];
- $return = [
- 'data' => self::format($data),
- 'total' => $count
- ];
- return ResultWrapper::success($return);
- }
- /**
- * 格式化商铺token
- * @return ResultWrapper
- */
- public function formatShopToken()
- {
- $dbResult = $this->objDShop->select();
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $objMEnterprise = new MEnterprise();
- foreach($dbResult as $value){
- $data = $objMEnterprise->createAppid($value['enterpriseId']);
- $this->objDShop->update(['token' => $data['token']], ['id' => $value['id']]);
- $this->objShopCache->setShopToken($value['enterpriseId'], $value['id'], $data['token']);
- }
- return ResultWrapper::success('操作成功');
- }
- /**
- * 设置总店
- * @param $params
- * @return ResultWrapper
- */
- public function setTopShop($params)
- {
- $dbResult = $this->objDShop->get(['id' => $params['id'], 'deleteStatus' => StatusCode::$standard]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- if(empty($dbResult)){
- return ResultWrapper::fail('商铺不存在', ErrorCode::$dberror);
- }
- if($dbResult['isMaster'] == StatusCode::$standard){
- return ResultWrapper::fail('已经是总店了', ErrorCode::$dberror);
- }
- $dbResult = $this->objDShop->update(['enterpriseId' => $this->enterpriseId, 'isMaster' => StatusCode::$delete, 'updateTime' => time()]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $dbResult = $this->objDShop->update(['isMaster' => StatusCode::$standard, 'updateTime' => time()], ['id' => $params['id']]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 设置店长
- * @param $params
- * @return ResultWrapper
- */
- public function setStaffType($params)
- {
- //1.判断员工是否存在
- $modelResult = $this->objMStaff->getStaffData(['id' => $params['id'], 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $staff = $modelResult->getData();
- $userCenterId = getArrayItem($staff,'userCenterId',0);
- unset($modelResult);
- if(empty($staff)){
- return ResultWrapper::fail('员工不存在', ErrorCode::$paramError);
- }
- //2.判断该店铺是否已经有店长
- $dbResult = $this->objDShop->get(['id' => $params['shopId'], 'deleteStatus' => StatusCode::$standard]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $shop = $dbResult;
- unset($dbResult);
- if(empty($shop)){
- return ResultWrapper::fail('商铺不存在', ErrorCode::$paramError);
- }
- if(!empty($shop['managerId'])){
- return ResultWrapper::fail('该店铺已有店长', ErrorCode::$paramError);
- }
- //3.如果该店铺下没有这个员工的话 把该员工添加到该商铺
- $modelResult = $this->objMStaff->getStaffData(['userCenterId' => $userCenterId, 'shopId' => $params['shopId'], 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $staffBindShop = $modelResult->getData();
- unset($modelResult);
- if(empty($staffBindShop)){
- $objDUserCenter = new DUserCenter();
- $dbResult = $objDUserCenter->get(['id' => $staff['userCenterId']]);
- if($dbResult === false){
- return ResultWrapper::fail($objDUserCenter->error(), ErrorCode::$dberror);
- }
- $staff['mobile'] = $dbResult['mobile'];
- $staff['shopId'] = $params['shopId'];
- unset($staff['id']);
- unset($dbResult);
- $modelResult = $this->objMStaff->addStaff($staff);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- }
- //4.添加店长
- $update = [
- 'managerId' => $userCenterId,
- 'updateTime' => time(),
- ];
- $dbResult = $this->objDShop->update($update, ['id' => $params['shopId']]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($userCenterId);
- }
- /**
- * 删除店长
- */
- public function delManager($params)
- {
- $where = [
- 'id' => $params['shopId'],
- 'enterpriseId' => $params['enterpriseId']
- ];
- $dbResult = $this->objDShop->get($where);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $shop = $dbResult;
- unset($dbResult);
- if(empty($shop)){
- return ResultWrapper::fail('商铺不存在', ErrorCode::$paramError);
- }
- if(empty($shop['managerId'])){
- return ResultWrapper::fail('店长不存在', ErrorCode::$paramError);
- }
- //1.删除员工 userCenter与店铺绑定关系
- $delWhere = [
- 'userCenterId' => $shop['managerId'],
- 'shopId' => $shop['id']
- ];
- $modelResult = $this->objMStaff->deleteStaff($delWhere);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $update = [
- 'managerId' => NULL,
- 'updateTime' => time(),
- ];
- $dbResult = $this->objDShop->update($update,$where);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * Doc: (des="组装距离计算sql")
- * User: XMing
- * Date: 2020/12/10
- * Time: 10:15 上午
- * @param string $lon1 用户当前经度
- * @param string $lat1 用户当前纬度
- * @param string $lon2 数据库经度的字段名
- * @param string $lat2 数据库纬度的字段名
- * @return string
- */
- public static function buildDistanceSql($lon1='',$lat1='',$lon2='longitude',$lat2='latitude'): string
- {
- $PI = PI;
- $sql = "ROUND(6378.138 * 2 * ASIN( SQRT(POW(SIN( ({$lat1} * $PI / 180 - {$lat2} * $PI / 180 ) / 2 ),2) + COS({$lat1} * $PI / 180) * COS({$lat2} * $PI / 180) * POW(SIN( ({$lon1} * $PI / 180 - {$lon2} * $PI / 180 ) / 2) ,2)) ) * 1000) / 1000 ";
- return $sql;
- }
- /**
- * Doc: (des="获取附近商家列表-按照距离排序-sql")
- * User: XMing
- * Date: 2020/12/10
- * Time: 10:23 上午
- * @param array $data
- * @param $lon1
- * @param $lat1
- * @return ResultWrapper
- */
- public function nearbyLists(array $data,$lon1,$lat1): ResultWrapper
- {
- //$lon1 = '108.978695';
- //$lat1 = '34.321583';
- $map = [];
- $noLocalMap = [];
- foreach ($data as $value){
- if (!empty($value['longitude']) && !empty($value['latitude'])){
- $map[] = $value;
- continue;
- }
- $noLocalMap[] = $value;
- }
- $objLocation = new Location();
- foreach ($map as &$value){
- $sub = $objLocation->get_distance_by_geo($lat1,$lon1,$value['latitude'],$value['longitude']);
- $value['sub'] = $sub;
- }
- unset($value);
- $subColl = array_column($map,'sub');
- array_multisort($subColl,SORT_ASC,$map);
- foreach ($map as &$value){
- $value['meters'] = Location::toMeters($value['sub']);
- }
- unset($value);
- foreach ($noLocalMap as &$value){
- $value['meters'] = null;
- }
- unset($value);
- $map = array_merge($map,$noLocalMap);
- return ResultWrapper::success($map);
- }
- /**
- * Doc: (des="根据企业id获取企业下总店")
- * User: XMing
- * Date: 2020/12/17
- * Time: 4:50 下午
- * @param int $enterpriseId
- * @return ResultWrapper
- */
- public function getCenterShopByEnterprise(int $enterpriseId): ResultWrapper
- {
- $shop = $this->objDShop->get(['enterpriseId' => $enterpriseId,'isMaster' => StatusCode::$standard],'id,name');
- if ($shop === false){
- return ResultWrapper::fail($this->objDShop->error(),ErrorCode::$dberror);
- }
- return ResultWrapper::success($shop);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2020/12/30
- * Time: 5:03 下午
- * @param $ids
- * @return ResultWrapper
- */
- public function getShopIdByMerchantIds($ids): ResultWrapper
- {
- if (empty($ids)){
- return ResultWrapper::success([]);
- }
- $lists = $this->objDShop->select(['merchantId'=>$ids],'*');
- if ($lists === false){
- return ResultWrapper::fail($this->objDShop->error(),ErrorCode::$dberror);
- }
- $map = [];
- foreach ($lists as $list) {
- $map[$list['merchantId']] = $list;
- }
- return ResultWrapper::success($map);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2021/1/22
- * Time: 6:31 下午
- * @param int $id
- * @return ResultWrapper
- */
- public function getShopById(int $id): ResultWrapper
- {
- $result = $this->objDShop->get($id);
- if ($result === false){
- return ResultWrapper::fail($this->objDShop->error(),ErrorCode::$dberror);
- }
- return ResultWrapper::success($result);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2021/1/28
- * Time: 3:58 下午
- * @param array $selectParams
- * @return ResultWrapper
- * @throws Exception
- */
- public function getAll(array $selectParams): ResultWrapper
- {
- //获取用户的客户类型
- $selectParams['modelType'] = StatusCode::$modelType['B2C'];
- if (!empty($this->userCenterId)){
- $objMCustomer = new MCustomer($this->enterpriseId,$this->userCenterId);
- $customerResult = $objMCustomer->getCustomerInfoByUserCenterId($this->userCenterId);
- if (!$customerResult->isSuccess()){
- return ResultWrapper::fail($customerResult->getData(),$customerResult->getErrorCode());
- }
- $customer = $customerResult->getData();
- $modelType = $customer['modelType'];
- if (empty($modelType)){
- $modelType = StatusCode::$modelType['B2C'];
- }
- $selectParams['modelType'] = $modelType;
- }
- $buildSql = self::buildSqlByParams($selectParams);
- $dbResult = $this->objDShop->query($buildSql['sql']);
- if ($dbResult === false) {
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- //按照距离进行排序
- if ( isset($selectParams['longitude']) && !empty($selectParams['longitude']) &&
- isset($selectParams['latitude']) && !empty($selectParams['latitude']) ){
- $nearResult = self::nearbyLists($dbResult,$selectParams['longitude'],$selectParams['latitude']);
- if (!$nearResult->isSuccess()){
- return ResultWrapper::fail($nearResult->getData(),$nearResult->getErrorCode());
- }
- $dbResult = $nearResult->getData();
- }
- $dbResult = self::format($dbResult);
- $count = $this->objDShop->query($buildSql['countSql']);
- $return = [
- 'data' => $dbResult,
- 'total' => isset($count[0]['total']) ? $count[0]['total'] : 0
- ];
- return ResultWrapper::success($return);
- }
- /**
- * Doc: (des="")
- * User: XMing
- * Date: 2021/1/30
- * Time: 12:18 下午
- * @param array $selectParams
- * @return array
- */
- public function buildSqlByParams(array $selectParams): array
- {
- $tableName = 'qianniao_shop_1';
- $fields = ' * ';
- $countField = ' COUNT(id) as total ';
- $whereSql = '';
- if (isset($selectParams['modelType']) && !empty($selectParams['modelType'])){
- $modelType = explode(',',$selectParams['modelType']);
- $str = '';
- foreach ($modelType as $type){
- if (!empty($str)){
- $str .= ' OR ';
- }
- $str .= ' FIND_IN_SET('.$type.',`modelType`) ';
- }
- $whereSql .= ' AND ('.$str .')';
- }
- $countSql = 'SELECT '.$countField.' FROM '.$tableName.' WHERE enterpriseId = '.$this->enterpriseId.' and deleteStatus = '.StatusCode::$standard.' AND merchantId IS NULL and enableStatus = '.StatusCode::$standard.' AND extends IS NULL '.$whereSql;
- $whereSql .= ' ORDER BY createTime DESC ';
- if (isset($selectParams['limit']) && !empty($selectParams['limit'])){
- $whereSql .= ' LIMIT '.$selectParams['offset'].','.$selectParams['limit'];
- }
- $sql = 'SELECT '.$fields.' FROM '.$tableName.' WHERE enterpriseId = '.$this->enterpriseId.' and deleteStatus = '.StatusCode::$standard.' AND merchantId IS NULL and enableStatus = '.StatusCode::$standard.' AND extends IS NULL '.$whereSql;
- Logger::logs(E_USER_ERROR,'sql',__CLASS__,__LINE__,$sql);
- return [
- 'countSql' => $countSql,
- 'sql' => $sql
- ];
- }
- /**
- * 获取商铺绑定仓库
- */
- public function getShopBindWarehouse($shopId)
- {
- $dbResult = $this->objDShop->get(['id' => $shopId]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- $shop = $dbResult;
- if(empty($shop)){
- return ResultWrapper::fail('查询商铺失败', ErrorCode::$paramError);
- }
- $warehouseId = [];
- $warehouseData = [];
- if(!empty($shop['warehouseId'])){
- $warehouseIds = explode(',',$shop['warehouseId']);
- $objMWarehouse = new MWarehouse($this->enterpriseId);
- $modelResult = $objMWarehouse->selectWarehouse(['id' => $warehouseIds, 'deleteStatus' => StatusCode::$standard]);
- if(!$modelResult->isSuccess()){
- return ResultWrapper::fail($modelResult->getData(), $modelResult->getErrorCode());
- }
- $warehouse = $modelResult->getData();
- unset($modelResult);
- $warehouseId = [];
- $warehouseData = [];
- foreach($warehouse as $value){
- $warehouseId[] = $value['id'];
- $warehouseData[$value['id']] = $value;
- }
- }
- $return['shopId'] = $shopId;
- $return['warehouseId'] = $warehouseId;
- $return['warehouseData'] = $warehouseData;
- return ResultWrapper::success($return);
- }
- /**
- * 获取店铺绑定的仓库id
- */
- public function getWarehouseIdsByShopId($shopId)
- {
- $warehouseIds = [];
- $dbResult = $this->objDShop->get(['id' => $shopId]);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- if(empty($dbResult)){
- return ResultWrapper::success($warehouseIds);
- }
- if(!empty($dbResult['warehouseId'])){
- $warehouseIds = explode(',',$dbResult['warehouseId']);
- }
- return ResultWrapper::success($warehouseIds);
- }
- /**
- * 获取商铺信息
- */
- public function getShopData($where)
- {
- $dbResult = $this->objDShop->select($where);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 修改商铺
- * @param $update
- * @param $where
- * @return ResultWrapper
- */
- public function updateShopData($update, $where)
- {
- $dbResult = $this->objDShop->update($update, $where);
- if($dbResult === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return ResultWrapper::success($dbResult);
- }
- /**
- * 多个店铺Id查询店铺名称
- * @param $departmentIds
- * @return ResultWrapper
- */
- public function getShopNameByIds(array $ids)
- {
- //查询所有 id 店铺名称
- $where = [
- 'id' => array_values($ids),
- 'deleteStatus' => StatusCode::$standard,
- ];
- $fields = 'id,name';
- $shopData = $this->objDShop->select($where, $fields);
- if($shopData === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return $shopData;
- }
- // 根据实体企业id和token获取商铺id
- public function getShopid($enterpriseId,$token)
- {
- //查询所有 id 店铺名称
- $where = [
- 'enterpriseId' =>$enterpriseId,
- 'token' =>$token,
- ];
- $fields = 'id,name';
- $shopData = $this->objDShop->select($where, $fields);
- if($shopData === false){
- return ResultWrapper::fail($this->objDShop->error(), ErrorCode::$dberror);
- }
- return $shopData;
- }
- }
|