Commit c9fb6558 authored by hangjun83's avatar hangjun83

openapi 震坤行

parent f4baebde
<?php
namespace App\Console\Commands;
use App\Jobs\WuxiLabJob;
use App\Jobs\ZhenkhJob;
use Illuminate\Console\Command;
use Illuminate\Console\ConfirmableTrait;
class ZhenkhJobCommand extends Command
{
use ConfirmableTrait;
/**
* 命令行的名称及用法。
*
* @var string
*/
protected $signature = 'zkh:job
{--action_type= : 任务操作类型}
{--params= : 任务参数}';
/**
* 命令行的概述。
*
* @var string
*/
protected $description = '震坤行任务命令行';
/**
* 创建新的命令实例。
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* 运行命令。
* @throws \Exception
*/
public function handle()
{
if (! $this->confirmToProceed()) {
return 1;
}
if($this->hasArgument('help')){
$this->help();
}else{
$action_type = $this->option('action_type');
$params = $this->option('params');
if(empty($action_type)){
$this->error('缺少命令参数,请输入具体的参数命令.如需帮助请输入 --help');
exit;
}
$productUpdateJob = (new ZhenkhJob($action_type,$params))->delay(100)->onQueue('slow');
app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($productUpdateJob);
}
}
public function help()
{
$helpStr = "参数帮助说明";
$this->comment($this->setHelp($helpStr)->getProcessedHelp());
$this->line("action_type: 具体动作参数\n\n initProductToExcel => 初始化批量商品 \n batchUpdateProduct => 批量更新商品\n\nparams : 操作需要传入的参数.非必填项");
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Http\Controllers\V1\Auth;
use Illuminate\Http\Request;
use Jiannei\Response\Laravel\Support\Facades\Response;
use App\Http\Controllers\V1\Controller;
use App\Services\AuthService;
use App\Services\RoleAndPermissionsService;
class AuthUserController extends Controller
{
protected $authService = null;
/**
* Create a new AuthController instance.
* @param \App\Services\AuthService $authService
*/
public function __construct(AuthService $authService)
{
$this->authService = $authService;
}
/**
* @param \Illuminate\Http\Request $request
*/
public function login(Request $request)
{
$message = [
'username.required' => "请输入用户名",
'password.required' => "请输入密码",
];
$this->validateRequest($request, $message);
try{
$response = $this->authService->login($request);
return Response::success([
'token' => $response,
], '登陆成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
* @param \Illuminate\Http\Request $request
*/
public function logout(Request $request)
{
try{
$this->authService->logout($request);
return Response::success(null,'请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
public function addUser(Request $request)
{
$message = [
'username.required' => "用户登陆账号必填",
'password.required' => "密码必填",
'type.required' => "用户类型必选",
'nickname.required' => "用户名称必填",
'email.required' => "邮箱必填",
];
$this->validateRequest($request, $message);
try{
$this->authService->saveOrUpdateUser($request);
return Response::success(null,'请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function editUser(Request $request)
{
$message = [
'type.required' => "用户类型必选",
'nickname.required' => "用户名称必填",
'email.required' => "邮箱必填",
];
$this->validateRequest($request, $message);
try{
$this->authService->saveOrUpdateUser($request);
return Response::success(null,'请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function changeUserStatus(Request $request, $id)
{
if(!$id){
return Response::fail('缺少id参数',500);
}
try{
$this->authService->updateUserStatus($request,$id);
return Response::success(null,'请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function delUserByIds(Request $request)
{
$message = [
'ids.required' => "用户id必传",
];
$this->validateRequest($request, $message);
try{
$this->authService->deleteUser($request);
return Response::success(null,'请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 获取用户信息
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function info(Request $request)
{
try{
$user = $this->authService->getUserInfo();
$service = app(RoleAndPermissionsService::class);
$service->getRolesToUser();
return Response::success([
'userinfo' => $user,
], '请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
public function listByPage(Request $request)
{
try{
$service = app(AuthService::class);
$roles = $service->listByPage($request);
return Response::success($service->formatKeysfromArray($roles,'toCamelCase'), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function resetPassword(Request $request)
{
$message = [
'oldpassword.required' => "请输入旧密码",
'newpassword.required' => "请输入新密码",
];
$this->validateRequest($request, $message);
try{
$response = $this->authService->resetPassword($request);
return Response::success([], '更新成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Http\Controllers\V1;
use App\Services\BhOrdersService;
use Illuminate\Http\Request;
use Jiannei\Enum\Laravel\Repositories\Enums\LogEnum;
use Jiannei\Response\Laravel\Support\Facades\Response;
use App\Http\Controllers\V1\Controller;
use App\Support\Traits\Helpers;
class BhOrdersController extends Controller
{
use Helpers;
protected $bhOrdersService = null;
public function __construct(BhOrdersService $bhOrdersService)
{
$this->bhOrdersService = $bhOrdersService;
}
/**
* 白化采购订单搜索
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function searchPorders(Request $request)
{
$message = [
'bhOrderNo.required' => "订单号必填",
];
$this->validateRequest($request, $message);
try{
$orderList = $this->bhOrdersService->searchPordersToPage($request);
return Response::success($orderList, '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function editBhPorders(Request $request)
{
$message = [
'poNo.required' => "订单号必填",
];
$this->validateRequest($request, $message);
try{
$order = $this->bhOrdersService->editBhPordersInfo($request);
return Response::success($order, '更新成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 添加一个订单退货人任务
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function addSorderRefundTask(Request $request)
{
$message = [
'name.required' => "任务名称必填",
'orderNo.required' => "订单号必填",
'itemId.required' => "订单购买项必填",
'pId.required' => "订单产品必选",
'refundNums.required' => "退货数量必填",
'handleFee.required' => "手续费费用必填",
'transferPre.required' => "是否转预存必选",
'cancelPorder.required' => "是否取消采购订单必选",
];
$this->validateRequest($request, $message);
try{
$order = $this->bhOrdersService->addSordersRefundTask($request);
return Response::success($order, '添加成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function editSorderRefundTask(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
'name.required' => "任务名称必填",
'orderNo.required' => "订单号必填",
'itemId.required' => "订单购买项必填",
'pId.required' => "订单产品必选",
'refundNums.required' => "退货数量必填",
'handleFee.required' => "手续费费用必填",
'transferPre.required' => "是否转预存必选",
'cancelPorder.required' => "是否取消采购订单必选",
];
$this->validateRequest($request, $message);
try{
$order = $this->bhOrdersService->addSordersRefundTask($request);
return Response::success($order, '编辑成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function delSorderRefundTask(Request $request)
{
$message = [
'taskId.required' => "任务id必传",
];
$this->validateRequest($request, $message);
try{
$task = $this->bhOrdersService->delSorderRefundTask($request);
return Response::success($task, '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 获取订单退货任务列表
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getBhSorderRefundTaskToPage(Request $request)
{
$message = [
'type.required' => "类型无效",
];
$this->validateRequest($request, $message);
try{
$task = $this->bhOrdersService->getSordersRefundTask($request);
return Response::success($task, '添加成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 执行百化退货任务
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function execBhSorderRefundTask(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
];
$this->validateRequest($request, $message);
try{
$this->bhOrdersService->execSordersRefundTask($request);
return Response::success([],'操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 查询订单详情
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getBhSordersDetail(Request $request)
{
$message = [
'orderNo.required' => "订单号必填",
];
$this->validateRequest($request, $message);
try{
$order = $this->bhOrdersService->getBhSorderDetail($request);
return Response::success($this->formatKeysfromArray($order), '更新成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function getSorderRefundTaskLogsToPage(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
];
$this->validateRequest($request, $message);
try{
$logs = $this->bhOrdersService->getBhSorderTaskLog($request);
return Response::success($this->formatKeysfromArray($logs), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function getSorderDetailByTaskId(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
];
$this->validateRequest($request, $message);
try{
$logs = $this->bhOrdersService->getBhSorderDetailByTaskId($request);
return Response::success($this->formatKeysfromArray($logs), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Http\Controllers\V1;
use Jiannei\Response\Laravel\Support\Facades\Response;
use Jiannei\Response\Laravel\Support\Traits\ExceptionTrait;
use Laravel\Lumen\Routing\Controller as BaseController;
abstract class Controller extends BaseController
{
use ExceptionTrait;
/**
* request 参数验证
* @param $request
* @param $message
* @return bool|\Illuminate\Http\JsonResponse
*/
protected function validateRequest($request, $message){
$validateArr = [];
collect($message)->map(function($value,$key) use (&$validateArr){
$keys = explode('.',$key);
$validateArr[$keys[0]] = $keys[1];
});
$validator = Validator($request->all(), $validateArr, $message);
if ($validator->fails()) {
foreach($validator->errors()->getMessages() as $error) {
return Response::fail($error[0]);
}
}
return true;
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Http\Controllers\V1;
use App\Services\RhawnOrdersService;
use Illuminate\Http\Request;
use Jiannei\Enum\Laravel\Repositories\Enums\LogEnum;
use Jiannei\Response\Laravel\Support\Facades\Response;
use App\Http\Controllers\V1\Controller;
use App\Support\Traits\Helpers;
class RhawnOrdersController extends Controller
{
use Helpers;
protected $rhawnOrdersService = null;
public function __construct(RhawnOrdersService $rhawnOrdersService)
{
$this->rhawnOrdersService= $rhawnOrdersService;
}
/**
* 添加一个订单退货人任务
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function addSorderRefundTask(Request $request)
{
$message = [
'name.required' => "任务名称必填",
'orderNo.required' => "订单号必填",
'itemId.required' => "订单购买项必填",
'pId.required' => "订单产品必选",
'handleFee.required' => "手续费费用必填",
'transferPre.required' => "是否转预存必选",
];
$this->validateRequest($request, $message);
try{
$order = $this->rhawnOrdersService->addSordersRefundTask($request);
return Response::success($order, '添加成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function editSorderRefundTask(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
'name.required' => "任务名称必填",
'orderNo.required' => "订单号必填",
'itemId.required' => "订单购买项必填",
'pId.required' => "订单产品必选",
'handleFee.required' => "手续费费用必填",
'transferPre.required' => "是否转预存必选",
];
$this->validateRequest($request, $message);
try{
$order = $this->rhawnOrdersService->addSordersRefundTask($request);
return Response::success($order, '编辑成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function delSorderRefundTask(Request $request)
{
$message = [
'taskId.required' => "任务id必传",
];
$this->validateRequest($request, $message);
try{
$task = $this->rhawnOrdersService->delSorderRefundTask($request);
return Response::success($task, '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 获取订单退货任务列表
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getSorderRefundTaskToPage(Request $request)
{
$message = [
'type.required' => "类型无效",
];
$this->validateRequest($request, $message);
try{
$task = $this->rhawnOrdersService->getSordersRefundTask($request);
return Response::success($task, '添加成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 获取库存数据
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getRhawnSordersStock(Request $request)
{
$message = [
'orderItemId.required' => "id必传",
];
$this->validateRequest($request, $message);
try{
$task = $this->rhawnOrdersService->getSordersStock($request);
return Response::success($this->formatKeysfromArray($task), '添加成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 执行罗恩退货任务
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function execRhawnSorderRefundTask(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
];
$this->validateRequest($request, $message);
try{
$this->rhawnOrdersService->execSordersRefundTask($request);
return Response::success([],'操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
/**
* 查询订单详情
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getSordersDetail(Request $request)
{
$message = [
'orderNo.required' => "订单号必填",
];
$this->validateRequest($request, $message);
try{
$order = $this->rhawnOrdersService->getSorderDetail($request);
return Response::success($this->formatKeysfromArray($order), '更新成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function getSorderRefundTaskLogsToPage(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
];
$this->validateRequest($request, $message);
try{
$logs = $this->rhawnOrdersService->getRhawnSorderTaskLog($request);
return Response::success($this->formatKeysfromArray($logs), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function getSorderDetailByTaskId(Request $request)
{
$message = [
'taskId.required' => "任务id必填",
];
$this->validateRequest($request, $message);
try{
$logs = $this->rhawnOrdersService->getRhawnSorderDetailByTaskId($request);
return Response::success($this->formatKeysfromArray($logs), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
}
......@@ -39,7 +39,10 @@ class WuxiLabJob extends Job
if(!isset($params) || $params == 0){
$params['limit'] = 1000;
}
$service->batchUpdatePackagesInfo();
$service->batchUpdatePackagesInfo($this->params);
break;
case 'batchUploadProducts' :
$service->batchUploadProducts();
break;
case 'batchUpdateProduct' :
$service->batchUpdateProducts();
......
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Jobs;
use App\Services\ZhenKhService;
class ZhenkhJob extends Job
{
protected $actionType = null;
protected $params = null;
public function __construct($actionType,$params)
{
$this->actionType = $actionType;
$this->params = $params;
}
public function handle()
{
$service = app(ZhenKhService::class);
switch($this->actionType){
case 'test' :
$service->getToken();
break;
case 'getUpdateGoods' :
$service->getUpdateSupplierGoods();
break;
case 'getUpdateOrders' :
$service->getUpdateSupplierOrders();
break;
case 'sendDeliveryOrder' :
$service->sendDeliveryOrder($this->params);
break;
case 'getDeliveryOrderDetail' :
$service->getDeliveryOrderPdf($this->params);
break;
default:
}
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Policies;
use App\Repositories\Enums\PermissionEnum;
use App\Repositories\Models\Post;
use App\Repositories\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class PostPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view any posts.
*
* @param User $user
* @return mixed
*/
public function viewAny(User $user)
{
if ($user->can(PermissionEnum::ROUTE_POSTS_VIEW_ANY()->name)) {
return true;
}
return false;
}
/**
* Determine whether the user can view the post.
*
* @param User|null $user
* @param Post $post
* @return mixed
*/
public function view(?User $user, Post $post)
{
if ($post->published) {
return true;
}
// visitors cannot view unpublished items
if ($user === null) {
return false;
}
// admin overrides published status
if ($user->can(PermissionEnum::ROUTE_POSTS_VIEW()->name)) {
return true;
}
// authors can view their own unpublished posts
return $user->isOwnerOf($post);
}
/**
* Determine whether the user can create posts.
*
* @param User $user
* @return mixed
*/
public function create(User $user)
{
if ($user->can(PermissionEnum::ROUTE_POSTS_CREATE()->name)) {
return true;
}
return false;
}
/**
* Determine whether the user can update the post.
*
* @param User $user
* @param Post $post
* @return mixed
*/
public function update(User $user, Post $post)
{
if ($user->isOwnerOf($post) || $user->can('edit all posts')) {
return true;
}
return false;
}
/**
* Determine whether the user can delete the post.
*
* @param User $user
* @param Post $post
* @return mixed
*/
public function delete(User $user, Post $post)
{
if ($user->isOwnerOf($post) || $user->can(PermissionEnum::ROUTE_POSTS_DELETE()->name)) {
return true;
}
return false;
}
}
......@@ -11,7 +11,10 @@
namespace App\Providers;
use App\Repositories\Contracts\SysLogRepository;
use App\Services\Kafka\KafkaService;
use App\Services\SysLogService;
use GuzzleHttp\Client;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Laravel\Lumen\Application as LumenApplication;
......@@ -44,11 +47,21 @@ class AppServiceProvider extends ServiceProvider
return new KafkaService(config('kafka.kafka'));
});
$this->app->singleton(SysLogService::class,function($app){
return new SysLogService(app(SysLogRepository::class));
});
$this->app->singleton(\GuzzleHttp\Client::class,function($app){
return new Client();
});
$this->commands([
\App\Console\Commands\IntegleJobCommand::class,
\App\Console\Commands\WuxiLabJobCommand::class,
\App\Console\Commands\BideJobCommand::class,
\App\Console\Commands\BjsJobCommand::class,
\App\Console\Commands\ZhenkhJobCommand::class,
\App\Console\Commands\KafkaConsumerCommand::class
]);
......
......@@ -16,6 +16,6 @@ use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface UserRepository.
*/
interface UsersRepository extends RepositoryInterface
interface KafkaFailQueueRepository extends RepositoryInterface
{
}
......@@ -16,6 +16,6 @@ use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface UserRepository.
*/
interface RolesRepository extends RepositoryInterface
interface PlatformDataEntriesRepository extends RepositoryInterface
{
}
......@@ -16,6 +16,6 @@ use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface UserRepository.
*/
interface MenusRepository extends RepositoryInterface
interface RhawnSoitemsRepository extends RepositoryInterface
{
}
......@@ -16,6 +16,6 @@ use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface UserRepository.
*/
interface ToolsTaskRepository extends RepositoryInterface
interface RhawnSordersRepository extends RepositoryInterface
{
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\KafkaFailQueueRepository;
use App\Repositories\Models\KafkaFailQueue;
use Illuminate\Container\Container as Application;
/**
* Class UserRepositoryEloquent.
*/
class KafkaFailQueueRepositoryEloquent extends BaseRepository implements KafkaFailQueueRepository
{
public function __construct(Application $app)
{
parent::__construct($app);
}
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return KafkaFailQueue::class;
}
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\MenusRepository;
use App\Repositories\Criteria\RequestCriteria;
use App\Repositories\Models\Menus;
use App\Repositories\Eloquent\BaseRepository;
use Prettus\Validator\Contracts\ValidatorInterface;
/**
* Class UserRepositoryEloquent.
*/
class MenusRepositoryEloquent extends BaseRepository implements MenusRepository
{
protected $fieldSearchable = [
'menu_name',
];
/**
* 定义validator的检索规则
* @var \string[][]
*/
public $rules = [
ValidatorInterface::RULE_CREATE => [
'menu_name' => 'required',
'title' => 'required',
'menu_path' => 'required',
'parent_id' => 'required',
'menu_type' => 'required',
'status' => 'required',
'sort' => 'required',
'is_show' => 'required',
'sys_default' => 'required'
],
ValidatorInterface::RULE_UPDATE => [
'menu_name' => 'required',
'title' => 'required',
'menu_path' => 'required',
'parent_id' => 'required',
'menu_type' => 'required',
'status' => 'required',
'sort' => 'required',
'is_show' => 'required',
'sys_default' => 'required'
]
];
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return Menus::class;
}
/**
* Boot up the repository, pushing criteria.
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\KafkaFailQueueRepository;
use App\Repositories\Contracts\PlatformDataEntriesRepository;
use App\Repositories\Models\KafkaFailQueue;
use App\Repositories\Models\PlatformDataEntries;
use Illuminate\Container\Container as Application;
/**
* Class UserRepositoryEloquent.
*/
class PlatformDataEntriesRepositoryEloquent extends BaseRepository implements PlatformDataEntriesRepository
{
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return PlatformDataEntries::class;
}
public function getEntriesValues($plformId, $key = null)
{
$where['platform_id'] = $plformId;
if(!is_null($key)){
$where['data_key'] = $key;
}
$record = $this->findWhere($where)->toArray();
return $record;
}
public function storeEntries($platformId, $key, $values)
{
$entries = [
'platform_id' => $platformId,
'data_key' => $key,
'data_values' => is_array($values) ? json_encode($values) : $values
];
return $this->updateOrCreate([
'platform_id' => $platformId,
'data_key' => $key,
],$entries);
}
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\RhawnSoitemsRepository;
use App\Repositories\Contracts\RhawnSordersRepository;
use App\Repositories\Criteria\RequestCriteria;
use App\Repositories\Eloquent\BaseRepository;
use App\Repositories\Models\RhawnSoitems;
use Prettus\Validator\Contracts\ValidatorInterface;
/**
* Class UserRepositoryEloquent.
*/
class RhawnSoitemsRepositoryEloquent extends BaseRepository implements RhawnSoitemsRepository
{
protected $fieldSearchable = [
];
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return RhawnSoitems::class;
}
/**
* Boot up the repository, pushing criteria.
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
/**
* 获取订单详情
* @param $orderId
* @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
*/
public function getSorderItemsDetailFromOrderId($orderId)
{
$order = app(RhawnSordersRepository::class)->find($orderId);
if(!$order){
throw new \LogicException('该订单不存在!',500);
}
//查询订单的详情
$soItems = RhawnSoitems::query()
->join('products','soitems.p_id','products.p_id')
->join('chemicals','products.c_id','chemicals.c_id')
->join('brands','products.b_id','brands.b_id')
->where('soitems.so_id',$order->so_id)->get();
return $soItems;
}
public function getSorderItemsDetailFromItemId($itemId,$pid=null)
{
//查询订单的详情
$soItems = RhawnSoitems::query()
->join('sorders','sorders.so_id','soitems.so_id')
->join('products','soitems.p_id','products.p_id')
->join('chemicals','products.c_id','chemicals.c_id')
->join('brands','products.b_id','brands.b_id')
->where('soitems.si_id',$itemId);
if(!is_null($pid)){
$soItems = $soItems->where('soitems.p_id',$pid);
}
$soItems = $soItems->get();
return $soItems;
}
/**
* 根据si_id获取订单明细项
* @param $si_id
* @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
*/
public function getSorderItemFromItemId($si_id)
{
$item = $this->find($si_id);
if(!$item){
throw new \LogicException('该订单项不存在!',500);
}
//查询订单的详情
$soItems = RhawnSoitems::query()
->join('products','soitems.p_id','products.p_id')
->where('soitems.si_id',$si_id)->get();
return $soItems;
}
public function getOrderItemsStockFromItemIds($id)
{
if(!is_array($id)){
$item = $this->find($id);
$id = (array)$id;
}else{
$item = RhawnSoitems::query()->whereIn('si_id',$id)->get();
}
if(!$item){
throw new \LogicException('该订单项不存在!',500);
}
//查询订单的详情
$soItemStock = RhawnSoitems::query()
->join('dpdetail','dpdetail.si_id','soitems.si_id')
->join('pstock','pstock.pstk_id','dpdetail.pstk_id')
->join('products','soitems.p_id','products.p_id')
->whereIn('soitems.si_id',$id)
->where('si_if_cancel',0)
//->where('dpdetail.dpd_invoiced','=',0)
->get();
return $soItemStock;
}
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\RhawnSordersRepository;
use App\Repositories\Criteria\RequestCriteria;
use App\Repositories\Models\RhawnSorders;
use App\Repositories\Eloquent\BaseRepository;
use Illuminate\Support\Facades\DB;
use Prettus\Validator\Contracts\ValidatorInterface;
/**
* Class UserRepositoryEloquent.
*/
class RhawnSordersRepositoryEloquent extends BaseRepository implements RhawnSordersRepository
{
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return RhawnSorders::class;
}
/**
* 返回指定订单编号的订单信息
* @param $order_no
* @return mixed
*/
public function getSorderFromOrderNo($orderNo)
{
$where = [
'so_no' => $orderNo
];
return $this->findWhere($where)->first();
}
public function getSorderFromOrderCusPo($orderNo)
{
$where = [
'so_cus_po' => $orderNo
];
return $this->findWhere($where)->first();
}
/**
* 获取订单详情
* @param $orderNo
* @return mixed
*/
public function getSorderItemsFromOrderNo($orderNo){
$soItems = $this
->join('soitems','soitems.so_id','sorders.so_id')
->where('sorders.so_no',$orderNo)->get();
return $soItems;
}
/**
* 获取订单相关信息(包括,产品,客户,品牌等)
* @param $so_id
* @return mixed
*/
public function getSorderDetailFromOrderId($so_id)
{
$sOrderInfo = $this
->join('customers','sorders.cus_id','customers.cus_id')
->where('sorders.so_id',$so_id)
->get();
if(!$sOrderInfo){
return ;
}
$sOrderInfo = current($sOrderInfo->toArray());
$items = DB::connection('bh_mysql')->table('soitems')
->join('products','soitems.p_id','products.p_id')
->join('chemicals','products.c_id','chemicals.c_id')
->join('brands','products.b_id','brands.b_id')
->where('soitems.so_id',$so_id)
->get();
if(!$items){
$sOrderInfo['items'] = [];
}
$sOrderInfo['items'] = $items->toArray();
return $sOrderInfo;
}
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\RolesRepository;
use App\Repositories\Criteria\RequestCriteria;
use App\Repositories\Eloquent\BaseRepository;
use Prettus\Validator\Contracts\ValidatorInterface;
use Spatie\Permission\Models\Role;
/**
* Class UserRepositoryEloquent.
*/
class RolesRepositoryEloquent extends BaseRepository implements RolesRepository
{
protected $fieldSearchable = [
'name',
];
/**
* 定义validator的检索规则
* @var \string[][]
*/
public $rules = [
ValidatorInterface::RULE_CREATE => [
'name' => 'required',
],
ValidatorInterface::RULE_UPDATE => [
'name' => 'required',
]
];
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return Role::class;
}
/**
* Boot up the repository, pushing criteria.
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
/**
* @param $params
* @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model
*/
public function saveRole($params)
{
$saveParams = [
'name' => $params['name'],
'remark' => $params['remark'],
'guard_name' => config('auth.defaults.guard'),
];
if(isset($params['id'])){
$saveParams['updated_at'] = date('Y-m-d H:i:s',time());
//$saveParams['id'] = $params['id'];
$result = Role::query()->updateOrCreate(['id' => $params['id']],$saveParams);
}else{
$saveParams['created_at'] = date('Y-m-d H:i:s',time());
$saveParams['updated_at'] = date('Y-m-d H:i:s',time());
$result = Role::create($saveParams);
}
return $result;
}
}
......@@ -40,11 +40,6 @@ class ThirdApiPlatformRepositoryEloquent extends BaseRepository implements Third
]
];
public function __construct(Application $app)
{
parent::__construct($app);
}
/**
* Specify Model class name.
*
......
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\ToolsTaskRepository;
use App\Repositories\Criteria\RequestCriteria;
use App\Repositories\Eloquent\BaseRepository;
use App\Repositories\Models\SysLog;
use App\Repositories\Models\ToolsTask;
use Prettus\Validator\Contracts\ValidatorInterface;
/**
* Class UserRepositoryEloquent.
*/
class ToolsTaskRepositoryEloquent extends BaseRepository implements ToolsTaskRepository
{
protected $fieldSearchable = [
];
/**
* 定义validator的检索规则
* @var \string[][]
*/
public $rules = [
ValidatorInterface::RULE_CREATE => [
'menu_name' => 'required',
'title' => 'required',
'menu_path' => 'required',
'parent_id' => 'required',
'menu_type' => 'required',
'status' => 'required',
'sort' => 'required',
'is_show' => 'required',
'sys_default' => 'required'
],
ValidatorInterface::RULE_UPDATE => [
'menu_name' => 'required',
'title' => 'required',
'menu_path' => 'required',
'parent_id' => 'required',
'menu_type' => 'required',
'status' => 'required',
'sort' => 'required',
'is_show' => 'required',
'sys_default' => 'required'
]
];
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return ToolsTask::class;
}
/**
* Boot up the repository, pushing criteria.
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
public function getTaskLogsFromType($type,$task_id=null)
{
$taskLogsList = $this
->join('task_log','tools_task.id','task_log.task_id')
->where('tools_task.type',$type);
if(!is_null($task_id)){
$taskLogsList = $taskLogsList->where('tools_task.id',$task_id);
}
$taskLogsList = $taskLogsList->get();
if($taskLogsList){
return $taskLogsList->toArray();
}
return [];
}
}
<?php
namespace App\Repositories\Eloquent;
use App\Repositories\Contracts\UsersRepository;
use App\Repositories\Criteria\RequestCriteria;
use App\Repositories\Models\AdminUsers;
use App\Repositories\Validators\UserValidator;
use App\Repositories\Eloquent\BaseRepository;
use App\Support\Traits\Helpers;
use Prettus\Validator\Contracts\ValidatorInterface;
/**
* Class UserRepositoryEloquent.
*/
class UsersRepositoryEloquent extends BaseRepository implements UsersRepository
{
use Helpers;
protected $fieldSearchable = [
'username','email',
];
/**
* 定义validator的检索规则
* @var \string[][]
*/
public $rules = [
ValidatorInterface::RULE_CREATE => [
'username' => 'required|string',
'nickname' => 'required|string',
'password' => 'required|string|min:6',
'email' => 'required',
'token' => 'required',
'is_admin' => 'required',
'status' => 'required'
],
ValidatorInterface::RULE_UPDATE => [
'id' => 'required',
'nickname' => 'required|string',
'email' => 'required',
]
];
/**
* Specify Model class name.
*
* @return string
*/
public function model()
{
return AdminUsers::class;
}
/**
* Boot up the repository, pushing criteria.
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
public function createOrUpdateUser($params)
{
$saveParams = $params;
if(isset($saveParams['id']) && !empty($saveParams['id'])){
$saveParams['updated_at'] = date('Y-m-d H:i:s',time());
unset($saveParams['is_admin']);
unset($saveParams['token']);
unset($saveParams['username']);
unset($saveParams['status']);
return $this->update($saveParams,$saveParams['id']);
}else{
$saveParams['is_admin'] = 0;
$saveParams['status'] = 1;
$saveParams['token'] = $this->randomFromDevice(16);
$saveParams['password'] = $this->encryptPassword($saveParams['password']);
$saveParams['lastlogin'] = 0;
$saveParams['created_at'] = date('Y-m-d H:i:s',time());
$saveParams['updated_at'] = date('Y-m-d H:i:s',time());
return $this->create($saveParams);
}
}
public function updateUserStatus($id, $status)
{
if($id){
$saveParams = [];
$saveParams['status'] = $status;
$saveParams['id'] = $id;
$user = $this->where('id',$id)->first()->toArray();
collect($this->rules['update'])->map(function($rule,$key) use ($user,&$saveParams){
if(isset($user[$key]) && !empty($user[$key])){
$saveParams[$key] = $user[$key];
}
});
$saveParams['status'] = $status;
$saveParams['id'] = $id;
$saveParams['updated_at'] = date('Y-m-d H:i:s',time());
return $this->update($saveParams,$id);
}
return true;
}
public function deleteUser($ids)
{
$users = $this->whereIn('id',$ids)->get();
if($users){
collect($users)->map(function($user){
$user->delete();
});
}
return true;
}
}
......@@ -9,17 +9,29 @@
* with this source code in the file LICENSE.
*/
namespace App\Http\Resources;
namespace App\Repositories\Models;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
class KafkaFailQueue extends Model
{
public function toArray($request)
{
return [
'nickname' => $this->name,
'email' => $this->email,
protected $connection = 'mysql';
protected $table = 'kafka_fail_queue';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'platform_name', 'queue_params', 'fail_content', 'queue_reset', 'created_by','updated_by'
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
];
}
}
......@@ -9,19 +9,29 @@
* with this source code in the file LICENSE.
*/
namespace App\Http\Resources;
namespace App\Repositories\Models;
use Illuminate\Http\Resources\Json\ResourceCollection;
class UserCollection extends ResourceCollection
class PlatformDataEntries extends Model
{
public function toArray($request)
{
return $this->collection->map(function ($item) {
return [
'nickname' => $item->name,
'email' => $item->email,
protected $connection = 'mysql';
protected $table = 'platform_data_entries';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'platform_id', 'data_key', 'data_values', 'created_by','updated_by'
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
];
})->all();
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Repositories\Models;
class RhawnSoitems extends Model
{
// 销售订单
protected $table = 'soitems';
protected $connection = 'rhawn_mysql';
protected $primaryKey = 'si_id';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
];
protected $guarded = ['created_at', 'updated_at'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
];
/**
* update时不做自动更新时间操作
* @return null
*/
public function getUpdatedAtColumn()
{
return null;
}
public function getCreatedAtColumn()
{
return null;
}
}
\ No newline at end of file
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Repositories\Models;
class RhawnSorders extends Model
{
// 销售订单
protected $table = 'sorders';
protected $connection = 'rhawn_mysql';
protected $primaryKey = 'so_id';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
];
protected $guarded = ['created_at', 'updated_at'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
];
/**
* update时不做自动更新时间操作
* @return null
*/
public function getUpdatedAtColumn()
{
return null;
}
public function getCreatedAtColumn()
{
return null;
}
}
\ No newline at end of file
......@@ -17,15 +17,15 @@ use App\Services\ThirdPlatform\Api\BideApiService;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Traits\Helpers;
class BideService extends PlatformAbstractService
class BideService
{
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
public function __construct()
{
$this->setPlatformName('bide');
parent::__construct($thirdApiPlatformRepository);
$this->apiService = (new BideApiService(app(ThirdApiPlatformRepository::class)));
}
public function batchUpdateProducts($params = null){
public function batchUpdateProducts($params = null)
{
$path = config('filesystems.disks.local.root').'/upload/'.$params;
$generator = Helpers::yieldLoadCsv($path);
......@@ -48,7 +48,7 @@ class BideService extends PlatformAbstractService
public function batchUpdateApi($params)
{
$result = app(BideApiService::class)->pushBatchUpdateProduct($params['cas']);
$result = $this->apiService->pushBatchUpdateProduct($params['cas']);
if(!$result){
return ;
}
......
......@@ -17,15 +17,15 @@ use App\Services\ThirdPlatform\Api\BjsApiService;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Traits\Helpers;
class BjsService extends PlatformAbstractService
class BjsService
{
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
public function __construct()
{
$this->setPlatformName('bjs');
parent::__construct($thirdApiPlatformRepository);
$this->apiService = (new BjsApiService(app(ThirdApiPlatformRepository::class)));
}
public function batchUpdateProducts($params = null){
public function batchUpdateProducts($params = null)
{
$path = config('filesystems.disks.local.root').'/upload/'.$params;
$generator = Helpers::yieldLoadCsv($path);
......@@ -48,7 +48,7 @@ class BjsService extends PlatformAbstractService
public function batchUpdateApi($params)
{
$result = app(BjsApiService::class)->pushBatchUpdateProduct($params['cas']);
$result = $this->apiService->pushBatchUpdateProduct($params['cas']);
if(!$result){
return ;
}
......
......@@ -3,19 +3,16 @@
namespace App\Services;
use App\Repositories\Contracts\RhawnRawRepository;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\Kafka\KafkaService;
use App\Services\ThirdPlatform\Api\IntegleApiService;
use App\Services\ThirdPlatform\PlatformAbstractService;
class InteglePlatformService extends PlatformAbstractService
class InteglePlatformService
{
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
public function __construct()
{
$this->setPlatformName('integle');
parent::__construct($thirdApiPlatformRepository);
$this->apiService = (new IntegleApiService(app(ThirdApiPlatformRepository::class)));
}
/**
......@@ -23,10 +20,8 @@ class InteglePlatformService extends PlatformAbstractService
*/
public function batchUpdateProducts($params = null)
{
$status = $this->checkApiPlatformStatus($this->platformName);
$status = $this->apiService->checkPlatformStatus();
if($status){
$this->getPlatformInfo($this->platformName);
$rhawnChemicalsService = app(RhawnChemicalsService::class);
$limit = $this->platformInfo['platform_params']['batchNums'];
$page = 0;
......@@ -63,7 +58,7 @@ class InteglePlatformService extends PlatformAbstractService
public function batchUpdateApi($updateData)
{
$result = app(IntegleApiService::class)->pushBatchUpdateProduct($updateData);
$result = $this->apiService->pushBatchUpdateProduct($updateData);
if($result){
if($result['status'] === false){
app(KafkaService::class)->produerSend(
......
......@@ -2,7 +2,9 @@
namespace App\Services\Kafka;
use App\Repositories\Contracts\KafkaFailQueueRepository;
use App\Services\SysLogService;
use App\Support\Facades\SimpleLogs;
use App\Support\Traits\KafkaConfigHelpers;
use longlang\phpkafka\Consumer\ConsumeMessage;
use longlang\phpkafka\Consumer\Consumer;
......@@ -13,15 +15,13 @@ class KafkaService
{
use KafkaConfigHelpers;
protected $kafkaProducerConfig = null;
protected $kafkaConsumerConfig = null;
protected $kafkaProducerConfig;
protected $kafkaConsumerConfig;
protected $config = null;
public function __construct($config)
{
$this->kafkaProducerConfig = $this->getProducerConfig($config);
//$this->kafkaConsumerConfig = $this->getConsumerConfig($config);
$this->config = $config;
}
......@@ -36,6 +36,8 @@ class KafkaService
$kafkaTopic = $topic;
if ($kafkaTopic == null) {
$kafkaTopic = $this->config['topic'];
}else{
$this->config['topic'] = $topic;
}
$key = uniqid($kafkaTopic, true);
$producer = new Producer($this->kafkaProducerConfig);
......@@ -53,24 +55,21 @@ class KafkaService
}
}
/**
* 开启消费者
*/
public function startConsumer()
{
$consumer = new Consumer($this->getConsumerConfig($this->config), function (ConsumeMessage $message) {
$this->kafkaConsumerConfig = $this->getConsumerConfig($this->config);
$consumer = new Consumer($this->kafkaConsumerConfig, function (ConsumeMessage $message) {
try{
$consumer = $message->getConsumer();
$kafkaMessage = json_decode($message->getValue(),true);
if(!empty($kafkaMessage)){
try{
$consumer->ack($message); // 手动提交
app($kafkaMessage['consumer'])->{$kafkaMessage['method']}($kafkaMessage['params']);
}catch(\Exception $exception){
$this->errLog($exception);
}
}catch(\Throwable $exception){
$this->errLog($exception,$this->kafkaConsumerConfig->getGroupInstanceId().'_consumer');
}
$consumer->stop();
......@@ -79,14 +78,24 @@ class KafkaService
$consumer->close();
}
public function errLog($exception)
protected function errLog($exception, $errorType)
{
app(SysLogService::class)->addOperationLogs(
[
SimpleLogs::writeLog([
'error' => $exception->getCode(),
'message' => $exception->getMessage()
]
);
], $errorType, 'error');
}
public function storeFailQueue($failQueueContent)
{
$repository = app(KafkaFailQueueRepository::class);
foreach($failQueueContent as $key => &$content){
if(is_array($content) || $content instanceof \ArrayObject){
$content = json_encode($content);
}
}
$repository->create($failQueueContent);
}
}
This diff is collapsed.
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Services;
use App\Repositories\Contracts\PlatformDataEntriesRepository;
use App\Repositories\Eloquent\ThirdApiPlatformRepositoryEloquent;
class PlatformDataEntriesService
{
public function __construct(PlatformDataEntriesRepository $platformDataEntriesRepository)
{
$this->entiresRepository = $platformDataEntriesRepository;
}
public function storeEntries($platformId, $key, $values)
{
$platform = app(ThirdApiPlatformRepositoryEloquent::class)->find($platformId)->toArray();
if(!$platform){
return false;
}
$this->entiresRepository->storeEntries($platformId, $key, $values);
}
public function getEntriesValues($platformId, $key = null)
{
return $this->entiresRepository->getEntriesValues($platformId,$key);
}
}
......@@ -13,6 +13,7 @@ namespace App\Services;
use App\Repositories\Contracts\RhawnRawRepository;
use App\Repositories\Enums\ResponseCodeEnum;
use App\Support\Facades\SimpleLogs;
use Illuminate\Support\Facades\DB;
class RhawnChemicalsService
......@@ -44,4 +45,74 @@ class RhawnChemicalsService
{
return $this->rhawnRawRepository->getProductPackagesThroughGroupByPackUnit();
}
/**
* 保存震坤行同步商品数据
* @param $goods
*/
public function updateZhenkhGoods($goods)
{
try{
$dbConnect = DB::connection('rhawn_mysql');
$zkhGoods = [];
$zkhGoods['zg_sku'] = $goods['zkhSku'];
$zkhGoods['zg_r_sku'] = $goods['supplierSkuNo'];
if(isset($goods['addressList']['0'])){
$zkhGoods['zg_addr'] = implode(',',$goods['addressList']);
}
$zkhGoods['zg_unit'] = $goods['priceUnit'];
if($zkhGoods['zg_r_sku'] != ''){
$zkhGoodsResult = $dbConnect->table('products')
->where('p_code',$zkhGoods['zg_r_sku'])
->get()->toArray();
if($zkhGoodsResult){
$zkhGoodsResult = current($zkhGoodsResult);
$zkhGoods['zg_r_pid'] = $zkhGoodsResult->p_id;
$row = $dbConnect->table('zkh_goods')
->where('zg_r_sku',$zkhGoods['zg_r_sku'])
->where('zg_r_pid',$zkhGoods['zg_r_pid'])
->get()->toArray();
if(count($row) == 0){
$id = $dbConnect->table('zkh_goods')->insertGetId($zkhGoods);
SimpleLogs::writeLog('zkh_goods 新增 id : '.$id.' 成功.', 'sql insert');
$row = $dbConnect->table('zkh_goods')->where('zg_id',$id)->get()->toArray();
}
if($row){
return current($row);
}
}
}
return null;
}catch(\Throwable $exception){
SimpleLogs::writeLog($exception->getMessage(),'updateZhenkhGoods ','error');
throw $exception;
}
}
public function getRawProductsThroughPid($pId)
{
try{
$dbConnect = DB::connection('rhawn_mysql');
$product = $dbConnect->table('products')
->where('p_id',$pId)
->get()->toArray();
if(count($product) > 0){
return current($product);
}
return null;
}catch(\Throwable $exception){
SimpleLogs::writeLog($exception->getMessage(),'getRawProductsThroughPid ','error');
throw $exception;
}
}
}
<?php
/*
* This file is part of the Jiannei/lumen-api-starter.
*
* (c) Jiannei <longjian.huang@foxmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace App\Services;
use App\Repositories\Contracts\RhawnSoitemsRepository;
use App\Repositories\Contracts\RhawnSordersRepository;
use App\Support\Facades\SimpleLogs;
use Illuminate\Support\Facades\DB;
class RhawnOrdersService
{
public function __construct()
{
$this->dataEntries = app(PlatformDataEntriesService::class);
}
public function getSorderDetail($orderNo)
{
$sOrder = app(RhawnSordersRepository::class)->getSorderFromOrderCusPo($orderNo);
if(!$sOrder){
throw new \LogicException('该订单编号不存在!',500);
}
//查询订单的详情
$soItems = app(RhawnSoitemsRepository::class)->getSorderItemsDetailFromOrderId($sOrder->so_id);
$soItems = $soItems->toArray();
$returnItem = [];
if($soItems){
foreach($soItems as $item){
$temp = [];
$temp['b_cn_name'] = $item['b_cn_name'];
$temp['p_code'] = $item['p_code'];
$temp['c_cas'] = $item['c_cas'];
$temp['p_cn_name'] = $item['p_cn_name'];
$temp['si_price'] = $item['si_price'];
$temp['si_discount'] = $item['si_discount'];
$temp['si_p_tod'] = $item['si_p_tod'];
$temp['si_num'] = $item['si_num'];
$temp['si_amount'] = $item['si_amount'];
$temp['si_vamount'] = $item['si_vamount'];
$temp['si_note'] = $item['si_notes'];
$temp['si_num'] = $item['si_num'];
$temp['p_id'] = $item['p_id'];
$temp['si_id'] = $item['si_id'];
$temp['so_no'] = $sOrder->so_no;
if($item['si_if_cancel'] == 0){
$returnItem[] = $temp;
}
}
}
return $returnItem;
}
public function getSorderDeliveryDetail()
{
}
/**
* @更新订单数据
* @param $order
* @param $orderDetail
*/
public function updateZhenkhOrders($order,$orderDetail)
{
if(empty($orderDetail)){
SimpleLogs::writeLog('order detail is empty . order_id :'.$order['purchaseOrderId'],__CLASS__.':updateZhenkhOrders');
return false;
}
$dbConnect = DB::connection('rhawn_mysql');
//判断订单是否已经存在
$oneOrder = $dbConnect->table('sorders')
->where('so_cus_po',$order['purchaseOrderId'])
->get()->toArray();
if($oneOrder){
SimpleLogs::writeLog('order is exist . order_id :'.$order['purchaseOrderId'],__CLASS__.':updateZhenkhOrders', 'error');
return false;
}
//获取订单发票信息
$platformId = app(ZhenKhService::class)->apiService->getPlatformInfo('id');
$dataEntries = $this->dataEntries->getEntriesValues($platformId,'zkh_order_invoice');
$dataEntries = json_decode(current($dataEntries)['data_values'],true);
$updateOrderArray = [];
$updateOrderArray['cus_id'] = $dataEntries['id'];
$updateOrderArray['so_no'] = 0;
$updateOrderArray['so_cus_po'] = $orderDetail['purchaseOrderId'];
$updateOrderArray['so_ca_name'] = $orderDetail['consigneeName'];
$updateOrderArray['so_ca_mobile'] = $orderDetail['consigneeTel'];
$updateOrderArray['so_ca_phone'] = '';
list(
$updateOrderArray['so_ca_province'],
$updateOrderArray['so_ca_city'],
$updateOrderArray['so_ca_county'],
$updateOrderArray['so_ca_street']
) = explode(' ', $orderDetail['address']);
$updateOrderArray['so_cia_name'] = $dataEntries['name'];
$updateOrderArray['so_cia_mobile'] = $dataEntries['mobile'];
$updateOrderArray['so_cia_phone'] = $dataEntries['phone'];
$updateOrderArray['so_cia_province'] = $dataEntries['province'];
$updateOrderArray['so_cia_city'] = $dataEntries['city'];
$updateOrderArray['so_cia_county'] = $dataEntries['county'];
$updateOrderArray['so_cia_street'] = $dataEntries['street'];
$updateOrderArray['so_ci_type'] = $dataEntries['type'];
$updateOrderArray['so_ci_title'] = $dataEntries['title'];
$updateOrderArray['so_ci_vatno'] = $dataEntries['vatno'];
$updateOrderArray['so_ci_bank'] = $dataEntries['bank'];
$updateOrderArray['so_ci_bknum'] = $dataEntries['banknum'];
$updateOrderArray['so_ci_addr'] = $dataEntries['address'];
$updateOrderArray['so_ci_phone'] = $dataEntries['company_phone'];
if($orderDetail['remark']){
$updateOrderArray['so_note'] = $orderDetail['remark'];
}else{
$updateOrderArray['so_note'] = '';
}
if($order['isDirect']){
$updateOrderArray['so_send_note'] = '发京东要求回单,发货单放箱子外面';
}else{
$updateOrderArray['so_send_note'] = '';
}
$updateOrderArray['so_standard'] = '';
$updateOrderArray['so_if_wx'] = 0;
$updateOrderArray['so_if_api'] = 0;
$updateOrderArray['so_ci_method'] = 1;
$updateOrderArray['so_total'] = $orderDetail['totalAmountFax'];
$updateOrderArray['so_ctime'] = time();
$updateOrderArray['so_creater'] = 29;
try{
$dbConnect->beginTransaction();
$orderId = $dbConnect->table('sorders')->insertGetId($updateOrderArray);
if($orderId > 0){
$so_no = 1000000 + $orderId;
$so_no = date('Ymd',time()).'-'.$so_no;
$dbConnect->table('sorders')->update(['so_no' => $so_no]);
$data['express'] = $orderDetail['totalFreight'];
$tempSku = [];
foreach($orderDetail['lines'] as $line){
$tempSku[] = $line['zkhSku'];
}
if(!empty($tempSku)){
//获取对应关系
$goods = $dbConnect->table('zkh_goods')
->whereIn('zg_sku',$tempSku)
->get()->toArray();
if(count($goods) > 0){
$pIds = [];
foreach($goods as $goodsInfo){
$pIds[] = $goodsInfo['zg_r_pid'];
}
if(!empty($pIds)){
$products = $dbConnect->table('products')
->whereIn('p_id',$pIds)
->get()->toArray();
if($products){
foreach($products as $key => $product){
$orderItemsArray = [];
$orderItemsArray['so_id'] = $orderId;
$orderItemsArray['p_id'] = $product['zg_r_pid'];
$orderItemsArray['si_price'] = $product['p_price'];
$orderItemsArray['si_discount'] = $line['priceFax'];
$orderItemsArray['si_num'] = $line['qty'];
$orderItemsArray['si_amount'] = $line['amountFax'];
$orderItemsArray['si_p_tod'] = $product['p_tod'];
$orderItemsArray['si_vamount'] = 0;
$dbConnect->table('soitems')->insert($orderItemsArray);
}
}
}
}
}
if($data['express'] > 0){
$soitems = [];
$soitems_count = count($products);
$soitems[$soitems_count]['so_id'] = $orderId;
$soitems[$soitems_count]['p_id'] = 0;
$soitems[$soitems_count]['si_price'] = 0;
$soitems[$soitems_count]['si_discount'] = 0;
$soitems[$soitems_count]['si_num'] = 0;
$soitems[$soitems_count]['si_amount'] = $data['express'];
$soitems[$soitems_count]['si_vamount'] = 0;
$soitems[$soitems_count]['si_p_tod'] = '';
$soitems[$soitems_count]['si_cus_note'] = '';
$soitems[$soitems_count]['si_molbase_pog'] = '';
$dbConnect->table('soitems')->insert($soitems);
}
}
$dbConnect->commit();
}catch(\Throwable $exception){
$dbConnect->rollBack();
SimpleLogs::writeLog($exception->getMessage(),__CLASS__.":updateZhenkhOrders", 'error');
}
}
}
\ No newline at end of file
This diff is collapsed.
......@@ -13,16 +13,12 @@ namespace App\Services;
use App\Repositories\Contracts\SysLogRepository;
use App\Repositories\Enums\LogEnum;
use Monolog\Logger;
use Monolog\Processor\WebProcessor;
use Psr\Log\LoggerInterface;
class SysLogService
{
protected $sysLogRepository = null;
public function __construct(SysLogRepository $sysLogRepository)
{
$this->sysLogRepository = $sysLogRepository;
}
public function addOperationLogs($logsContent)
{
$context = [
......@@ -45,4 +41,36 @@ class SysLogService
->onQueue(\config('logging.request.queue'));
}
public function writeLog($content, $logType, $level = 'info')
{
$context = [
'content' => $content,
'optime' => microtime(true),
];
$this->write($level, $logType.':', $context, false);
}
public function httpLog()
{
}
protected function write($type, $message, $context, $http = false)
{
app()->forgetInstance(LoggerInterface::class);
// unset(app()[LoggerInterface::class]);
$logger = app(LoggerInterface::class)->getLogger();
if ($logger instanceof Logger && $http) {
$logger->pushProcessor(new WebProcessor($this->serverData));
}
switch($type){
case 'info' : $logger->info($message, $context);break;
case 'debug' : $logger->debug($message, $context);break;
case 'error' : $logger->error($message, $context);break;
}
}
}
......@@ -12,19 +12,19 @@
namespace App\Services\ThirdPlatform\Api;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Traits\HttpClientHelpers;
class BideApiService
class BideApiService extends PlatformAbstractService
{
use HttpClientHelpers;
protected $platformInfo = null;
public function __construct()
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
{
$this->platformInfo = app(ThirdApiPlatformRepository::class)->getPlatformInfoByPlatformName('bide');
$this->platformInfo['platform_params'] = json_decode($this->platformInfo['platform_params'], true);
parent::__construct($thirdApiPlatformRepository);
$this->setPlatformName('bide');
$this->getPlatformInfo();
}
/**
......@@ -32,14 +32,11 @@ class BideApiService
* @param $product
* @return bool
*/
public function pushBatchUpdateProduct($product){
if(!$this->platformInfo){
throw new \LogicException('第三方平台信息无法获取!',500);
}
public function pushBatchUpdateProduct($product)
{
try{
if($this->checkPlatformStatus()){
$params = [];
$params['CASNumber'] = $this->mergeApiMetaData($product);
......@@ -50,6 +47,7 @@ class BideApiService
],false);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
......
......@@ -12,19 +12,19 @@
namespace App\Services\ThirdPlatform\Api;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Traits\HttpClientHelpers;
class BjsApiService
class BjsApiService extends PlatformAbstractService
{
use HttpClientHelpers;
protected $platformInfo = null;
public function __construct()
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
{
$this->platformInfo = app(ThirdApiPlatformRepository::class)->getPlatformInfoByPlatformName('bjs');
$this->platformInfo['platform_params'] = json_decode($this->platformInfo['platform_params'], true);
parent::__construct($thirdApiPlatformRepository);
$this->setPlatformName('bjs');
$this->getPlatformInfo();
}
/**
......@@ -32,14 +32,10 @@ class BjsApiService
* @param $product
* @return bool
*/
public function pushBatchUpdateProduct($product){
if(!$this->platformInfo){
throw new \LogicException('第三方平台信息无法获取!',500);
}
public function pushBatchUpdateProduct($product)
{
try{
if($this->checkPlatformStatus()){
$params = [];
$params['CASNumber'] = $this->mergeApiMetaData($product);
......@@ -50,7 +46,7 @@ class BjsApiService
],false);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
}
......
......@@ -18,13 +18,13 @@ use App\Support\Traits\HttpClientHelpers;
class IntegleApiService extends PlatformAbstractService
{
use HttpClientHelpers;
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
{
$this->setPlatformName('integle');
parent::__construct($thirdApiPlatformRepository);
$this->setPlatformName('integle');
$this->getPlatformInfo();
}
/**
......@@ -33,21 +33,15 @@ class IntegleApiService extends PlatformAbstractService
*/
public function pushBatchUpdateProduct($product)
{
$this->getPlatformInfo($this->platformName);
if(!$this->platformInfo){
throw new \LogicException('第三方平台信息无法获取!',500);
}
try{
if($this->checkPlatformStatus()){
$params = [];
$params['ak'] = $this->platformInfo['platform_params']['ak'];
$params['product'] = $this->mergeApiMetaData($product);
$response = $this->getPostClient('http://suppliers.integle.com/openapi/chem/batch-save',$params);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
}
......
......@@ -11,20 +11,21 @@
namespace App\Services\ThirdPlatform\Api;
use App\ImportExport\WuxiLab\WuxiLabExport;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Traits\HttpClientHelpers;
class WuxiApiService
class WuxiApiService extends PlatformAbstractService
{
use HttpClientHelpers;
protected $platformInfo = null;
public function __construct()
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
{
$this->platformInfo = app(ThirdApiPlatformRepository::class)->getPlatformInfoByPlatformName('wuxi_appTec');
$this->platformInfo['platform_params'] = json_decode($this->platformInfo['platform_params'], true);
parent::__construct($thirdApiPlatformRepository);
$this->setPlatformName('wuxi_appTec');
$this->getPlatformInfo();
}
/**
......@@ -34,8 +35,8 @@ class WuxiApiService
*/
public function pushBatchUpdateProduct($product)
{
$this->__checkPlatform();
try{
if($this->checkPlatformStatus()){
$params = [];
$params['chemicalProducts'] = $this->mergeApiMetaData($product);
......@@ -44,6 +45,7 @@ class WuxiApiService
]);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
}
......@@ -51,7 +53,7 @@ class WuxiApiService
public function backgroundLogin()
{
$this->__checkPlatform();
if($this->checkPlatformStatus()){
$response = $this->getPostClient('https://www.uploadcatalog.com/json_login',[
'username' => $this->platformInfo['platform_params']['username'],
'password' => $this->platformInfo['platform_params']['password']
......@@ -61,18 +63,34 @@ class WuxiApiService
return json_decode($response,true)['token'];
}
}
public function pushBatchUploadProducts($token)
{
if($this->checkPlatformStatus()){
$params = [];
$params['companyId'] = '6789';
$params['type'] = 'PRODUCT_CHEMICAL';
$params['batchId'] = '7d686e0b-8a08-e9e9-7d1f-916c387dea08';
$filePath = app(WuxiLabExport::class)->getSavePath('wuxiLab_package_2022_08_08_063609');
$params['file'] = fopen($filePath.'.csv','r');
private function __checkPlatform(){
if(!$this->platformInfo){
throw new \LogicException('第三方平台信息无法获取!',500);
$cookie = 'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN;Auth-Token='.$token.';';
$response = $this->getPostClient('https://www.uploadcatalog.com/excel/chemical/upload',$params,null,[
'cookie' => $cookie
]);
return json_decode($response,true)['token'];
}
}
public function pushBatchUpdatePackages($packages,$token)
{
$this->__checkPlatform();
try{
if($this->checkPlatformStatus()){
$params = [];
$params['company_id'] = '6789';
$params['product_type'] = 'CHAMICAL';
......@@ -86,6 +104,7 @@ class WuxiApiService
]);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
}
......
This diff is collapsed.
......@@ -12,17 +12,19 @@
namespace App\Services\ThirdPlatform;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\Kafka\KafkaService;
use App\Services\PlatformDataEntriesService;
abstract class PlatformAbstractService
{
protected $thirdApiPlatformRepository = null;
protected $platformName = '';
protected $platformInfo = null;
protected $thirdApiPlatformRepository;
protected $platformName;
protected $platformInfo;
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
{
$this->thirdApiPlatformRepository = $thirdApiPlatformRepository;
$this->dataEntriesService = app(PlatformDataEntriesService::class);
//app(ThirdApiPlatformRepository::class)->getPlatformInfoByPlatformName($this->platformName);
}
......@@ -30,31 +32,28 @@ abstract class PlatformAbstractService
$this->platformName = $platformName;
}
/**
* 根据平台名称查询平台的状态(关闭或开启)
* @param $platformName
*/
protected function checkApiPlatformStatus($platformName)
public function getPlatformInfo($key = null)
{
$status = false;
$platformStatus = $this->getPlatformInfo($platformName);
if($platformStatus){
$status = $platformStatus['platform_status'] == 1 ? true : false;
}
return $status;
if($this->platformName == ''){
return null;
}
protected function getPlatformInfo($platformName)
{
if($this->platformInfo == null){
$platform = $this->thirdApiPlatformRepository->getPlatformInfoByPlatformName($platformName);
$platform = $this->thirdApiPlatformRepository->getPlatformInfoByPlatformName($this->platformName);
if(!$platform){
return null;
}
$platform['platform_params'] = json_decode($platform['platform_params'], true);
$this->platformInfo = $platform;
}
if($key == null){
return $this->platformInfo;
}elseif (isset($this->platformInfo[$key])) {
return $this->platformInfo[$key];
}
return null;
}
protected function batchUpdateProducts($params = null)
......@@ -65,4 +64,49 @@ abstract class PlatformAbstractService
{
}
/**
* @对平台状态进行检查
* @return bool
* @throws \Exception
*/
public function checkPlatformStatus(){
if(!$this->platformInfo){
throw new \Exception('第三方平台信息无法获取!',500);
}
if($this->platformInfo['platform_status'] != 1){
throw new \Exception('当前平台处于关闭状态,无法使用');
}
return true;
}
/**
* @异常处理后续
* @实现方式将失败队列插入失败队列数据库里
* @param $failQueueContent
*/
public function throwableAfter($failQueueContent)
{
$service = app(KafkaService::class);
$service->storeFailQueue($failQueueContent);
}
public function getPlatformDataEntries($dataKey,$returnKey = null)
{
$dataEntries = $this->dataEntriesService->getEntriesValues(
$this->platformInfo['id'],$dataKey
);
if(!$dataEntries){
return null;
}
$dataEntries = current($dataEntries);
if(!is_null($returnKey) && $dataEntries[$returnKey]){
return json_decode($dataEntries[$returnKey],true);
}
return $dataEntries;
}
public function storePlatformDataEntries($dataKey, $dataValues)
{
return $this->dataEntriesService->storeEntries($this->getPlatformInfo('id'),$dataKey,$dataValues);
}
}
......@@ -11,22 +11,22 @@
namespace App\Services;
use App\Export\BaseExport;
use App\Export\WuxiLab\WuxiLabExport;
use App\ImportExport\BaseExport;
use App\ImportExport\WuxiLab\WuxiLabExport;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Repositories\Models\RhawnProducts;
use App\Services\Kafka\KafkaService;
use App\Services\ThirdPlatform\Api\WuxiApiService;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Traits\Helpers;
use longlang\phpkafka\Protocol\ApiVersions\ApiVersionsResponse;
class WuxiLabService extends PlatformAbstractService
class WuxiLabService
{
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
public function __construct()
{
$this->setPlatformName('wuxi_appTec');
parent::__construct($thirdApiPlatformRepository);
$this->apiService = (new WuxiApiService(app(ThirdApiPlatformRepository::class)));
}
/**
......@@ -34,10 +34,8 @@ class WuxiLabService extends PlatformAbstractService
*/
public function batchUpdateProducts($params = null)
{
$status = $this->checkApiPlatformStatus($this->platformName);
$status = $this->apiService->checkPlatformStatus();
if($status){
$this->getPlatformInfo($this->platformName);
$rhawnChemicalsService = app(RhawnChemicalsService::class);
$limit = $this->platformInfo['platform_params']['batchNums'];
$page = 0;
......@@ -73,29 +71,52 @@ class WuxiLabService extends PlatformAbstractService
}
}
public function batchUpdatePackagesInfo()
public function batchUpdatePackagesInfo($params = null)
{
$service = app(WuxiApiService::class);
$token = $service->backgroundLogin();
$token = $this->apiService->backgroundLogin();
$wuxiLabPackage = ['bottle','box','bp','case','ea','g','gal','hole','kg','kit','l','m','m2','mg','ml','mm','mmol','mu',
'ng','nmole','od','package','pair','piece','pmole','RL','sets','test', 'unit','vial','xa','µci','µg','µl','µmol'];
$rhawnChemicalsService = app(RhawnChemicalsService::class);
$packagesUnit = $rhawnChemicalsService->getProductPackagesThroughGroupByPackUnit();
/*$rhawnChemicalsService = app(RhawnChemicalsService::class);
$packagesUnit = $rhawnChemicalsService->getProductPackagesThroughGroupByPackUnit();*/
$path = config('filesystems.disks.local.root').'/upload/'.$params;
$generator = Helpers::yieldLoadCsv($path);
// yield 循环逐行读取csv内容
while ($generator->valid()) {
$content = $generator->current();
var_dump($content);
if(in_array($content[1],$wuxiLabPackage)){
$this->apiService->pushBatchUpdatePackages([
'unit_quantity' => $content[0], 'unit_type' => $content[1], 'unit_description' => $content[0].$content[1]
],$token);
}
usleep(30000);
$generator->next();
}
foreach($packagesUnit as $unit){
/*foreach($packagesUnit as $unit){
if(in_array($unit['p_pack_unit'],$wuxiLabPackage)){
$service->pushBatchUpdatePackages([
'unit_quantity' => $unit['p_pack'], 'unit_type' => $unit['p_pack_unit'], 'unit_description' => $unit['p_pack'].$unit['p_pack_unit']
],$token);
}
}*/
}
public function batchUploadProducts()
{
//$token = $service->backgroundLogin();
$token = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI3OTAwODcwNTlAcXEuY29tIiwiaXNzIjoiTGFiTmV0d29yayIsImlhdCI6MTY2MDUyNTg0NiwiZXhwIjoxNjYwNTQ3NDQ2LCJyb2xlcyI6IlJPTEVfU1VQUExJRVIiLCJhcHBsaWNhdGlvbiI6ImZ1bGxtb29uIiwidG9rZW4iOiIwNmQ1ZWIyNy0yYjMxLTQ3NjUtYTIzNS1lOTJhMzJjMjFhMjAiLCJjb21wYW55IjoiWUVIWCIsInByZWZlcnJlZExhbmd1YWdlIjoiIiwiamRlSWQiOiI5MDI2MDkyIiwiY29tcGFueU5hbWUiOiLkuIrmtbfmmJPmganljJblrabmioDmnK_mnInpmZDlhazlj7gifQ.oVk2WQeR6NlTvruRrh4I_2YenvKTejyeOd5-tbgXe9g';
$result = $this->apiService->pushBatchUploadProducts($token);
}
public function batchUpdateApi($updateData)
{
$result = app(WuxiApiService::class)->pushBatchUpdateProduct($updateData);
$result = $this->apiService->pushBatchUpdateProduct($updateData);
if($result){
if($result['status'] === false){
app(KafkaService::class)->produerSend(
......
This diff is collapsed.
<?php
namespace App\Support\Facades;
use Illuminate\Support\Facades\Facade as IlluminateFacade;
/**
* @method static produerSend($contentValue, $topic = null)
* @method static startConsumer()
* @method static storeFailQueue($failQueueContent)
*/
class SimpleKafka extends IlluminateFacade
{
protected static function getFacadeAccessor()
{
return \App\Services\Kafka\KafkaService::class;
}
}
<?php
namespace App\Support\Facades;
use Illuminate\Support\Facades\Facade as IlluminateFacade;
/**
* @method static writeLog($content, string $logType, string $level = 'info')
*/
class SimpleLogs extends IlluminateFacade
{
protected static function getFacadeAccessor()
{
return \App\Services\SysLogService::class;
}
}
<?php
namespace App\Support\Traits;
use App\Repositories\Contracts\MenusRepository;
use App\Repositories\Models\AdminUsers;
use App\Services\RoleAndPermissionsService;
use App\Repositories\Models\Menus;
use Illuminate\Support\Str;
use Spatie\Permission\Models\Permission;
trait InitMenusAndPermission
{
protected $menusRepository = null;
public function __construct(MenusRepository $menusRepository)
{
$this->menusRepository = $menusRepository;
}
protected function initMenu($menus)
{
$menuModel = app(Menus::class);
foreach($menus as $menu){
$parentMenu = $menuModel->where('menu_name',$menu['parent_id'])->first();
if(!$parentMenu){
throw new \LogicException('上级菜单不存在!',500);
}
if('button' == $menu['menu_type']){
$permission = Permission::query()->where(['menu_id' => 0, 'sys_default' => 1,'guard_name' => config('auth.defaults.guard'), 'action' => $menu['action']])->first();
if(!$permission){
throw new \LogicException('按钮动作不存在!',500);
}
}
$filterParams = [];
collect($this->menusRepository->rules['create'])->map(function($rule,$key) use ($menu, &$filterParams){
if(isset($menu[$key]) && !empty($menu[$key])){
$filterParams[$key] = $menu[$key];
} else{
$filterParams[$key] = '';
}
});
$filterParams['parent_id'] = $parentMenu['id'];
$filterParams['menu_icon'] = $menu['menu_icon'];
$filterParams['component'] = $menu['component'];
$filterParams['created_by'] = 1;
$filterParams['status'] = intval($menu['status']);
$result = $this->menusRepository->create($filterParams);
if($result){
$permission = [];
$permission['name'] = $result['menu_name'];
$permission['menu_id'] = $result['id'];
if(isset($menu['menu_type']) && !empty($menu['menu_type']) && 'button' == $menu['menu_type']){
$permission['action'] = $menu['menu_name'];
$permission['permission_type'] = 'button';
}else{
$permission['permission_type'] = 'menu';
$permission['action'] = $menu['menu_name'].'_list';
}
$permission['sys_default'] = 0;
$permission['remark'] = $result['menu_name'].'的相关权限';
$permission['guard_name'] = config('auth.defaults.guard');
//增加对应的按钮权限
$permissionResult = Permission::create($permission);
if($permissionResult){
$user = app(AdminUsers::class)->where('id',1)->get()->first();
app(RoleAndPermissionsService::class)->assignRoleAndPermissionToUser($permissionResult, $user);
}
}
}
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateKafkaFailQueueTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('kafka_fail_queue', function (Blueprint $table) {
$table->id();
$table->string('platform_name')->nullable()->comment('平台名称');
$table->text('queue_params')->nullable()->comment('失败队列内容');
$table->text('fail_content')->comment('失败原因');
$table->integer('queue_reset')->default(0)->comment('重跑时间');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('kafka_fail_queue');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePlatformDataEntriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('platform_data_entries', function (Blueprint $table) {
$table->id();
$table->integer('platform_id')->comment('平台id');
$table->string('data_key')->nullable()->comment('key');
$table->text('data_values')->nullable()->comment('values');
$table->integer('expire_time')->default(0)->comment('数据过期时间');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('platform_data_entries');
}
}
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class PlatformDataEntriesSeeder extends Seeder
{
protected $entries = [
[
'platform_id' => 27,
'data_key' => 'zkh_order_invoice',
'data_values' => [
'id' => '3884',
'name' => '金幸子',
'mobile' => '15549076754',
'phone' => '',
'province' => '湖北省',
'city' => '武汉市',
'county' => '洪山区',
'street' => '武汉市洪山区软件园中路4号软件园六期E1栋6楼2室震坤行',
'type' => '2',
'title' => '震坤行工业超市(上海)有限公司',
'vatno' => '91310118632206381P',
'bank' => '中国建设银行上海市曹家渡支行',
'banknum' => '31001540700050005679',
'address' => '上海浦东科苑路399号张江创新园5号楼',
'company_phone' => '400-680-9696'
]
]
];
public function run()
{
try{
if(!empty($this->entries)){
foreach($this->entries as &$entry){
if(is_array($entry['data_values']) && !empty($entry['data_values'])){
$entry['data_values'] = json_encode($entry['data_values']);
}
app(\App\Repositories\Contracts\PlatformDataEntriesRepository::class)->storeEntries($entry['platform_id'],$entry['data_key'],$entry['data_values']);
}
}
$this->command->getOutput()->info('初始化数据成功.');
}catch(Exception $e){
$this->command->getOutput()->error('初始化数据失败,原因:'.$e->getMessage());
}
}
}
......@@ -43,7 +43,7 @@ class ThridApiPlatformSeeder extends Seeder
'platform_status' => '1',
'platform_token' => '',
],*/
[
/*[
'platform_name' => 'bjs',
'platform_title' => 'bjs',
'platform_url' => 'http://220.248.71.110:9000',
......@@ -53,6 +53,17 @@ class ThridApiPlatformSeeder extends Seeder
'platform_type' => 'third',
'platform_status' => '1',
'platform_token' => '',
],*/
[
'platform_name' => 'zkh',
'platform_title' => '震坤行',
'platform_url' => 'https://honeycomb.zkh360.com',
'platform_desc' => '震坤行开放平台接口',
'platform_icon' => '',
'platform_params' => '',
'platform_type' => 'third',
'platform_status' => '1',
'platform_token' => '',
],
];
......@@ -93,6 +104,16 @@ class ThridApiPlatformSeeder extends Seeder
'Client_secret' => 'C35E61644B63D0C34BEC729028BBFF08',
]);
break;
case "zkh" :
$platform['platform_params'] = json_encode([
'test_accessId' => 'V00525@zkh360.com',
'test_accessSecret' => 'asdQWE1234',
'prod_accessId' => 'sales@rhawn.cn',
'prod_accessSecret' => 'YXH1992xb',
'test_platform_url' => "https://honeycomb-app-uat.zkh360.com",
'page_size' => "2000"
]);
break;
}
$platform['platform_type'] = 'third';
$platform['platform_status'] = '1';
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment