同步数据

es
lqmac 7 months ago
parent ae04c26891
commit 83f9a7c685
  1. 1
      app/admin/controller/Passport.php
  2. 12
      app/api/model/Goods.php
  3. 253
      app/command/SyncStoreBasicData.php
  4. 12
      app/common/model/Goods.php
  5. 1
      config/console.php

@ -47,6 +47,7 @@ class Passport extends Controller
} }
return $this->renderSuccess([ return $this->renderSuccess([
'userId' => $userInfo['admin_user_id'], 'userId' => $userInfo['admin_user_id'],
'role' => $userInfo['role'],
'token' => $model->getToken() 'token' => $model->getToken()
], '登录成功'); ], '登录成功');
} }

@ -437,7 +437,7 @@ class Goods extends GoodsModel
// 获取商品记录 // 获取商品记录
$goodsInfo = $this->getGoodsMain($goodsId, $with, $verifyStatus); $goodsInfo = $this->getGoodsMain($goodsId, $with, $verifyStatus);
$this->dealGoodsImage($goodsInfo); //$this->dealGoodsImage($goodsInfo);
// 商品规格列表 // 商品规格列表
$goodsInfo['specList'] = GoodsSpecRelModel::getSpecList($goodsInfo['goods_id']); $goodsInfo['specList'] = GoodsSpecRelModel::getSpecList($goodsInfo['goods_id']);
@ -643,19 +643,19 @@ class Goods extends GoodsModel
//价格判断 //价格判断
if (UserService::isstore()) { if (UserService::isstore()) {
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds); $priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$goods['goods_price_min_plus'] = $priceArr['membershipPrice']; $goods['goods_price_min_plus'] = round($priceArr['membershipPrice']);
$goods['goods_price_min_dealer'] = $priceArr['distributionPrice']; $goods['goods_price_min_dealer'] = round($priceArr['distributionPrice']);
$goods['goods_price_min'] = $goods['goods_price_min_plus'];//$goods['cost_price_min'];//店长售价,展示为成本价 $goods['goods_price_min'] = round($goods['goods_price_min_plus']);//$goods['cost_price_min'];//店长售价,展示为成本价
} elseif (UserService::isPlusMember()) { } elseif (UserService::isPlusMember()) {
$membershipPrice = \app\common\model\PriceSet::membershipPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds); $membershipPrice = \app\common\model\PriceSet::membershipPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$goods['discount'] = bcdiv((string)($membershipPrice * 10), (string)$goods['goods_price_min'], 1); $goods['discount'] = bcdiv((string)($membershipPrice * 10), (string)$goods['goods_price_min'], 1);
$goods['goods_price_min'] = $membershipPrice; $goods['goods_price_min'] = round($membershipPrice);
} elseif (UserService::isDealerMember()) { } elseif (UserService::isDealerMember()) {
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds); $priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$goods['discount'] = bcdiv((string)($priceArr['distributionPrice'] * 10), (string)$goods['goods_price_min'], 1); $goods['discount'] = bcdiv((string)($priceArr['distributionPrice'] * 10), (string)$goods['goods_price_min'], 1);
//$goods['goods_price_min'] = $membershipPrice; //$goods['goods_price_min'] = $membershipPrice;
$goods['goods_price_min'] = $priceArr['distributionPrice']; $goods['goods_price_min'] = round($priceArr['distributionPrice']);
} }
if ($goods['discount'] == 10) { if ($goods['discount'] == 10) {

@ -0,0 +1,253 @@
<?php
declare (strict_types=1);
namespace app\command;
use think\console\Command;
use think\console\Output;
use think\console\Input;
use think\facade\Db;
use app\common\model\MaintenanceCategory;
use app\common\model\Maintenance;
use app\common\model\article\Category;
use app\common\model\Article;
use app\common\model\Store;
use app\common\model\Agreement;
use app\common\model\UploadFile;
// /www/server/php/74/bin/php /server/wwwroot/yanzong/think test
class SyncStoreBasicData extends Command
{
const DEFAULT_STORE_ID = 10001;
protected function configure()
{
// 指令配置
$this->setName('SyncStoreBasicData')->setDescription('同步商城基础数据');
$this->addArgument("store_id");
$this->addArgument("isSyncMaintenanceData");
$this->addArgument("isSyncHelpData");
$this->addArgument("isSyncRichTextData");
}
protected function execute(Input $input, Output $output)
{
$store_id = $input->getArgument("store_id");
$isSyncMaintenanceData = $input->getArgument("isSyncMaintenanceData");
$isSyncHelpData = $input->getArgument("isSyncHelpData");
$isSyncRichTextData = $input->getArgument("isSyncRichTextData");
$where[] = ['is_sync','=', 0];
$where[] = ['is_delete','=', 0];
$where[] = ['is_recycle','=', 0];
$where[] = ['status','=', 1];
if ($store_id) {
$where[] = ['store_id','=', $store_id];
} else {
$where[] = ['store_id', '<>', self::DEFAULT_STORE_ID];
}
$stores = Store::where($where)->field('store_id,is_sync,is_recycle,status,is_delete')->select()->toArray();
// echo "<pre>";
// print_r($stores);
// exit();
if (!$stores) {
echo "没有要同步的商城了";
return;
}
foreach ($stores as $store) {
if ($isSyncMaintenanceData) {
$this->syncMaintenanceData($store);
}
if ($isSyncHelpData) {
$this->syncHelpData($store);
}
if ($isSyncRichTextData) {
$this->syncRichTextData($store);
}
Store::where('store_id', $store['store_id'])->update(['is_sync' => 1]);
}
}
/**
* 同步富文本数据
* [syncHelpData description]
* @param [type] $store [description]
* @return [type] [description]
*/
private function syncRichTextData($store){
//维修分类数据同步
$agreementList = Agreement::where('store_id',self::DEFAULT_STORE_ID)->select()->toArray();
if ($agreementList) {
foreach ($agreementList as &$agreement) {
$info = Agreement::where('store_id', $store['store_id'])->where('original_id', $agreement['id'])->find();
if ($info) {
echo $agreement['id']."富文本已存在".PHP_EOL;
continue;
}
$agreement['create_time'] = time();
$agreement['update_time'] = time();
$agreement['original_id'] = $agreement['id'];
$agreement['store_id'] = $store['store_id'];
unset($agreement['id']);
$ret = Agreement::create($agreement);
var_dump($ret->id);
}
unset($agreement);
}
}
/**
* 同步帮助中心数据
* [syncHelpData description]
* @param [type] $store [description]
* @return [type] [description]
*/
private function syncHelpData($store){
//维修分类数据同步
$articleCategoryList = Category::where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray();
if ($articleCategoryList) {
foreach ($articleCategoryList as &$articleCategory) {
$info = Category::where('store_id', $store['store_id'])->where('original_id', $articleCategory['category_id'])->find();
if ($info) {
echo $articleCategory['category_id']."帮助分类已存在".PHP_EOL;
continue;
}
$articleCategory['create_time'] = time();
$articleCategory['update_time'] = time();
$articleCategory['original_id'] = $articleCategory['category_id'];
$articleCategory['store_id'] = $store['store_id'];
unset($articleCategory['category_id']);
//复制图片
$upload_file = Db::name('upload_file')->where('file_id', $articleCategory['img_id'])->find();
if ($upload_file) {
$upload_file['store_id'] = $store['store_id'];
$upload_file['create_time'] = time();
unset($upload_file['file_id']);
$image_id = Db::name('upload_file')->insertGetId($upload_file);
}
//写入维修数据
$articleCategory['img_id'] = $image_id ?? 0;
$ret = Category::create($articleCategory);
var_dump($ret->id);
}
unset($articleCategory);
}
//维修数据同步
$articleList = Article::where('store_id',self::DEFAULT_STORE_ID)->where('is_delete', 0)->where('status', 1)->select()->toArray();
if ($articleList) {
foreach ($articleList as &$article) {
$info = Article::where('store_id', $store['store_id'])->where('original_id', $article['article_id'])->find();
if ($info) {
echo $article['article_id']."帮助已存在".PHP_EOL;
continue;
}
//查询分类id
$articleCategory = Category::where('original_id', $article['category_id'])->where('store_id', $store['store_id'])->find();
if (!$articleCategory) {
continue;
}
$article['create_time'] = time();
$article['update_time'] = time();
$article['original_id'] = $article['article_id'];
$article['category_id'] = $articleCategory['category_id'];
$article['store_id'] = $store['store_id'];
unset($article['article_id']);
//复制图片
$upload_file = Db::name('upload_file')->where('file_id', $article['image_id'])->find();
if ($upload_file) {
$upload_file['store_id'] = $store['store_id'];
$upload_file['create_time'] = time();
unset($upload_file['file_id']);
$image_id = Db::name('upload_file')->insertGetId($upload_file);
}
//写入维修数据
$article['image_id'] = $image_id;
$ret = Article::create($article);
//写入图片id
var_dump($ret->id);
}
unset($article);
}
}
/**
* 同步维修数据
* [syncMaintenanceData description]
* @param [type] $store [description]
* @return [type] [description]
*/
private function syncMaintenanceData($store){
//维修分类数据同步
$maintenanceCategoryList = MaintenanceCategory::where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray();
if ($maintenanceCategoryList) {
foreach ($maintenanceCategoryList as &$maintenanceCategory) {
$info = MaintenanceCategory::where('store_id', $store['store_id'])->where('original_id', $maintenanceCategory['id'])->find();
if ($info) {
echo $maintenanceCategory['id']."维修分类已存在".PHP_EOL;
continue;
}
$maintenanceCategory['create_time'] = time();
$maintenanceCategory['update_time'] = time();
$maintenanceCategory['original_id'] = $maintenanceCategory['id'];
$maintenanceCategory['store_id'] = $store['store_id'];
unset($maintenanceCategory['id']);
// echo "<pre>";
// print_r($maintenanceCategory);
// exit();
$ret = MaintenanceCategory::create($maintenanceCategory);
var_dump($ret->id);
}
unset($maintenanceCategory);
}
//维修数据同步
$maintenanceList = Maintenance::where('store_id',self::DEFAULT_STORE_ID)->where('is_delete', 0)->select()->toArray();
if ($maintenanceList) {
foreach ($maintenanceList as &$maintenance) {
$info = Maintenance::where('store_id', $store['store_id'])->where('original_id', $maintenance['id'])->find();
if ($info) {
echo $maintenance['id']."维修已存在".PHP_EOL;
continue;
}
// echo "<pre>";
// print_r($info);
// exit();
//查询分类id
$maintenanceCategory = MaintenanceCategory::where('original_id', $maintenance['category_id'])->where('store_id', $store['store_id'])->find();
if (!$maintenanceCategory) {
continue;
}
$maintenance['create_time'] = time();
$maintenance['update_time'] = time();
$maintenance['original_id'] = $maintenance['id'];
$maintenance['category_id'] = $maintenanceCategory['id'];
$maintenance['store_id'] = $store['store_id'];
unset($maintenance['id']);
//复制图片
$upload_file = Db::name('upload_file')->where('file_id', $maintenance['img_id'])->find();
if ($upload_file) {
$upload_file['store_id'] = $store['store_id'];
$upload_file['create_time'] = time();
unset($upload_file['file_id']);
// echo "<pre>";
// print_r($upload_file);
// exit();
$image_id = Db::name('upload_file')->insertGetId($upload_file);
}
//写入维修数据
$maintenance['img_id'] = $image_id ?? 0;
$ret = Maintenance::create($maintenance);
//写入图片id
var_dump($ret->id);
}
unset($maintenance);
}
}
}

@ -481,6 +481,18 @@ class Goods extends BaseModel
if (isset($param['goods_price_max']) && $param['goods_price_max'] !== '') { if (isset($param['goods_price_max']) && $param['goods_price_max'] !== '') {
$filter[] = ['goods.goods_price_min', '<=', $params['goods_price_max']]; $filter[] = ['goods.goods_price_min', '<=', $params['goods_price_max']];
} }
if (isset($param['distribute_price_max']) && $param['distribute_price_max'] !== '') {
$filter[] = ['goods.distribute_price', '<=', $params['distribute_price_max']];
}
if (isset($param['distribute_price_min']) && $param['distribute_price_min'] !== '') {
$filter[] = ['goods.distribute_price', '>=', $params['distribute_price_min']];
}
if (isset($param['shop_price_min']) && $param['shop_price_min'] !== '') {
$filter[] = ['goods.shop_price', '>=', $params['shop_price_min']];
}
if (isset($param['shop_price_max']) && $param['shop_price_max'] !== '') {
$filter[] = ['goods.shop_price', '<=', $params['shop_price_max']];
}
if (isset($param['profit_rate_min']) && $param['profit_rate_min'] !== '') { if (isset($param['profit_rate_min']) && $param['profit_rate_min'] !== '') {
$filter[] = ['goods.profit_rate', '>=', $params['profit_rate_min']]; $filter[] = ['goods.profit_rate', '>=', $params['profit_rate_min']];
} }

@ -11,5 +11,6 @@ return [
'test' => 'app\command\test', 'test' => 'app\command\test',
'CalDealerTime' => 'app\command\CalDealerTime', 'CalDealerTime' => 'app\command\CalDealerTime',
'UpdateCollectGoodsPrice' => 'app\command\UpdateCollectGoodsPrice', 'UpdateCollectGoodsPrice' => 'app\command\UpdateCollectGoodsPrice',
'SyncStoreBasicData' => 'app\command\SyncStoreBasicData',
], ],
]; ];

Loading…
Cancel
Save