|
@@ -6,8 +6,11 @@ namespace SixShop\WechatPay\Entity;
|
|
|
use SixShop\Core\Entity\BaseEntity;
|
|
use SixShop\Core\Entity\BaseEntity;
|
|
|
use SixShop\WechatPay\Enum\TransferBillStatusEnum;
|
|
use SixShop\WechatPay\Enum\TransferBillStatusEnum;
|
|
|
use SixShop\WechatPay\Event\TransferBillFailedEvent;
|
|
use SixShop\WechatPay\Event\TransferBillFailedEvent;
|
|
|
|
|
+use SixShop\WechatPay\Event\TrasferSceneReportEvent;
|
|
|
|
|
+use SixShop\WechatPay\Trait\ApiTrait;
|
|
|
use think\facade\Db;
|
|
use think\facade\Db;
|
|
|
use think\facade\Event;
|
|
use think\facade\Event;
|
|
|
|
|
+use think\Model;
|
|
|
use think\Paginator;
|
|
use think\Paginator;
|
|
|
use function SixShop\Core\throw_logic_exception;
|
|
use function SixShop\Core\throw_logic_exception;
|
|
|
|
|
|
|
@@ -16,6 +19,7 @@ use function SixShop\Core\throw_logic_exception;
|
|
|
*/
|
|
*/
|
|
|
class WechatpayTransferBillEntity extends BaseEntity
|
|
class WechatpayTransferBillEntity extends BaseEntity
|
|
|
{
|
|
{
|
|
|
|
|
+ use ApiTrait;
|
|
|
public function getTransferBillList(array $params, array $page): Paginator
|
|
public function getTransferBillList(array $params, array $page): Paginator
|
|
|
{
|
|
{
|
|
|
$query = $this->withSearch(['state', 'out_bill_no'], $params);
|
|
$query = $this->withSearch(['state', 'out_bill_no'], $params);
|
|
@@ -32,12 +36,41 @@ class WechatpayTransferBillEntity extends BaseEntity
|
|
|
|
|
|
|
|
public function refreshTransferBill(int $id): array
|
|
public function refreshTransferBill(int $id): array
|
|
|
{
|
|
{
|
|
|
- // todo: 刷新转账单状态
|
|
|
|
|
|
|
+ // TODO 刷新转账单状态
|
|
|
return $this->find($id)->toArray();
|
|
return $this->find($id)->toArray();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function approveTransferBill(int $id): array
|
|
|
|
|
|
|
+ public function approveTransferBill(int $id): self
|
|
|
{
|
|
{
|
|
|
|
|
+ $transferBill = $this->findOrEmpty($id);
|
|
|
|
|
+ if ($transferBill->isEmpty()) {
|
|
|
|
|
+ throw new Exception('提现单不存在');
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($transferBill->state !== TransferBillStatusEnum::APPLYING) {
|
|
|
|
|
+ throw_logic_exception('非法操作');
|
|
|
|
|
+ }
|
|
|
|
|
+ // 转账场景报备信息
|
|
|
|
|
+ $event = new TrasferSceneReportEvent($transferBill);
|
|
|
|
|
+ Event::trigger($event);
|
|
|
|
|
+ $result = $this->tranceferBill(
|
|
|
|
|
+ outBillNo: $transferBill->out_bill_no,
|
|
|
|
|
+ transferSceneId:$event->getTransferSceneId(),
|
|
|
|
|
+ openid: $transferBill->openid,
|
|
|
|
|
+ transferAmount: $transferBill->transfer_amount,
|
|
|
|
|
+ transferRemark: $transferBill->transfer_remark,
|
|
|
|
|
+ transferScenceReportInfos: $event->getTransferSceneReportInfos(),
|
|
|
|
|
+ userName: $transferBill->user_name,
|
|
|
|
|
+ userRecvPerception: $event->getUserRecvPerception(),
|
|
|
|
|
+ );
|
|
|
|
|
+ $transferBill->transfer_scene_id = $event->getTransferSceneId();
|
|
|
|
|
+ $transferBill->user_recv_perception = $event->getUserRecvPerception();
|
|
|
|
|
+ $transferBill->transfer_bill_no = $result->transfer_bill_no;
|
|
|
|
|
+ $datetime = new \DateTime($result->create_time);
|
|
|
|
|
+ $transferBill->accept_time = $datetime->format('Y-m-d H:i:s');
|
|
|
|
|
+ $transferBill->state = $result->state;
|
|
|
|
|
+ $transferBill->package_info = $result->package_info;
|
|
|
|
|
+ $transferBill->save();
|
|
|
|
|
+ return $transferBill;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function rejectTransferBill(int $id, string $failReason): self
|
|
public function rejectTransferBill(int $id, string $failReason): self
|