erp/app/admin/logic/withdraw/MerchantWithdrawLogic.php
2024-05-25 20:41:18 +08:00

190 lines
5.1 KiB
PHP

<?php
namespace app\admin\logic\withdraw;
use app\common\model\merchant\Merchant;
use app\common\model\supplier\Supplier;
use app\common\model\withdraw\MerchantWithdraw;
use app\common\logic\BaseLogic;
use app\common\service\JgPushService;
use think\facade\Db;
/**
* 商户供应商提现表逻辑
* Class MerchantWithdrawLogic
* @package app\admin\logic\withdraw
*/
class MerchantWithdrawLogic extends BaseLogic
{
/**
* @notes 添加商户供应商提现表
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/14 11:21
*/
public static function add(array $params): bool
{
Db::startTrans();
try {
MerchantWithdraw::create([
'mer_id' => $params['mer_id'],
'supplier_id' => $params['supplier_id'],
'merchant_bank_id' => $params['merchant_bank_id'],
'amount' => $params['amount'],
]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
/**
* @notes 编辑商户供应商提现表
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/14 11:21
*/
public static function edit(array $params): bool
{
Db::startTrans();
try {
MerchantWithdraw::where('id', $params['id'])->update([
'mer_id' => $params['mer_id'],
'supplier_id' => $params['supplier_id'],
'merchant_bank_id' => $params['merchant_bank_id'],
'amount' => $params['amount'],
]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
/**
* @notes 审核
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/14 11:21
*/
public static function check(array $params,$admin_id): bool
{
$data = MerchantWithdraw::where('id', $params['id'])->findOrEmpty();
if($data['is_check'] != 0){
self::setError('此提现申请已审核,无需重复审核');
return false;
}
Db::startTrans();
try {
MerchantWithdraw::where('id', $params['id'])->update([
'is_check' => $params['is_check'],
'fail_msg' => $params['fail_msg'] ?? '',
'admin_id' => $admin_id
]);
if($params['is_check'] == 2){
if (!empty($data['mer_id'])) {
$merchant = Merchant::where('mer_id', $data['mer_id'])->findOrEmpty();
$merchant->where('mer_id', $data['mer_id'])->update([
'mer_money' => bcadd($merchant['mer_money'], $data['amount'], 2)
]);
}
if (!empty($data['supplier_id'])) {
$supplier = Supplier::where('id', $data['supplier_id'])->findOrEmpty();
$supplier->where('id', $data['supplier_id'])->update([
'mer_money' => bcadd($supplier['mer_money'], $data['amount'], 2)
]);
}
}
$pid = !empty($data['mer_id']) ? $data['mer_id'] : $data['supplier_id'];
$apply_info = Db::name('user_auth_shop')->where('pid', $pid)->findOrEmpty();
if (!empty($apply_info['jg_register_id'])) {
(new JgPushService())->sendMsg($apply_info['jg_register_id'], '您的提现申请请求' . ($params['status'] == 1 ? '已审核通过' : '审核未通过'), '/pages/quote/financialyDeatil');
}
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
/**
* @notes 设置到账
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/14 11:21
*/
public static function arrival(array $params,$admin_id): bool
{
$data = MerchantWithdraw::where('id', $params['id'])->findOrEmpty();
if($data['is_check'] == 0){
self::setError('该提现申请还未审核,不能操作');
return false;
}
if($data['is_check'] == 2){
self::setError('该提现申请审核未通过,不能操作');
return false;
}
if($data['is_arrival'] == 1){
self::setError('该提现申请已到账,无需设置');
return false;
}
Db::startTrans();
try {
MerchantWithdraw::where('id', $params['id'])->update([
'is_arrival' => 1,
'arrival_proof' => $params['arrival_proof'] ? json_encode($params['arrival_proof']) : null,
'arrival_user' => $admin_id
]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
/**
* @notes 删除商户供应商提现表
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/05/14 11:21
*/
public static function delete(array $params): bool
{
return MerchantWithdraw::destroy($params['id']);
}
/**
* @notes 获取商户供应商提现表详情
* @param $params
* @return array
* @author likeadmin
* @date 2024/05/14 11:21
*/
public static function detail($params): array
{
return MerchantWithdraw::findOrEmpty($params['id'])->toArray();
}
}