smart-uber / core
Requires
- php: >=5.6.4 || ^7.0
- illuminate/config: ~5.4
- illuminate/database: ~5.4.0
- illuminate/support: ~5.4.0
Requires (Dev)
- mockery/mockery: ^0.9.4
- orchestra/database: ~3.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~5.7
This package is not auto-updated.
Last update: 2024-09-20 20:10:59 UTC
README
假设我们有一个客户,他想买一块铁,他会去五金店买这块铁,然后五金店会告诉仓库拿一些铁,或者五金店可以去找供应商,如果铁缺货
我们这里有四个部门
分支 => 假设这是客户,就像有人在找一块铁
公司 => 这个部门将帮助客户更容易地找到他们想要的,就像五金店的老板
供应商 => 这与仓库人员类似,他们可以提供客户想要的商品,如果铁缺货,他们会寻找其他仓库,我们也可以称之为铁供应商
成员 => 这是客户想要的东西
这个包的主要目的是让我们更容易寻求支援,比如找出租车、工人、铁等。这个包将帮助我们更容易地整合公司和供应商部门。
安装
使用 composer 安装最新版本:
$ composer require smart-uber/core
接下来,将您的新供应商添加到 config/app.php 中的 providers 数组中
'providers' => [
// ...
SmartUber\Core\Providers\CoreServiceProvider::class,
// ...
],
别忘了发布我们的配置,在终端中输入 php artisan vendor:publish --tag=core-config 命令
现在您可以在您的应用程序中开始使用 Smart uber 了。
用法
分支
在分支部门,您想开立采购单并告诉公司您需要支援,使用 openRequest 方法
$company = new Company();
$branch = new Branch();
您需要先将分支与公司关联起来
$branch->company()->associate($company);
$requisition = $branch->openRequest('Branch Requisition', 'This is my first requisition', '2017-03-13', '2017-03-20');
第一个参数是主题,第二个参数是描述,第三个参数是开始日期,第四个参数是结束日期
公司
分支开立采购单后,公司可以使用 postRequest 方法从分支发布采购单
发布采购单时,公司将根据公司的总供应商自动生成 providerRequisition 模型。
在此之前,如果您没有任何 provider 模型的实例,我们需要创建一些供应商并将其与公司关联
$company = new Company();
$provider = new Provider();
$user = new User();
$provider->company()->associate($company);
$provider->user()->associate($user);
$company->save();
$provider->save();
$user->save();
$requisition = $company->postRequest($requisition, '2017-03-21', '50.000', '100.000', RateType::HOURLY); // posting the branches requisition
第二个参数是招聘日期,第三个参数是最低价格,第四个参数是最高价格,第五个参数是费率类型。您还可以设置费率类型,例如 HOURLY(按小时)、WEEKLY(每周)、MONTHLY(每月)。
如果您不想使用分支的采购单,您可以在公司模型中使用 openRequest 方法打开自己的采购单
$company->openRequest($branch, 'Company Requisition', 'This is my first requisition', '2017-03-13', '2017-03-20');
Company 需要一个 Branch 模型来开立采购单,并且 Company 还可以使用 closeRequest 方法关闭采购单
$company->closeRequest($requisition);
公司发布采购单并重新发布给供应商后,当然会有申请人,申请人也可以被公司接受或拒绝。然后我们可以使用 acceptApplicant 和 rejectApplicant 方法,参数将接收一个 Applicant 模型的实例
供应商
在供应商模型中,我们有两种不同的供应商,例如外部供应商和内部供应商。外部供应商如公司拥有的供应商,而内部供应商不是公司拥有的
我们还可以检查供应商是否是内部供应商,我们可以使用 isInternal 方法
$provider->isInternal(); // return boolean
然后,在该公司发布需求后,供应商将收到一份公司需求报价,供应商可以选择接受或拒绝,您可以使用acceptCompanyRequisition、rejectCompanyRequisition,您也可以使用cancelCompanyRequisition方法取消需求。
分支提出需求后,公司将通过通知供应商来帮助他们。
假设一个供应商有许多成员,供应商是出租车经理,成员是出租车司机,所以在这里,出租车经理将告诉成员公司需要增援,如果成员感兴趣,他们将接受需求,所以我们将使用openTender方法。
在此之前,如果您还没有成员模型的实例,我们需要创建一个成员并将其与供应商关联。
$member = new Member();
$user = new User();
$member->provider()->associate($provider);
$member->save();
$tender = $provider->openTender($requisition, RateType::HOURLY, 100.000, RateType::HOURLY); //Return tender
Provider需要Requisition模型的实例来开设投标,第二个参数是费率类型,第三个参数是加价价格,第四个参数是加价费率类型。费率类型和加价费率类型是类似的东西,您也可以将其设置为WEEKLY或MONTHLY。
供应商也可以关闭和取消投标,我们可以使用cancelTender和closeTender方法,我们刚才提到公司可以接受和拒绝申请,供应商也可以这样做,但在这里,供应商需要在公司筛选申请之前筛选申请人。
我们可以使用acceptApplicant和rejectApplicant,参数将接收申请人模型的实例。
默认情况下,全局配置供应商auto_accept设置为false,如果您不希望供应商逐个接受或拒绝申请,可以将它设置为true,现在当申请人到来时,供应商总是自动接受。
成员
所以刚才我们讨论的成员是可以提供增援的人,成员将看到所有发布的投标,但如果成员对投标感兴趣,他们也可以使用applyTender方法申请投标。
$applicants = $member->applyTender($tender); // return Applicant model
这将生成一个Applicant模型。
成员也可以取消申请,我们可以使用cancelApplication方法,但有时您需要从上次申请投标时获取申请人,我们可以使用applicant方法。
$member->applicant($tender); // return applicant model
配置
配置被设计得尽可能灵活。您可以设置所有Eloquent模型的默认值,然后为单个模型覆盖这些设置。
默认情况下,全局配置可以在app/config/core_config.php文件中设置。这里是一个配置示例,显示了所有默认设置。
return [
'payment' => SmartUber\Core\Payment::class,
'match_maker' => SmartUber\Core\MatchMaker::class,
'auto_accept' => false,
'auto_push_notification' => false
];
支付
当然,并非所有项目都有相同的支付系统,一些项目需要不同的支付系统,基本上这个包使用全局支付,如果您想覆盖为自己的支付系统,您可以在Config/core_config.php的支付属性中覆盖配置。
如何调用支付方法?
我们可以使用公司模型中的makePayment方法。
$company->makePayment();
这将根据您的配置调用您的支付系统。
match_maker
有时我们不想让所有投标都可以被成员看到,也不想让所有成员都可以看到投标,也不希望所有成员都应该收到通知,默认情况下,我们有一个全局的match_maker模型通知所有成员。
我们可以通过特定方式通知某些成员,例如,供应商只想通知所有性别为男性的成员。因为匹配标准有很多,您也可以尝试使用您的match_maker模型单独覆盖我们的全局match_maker。
auto_accept
有时我们不想逐个接受所有成员,默认配置中自动接受设置为false,我们可以将其设置为true,提供商将始终自动接受所有成员,而无需逐个接受。
自动推送通知
当你发布招标时,你需要通知所有成员,公司有一个需求。如果此选项设置为true,我们不需要手动将通知推送给成员,或者如果设置为false,你可能需要使用pushNotification方法手动通知所有成员。
$provider->pushNotification($tender);// Will notify to all member were owned by this provider