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\MenusService;
use Illuminate\Http\Request;
use Jiannei\Response\Laravel\Support\Facades\Response;
use App\Http\Controllers\V1\Controller;
use App\Services\RoleAndPermissionsService;
class PermissionsController extends Controller
{
protected $roleAndPermissionService = null;
/**
* Create a new AuthController instance.
* @param \App\Services\AuthService $authService
*/
public function __construct(RoleAndPermissionsService $roleAndPermissionsService)
{
$this->roleAndPermissionService = $roleAndPermissionsService;
}
/**
* 获取菜单列表
* @param Request $request
* @return \Illuminate\Http\JsonResponse|void
*/
public function getUserRoleMenuList(Request $request)
{
try{
$menuList = $this->roleAndPermissionService->getUserRoleMenus();
return Response::success([
'data' => app(MenusService::class)->getMenusTree($menuList,'page'),
], '请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
* 获取所有菜单列表
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getAllMenuList(Request $request)
{
try{
$service = app(MenusService::class);
$menuList = $service->getAllMenus();
$treeMenu = $service->getMenusTree($menuList);
return Response::success([
'data' => $service->formatKeysfromArray($treeMenu,'toCamelCase'),
], '请求成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
* 更新菜单
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function editMenus(Request $request)
{
$message = [
'id.required' => "菜单id必选",
'name.required' => "菜单名称必填",
'path.required' => "菜单路径必填",
'menuType.required' => "菜单类型必选",
'status.required' => "菜单状态必选",
'sort.required' => "菜单排序必填",
];
$this->validateRequest($request, $message);
if($request->get('selected') != true){
return Response::fail('该菜单未被选中编辑');
}
if($request->input('menuType') == 'page'){
$this->validateRequest($request, [
'component.required' => "菜单前端组件必填",
'parentId.required' => "上级菜单必选",
]);
}
if($request->has('menuType') && 'button' != $request->input('menuType')){
$message = [
'icon.required' => "菜单icon必填",
];
$this->validateRequest($request, $message);
}
try{
$service = app(MenusService::class);
$service->editMenu($request);
return Response::success([], '更新成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
public function getDefaultButtonPermission(Request $request)
{
try{
$buttonPermissions = $this->roleAndPermissionService->getButtonDefaultPermission();
return Response::success($buttonPermissions, '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
* 添加子菜单
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function addSubMenus(Request $request)
{
$message = [
'type.required' => "菜单类型必选",
'parentId.required' => "上级菜单必填",
'level.required' => "菜单深度必填",
'sort.required' => "菜单排序必填",
'status.required' => "菜单状态必选",
'path.required' => "菜单路径必填",
'title.required' => "菜单名称必填",
];
$this->validateRequest($request, $message);
if('page' == $request->get('type') && $request->get('level') == 2){
if(empty($request->get('icon'))){
return Response::fail('菜单图标必选');
}
if(empty($request->get('component'))){
return Response::fail('菜单前端组件必填');
}
}
if('button' == $request->get('type') && $request->get('level') == 3){
if(empty($request->get('buttonType'))){
return Response::fail('菜单行为必选');
}
}
try{
$service = app(MenusService::class);
$service->addSubMenu($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 deleteMenus(Request $request)
{
$message = [
'ids.required' => "菜单id必选",
];
$this->validateRequest($request, $message);
try{
$service = app(MenusService::class);
$service->deleteMenus($request);
return Response::success([], '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
* 获取角色列表(页面列表显示)
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getAllByPage(Request $request)
{
try{
$roles = $this->roleAndPermissionService->getAllRolesToPage($request);
return Response::success($this->roleAndPermissionService->formatKeysfromArray($roles,'toCamelCase'), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function getAllList(Request $request)
{
try{
$roles = $this->roleAndPermissionService->getAllRolesList($request);
return Response::success($this->roleAndPermissionService->formatKeysfromArray($roles,'toCamelCase'), '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),$exception->getCode());
}
}
/**
* 添加角色
* @param Request $request
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
*/
public function addRole(Request $request)
{
$message = [
'name.required' => "角色名称必填",
'remark.required' => "角色描述必填",
];
$this->validateRequest($request, $message);
try{
$this->roleAndPermissionService->saveRole($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 editRole(Request $request)
{
$message = [
'id.required' => "角色id必填",
'name.required' => "角色名称必填",
'remark.required' => "角色描述必填",
];
$this->validateRequest($request, $message);
try{
$this->roleAndPermissionService->saveRole($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 editRolePermission(Request $request)
{
$message = [
'roleId.required' => "角色id必填",
];
$this->validateRequest($request, $message);
try{
$this->roleAndPermissionService->syncPermissionToRole($request);
return Response::success([], '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function editRoleDefault(Request $request)
{
$message = [
'id.required' => "角色id必填",
'isDefault.required' => "是否默认必填",
];
$this->validateRequest($request, $message);
try{
$this->roleAndPermissionService->setRoleDefault($request);
return Response::success([], '操作成功');
}catch(\Exception $exception){
return Response::fail($exception->getMessage(),500);
}
}
public function delByIds(Request $request)
{
$message = [
'ids.required' => "角色id必填",
];
$this->validateRequest($request, $message);
try{
$this->roleAndPermissionService->deleteRoleByIds($request);
return Response::success([], '操作成功');
}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 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,
];
})->all();
}
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 = [
];
}
<?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) {
$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);
}
$this->kafkaConsumerConfig = $this->getConsumerConfig($this->config);
$consumer = new Consumer($this->kafkaConsumerConfig, function (ConsumeMessage $message) {
try{
$consumer = $message->getConsumer();
$kafkaMessage = json_decode($message->getValue(),true);
$consumer->ack($message); // 手动提交
app($kafkaMessage['consumer'])->{$kafkaMessage['method']}($kafkaMessage['params']);
}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)
{
SimpleLogs::writeLog([
'error' => $exception->getCode(),
'message' => $exception->getMessage()
], $errorType, 'error');
}
public function storeFailQueue($failQueueContent)
{
app(SysLogService::class)->addOperationLogs(
[
'error' => $exception->getCode(),
'message' => $exception->getMessage()
]
);
$repository = app(KafkaFailQueueRepository::class);
foreach($failQueueContent as $key => &$content){
if(is_array($content) || $content instanceof \ArrayObject){
$content = json_encode($content);
}
}
$repository->create($failQueueContent);
}
}
<?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\Enums\ResponseCodeEnum;
use App\Repositories\Models\Menus;
use App\Support\Traits\Helpers;
use App\Repositories\Contracts\MenusRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
class MenusService
{
use Helpers;
protected $menusRepository = null;
public function __construct(MenusRepository $menuRepository)
{
$this->menusRepository = $menuRepository;
}
/**
* 添加子菜单
* @param $request
* @return bool
*/
public function addSubMenu($request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
$menuModel = app(Menus::class);
$parentMenu = $menuModel->where('id',$params['parent_id'])->first();
if(!$parentMenu){
throw new \LogicException('上级菜单不存在!',500);
}
if('button' == $params['type']){
$permission = Permission::query()->where(['menu_id' => 0, 'sys_default' => 1,'guard_name' => config('auth.defaults.guard'), 'action' => $params['button_type']])->first();
if(!$permission){
throw new \LogicException('按钮动作不存在!',500);
}
}
$filterParams = [];
collect($this->menusRepository->rules['create'])->map(function($rule,$key) use ($params, &$filterParams){
if(isset($params[$key]) && !empty($params[$key])){
$filterParams[$key] = $params[$key];
} else{
$filterParams[$key] = '';
}
});
$filterParams['created_by'] = auth()->user()->id;
$filterParams['menu_icon'] = $params['icon'];
$filterParams['component'] = $params['component'];
$filterParams['status'] = intval($params['status']);
$filterParams = collect($filterParams)->map(function($value,$key) use ($params){
if($value == ''){
switch($key){
case 'menu_name' : $value = $params['name']; break;
case 'menu_path' : $value = $params['path']; break;
case 'menu_icon' : $value = $params['icon']; break;
case 'menu_type' : $value = $params['type']; break;
case 'is_show' : $value = 1; break;
case 'sys_default' : $value = 0; break;
}
}
return $value;
});
$result = $this->menusRepository->create($filterParams->toArray());
if($result){
$currentUri = $request->route()[1]['uri'];
if($currentUri){
$currentUri = str_replace('/','.',$currentUri);
}
$permission = [];
$permission['name'] = $result['menu_name'];
$permission['menu_id'] = $result['id'];
if(isset($params['type']) && !empty($params['type']) && 'button' == $params['type']){
if(Str::endsWith(strtolower((string) $request['name']), $params['button_type'])){
$permission['action'] = str_replace('_','.',$request['name']);
}else{
$permission['action'] = str_replace('_','.',$request['name']).'.'.$params['button_type'];
}
$permission['permission_type'] = 'button';
}else{
$permission['permission_type'] = 'menu';
$permission['action'] = str_replace('_','.',$request['name']).'.list';
}
$permission['sys_default'] = 0;
$permission['remark'] = $result['menu_name'].'的相关权限';
$permission['guard_name'] = config('auth.defaults.guard');
//增加对应的按钮权限
$permissionResult = Permission::create($permission);
// 如果是管理员,自动绑定赋予权限
if(auth()->user()->isSuperAdmin()){
if($permissionResult){
app(RoleAndPermissionsService::class)->assignRoleAndPermissionToUser($permissionResult, auth()->user());
}
}
}
return true;
}
/**
* 删除菜单
* @param $request
*/
public function deleteMenus($request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
$menuModel = app(Menus::class);
$menu_ids = explode(',',$params['ids']);
if(!$menus = $menuModel->whereIn('id',$menu_ids)->get()){
throw new \LogicException('选中的菜单不存在!',500);
}
//判断该菜单下面是否有其他子菜单
$parent_menus = $menuModel->whereIn('id',$menu_ids)->get();
if($parent_menus){
$notFatherMenus = [];
$checkedMenus = [];
collect($parent_menus)->map(function($menu) use (&$notFatherMenus, &$checkedMenus){
if(count($notFatherMenus) == 0){
$notFatherMenus[$menu['id']] = $menu;
}else{
if(isset($notFatherMenus[$menu['parent_id']])){
unset($notFatherMenus[$menu['parent_id']]);
$checkedMenus[] = $menu['parent_id'];
}else{
if(!in_array($menu['parent_id'],$checkedMenus)){
$notFatherMenus[$menu['id']] = $menu;
}
}
}
});
if(count($notFatherMenus) > 0){
if(count($menuModel->whereIn('parent_id',array_keys($notFatherMenus))->get()->toArray()) > 0 ){
throw new \LogicException('选中的菜单中有子菜单存在,无法删除该菜单。',500);
}
}
}
//判断选中的菜单是否已被赋予权限给到用户组
//查询该菜单对应的权限数据
$menuPermission = Permission::query()->whereIn('menu_id',$menu_ids)->get();
if($menuPermission){
$allRoles = Role::all();
if($allRoles){
$hasPermission = false;
collect($allRoles)->map(function($role) use ($menuPermission, &$hasPermission){
collect($menuPermission)->map(function($permission) use ($role, &$hasPermission){
if($role->hasPermissionTo($permission)){
$hasPermission = true ;
}
});
});
if($hasPermission){
throw new \LogicException('用户权限中已经包含该菜单权限,请先取消角色中该菜单的权限,在进行删除操作.',500);
}
//删除对应的菜单
collect($menus)->map(function($menu) use ($menuPermission){
$menu->delete();
//删除对应的菜单权限
collect($menuPermission)->map(function($permission){
$permission->delete();
});
});
}
}
}
/**
* 编辑菜单
* @param Request $request
* @return mixed
*/
public function editMenu(Request $request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
$menuModel = app(Menus::class);
$menu = $menuModel->where('id',$params['id'])->first();
if(!$menu){
throw new \LogicException('此菜单不存在!',500);
}
$parentMenu = $menuModel->where('id',$params['parent_id'])->first();
if(!$parentMenu && 'top' != $params['menu_type']){
throw new \LogicException('上级菜单不存在!',500);
}
if(!in_array($params['menu_type'],['top','page','button'])){
throw new \LogicException('菜单类型不正确!',500);
}
$params['menu_name'] = $params['name'];
$params['menu_path'] = $params['path'];
// 根据role规则重组 user
$updateMenus = [];
collect($this->menusRepository->rules['update'])->map(function($rule,$key) use ($params, &$updateMenus){
if($key != 'id'){
$updateMenus[$key] = $params[$key];
}
});
$updateMenus['menu_icon'] = $params['icon'];
// 处理action
//app(RoleAndPermissionsService::class)->checkRequestRolesPermissions($request);
if($params['menu_type'] == 'top'){
$updateMenus['component'] = '#';
}else{
$updateMenus['component'] = $params['component'];
}
$updateMenus['created_by'] = auth()->user()->id;
$result = $this->menusRepository->update($updateMenus,$params['id']);
if($result){
$permission = [];
$permission['name'] = $result['menu_name'];
$permission['menu_id'] = $result['id'];
if(isset($params['menu_type']) && !empty($params['menu_type']) && 'button' == $params['menu_type']){
if(Str::endsWith(strtolower((string) $request['name']), $params['button_type'])){
$permission['action'] = str_replace('_','.',$request['name']);
}else{
$permission['action'] = str_replace('_','.',$request['name']).'.'.$params['button_type'];
}
$permission['permission_type'] = 'button';
}else{
$permission['permission_type'] = 'menu';
$permission['action'] = str_replace('_','.',$request['name']).'.list';
}
$permission['sys_default'] = 0;
$permission['remark'] = $result['menu_name'].'的相关权限';
$permission['guard_name'] = config('auth.defaults.guard');
//增加对应的按钮权限
if($menuPermission = Permission::query()->where('menu_id',$result['id'])->first()){
$permissionResult = Permission::query()->updateOrCreate(['id' => $menuPermission->id],$permission);
}
// 如果是管理员,自动绑定赋予权限
if(auth()->user()->isSuperAdmin()){
if($permissionResult){
app(RoleAndPermissionsService::class)->assignRoleAndPermissionToUser($permissionResult, auth()->user());
}
}
}
return $result;
}
/**
* 获取所有菜单列表
* @return array
* @throws \Psr\Container\ContainerExceptionInterface
*
* @throws \Psr\Container\NotFoundExceptionInterface
*/
public function getAllMenus()
{
$menuModel = app(Menus::class);
$allMenus = $menuModel->get();
// key_name转换
$parent_id = [];
$menusList = collect($allMenus)->map(function($menu) use (&$parent_id){
$newMenu = [
'name' => $menu->menu_name,
'title' => $menu->title,
'path' => $menu->menu_path,
'icon' => $menu->menu_icon,
'expand' => true,
'checked' => false
];
if($menu->parent_id > 0 && $menu->menu_type != 'top'){
$parent_id[] = $menu->parent_id;
}
$menuArr = $menu->toArray();
unset($menuArr['menu_name']);
unset($menuArr['menu_path']);
unset($menuArr['menu_icon']);
return array_merge($newMenu,$menuArr);
});
$parentMenu = $menuModel->whereIn('id',$parent_id)->get();
$menusList = collect($menusList)->map(function($menu) use ($parentMenu){
$parent_id = $menu['parent_id'];
if($parent_id > 0){
$parentName = collect($parentMenu)->map(function($m) use (&$menu,$parent_id){
if($m->id == $parent_id){
$menu['parent_title'] = $m->title;
}
});
}
return $menu;
});
return $menusList->toArray();
}
/**
* 获取菜单结构树
* level : all (全部) top (只显示顶部) page (只显示2级,不包括button级)
* @param $menus
* @return false|mixed
*/
public function getMenusTree($menus, $level = 'all')
{
$treeMenus = [];
collect($menus)->map(function($menu) use (&$treeMenus, $level){
if($menu['parent_id'] == -1 && 'top' == $menu['menu_type']){
$treeMenus[$menu['id']] = $menu;
$treeMenus[$menu['id']]['level'] = 0;
}else{
if('top' == $level){
return ;
}elseif('page' == $level){
if('page' == $menu['menu_type']) {
if($menu['parent_id'] == 0) {
$treeMenus[$menu['id']] = $menu;
$treeMenus[$menu['id']]['level'] = 1;
}else{
$treeMenus = $this->getChildrenTree($treeMenus,$menu);
}
}
}else{
if($menu['parent_id'] == 0) {
$treeMenus[$menu['id']] = $menu;
$treeMenus[$menu['id']]['level'] = 1;
}else{
$treeMenus = $this->getChildrenTree($treeMenus,$menu);
}
}
}
});
return array_values($treeMenus);
}
/**
* 递归树形结构菜单
* @param $treeMenus
* @param $currMenu
* @return array
*/
private function getChildrenTree($treeMenus,$currMenu) : array
{
$returnTreeMenus = collect($treeMenus)->map(function($tMenus) use ($currMenu){
if(!isset($tMenus['children']) || empty($tMenus['children'])){
if($currMenu['parent_id'] == $tMenus['id']){
$currMenu['level'] = (int)$tMenus['level'] + 1;
$tMenus['children'][] = $currMenu;
}
} // 如果有children的话,进行递归循环
else{
if($currMenu['parent_id'] == $tMenus['id']){
$currMenu['level'] = (int)$tMenus['level'] + 1;
$tMenus['children'][] = $currMenu;
}else{
$tMenus['children'] = $this->getChildrenTree($tMenus['children'],$currMenu);
}
}
return $tMenus;
});
return $returnTreeMenus->toArray();
}
}
<?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
<?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\Models\Menus;
use App\Support\Traits\Helpers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Spatie\Permission\Exceptions\RoleDoesNotExist;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use App\Repositories\Contracts\MenusRepository;
use App\Repositories\Contracts\RolesRepository;
class RoleAndPermissionsService
{
use Helpers;
protected $user = null;
protected $menusRepository = null;
public function __construct(MenusRepository $menusRepository)
{
$this->menusRepository = $menusRepository;
}
/**
* 获取管理后台用户的所在的用户组
*/
public function getRolesToUser($user = null){
if($user == null){
$user = auth()->user();
}
$this->getAllPermissions($user);
$role = $user->roles;
return $role;
}
public function getUserPermissions(){
$role = $this->getAllPermissions(auth()->user());
return $role;
}
/**
* 获取用户所有权限
* @param $user
* @param bool $parseUserRole
* @return mixed
*/
protected function getAllPermissions($user, $parseUserRole = true)
{
$role = $user->getpermissionsviaroles();
if($parseUserRole){
$newRoles = collect($user['roles'])->map(function($role) {
$roleArray = $role->toArray();
unset($roleArray['pivot']);
unset($roleArray['guard_name']);
$newPermission = collect($roleArray['permissions'])->map(function ($permission) {
// 隐藏系统默认权限
if ($permission['menu_id'] > 0) {
unset($permission['pivot']);
unset($permission['guard_name']);
//$newPermission[] = $permission;
return $permission;
}
});
$roleArray['permissions'] = array_values(array_filter($newPermission->toArray()));
return $roleArray;
});
unset($user['roles']);
$user['roles'] = $newRoles->toArray();
//将权限赋予当前用户
auth()->setUser($user);
}
return $role;
}
/**
* 获取系统默认级别的按钮权限类型
* @return array|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
*/
public function getButtonDefaultPermission()
{
$allPermission = Permission::query()->where(['menu_id' => 0, 'sys_default' => 1,'guard_name' => config('auth.defaults.guard')])->get();
if($allPermission){
collect($allPermission)->map(function($permission){
$permission->title = $permission->name;
});
$allPermission = $this->formatKeysfromArray($allPermission);
}
return $allPermission;
}
/**
* 获取用户授权菜单列表
* @return array
*/
public function getUserRoleMenus()
{
$permissions = $this->getAllPermissions(auth()->user());
$menuIds = collect($permissions)->map(function($permission){
if($permission instanceof \Spatie\Permission\Models\Permission){
$permission = $permission->toArray();
}
return $permission['menu_id'];
});
$menuModel = app(Menus::class);
$menuList = $menuModel
->whereIn($menuModel->getKeyName(),$menuIds)
->where('status',1)->get()->toArray();
$menuList = collect($menuList)->map(function($menu){
$menu['showAlways'] = true;
return $menu;
});
return empty($menuList) || NULL ? [] : $menuList;
}
/**
* 同步指定权限给指定用户
* @param $permission
* @param $user
*/
public function assignRoleAndPermissionToUser($permission, $user)
{
$roles = $this->getRolesToUser($user);
if($roles == null){
throw new \LogicException('该用户没有所属用户组,请手动进行分组在分配权限!');
}
$roleArr = collect($roles)->map(function($role){
return $role['id'];
});
// 获取当前用户的组信息
$allRoles = Role::query()->whereIn( 'id' , $roleArr->toArray())->get();
if($allRoles){
collect($allRoles)->map(function($role) use ($permission,$user){
$role->givePermissionTo($permission);
$user->givePermissionTo($permission);
});
}
}
/**
* 获取所有角色并获取对应的所有权限(用于列表展示)
* @param $request
* @return array
*/
public function getAllRolesToPage($request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
if(!$params['page_size'] || $params['page_size'] == 0){
$params['page_size'] = 10;
}
$roles = app(RolesRepository::class)->paginate($params['page_size'],['id','name','is_default','remark','created_at','updated_at']);
if($roles){
$rolePermission = [];
$items = collect($roles->items())->map(function($role) use (&$rolePermission){
$permissions = $role->permissions->toArray();
$permissions = collect($permissions)->map(function($permission){
if($permission['sys_default'] == 1 && $permission['menu_id'] == 0){
unset($permission);
}else{
unset($permission['pivot']);
$permission['created_at'] = date('Y-m-d H:i:s',strtotime($permission['created_at']));
$permission['updated_at'] = date('Y-m-d H:i:s',strtotime($permission['updated_at']));
return $permission;
}
});
$rolePermission[$role->id] = array_values(array_filter($permissions->toArray()));
return $role;
});
$allItems = collect($items)->map(function($item) use ($rolePermission){
$itemArr = $item->toArray();
$itemArr['is_default'] = $itemArr['is_default'] == 1 ? true : false;
$itemArr['created_at'] = date('Y-m-d H:i:s',strtotime($itemArr['created_at']));
$itemArr['updated_at'] = date('Y-m-d H:i:s',strtotime($itemArr['updated_at']));
unset($itemArr['permissions']);
$itemArr['permissions'] = $rolePermission[$item['id']];
return $itemArr;
});
// 获取当前角色的所有权限
$returnRecord['data'] = $this->formatKeysfromArray($allItems);
$returnRecord['current_page'] = $roles->currentPage();
$returnRecord['total'] = $roles->total();
}
return $returnRecord;
}
/**
* 仅获取所有角色列表
* @param $request
* @return array
*/
public function getAllRolesList($request)
{
$roles = Role::all();
return $roles->toArray();
}
/**
* 保存角色
* @param $request
* @return bool
*/
public function saveRole($request){
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
try{
$role = Role::query()->where('name', $params['name'])->first();
if(!empty($role)) {
$role = $role->toArray();
}
if(!isset($params['id']) || empty($params['id'])){
if(!empty($role)){
throw new \LogicException('角色名称不能重复',500);
}
}else{
if(!empty($role) && $role['id'] != $params['id']){
throw new \LogicException('角色名称不能重复',500);
}
}
}catch(\Exception $exception){
if (!$exception instanceof RoleDoesNotExist){
throw $exception;
}
}
app(RolesRepository::class)->saveRole($params);
return true;
}
/**
* 分配权限给相应角色
* @param $request
* @return bool
*/
public function syncPermissionToRole($request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
//判断该角色是否存在
$role = Role::findById($params['role_id']);
if(!$role){
throw new \LogicException('角色不存在');
}
if(isset($params['perm_ids']) && !empty($params['perm_ids'])){
$permisson_ids = explode(',',$params['perm_ids']);
$permission = Permission::query()->whereIn('menu_id',$permisson_ids)
->where(['guard_name' => config('auth.defaults.guard'),'sys_default' => 0])->get();
if(count($permission) != count($permisson_ids)){
throw new \LogicException('部分权限不存在');
}
if(count($role->permissions->toArray()) > 0){
//先作废原先的权限
$role->revokePermissionTo($role->permissions);
}
$role->givePermissionTo($permission);
}else{
$role->revokePermissionTo($role->permissions);
}
return true;
}
/**
* 删除角色
* @param $request
*/
public function deleteRoleByIds($request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
//判断该角色是否存在
$roles = Role::query()->whereIn('id',explode(',',$params['ids']))->get();
if(!$roles){
throw new \LogicException('角色不存在');
}
collect($roles)->map(function($role){
$role->delete();
if(count($role->permissions->toArray()) > 0){
$role->revokePermissionTo($role->permissions);
}
});
}
/**
* 设置默认角色组
* @param $request
*/
public function setRoleDefault($request)
{
$params = $this->formatKeysfromArray($request->all(),'toUnderScore');
//判断该角色是否存在
$roles = Role::query()->whereIn('id',explode(',',$params['id']))->first();
if(!$roles){
throw new \LogicException('角色不存在');
}
$default = 0;
if($params['is_default'] == true) {
$default = 1;
}
try{
DB::beginTransaction();
$defaultRole = Role::query()->where('is_default',1)->first();
if($defaultRole){
$defaultRole->update([
'is_default' => 0
]);
}
$roles->update([
'id' => $params['id'],
'is_default' => $default
]);
DB::commit();
}
catch (\Exception $e) {
DB::rollBack();
}
}
}
......@@ -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,24 +32,22 @@ class BideApiService
* @param $product
* @return bool
*/
public function pushBatchUpdateProduct($product){
if(!$this->platformInfo){
throw new \LogicException('第三方平台信息无法获取!',500);
}
public function pushBatchUpdateProduct($product)
{
try{
$params = [];
$params['CASNumber'] = $this->mergeApiMetaData($product);
if($this->checkPlatformStatus()){
$params = [];
$params['CASNumber'] = $this->mergeApiMetaData($product);
$uri = $this->platformInfo['platform_url'].'/api/Product/GetStockPriceData_CN_RealBottles_Ten';
$response = $this->getPostClient($uri,$params,null,[
'Client_id' => $this->platformInfo['platform_params']['Client_id'],
'Client_secret' => $this->platformInfo['platform_params']['Client_secret']
],false);
$uri = $this->platformInfo['platform_url'].'/api/Product/GetStockPriceData_CN_RealBottles_Ten';
$response = $this->getPostClient($uri,$params,null,[
'Client_id' => $this->platformInfo['platform_params']['Client_id'],
'Client_secret' => $this->platformInfo['platform_params']['Client_secret']
],false);
return $this->apiResponse($response);
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,25 +32,21 @@ 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);
$params = [];
$params['CASNumber'] = $this->mergeApiMetaData($product);
$uri = $this->platformInfo['platform_url'].'/api/BJS/GetStockPriceDataThree';
$response = $this->getPostClient($uri,$params,null,[
'Client_id' => $this->platformInfo['platform_params']['Client_id'],
'Client_secret' => $this->platformInfo['platform_params']['Client_secret']
],false);
return $this->apiResponse($response);
$uri = $this->platformInfo['platform_url'].'/api/BJS/GetStockPriceDataThree';
$response = $this->getPostClient($uri,$params,null,[
'Client_id' => $this->platformInfo['platform_params']['Client_id'],
'Client_secret' => $this->platformInfo['platform_params']['Client_secret']
],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{
$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);
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,16 +35,17 @@ class WuxiApiService
*/
public function pushBatchUpdateProduct($product)
{
$this->__checkPlatform();
try{
$params = [];
$params['chemicalProducts'] = $this->mergeApiMetaData($product);
if($this->checkPlatformStatus()){
$params = [];
$params['chemicalProducts'] = $this->mergeApiMetaData($product);
$response = $this->getPostClient('https://api.uploadcatalog.com/api/v1/update',$params, [
$this->platformInfo['platform_params']['username'], $this->platformInfo['platform_params']['password']
]);
$response = $this->getPostClient('https://api.uploadcatalog.com/api/v1/update',$params, [
$this->platformInfo['platform_params']['username'], $this->platformInfo['platform_params']['password']
]);
return $this->apiResponse($response);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
}
......@@ -51,41 +53,58 @@ class WuxiApiService
public function backgroundLogin()
{
$this->__checkPlatform();
$response = $this->getPostClient('https://www.uploadcatalog.com/json_login',[
'username' => $this->platformInfo['platform_params']['username'],
'password' => $this->platformInfo['platform_params']['password']
],null,[
'cookie' => 'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN; JSESSIONID=B2A024B5414E017F114AE4BCD29A6055'
]);
return json_decode($response,true)['token'];
}
if($this->checkPlatformStatus()){
$response = $this->getPostClient('https://www.uploadcatalog.com/json_login',[
'username' => $this->platformInfo['platform_params']['username'],
'password' => $this->platformInfo['platform_params']['password']
],null,[
'cookie' => 'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN; JSESSIONID=B2A024B5414E017F114AE4BCD29A6055'
]);
private function __checkPlatform(){
if(!$this->platformInfo){
throw new \LogicException('第三方平台信息无法获取!',500);
return json_decode($response,true)['token'];
}
}
public function pushBatchUpdatePackages($packages,$token)
public function pushBatchUploadProducts($token)
{
$this->__checkPlatform();
try{
if($this->checkPlatformStatus()){
$params = [];
$params['company_id'] = '6789';
$params['product_type'] = 'CHAMICAL';
$params['companyId'] = '6789';
$params['type'] = 'PRODUCT_CHEMICAL';
$params['batchId'] = '7d686e0b-8a08-e9e9-7d1f-916c387dea08';
$params = array_merge($params,$packages);
$filePath = app(WuxiLabExport::class)->getSavePath('wuxiLab_package_2022_08_08_063609');
$params['file'] = fopen($filePath.'.csv','r');
$cookie = 'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN;Auth-Token='.$token.';';
$response = $this->getPostClient('https://www.uploadcatalog.com/package/specification/save',$params,null, [
$response = $this->getPostClient('https://www.uploadcatalog.com/excel/chemical/upload',$params,null,[
'cookie' => $cookie
]);
return $this->apiResponse($response);
return json_decode($response,true)['token'];
}
}
public function pushBatchUpdatePackages($packages,$token)
{
try{
if($this->checkPlatformStatus()){
$params = [];
$params['company_id'] = '6789';
$params['product_type'] = 'CHAMICAL';
$params = array_merge($params,$packages);
$cookie = 'org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=zh_CN;Auth-Token='.$token.';';
$response = $this->getPostClient('https://www.uploadcatalog.com/package/specification/save',$params,null, [
'cookie' => $cookie
]);
return $this->apiResponse($response);
}
}catch(\Exception $e){
return $this->requestError($e);
}
......
<?php
namespace App\Services\ThirdPlatform\Api;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\ThirdPlatform\PlatformAbstractService;
use App\Support\Facades\SimpleLogs;
use App\Support\Traits\HttpClientHelpers;
class ZhenkhApiService extends PlatformAbstractService
{
use HttpClientHelpers;
public function __construct(ThirdApiPlatformRepository $thirdApiPlatformRepository)
{
parent::__construct($thirdApiPlatformRepository);
$this->setPlatformName('zkh');
$this->getPlatformInfo();
}
/**
* 获取震坤行平台token
* @return bool
* @throws \Exception
*/
public function getToken()
{
try{
if($this->checkPlatformStatus()){
$tokenParams = [
'accessId' => $this->platformInfo['platform_params']['prod_accessId'],
'accessSecret' => $this->platformInfo['platform_params']['prod_accessSecret']
];
if(env('API_DEBUG')){
$tokenParams = [
'accessId' => $this->platformInfo['platform_params']['test_accessId'],
'accessSecret' => $this->platformInfo['platform_params']['test_accessSecret']
];
}
$response = $this->getPostClient($this->getPlatformApiUrl().'/openApi/v1/token',$tokenParams);
$token = $this->apiResponse($response);
return $token['data'];
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
/**
* 获取震坤行 供应商商品数据
* @param $pageNo
* @param $pageSize
* @param $token
*/
public function getUpdateGoods($pageNo,$pageSize,$token)
{
try{
if($this->checkPlatformStatus()){
$response = $this->clientRequest('get',
$this->getPlatformApiUrl().'/openApi/v1/common/goodPageList?pageNo='.$pageNo.'&pageSize='.$pageSize,
[
'headers' => [
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]
]
);
$goodsList = $this->apiResponse($response);
if($goodsList){
return [
'list' => $goodsList['data'],
'total_page' => $goodsList['totalPage']
];
}
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
public function getUpdateOrders($params,$token)
{
try{
if($this->checkPlatformStatus()){
$response = $this->getPostClient(
$this->getPlatformApiUrl().'/openPoApi/v1/purchaseOrder',
[
'updateTimeBegin' => $params['start_time'],
'updateTimeEnd' => $params['end_time'],
'pageSize' => $params['page_size'],
'pageNo' => $params['page_no'],
],null,
[
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]
);
$orderList = $this->apiResponse($response);
if($orderList){
return [
'list' => $orderList['data'],
'total_page' => $orderList['data']['totalPages']
];
}
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
/**
* @获取订单详情
* @param $orderId
* @param $token
* @return mixed|void
*/
public function getUpdateOrdersDetail($orderId,$token)
{
try{
if($this->checkPlatformStatus()){
$response = $this->clientRequest('get',
$this->getPlatformApiUrl().'/openPoApi/v1/purchaseOrder/detail?purchaseOrderId='.$orderId,
[
'headers' => [
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]
]
);
$orderDetail = $this->apiResponse($response);
if($orderDetail){
return $orderDetail['data'];
}
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
/**
* @获取物流信息
* @param $token
* @return mixed|void
*/
public function expressLogistics($token)
{
try{
if($this->checkPlatformStatus()){
$response = $this->clientRequest('get',
$this->getPlatformApiUrl().'/openSupplierApi/v1/expressLogistics',
[
'headers' => [
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]
]
);
$orderDetail = $this->apiResponse($response);
if($orderDetail){
return $orderDetail['data'];
}
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
public function sendDeliveryOrder($orderId,$token)
{
try{
if($this->checkPlatformStatus()){
$response = $this->clientRequest('get',
$this->getPlatformApiUrl().'/openPoApi/v1/purchaseOrder/getDeliveryOrderPart?purchaseOrderId='.$orderId,
[
'headers' => [
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]
]
);
$deliveryOrderDetail = $this->apiResponse($response);
if($deliveryOrderDetail){
return $deliveryOrderDetail['data'];
}
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
/**
* @发货确认
*/
public function ackDeliveryOrder($order, $deliveryOrder, $token)
{
try{
if($this->checkPlatformStatus()){
$deliveryParams = [];
$deliveryParams['deliveryTime'] = date('Y-m-d',time());
$deliveryParams['deliveryWay'] = 1;
$deliveryParams['logisticsId'] = 1;
$deliveryParams['logisticsName'] = 1;
$deliveryParams['logisticsCode'] = 1;
$deliveryParams['signReceiptUrl'] = '';
$deliveryParams['itemList'] = [];
$response = $this->getPostClient($this->getPlatformApiUrl().'/openPoApi/v1/purchaseOrder/ackDeliveryOrderPart',
$deliveryParams,null,
[
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]);
return $this->apiResponse($response);
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
/**
* @param $params
* @return bool|void
* @throws \Exception
*/
public function updateReportProductPrice($params, $token)
{
if(empty($params)){
return false;
}
try{
if($this->checkPlatformStatus()){
$response = $this->getPostClient($this->getPlatformApiUrl().'/openApi/v1/common/report/price',
[[
'customPrice' => $params['price'],
'priceUnit' => $params['price_unit'],
'zkhSku' => $params['sku']
]],null,
[
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]);
return $this->apiResponse($response);
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
/**
* @param $params
* @param $token
* @return bool|mixed|void
*/
public function updateReportProductStock($params, $token)
{
if(empty($params)){
return false;
}
try{
if($this->checkPlatformStatus()){
$response = $this->getPostClient($this->getPlatformApiUrl().'/openApi/v2/common/report/stock',
[[
'supplierWarehouseName' => $params['warehouse'],
'warehouseNameList' => $params['address'],
'qty' => intval($params['qty']),
'zkhSku' => $params['sku']
]],null,
[
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]);
return $this->apiResponse($response);
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
public function getDeliveryOrder($token)
{
}
public function getDeliveryOrderDetailForPDF($deliveryCode, $token)
{
try{
if($this->checkPlatformStatus()){
$response = $this->clientRequest('get',
$this->getPlatformApiUrl().'/openPoApi/v1/purchaseOrder/getDeliveryOrderDetailForPDF?deliveryCode='.$deliveryCode,
[
'headers' => [
'honeycombToken' => $token,
'Content-Type' => 'application/json;charset=UTF-8'
]
]
);
$delivery = $this->apiResponse($response);
if($delivery){
return $delivery['data'];
}
}
}catch(\Exception $exception){
$this->requestError($exception);
}
}
protected function apiResponse($response)
{
$decodeResponse = json_decode($response,true);
if($decodeResponse){
if($decodeResponse['code'] == '200' && $decodeResponse['isSuccess'] == true){
return $decodeResponse['data'] == NULL ? true : $decodeResponse;
}
}
return false;
}
protected function requestError($response)
{
SimpleLogs::writeLog($response->getMessage(), 'api error', 'error');
throw $response;
}
private function getPlatformApiUrl()
{
if(env('API_DEBUG')){
return $this->platformInfo['platform_params']['test_platform_url'];
}
return $this->platformInfo['platform_url'];
}
}
......@@ -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;
if($this->platformName == ''){
return null;
}
return $status;
}
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;
}
return $this->platformInfo;
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(
......
<?php
namespace App\Services;
use App\Repositories\Contracts\ThirdApiPlatformRepository;
use App\Services\Kafka\KafkaService;
use App\Services\ThirdPlatform\Api\ZhenkhApiService;
use App\Support\Facades\SimpleKafka;
use App\Support\Facades\SimpleLogs;
class ZhenKhService
{
public function __construct()
{
$this->apiService = (new ZhenkhApiService(app(ThirdApiPlatformRepository::class)));
$this->rhawnService = app(RhawnChemicalsService::class);
$this->rhawnOrderService = app(RhawnOrdersService::class);
}
/**
* @上报商品的价格及库存
* @param $params
* @return false|void
*/
public function consumerUpdateReportPriceAndStock($params)
{
if(!isset($params['goods']) || empty($params['goods'])){
return false;
}
$goods = $params['goods'];
try{
$product = $this->rhawnService->getRawProductsThroughPid($goods['zg_r_pid']);
if($product){
$this->apiService->updateReportProductPrice([
'price' => round(bcmul($product->p_price,0.5,2),1),
'price_unit' => $goods['zg_unit'],
'sku' => $goods['zg_sku']
],$this->getToken());
$this->apiService->updateReportProductStock([
'warehouse' => '上海货仓',
'address' => ['0' => $goods['zg_addr']],
'qty' => $product->p_stock,
'sku' => $goods['zg_sku']
],$this->getToken());
}
}catch (\Throwable $exception) {
$this->apiService->throwableAfter([
'platform_name' => $this->apiService->getPlatformInfo('platform_name'),
'queue_params' => $goods,
'fail_content' => $exception->getMessage(),
'queue_reset' => time() + 86400 * 10
]);
}
}
/**
* @更新供应商商品
* @throws \Throwable
*/
public function getUpdateSupplierGoods()
{
try{
$page = 1;
$sendContent = [];
while(true){
$pageSize = $this->apiService->getPlatformInfo()['platform_params']['page_size'];
$goodsList = $this->apiService->getUpdateGoods($page,$pageSize,$this->getToken());
if($goodsList && count($goodsList['list']) > 0){
$sendContent = [
'params' => ['goods' => $goodsList['list']],
'consumer' => __CLASS__,
'method' => 'consumerBatchUpdateGoodsList'
];
SimpleKafka::produerSend($sendContent);
}
$page ++;
if($page > $goodsList['total_page']){
break;
}
}
}catch(\Throwable $exception){
$this->apiService->throwableAfter([
'platform_name' => $this->apiService->getPlatformInfo('platform_name'),
'queue_params' => $sendContent,
'fail_content' => $exception->getMessage(),
'queue_reset' => time() + 86400 * 10
]);
throw $exception;
}
}
/**
* @获取订单列表
* @throws \Throwable
*/
public function getUpdateSupplierOrders()
{
try{
$page = 1;
$sendContent = [];
$postParams = [
'start_time' => date('Y-m-d H:i:s',(time() - (86400 * 2))),
'end_time' => date('Y-m-d H:i:s'),
'page_size' => 0,
'page_no' => 0,
];
while(true){
$pageSize = $this->apiService->getPlatformInfo()['platform_params']['page_size'];
$postParams['page_size'] = $pageSize;
$postParams['page_no'] = $page;
$orderList = $this->apiService->getUpdateOrders($postParams,$this->getToken());
if($orderList && count($orderList['list']) > 0){
foreach($orderList['list']['data'] as $order){
SimpleKafka::produerSend([
'params' => ['orders' => $order],
'consumer' => __CLASS__,
'method' => 'consumerBatchUpdateOrdersList'
]);
}
}
exit;
$page ++;
if($page > $orderList['total_page']){
break;
}
}
}catch(\Throwable $exception){
$this->apiService->throwableAfter([
'platform_name' => $this->apiService->getPlatformInfo('platform_name'),
'queue_params' => $sendContent,
'fail_content' => $exception->getMessage(),
'queue_reset' => time() + 86400 * 10
]);
throw $exception;
}
}
/**
* 消费批量更新商品
* @param $params
*/
public function consumerBatchUpdateGoodsList($params)
{
if(!isset($params['goods']) || empty($params['goods'])){
return false;
}
foreach($params['goods'] as $goods) {
try {
$result = $this->rhawnService->updateZhenkhGoods($goods);
if(!is_null($result)){
//更新商品的价格和库存
SimpleKafka::produerSend([
'params' => ['goods' => $result],
'consumer' => __CLASS__,
'method' => 'consumerUpdateReportPriceAndStock'
]);
}
} catch (\Throwable $exception) {
$this->apiService->throwableAfter([
'platform_name' => $this->apiService->getPlatformInfo('platform_name'),
'queue_params' => $goods,
'fail_content' => $exception->getMessage(),
'queue_reset' => time() + 86400 * 10
]);
}
}
}
/**
* @更新订单信息
* @param $params
* @return false|void
*/
public function consumerBatchUpdateOrdersList($params)
{
if(!isset($params['orders']) || empty($params['orders'])){
return false;
}
$order = $params['orders'];
try {
//if($order['orderStatus'] == 0){
$orderDetail = $this->apiService->getUpdateOrdersDetail($order['purchaseOrderId'],$this->getToken());
if($orderDetail){
$result = $this->rhawnOrderService->updateZhenkhOrders($order,$orderDetail);
}
//}
} catch (\Throwable $exception) {
$this->apiService->throwableAfter([
'platform_name' => $this->apiService->getPlatformInfo('platform_name'),
'queue_params' => $order,
'fail_content' => $exception->getMessage(),
'queue_reset' => time() + 86400 * 10
]);
}
}
/**
* @ 订单发货
* @param null $deliveryId
*/
public function sendDeliveryOrder($deliveryId)
{
try{
$order = $this->rhawnOrderService->getSorderDeliveryDetail($deliveryId);
$expressArray = $this->apiService->getPlatformDataEntries('zkh_order_express','data_values');
if(empty($expressArray)){
$expressList = $this->apiService->expressLogistics($this->getToken());
if($expressList){
foreach($expressList as $express){
$tempExpress = [];
$tempExpress['id'] = $express['id'];
$tempExpress['expressCode'] = $express['expressCode'];
$tempExpress['expressName'] = $express['expressName'];
$tempExpress['status'] = $express['status'];
$tempExpress['logisticsLinkType'] = $express['logisticsLinkType'];
$expressArray[] = $tempExpress;
}
$this->apiService->storePlatformDataEntries('zkh_order_express',$expressArray);
}
}
//$deliveryOrderPost = [];
//$deliveryOrderPost['deliveryTime']
//获取发货单的详情
$deliveryOrder = $this->apiService->sendDeliveryOrder($orderNo,$this->getToken());
//确认发货
$this->apiService->ackDeliveryOrder($order,$deliveryOrder,$this->getToken());
}catch(\Throwable $exception){
SimpleLogs::writeLog($exception->getMessage(),'sendDeliveryOrder', 'error');
}
}
/**
* @获取订单送货单pdf
* @param $deliveryCode
* @return mixed|void
*/
public function getDeliveryOrderPdf($deliveryCode)
{
$pdf = $this->apiService->getPlatformDataEntries('zkh_order_delivery_pdf','data_values');
if(!$pdf || empty($pdf)){
$deliveryInfo = $this->apiService->getDeliveryOrderDetailForPDF($deliveryCode,$this->getToken());
if($deliveryInfo){
$this->apiService->storePlatformDataEntries('zkh_order_delivery_pdf',['pdf' => $deliveryInfo]);
return $deliveryInfo;
}
}
return $pdf['pdf'];
}
/**
* @ 获取api token
* @return false|mixed
*/
public function getToken(){
try{
$token = $this->apiService->getPlatformDataEntries('zkh_api_token','data_values');
if(empty($token)){
$apiToken = $this->apiService->getToken();
if($apiToken){
$apiToken['currentTime'] = time();
$this->apiService->storePlatformDataEntries('zkh_api_token',$apiToken);
return $apiToken['token'];
}
}else{
//超过有效期,重新请求获取
if(time() - intval($token['currentTime']) > $token['tokenTtl']){
$apiToken = $this->apiService->getToken();
if($apiToken){
$apiToken['currentTime'] = time();
$this->apiService->storePlatformDataEntries('zkh_api_token',$apiToken);
return $apiToken['token'];
}
}
return $token['token'];
}
}catch(\Exception $exception){
SimpleLogs::writeLog($exception->getMessage(), 'token error', 'error');
return false;
}
}
}
<?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;
}
}
......@@ -3,45 +3,156 @@
namespace App\Support\Traits;
use App\Services\SysLogService;
use Illuminate\Support\Str;
use App\Support\Facades\SimpleLogs;
trait HttpClientHelpers
{
protected function getPostClient($uri, $paramsBody, $auth = null, $header = null, $json = true)
protected function getDefaultOptions()
{
$client = app(\GuzzleHttp\Client::class);
$options = [];
$options['headers']['User-Agent'] = $this->randomUserAgent();
$options['debug'] = env('API_DEBUG');
return $options;
}
protected function getPostClient($uri, $paramsBody = [], $auth = null, $header = null, $multipart = null, $json = true)
{
$options = [];
if($json) {
$options['headers'] = [
'Content-Type'=> 'application/json;charset=UTF-8',
];
$options['json'] = $paramsBody;
}
else{
$options['form_params'] = $paramsBody;
}
if(!is_null($multipart)){
$options['multipart'] = [
'name' => 'file',
'contents' => $multipart
];
}
if($auth && is_array($auth)){
$options['auth'] = $auth;
}
$options['headers']['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_16_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36';
if(!is_null($header)){
$options['headers'] = array_merge($options['headers'],$header);
}
$options['debug'] = env('API_DEBUG');
return $this->clientRequest('post', $uri, $options);
}
$response = $client->request('post',$uri,$options);
protected function clientRequest($requestType, $uri,$options)
{
$requestOptions = $this->getDefaultOptions();
$requestOptions = array_merge_recursive($requestOptions, $options);
$client = app(\GuzzleHttp\Client::class);
$response = $client->request($requestType,$uri,$requestOptions);
$responseContent = $response->getBody()->getContents();
app(SysLogService::class)->addApiLogs($responseContent);
SimpleLogs::writeLog($responseContent, 'api_response');
return $responseContent;
}
protected function randomUserAgent()
{
$userAgents = [
"Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
"NOKIA5700/ UCWEB7.0.2.37/28/999",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2 ",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
"Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
"UCWEB7.0.2.37/28/999",
"Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (Androdi; Linux armv7l; rv:5.0) Gecko/ Firefox/5.0 fennec/5.0",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; 360SE)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16",
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36",
"Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0) ",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
"Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",
"Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0",
"Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)",
"Opera/8.0 (Windows NT 5.1; U; en)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)",
":Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
"Openwave/ UCWEB7.0.2.37/28/999",
"Opera/9.80 (Android 2.3.4; Linux; Opera mobi/adr-1107051709; U; zh-cn) Presto/2.8.149 Version/11.10",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
"Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
];
return $userAgents[rand(0,count($userAgents) - 1)];
}
}
<?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