lqmac 3 months ago
parent da3786b169
commit 660ae7fe42
  1. 6
      app/api/controller/Goods.php
  2. 3
      app/api/model/Goods.php
  3. 57
      app/common/model/Goods.php
  4. 18
      app/common/service/Jd.php
  5. 2
      app/job/controller/goods/StoreGoodsOffline.php
  6. 2
      app/job/controller/goods/StoreGoodsOnline.php
  7. 14
      app/job/service/goods/GoodsDelete.php
  8. 12
      app/job/service/goods/GoodsOffline.php
  9. 22
      app/job/service/goods/GoodsOnline.php
  10. 83
      app/job/service/goods/GoodsStoreImport.php
  11. 23
      app/job/service/goods/StoreGoodsDelete.php
  12. 28
      app/job/service/goods/StoreGoodsOffline.php
  13. 33
      app/job/service/goods/StoreGoodsOnline.php
  14. 1
      app/store/controller/Controller.php
  15. 167
      app/store/controller/Goods.php
  16. 48
      app/store/controller/Store.php
  17. 4
      app/store/model/goods/Import.php
  18. 1
      config/allowapi.php
  19. 6
      config/database.php

@ -72,7 +72,7 @@ class Goods extends Controller
// wmc商品详情
$model = new GoodsModel;
$goodsInfo = $model->getDetails($goodsId, $verifyStatus);
if (!empty($goodsInfo['content'])) {
$goodsInfo['content'] = str_ireplace('onload="if(this.width>750){this.height=this.height*(750.0/this.width); this.width = 750;}', '', $goodsInfo['content']);
}
@ -111,7 +111,7 @@ class Goods extends Controller
$return = [];
foreach ($params['list'] as $value) {
$res = "无货";
$goods = GoodsModel::where('goods_id', $value['goods_id'])->find();
$goods = GoodsModel::withoutGlobalScope()->where('goods_id', $value['goods_id'])->find();
if (!$goods) {
return $this->renderError('商品不存在');
}
@ -487,7 +487,7 @@ class Goods extends Controller
],
];
$app = Factory::miniProgram($config);
$data = $app->short_link->getShortLink($page_url, "", false);
$data = $app->short_link->getShortLink($page_url, "", true);
$url = "";
if ($data['errcode'] == 0) {
$url = $data['link'];

@ -438,6 +438,9 @@ class Goods extends GoodsModel
// 关联查询(商品图片、sku列表)
//$with = ['images.file', 'skuList.image', 'video', 'videoCover'];
$info = $this->field('spec_type,goods_id')->find($goodsId);
if (!$info) {
throwError('很抱歉,商品信息不存在');
}
// 关联查询
if ($info->spec_type == GoodsSpecTypeEnum::SINGLE) {
$with = ['images.file', 'skuList1.image', 'video', 'videoCover'];

@ -27,6 +27,8 @@ use think\model\relation\HasOne;
use think\Paginator;
use app\store\model\GoodsImage as GoodsImageModel;
use app\store\model\UploadFile as UploadFileModel;
use app\common\model\Region;
/**
* 商品模型
* Class Goods
@ -177,7 +179,60 @@ class Goods extends BaseModel
{
return $this->hasMany('Comment');
}
/**
* 中文销售区域处理
* [dealGoodsSaleArea description]
* @param [type] $sale_areas [description]
* @return [type] [description]
*/
public static function dealGoodsSaleArea($sale_areas){
//批量导入销售区域处理
$region = [];
$region_text = [];
if ($sale_areas) {
$sale_areas = explode("、", $sale_areas);
$cityNames = [];
foreach ($sale_areas as $value) {
if (strpos($value, "-") === false) {
$province = Region::withoutGlobalScope()->where('name', $value)->where('level', 1)->find();
$citys = Region::withoutGlobalScope()->where('pid', $province['id'] ?? 0)->where('level', 2)->select()->toArray();
$citys = array_column($citys, "name");
} else {
list($province, $city) = explode("-", $value);
$citys = [$city];
}
$cityNames = array_merge($cityNames, $citys);
}
$regions = Region::withoutGlobalScope()->whereIn('name', $cityNames)->where('level', 2)->select()->toArray();
$regionsnew = [];
foreach ($regions as $key => $value) {
$regionsnew[$value['pid']][] = $value;
}
// echo "<pre>";
// print_r($regionsnew);
foreach ($regionsnew as $pid => $value) {
$privince = Region::withoutGlobalScope()->where('id', $pid)->find();
$region_text[$pid]['name'] = $privince['name'] ?? "";
$citys = [];
foreach ($value as $val) {
$region[] = $val['id'];
$citys[] = ['name' => $val['name']];
}
$region_text[$pid]['citys'] = $citys;
}
unset($pid);
foreach ($region_text as $pid => &$item) {
//如果传入的是整个省份
if (count($item['citys']) == Region::withoutGlobalScope()->whereIn('pid', $pid)->count()) {
$item['citys'] = [];
}
}
}
return [$region, $region_text];
}
/**
* 获取商品列表
* @param array $param 查询条件
@ -209,7 +264,7 @@ class Goods extends BaseModel
// 执行查询
$list = $query
->alias($this->name)
->field(['goods.goods_id', 'goods.goods_name', 'cmmdty_model', 'remark', 'cost_price_min', 'stock_total', 'is_check', 'goods_price_min','goods_no','goods_source','delivery_time','delivery_id','status','link','link_other','channel','is_use_jd_stock','video_id'])
->field(['goods.goods_id', 'goods.goods_name', 'cmmdty_model', 'remark', 'cost_price_min', 'stock_total', 'is_check', 'goods_price_min','goods_no','goods_source','delivery_time','delivery_id','status','link','link_other','channel','is_use_jd_stock','video_id','region_text'])
->where('is_delete', '=', 0)
->order($sort)
->paginate($listRows);

@ -9,6 +9,7 @@ namespace app\common\service;
* 京东服务
*/
class Jd extends BaseService {
/**
* 获取京东商品库存
* [getGoodsStock description]
@ -74,8 +75,21 @@ class Jd extends BaseService {
return [];
}
/**
* 获取京东短链接
* [getJdShortLink description]
* @param [type] $skuId [description]
* @return [type] [description]
*/
public function getJdShortLink($skuId){
//$url = "http://47.98.251.206:8811/api/goods/info/v2?sku=".$skuId."&areaId=";
$url = "http://8.130.98.31:8811/api/link?sku=".$skuId;
$res = httpRequest($url);
if ($res && $res['code'] == 0 && isset($res['data'])) {
return $res['data'];
}
return "";
}

@ -32,7 +32,7 @@ class StoreGoodsOffline extends BaseJob
public function handle(array $data): bool
{
$time = date('H:i:s');
echo "\n ---- GoodsOffline ---- {$time} ---- \n";
echo "\n ---- StoreGoodsOffline ---- {$time} ---- \n";
$service = new StoreGoodsOfflineService;
return $service->batch($data['list']);

@ -32,7 +32,7 @@ class StoreGoodsOnline extends BaseJob
public function handle(array $data): bool
{
$time = date('H:i:s');
echo "\n ---- GoodsOnline ---- {$time} ---- \n";
echo "\n ---- StoreGoodsOnline ---- {$time} ---- \n";
$service = new StoreGoodsOnlineService;
return $service->batch($data['list']);

@ -12,6 +12,9 @@ use cores\exception\BaseException;
use think\facade\Log;
use app\common\model\Channel;
use app\common\model\Region;
use think\facade\Db;
/**
* 服务类:商品批量导入
* Class Import
@ -40,9 +43,18 @@ class GoodsDelete extends BaseService
return true;
}
$goodsIds = array_column($goods_list->toArray(), "goods_id");
//删除零售商城端
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城的商品
//删除批发商城总后台的商品
$wholesalePlatformGoodsList = Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $goodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($wholesalePlatformGoodsList->isEmpty()) {
return true;
}
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城-商城端的商品
$wholesalePlatformGoodsIds = array_column($wholesalePlatformGoodsList->toArray(), "goods_id");
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $wholesalePlatformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
return true;
}

@ -12,6 +12,8 @@ use cores\exception\BaseException;
use think\facade\Log;
use app\common\model\Channel;
use app\common\model\Region;
use think\facade\Db;
/**
* 服务类:商品批量导入
* Class Import
@ -46,7 +48,15 @@ class GoodsOffline extends BaseService
//GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['status' => 20, 'is_jd_remove' => 1, 'update_time' => time()]);
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//下架批发商城的商品
//删除批发商城总后台的商品
$wholesalePlatformGoodsList = Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $goodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($wholesalePlatformGoodsList->isEmpty()) {
return true;
}
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城-商城端的商品
$wholesalePlatformGoodsIds = array_column($wholesalePlatformGoodsList->toArray(), "goods_id");
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $wholesalePlatformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
return true;
}

@ -12,6 +12,8 @@ use cores\exception\BaseException;
use think\facade\Log;
use app\common\model\Channel;
use app\common\model\Region;
use think\facade\Db;
/**
* 服务类:商品批量导入
* Class Import
@ -42,9 +44,25 @@ class GoodsOnline extends BaseService
return true;
}
$goodsIds = array_column($goods_list->toArray(), "goods_id");
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['status' => 10, 'is_jd_remove' => 0, 'update_time' => time(), 'is_delete' => 0]);
$up_data = [
'is_sale' => 1,
'is_pool' => 1,
'status' => 10,
'is_jd_remove' => 0,
'update_time' => time(),
'is_delete' => 0
];
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update($up_data);
//上架批发商城的商品
//上架批发商城总后台的商品
$wholesalePlatformGoodsList = Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $goodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($wholesalePlatformGoodsList->isEmpty()) {
return true;
}
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $goodsIds)->update($up_data);
//上架批发商城-商城端的商品
$wholesalePlatformGoodsIds = array_column($wholesalePlatformGoodsList->toArray(), "goods_id");
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $wholesalePlatformGoodsIds)->update($up_data);
return true;
}

@ -197,50 +197,51 @@ class GoodsStoreImport extends BaseService
public function createData(array $original, int $storeId, int $merchantId = 0): array
{
//批量导入销售区域处理
$region = [];
$region_text = [];
if ($original["L"]) {
$sale_areas = $original["L"] ? explode("、", $original["L"]) : [];
$cityNames = [];
foreach ($sale_areas as $value) {
if (strpos($value, "-") === false) {
$province = Region::withoutGlobalScope()->where('name', $value)->where('level', 1)->find();
$citys = Region::withoutGlobalScope()->where('pid', $province['id'] ?? 0)->where('level', 2)->select()->toArray();
$citys = array_column($citys, "name");
// $region = [];
// $region_text = [];
// if ($original["L"]) {
// $sale_areas = $original["L"] ? explode("、", $original["L"]) : [];
// $cityNames = [];
// foreach ($sale_areas as $value) {
// if (strpos($value, "-") === false) {
// $province = Region::withoutGlobalScope()->where('name', $value)->where('level', 1)->find();
// $citys = Region::withoutGlobalScope()->where('pid', $province['id'] ?? 0)->where('level', 2)->select()->toArray();
// $citys = array_column($citys, "name");
} else {
list($province, $city) = explode("-", $value);
$citys = [$city];
}
$cityNames = array_merge($cityNames, $citys);
}
$regions = Region::withoutGlobalScope()->whereIn('name', $cityNames)->where('level', 2)->select()->toArray();
$regionsnew = [];
foreach ($regions as $key => $value) {
$regionsnew[$value['pid']][] = $value;
}
// echo "<pre>";
// print_r($regionsnew);
foreach ($regionsnew as $pid => $value) {
$privince = Region::withoutGlobalScope()->where('id', $pid)->find();
$region_text[$pid]['name'] = $privince['name'] ?? "";
$citys = [];
// } else {
// list($province, $city) = explode("-", $value);
// $citys = [$city];
// }
// $cityNames = array_merge($cityNames, $citys);
// }
// $regions = Region::withoutGlobalScope()->whereIn('name', $cityNames)->where('level', 2)->select()->toArray();
// $regionsnew = [];
// foreach ($regions as $key => $value) {
// $regionsnew[$value['pid']][] = $value;
// }
// // echo "<pre>";
// // print_r($regionsnew);
// foreach ($regionsnew as $pid => $value) {
// $privince = Region::withoutGlobalScope()->where('id', $pid)->find();
// $region_text[$pid]['name'] = $privince['name'] ?? "";
// $citys = [];
foreach ($value as $val) {
$region[] = $val['id'];
$citys[] = ['name' => $val['name']];
}
$region_text[$pid]['citys'] = $citys;
}
unset($pid);
// foreach ($value as $val) {
// $region[] = $val['id'];
// $citys[] = ['name' => $val['name']];
// }
// $region_text[$pid]['citys'] = $citys;
// }
// unset($pid);
foreach ($region_text as $pid => &$item) {
//如果传入的是整个省份
if (count($item['citys']) == Region::withoutGlobalScope()->whereIn('pid', $pid)->count()) {
$item['citys'] = [];
}
}
}
// foreach ($region_text as $pid => &$item) {
// //如果传入的是整个省份
// if (count($item['citys']) == Region::withoutGlobalScope()->whereIn('pid', $pid)->count()) {
// $item['citys'] = [];
// }
// }
// }
list($region, $region_text) = GoodsModel::dealGoodsSaleArea($original["L"]);
// echo "<pre>";
// print_r($region_text);
// print_r($region);

@ -12,6 +12,8 @@ use cores\exception\BaseException;
use think\facade\Log;
use app\common\model\Channel;
use app\common\model\Region;
use think\facade\Db;
/**
* 服务类:商品批量导入
* Class Import
@ -32,6 +34,7 @@ class StoreGoodsDelete extends BaseService
*/
public function batch(array $goodsIds): bool
{
$goods_list = GoodsModel::whereIn('goods_id', $goodsIds)
->where('is_delete',1)
->field(['goods_id','is_sale','is_pool'])
@ -40,9 +43,25 @@ class StoreGoodsDelete extends BaseService
return true;
}
$goodsIds = array_column($goods_list->toArray(), "goods_id");
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
$platformGoodsList = GoodsModel::whereIn('origin_goods_id', $goodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($platformGoodsList->isEmpty()) {
return true;
}
//删除零售总后台的商品
//删除批发商城的商品
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除零售商城的商品
$platformGoodsIds = array_column($platformGoodsList->toArray(), "goods_id");
GoodsModel::whereIn('origin_goods_id', $platformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城总后台的商品
$wholesalePlatformGoodsList = Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $platformGoodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($wholesalePlatformGoodsList->isEmpty()) {
return true;
}
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $platformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城-商城端的商品
$wholesalePlatformGoodsIds = array_column($wholesalePlatformGoodsList->toArray(), "goods_id");
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $wholesalePlatformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
return true;
}

@ -12,12 +12,14 @@ use cores\exception\BaseException;
use think\facade\Log;
use app\common\model\Channel;
use app\common\model\Region;
use think\facade\Db;
/**
* 服务类:商品批量导入
* Class Import
* @package app\job\service\goods
*/
class GoodsOffline extends BaseService
class StoreGoodsOffline extends BaseService
{
/**
* 批量导入商品
@ -33,20 +35,32 @@ class GoodsOffline extends BaseService
public function batch(array $goodsIds): bool
{
$goods_list = GoodsModel::whereIn('goods_id', $goodsIds)
->where('is_delete',0)
->where(function($query){
$query->where('is_pool',2)->whereOr('is_sale',0);
})
->field(['goods_id','is_sale','is_pool'])
->select();
if ($goods_list->isEmpty()) {
return true;
}
$goodsIds = array_column($goods_list->toArray(), "goods_id");
//GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['status' => 20, 'is_jd_remove' => 1, 'update_time' => time()]);
$platformGoodsList = GoodsModel::whereIn('origin_goods_id', $goodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($platformGoodsList->isEmpty()) {
return true;
}
//删除零售总后台的商品
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除零售商城的商品
$platformGoodsIds = array_column($platformGoodsList->toArray(), "goods_id");
GoodsModel::whereIn('origin_goods_id', $platformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城总后台的商品
$wholesalePlatformGoodsList = Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $platformGoodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($wholesalePlatformGoodsList->isEmpty()) {
return true;
}
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $platformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//删除批发商城-商城端的商品
$wholesalePlatformGoodsIds = array_column($wholesalePlatformGoodsList->toArray(), "goods_id");
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $wholesalePlatformGoodsIds)->update(['is_delete' => 1, 'update_time' => time()]);
//下架批发商城的商品
return true;
}

@ -12,6 +12,8 @@ use cores\exception\BaseException;
use think\facade\Log;
use app\common\model\Channel;
use app\common\model\Region;
use think\facade\Db;
/**
* 服务类:商品批量导入
* Class Import
@ -34,7 +36,7 @@ class StoreGoodsOnline extends BaseService
{
$goods_list = GoodsModel::whereIn('goods_id', $goodsIds)
->where('is_delete',0)
->where('is_sale',1)
->where('status',10)
->where('is_pool',1)
->field(['goods_id','is_sale','is_pool'])
->select();
@ -42,9 +44,32 @@ class StoreGoodsOnline extends BaseService
return true;
}
$goodsIds = array_column($goods_list->toArray(), "goods_id");
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update(['status' => 10, 'is_jd_remove' => 0, 'update_time' => time(), 'is_delete' => 0]);
//上架批发商城的商品
$platformGoodsList = GoodsModel::whereIn('origin_goods_id', $goodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($platformGoodsList->isEmpty()) {
return true;
}
$up_data = [
'is_sale' => 1,
'is_pool' => 1,
'status' => 10,
'is_jd_remove' => 0,
'update_time' => time(),
'is_delete' => 0
];
//上架零售商城总后台的商品
GoodsModel::whereIn('origin_goods_id', $goodsIds)->update($up_data);
//上架零售商城-商城端的商品
$platformGoodsIds = array_column($platformGoodsList->toArray(), "goods_id");
GoodsModel::whereIn('origin_goods_id', $platformGoodsIds)->update($up_data);
//上架批发商城总后台的商品
$wholesalePlatformGoodsList = Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $platformGoodsIds)->field(['goods_id','is_sale','is_pool'])->select();
if ($wholesalePlatformGoodsList->isEmpty()) {
return true;
}
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $platformGoodsIds)->update($up_data);
//上架批发商城-商城端的商品
$wholesalePlatformGoodsIds = array_column($wholesalePlatformGoodsList->toArray(), "goods_id");
Db::connect("dataCenterMysql")->table('yoshop_goods')->whereIn('origin_goods_id', $wholesalePlatformGoodsIds)->update($up_data);
return true;
}

@ -201,6 +201,7 @@ class Controller extends BaseController
*/
private function checkStore(): void
{
if (!$this->storeId) {
return;
}

@ -18,6 +18,14 @@ use cores\exception\BaseException;
use app\store\model\Goods as GoodsModel;
use app\store\model\goods\Import as ImportModel;
use app\common\model\GoodsCategoryRel;
use app\common\model\Category;
use app\job\controller\goods\StoreGoodsOffline as StoreGoodsOfflineJob;
use app\job\controller\goods\StoreGoodsOnline as StoreGoodsOnlineJob;
use app\job\controller\goods\StoreGoodsDelete as StoreGoodsDeleteJob;
use app\common\service\Jd;
use app\common\model\wxapp\Setting as WxappSettingModel;
use EasyWeChat\Factory;
/**
* 商品管理控制器
* Class Goods
@ -197,6 +205,24 @@ class Goods extends Controller
if (!$model->setIsPool($goodsIds, $state)) {
return $this->renderError($model->getError() ?: '操作失败');
}
// 分批每次导入20条
$limit = 20;
// 根据商品总数量计算需要的队列任务数量
$jobCount = \count($goodsIds) / $limit;
// 逐次发布队列任务
for ($i = 0; $i < $jobCount; $i++) {
$data = array_slice($goodsIds, $i * $limit, $limit);
if ($state == 2) {
StoreGoodsOfflineJob::dispatch([
'list' => $data,
]);
} elseif ($state == 1) {
StoreGoodsOnlineJob::dispatch([
'list' => $data,
]);
}
}
return $this->renderSuccess('操作成功');
}
/**
@ -211,6 +237,24 @@ class Goods extends Controller
if (!$model->setStatus($goodsIds, $state)) {
return $this->renderError($model->getError() ?: '操作失败');
}
// 分批每次导入20条
$limit = 20;
// 根据商品总数量计算需要的队列任务数量
$jobCount = \count($goodsIds) / $limit;
// 逐次发布队列任务
for ($i = 0; $i < $jobCount; $i++) {
$data = array_slice($goodsIds, $i * $limit, $limit);
if ($state == false) {
StoreGoodsOfflineJob::dispatch([
'list' => $data,
]);
} elseif ($state == true) {
StoreGoodsOnlineJob::dispatch([
'list' => $data,
]);
}
}
return $this->renderSuccess('操作成功');
}
/**
@ -341,12 +385,27 @@ class Goods extends Controller
}
$cates = GoodsCategoryRel::where('goods_id', $value['goods_id'])->select()->toArray();
$value['category_id'] = $cates ? implode(",", array_column($cates, "category_id")) : "";
$region_text = $value['region_text'] ? json_decode($value['region_text'], true) : [];
$str = "";
$link = ";";
$replace = "、";
if ($region_text) {
foreach ($region_text as $key => $val) {
if (!$val['citys']) {
$str .= $val['name'].$link;
} else {
foreach ($val['citys'] as $key => $va) {
$str .= $val['name']."-".$va['name'].$link;
}
}
}
}
$value['region_text'] = str_replace(";", $replace, rtrim($str, $link)) ;
}
}
// echo "<pre>";
// print_r($data);
// exit();
$titles = [
['goods_id'=>'系统编码(禁止修改)'],
['goods_name'=>'标题'],
@ -364,11 +423,113 @@ class Goods extends Controller
// ['stock_total'=>'库存量'],
['remark'=>'下单须知'],
['is_use_jd_stock'=>'是否使用京东库存(是填1 否填0)'],
['region_text'=>'销售区域'],
];
downLoadExcel('导出数据-'.date('Y-m-d', time()),$titles,$data['data']);
}
//文案导出
public function copyExport(){
ini_set('memory_limit', '2024M');
set_time_limit(0);
$model = new GoodsModel;
$params = $this->request->param();
$params['store_id'] = $this->storeId;
$perSize = 10000;
$params['page'] = 1;
if ($this->merchantId) {
$params['merchantId'] = $this->merchantId;
}
//$params['channels'] = ['zy'];
// echo "<pre>";
// print_r($params);
//exit();
$data = $model->getAdminListExport($params, $perSize)->toArray();
// echo "<pre>";
// print_r($data['data']);
// exit();
$jd = new Jd();
$store_id = GoodsModel::$storeId;
$wxConfig = WxappSettingModel::getConfigBasic($store_id);
$config = [
'app_id' => $wxConfig['app_id'],
'secret' => $wxConfig['app_secret'],
'response_type' => 'array',// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
'log' => [
'level' => 'debug',
'file' => app()->getRuntimePath().'wechat.log',
],
];
$app = Factory::miniProgram($config);
if ($data['data']) {
foreach ($data['data'] as &$value) {
//小程序短链
$data1 = $app->short_link->getShortLink("pages/goods/detail?refereeId=0&goodsId=".$value['goods_id'], "", true);
$value['applet_short_url'] = "";
if ($data1['errcode'] == 0) {
$value['applet_short_url'] = $data1['link'];
}
//京东短链
$value['jd_short_url'] = $jd->getJdShortLink($value['goods_no']);
$value['h5_url'] = "https://www.royaum.com.cn/mobile/#/pages/goods/detail?goodsId=".$value['goods_id']."&storeId=".$store_id;
//分类
$value['category_3'] = "无";
$value['category_4'] = "无";
$value['membership_price'] = $value['goods_price_min'];
$cates = GoodsCategoryRel::where('goods_id', $value['goods_id'])->select()->toArray();
if ($cates) {
$cateList = Category::whereIn('category_id', array_column($cates, 'category_id'))->whereIn('level',[3,4])->order("level asc")->select()->toArray();
$value['category_3'] = $cateList[0]['name'] ?? "无";
$value['category_4'] = $cateList[1]['name'] ?? "无";
//会员价
$value['membership_price'] = \app\common\model\PriceSet::membershipPrice($value['goods_price_min'], $value['cost_price_min'], array_column($cates, 'category_id'));
}
//销售区域
$region_text = $value['region_text'] ? json_decode($value['region_text'], true) : [];
$str = "";
$link = ";";
$replace = "、";
if ($region_text) {
foreach ($region_text as $key => $val) {
if (!$val['citys']) {
$str .= $val['name'].$link;
} else {
foreach ($val['citys'] as $key => $va) {
$str .= $val['name']."-".$va['name'].$link;
}
}
}
}
$value['region_text'] = $str ? str_replace(";", $replace, rtrim($str, $link)) : "全国";
}
}
// echo "<pre>";
// print_r($data);
// exit();
$titles = [
['goods_id'=>'系统编码'],
['category_3'=>'三级分类'],
['category_4'=>'四级分类'],
['goods_name'=>'标题'],
['cmmdty_model'=>'型号'],
['membership_price'=>'推广价'],
['goods_price_min'=>'市场价'],
['jd_short_url'=>'同款链接'],
['applet_short_url'=>'小程序链接'],
['h5_url'=>'H5链接'],
['region_text'=>'销售区域'],
];
downLoadExcel('导出数据-'.date('Y-m-d', time()),$titles,$data['data']);
}
public function import(){
// 新增记录
$model = new ImportModel;

@ -15,6 +15,7 @@ namespace app\store\controller;
use app\common\model\store\StoreSettle;
use think\response\Json;
use app\store\model\Store as StoreModel;
use app\admin\model\Store as AdminStoreModel;
use app\common\model\Channel;
use app\common\model\PriceSet;
@ -26,6 +27,53 @@ use app\common\model\PriceSet;
class Store extends Controller
{
/**
* 商城列表
* @return Json
* @throws \think\db\exception\DbException
*/
public function index(): Json
{
// 商城列表
$model = new AdminStoreModel;
$list = $model->getList();
if (!$list->isEmpty()) {
$list = $list->toArray();
foreach ($list['data'] as &$value) {
$value['store_version'] = $value['store_version'] == 0 ? "单商户" : "多商户";
}
}
return $this->renderSuccess(compact('list'));
}
/**
* 新增商城
* @return Json
*/
public function add(): Json
{
// 新增记录
$model = new AdminStoreModel;
if ($model->add($this->postForm())) {
return $this->renderSuccess('添加成功');
}
return $this->renderError($model->getError() ?: '添加失败');
}
/**
* 更新商城信息
* @return Json
*/
public function edit(int $storeId): Json
{
$params = $this->postForm();
// 商城详情
$model = AdminStoreModel::detail($storeId);
// 更新记录
if (!$model->edit($params)) {
return $this->renderError($model->getError() ?: '更新失败');
}
return $this->renderSuccess('更新成功');
}
/**
* 获取当前登录的商城信息
* @return Json

@ -241,7 +241,7 @@ class Import extends ImportModel
self::$storeId = $form['store_id'] ?? 0;
foreach ($execlData as $key => $value) {
list($region, $region_text) = GoodsModel::dealGoodsSaleArea($value["P"]);
$upData = [
'goods_name'=> $value['B'],
'cmmdty_model'=> $value['C'],
@ -259,6 +259,8 @@ class Import extends ImportModel
'stock_total'=> $value['M'],
'remark'=> $value['N'],
'is_use_jd_stock'=> $value['O'],
'region' => $region ? json_encode($region, JSON_UNESCAPED_UNICODE) : "",
'region_text' => $region_text ? json_encode(array_values($region_text), JSON_UNESCAPED_UNICODE) : "",
];
$goods = GoodsModel::where('goods_id', $value['A'])->find();
if (!$goods) {

@ -12,6 +12,7 @@
"/goods/setNew",
"/goods/setBrand",
"/goods/pool",
"/goods/copyExport",
"/merchant/getMerchantGoodsCate",
"/merchant/setMerchantGoodsCate",
"/merchant/getShopCategory",

@ -33,6 +33,7 @@ return [
// 数据库连接配置信息
'connections' => [
//零售商城数据库
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
@ -72,6 +73,7 @@ return [
// 字段缓存路径
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
//批发商城数据库
'dataCenterMysql' => [
// 数据库类型
'type' => env('wdatabase.type', 'mysql'),
@ -88,9 +90,9 @@ return [
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('wdatabase.charset', 'utf8'),
'charset' => env('wdatabase.charset', 'utf8mb4'),
// 数据库表前缀
'prefix' => "",
//'prefix' => env('database.prefix', 'yoshop_'),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,

Loading…
Cancel
Save