new-admin-api/app/common/repositories/marketing/AgentApplyRepository.php

129 lines
4.2 KiB
PHP

<?php
namespace app\common\repositories\marketing;
use app\common\dao\marketing\AgentApplyDao;
use app\common\repositories\BaseRepository;
use app\common\repositories\store\order\StoreOrderCreateRepository;
use app\common\repositories\store\order\StoreOrderRepository;
use crmeb\services\LockService;
use think\facade\Db;
class AgentApplyRepository extends BaseRepository{
protected $dao;
public function __construct(AgentApplyDao $dao){
$this->dao = $dao;
}
/**
* Common: 公共查询模型
* Author: wu-hui
* Time: 2024/02/01 14:56
* @param $search
* @return \app\common\model\marketing\AgentApply
*/
public function getSearchModel($search){
return $this->dao->searchList($search);
}
// 提交申请信息(同步生成订单)
public function editApplyInfo($params){
return Db::transaction(function() use ($params){
// 生成申请信息
$applyInfoKeys = array_flip((array)[
"uid",
"pid",
"agent_type",
"contact_name",
"contact_phone",
"province_id",
"city_id",
"area_id",
"street_id",
"address",
"mer_name",
"mer_class_id",
"mer_type_id",
"mer_images"
]);
$applyInfo = array_intersect_key($params['data'], $applyInfoKeys);
// 支付信息
$payInfo = array_intersect_key($params['data'],array_flip((array)["pay_type","return_url"]));
$payResult = [];
// 根据操作类型进行对应的处理
if($params['agentApplyId'] > 0){
// 编辑
debug("开发中......");
return '成功';
}
else{
// 添加 是否需要支付
$payMoney = 0;// 默认 无需支付
$config = app()->make(AgentRepository::class)->getConfig();
switch ((int)$applyInfo['agent_type']) {
case 2: $payMoney = $config['province_money'] ?? 0;break;
case 3: $payMoney = $config['field_staff_money'] ?? 0;break;
case 4: $payMoney = $config['internal_staff_money'] ?? 0;break;
case 5: $payMoney = $config['operator_money'] ?? 0;break;
case 6: $payMoney = $config['partner_money'] ?? 0;break;
case 7: $payMoney = $config['mer_money'] ?? 0;break;
case 8: $payMoney = $config['delivery_money'] ?? 0;break;
}
// 判断:是否需要支付 需要支付生成订单并且获取支付信息
$orderId = 0;// 默认 无需支付、无订单信息
if((float)$payMoney > 0){
$userInfo = $params['user_info'] ?? [];
$payInfo['money'] = (float)$payMoney;
// 发起支付
$groupOrder = app()
->make(LockService::class)
->exec('online_order.create',function() use ($payInfo,$userInfo){
$payType = array_search($payInfo['pay_type'],StoreOrderRepository::PAY_TYPE);
return app()
->make(StoreOrderCreateRepository::class)
->onlinePayment($payType,$payInfo,$userInfo, 32);
});
$payResult = app()
->make(StoreOrderRepository::class)
->pay($payInfo['pay_type'],$userInfo,$groupOrder,$payInfo['return_url'],$params['is_app']);
// 子订单只存在一个 直接查询即可
$orderId = app()->make(StoreOrderRepository::class)
->getSearch([])
->where('group_order_id',$groupOrder->group_order_id)
->value('order_id');
}
// 生成申请信息
$applyInfo['order_id'] = $orderId;
$this->dao->create($applyInfo);
return $payResult;
}
});
}
}