Commit 778bd761 authored by wuxiaoli's avatar wuxiaoli

合并第三方公司修复代码

parent 8009ebed
...@@ -38,7 +38,7 @@ class GoodsBlance implements ShouldQueue{ ...@@ -38,7 +38,7 @@ class GoodsBlance implements ShouldQueue{
} }
// 积分商品 // 积分商品
if ($goods->goods_type == 0){ if ($goods->goods_type == 0){
app(ScoreService::class)->createScore(order_id: $item->id, member_id: $member->uid, amount: $goods->score, type: 'income', remark: '积分商品购买积分'); app(ScoreService::class)->createScore(store_id: $item->store_id, order_id: $item->id, member_id: $member->uid, amount: $goods->score, type: 'income', account_type: 'order', remark: '积分商品购买积分');
// 更新会员等级 // 更新会员等级
if ($member->level_id < $goods->level_id){ if ($member->level_id < $goods->level_id){
......
...@@ -41,7 +41,7 @@ class Score extends BaseController{ ...@@ -41,7 +41,7 @@ class Score extends BaseController{
*/ */
public function add(Request $request, ScoreService $service){ public function add(Request $request, ScoreService $service){
try { try {
$this->data['data'] = $service->createScore(order_id: 0, member_id: $request->input('member_id'), amount: $request->input('amount'), type: $request->input('type'), remark: $request->input('remark')); $this->data['data'] = $service->createScore(store_id: 0, order_id: 0, member_id: $request->input('member_id'), amount: $request->input('amount'), type: $request->input('type'), account_type: 'system', remark: $request->input('remark'));
} catch (\Exception $e) { } catch (\Exception $e) {
$this->data['code'] = 0; $this->data['code'] = 0;
$this->data['message'] = $e->getMessage(); $this->data['message'] = $e->getMessage();
......
...@@ -21,6 +21,6 @@ class OrderRefundListener implements ShouldQueue{ ...@@ -21,6 +21,6 @@ class OrderRefundListener implements ShouldQueue{
$detail = $event->detail; $detail = $event->detail;
// 积分退还 // 积分退还
app(ScoreService::class)->createScore(order_id: $detail->id, member_id: $detail->member_id, amount: $detail->total_integral, type: 'income', remark: '商品退货退款'); app(ScoreService::class)->createScore(store_id: $refund->store_id, order_id: $detail->id, member_id: $detail->member_id, amount: $detail->total_integral, type: 'income', type: 'refund', remark: '商品退货退款');
} }
} }
\ No newline at end of file
...@@ -117,7 +117,7 @@ class AccountService { ...@@ -117,7 +117,7 @@ class AccountService {
*/ */
public function createAccount($store_id, $order_id, $member_id, $type, $account_type = 'order', $amount = 0, $remark = ''){ public function createAccount($store_id, $order_id, $member_id, $type, $account_type = 'order', $amount = 0, $remark = ''){
if ($order_id > 0) { if ($order_id > 0) {
$account = MemberAccount::where('order_id', '=', $order_id)->where('member_id', '=', $member_id)->where('type', '=', $type)->first(); $account = MemberAccount::where('order_id', '=', $order_id)->where('member_id', '=', $member_id)->where('type', '=', $type)->where('account_type', '=', $account_type)->first();
if($account){ if($account){
return $account; return $account;
} }
...@@ -134,6 +134,7 @@ class AccountService { ...@@ -134,6 +134,7 @@ class AccountService {
'order_id' => $order_id, 'order_id' => $order_id,
'member_id' => $member_id, 'member_id' => $member_id,
'type' => $type, 'type' => $type,
'account_type' => $account_type,
'amount' => $amount, 'amount' => $amount,
'bf_amount' => $bf_amount, 'bf_amount' => $bf_amount,
'af_amount' => $af_amount, 'af_amount' => $af_amount,
......
...@@ -93,9 +93,9 @@ class ScoreService { ...@@ -93,9 +93,9 @@ class ScoreService {
* @param MemberService $service * @param MemberService $service
* @return void * @return void
*/ */
public function createScore($order_id, $member_id, $amount, $type, $remark){ public function createScore($store_id, $order_id, $member_id, $amount, $type, $account_type, $remark){
if($order_id != 0){ if($order_id != 0){
$score = MemberScore::where('order_id', '=', $order_id)->where('member_id', '=', $member_id)->where('type', '=', $type)->first(); $score = MemberScore::where('order_id', '=', $order_id)->where('member_id', '=', $member_id)->where('type', '=', $type)->where('account_type', '=', $account_type)->first();
if($score){ if($score){
return $score; return $score;
} }
...@@ -110,10 +110,11 @@ class ScoreService { ...@@ -110,10 +110,11 @@ class ScoreService {
$bf_amount = $member['score'] ? $member['score'] : 0; $bf_amount = $member['score'] ? $member['score'] : 0;
$data = [ $data = [
'store_id' => 0, 'store_id' => $store_id,
'order_id' => $order_id, 'order_id' => $order_id,
'member_id' => $member_id, 'member_id' => $member_id,
'type' => $type, 'type' => $type,
'account_type' => $account_type,
'amount' => $amount, 'amount' => $amount,
'bf_amount' => $bf_amount, 'bf_amount' => $bf_amount,
'af_amount' => $af_amount, 'af_amount' => $af_amount,
......
...@@ -77,6 +77,7 @@ return new class extends Migration { ...@@ -77,6 +77,7 @@ return new class extends Migration {
$table->unsignedBigInteger('order_id')->comment('订单ID'); $table->unsignedBigInteger('order_id')->comment('订单ID');
$table->unsignedBigInteger('store_id')->comment('店铺ID'); $table->unsignedBigInteger('store_id')->comment('店铺ID');
$table->string('type', '20')->nullable()->comment('类型'); $table->string('type', '20')->nullable()->comment('类型');
$table->string('account_type', '20')->nullable()->comment('账单类型');
$table->decimal('amount', total: 10, places: 2)->default(0)->comment('数量'); $table->decimal('amount', total: 10, places: 2)->default(0)->comment('数量');
$table->decimal('bf_amount', total: 10, places: 2)->default(0)->comment('前数量'); $table->decimal('bf_amount', total: 10, places: 2)->default(0)->comment('前数量');
$table->decimal('af_amount', total: 10, places: 2)->default(0)->comment('后数量'); $table->decimal('af_amount', total: 10, places: 2)->default(0)->comment('后数量');
......
...@@ -91,7 +91,7 @@ class OrderBlance implements ShouldQueue{ ...@@ -91,7 +91,7 @@ class OrderBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $store->service_id, type: 'service_income', account_type: 'order', amount: $balance_service_amount, remark: '分仓服务费'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $store->service_id, type: 'service_income', account_type: 'order', amount: $balance_service_amount, remark: '分仓服务费');
} }
if($balance_service_integral > 0 && $store->service_id){ if($balance_service_integral > 0 && $store->service_id){
app(ScoreService::class)->createScore(order_id: $item->id, member_id: $store->service_id, amount: $balance_service_integral, type: 'service_income', remark: '分仓服务费'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $item->id, member_id: $store->service_id, amount: $balance_service_integral, type: 'service_income', account_type: 'order', remark: '分仓服务费');
} }
//推广人员服务费 //推广人员服务费
...@@ -104,7 +104,7 @@ class OrderBlance implements ShouldQueue{ ...@@ -104,7 +104,7 @@ class OrderBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $invite->uid, type: 'income', account_type: 'order', amount: $balance_service_amount, remark: '兼职代理服务费'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $invite->uid, type: 'income', account_type: 'order', amount: $balance_service_amount, remark: '兼职代理服务费');
} }
if($balance_service_integral > 0){ if($balance_service_integral > 0){
app(ScoreService::class)->createScore(order_id: $item->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', remark: '兼职代理服务费'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $item->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', account_type: 'order', remark: '兼职代理服务费');
} }
}else if($invite->level->name == 'signings'){ }else if($invite->level->name == 'signings'){
// 签约代理 // 签约代理
...@@ -114,7 +114,7 @@ class OrderBlance implements ShouldQueue{ ...@@ -114,7 +114,7 @@ class OrderBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $invite->uid, type: 'income', account_type: 'order', amount: $balance_service_amount, remark: '签约代理服务费'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $invite->uid, type: 'income', account_type: 'order', amount: $balance_service_amount, remark: '签约代理服务费');
} }
if($balance_service_integral > 0){ if($balance_service_integral > 0){
app(ScoreService::class)->createScore(order_id: $item->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', remark: '签约代理服务费'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $item->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', account_type: 'order', remark: '签约代理服务费');
} }
} }
} }
...@@ -128,7 +128,7 @@ class OrderBlance implements ShouldQueue{ ...@@ -128,7 +128,7 @@ class OrderBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $store->member_id, type: 'income', account_type: 'order', amount: $amount, remark: '店主门店收入'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $item->id, member_id: $store->member_id, type: 'income', account_type: 'order', amount: $amount, remark: '店主门店收入');
} }
if($integral > 0){ if($integral > 0){
app(ScoreService::class)->createScore(order_id: $item->id, member_id: $store->member_id, amount: $integral, type: 'income', remark: '店主门店收入'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $item->id, member_id: $store->member_id, amount: $integral, type: 'income', account_type: 'order', remark: '店主门店收入');
} }
} }
} }
......
...@@ -523,7 +523,7 @@ class OrderService { ...@@ -523,7 +523,7 @@ class OrderService {
$order->detail()->with(['goods', 'sku'])->get()->each(function($item) use ($order, $itemCount) { $order->detail()->with(['goods', 'sku'])->get()->each(function($item) use ($order, $itemCount) {
// 积分商品积分扣除 // 积分商品积分扣除
if($item->total_integral > 0){ if($item->total_integral > 0){
app(\Modules\Member\Services\ScoreService::class)->createScore(order_id: $item->id, member_id: $order->member['uid'], type: 'pay', amount: $item->total_integral, remark: '订单支付'); app(\Modules\Member\Services\ScoreService::class)->createScore(store_id: $item->store_id, order_id: $item->id, member_id: $order->member['uid'], type: 'pay', account_type: 'order', amount: $item->total_integral, remark: '订单支付');
} }
if($item->goods->goods_type == 0){ if($item->goods->goods_type == 0){
$item->status = 3; $item->status = 3;
......
...@@ -21,7 +21,7 @@ class PayBlance implements ShouldQueue{ ...@@ -21,7 +21,7 @@ class PayBlance implements ShouldQueue{
* Handle the event. * Handle the event.
*/ */
public function handle(PaySuccess $event){ public function handle(PaySuccess $event){
$order = $event->order; $order = $event->payment;
$store = $order->store()->first(); $store = $order->store()->first();
...@@ -31,11 +31,11 @@ class PayBlance implements ShouldQueue{ ...@@ -31,11 +31,11 @@ class PayBlance implements ShouldQueue{
$invite = null; $invite = null;
} }
if($store->balance_rate > 0){ if($store->balance_rate > 0){
$balance_amount = bcmul($item->amount, bcdiv($store->balance_rate, 100, 2), 2); $balance_amount = bcmul($order->amount, bcdiv($store->balance_rate, 100, 2), 2);
$balance_integral = bcmul($item->integral, bcdiv($store->balance_rate, 100, 2), 2); $balance_integral = bcmul($order->integral, bcdiv($store->balance_rate, 100, 2), 2);
$amount = bcsub($item->amount, $balance_amount, 2); //店主收入计算 $amount = bcsub($order->amount, $balance_amount, 2); //店主收入计算
$integral = bcsub($item->integral, $balance_integral, 2); //店主收入计算 $integral = bcsub($order->integral, $balance_integral, 2); //店主收入计算
// 分仓服务费 // 分仓服务费
$balance_service_amount = bcmul($balance_amount, bcdiv($store->balance_service_rate, 100, 2), 2); $balance_service_amount = bcmul($balance_amount, bcdiv($store->balance_service_rate, 100, 2), 2);
...@@ -44,7 +44,7 @@ class PayBlance implements ShouldQueue{ ...@@ -44,7 +44,7 @@ class PayBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $order->id, member_id: $store->service_id, type: 'service_income', account_type: 'payment', amount: $balance_service_amount, remark: '店铺收款分仓服务费'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $order->id, member_id: $store->service_id, type: 'service_income', account_type: 'payment', amount: $balance_service_amount, remark: '店铺收款分仓服务费');
} }
if($balance_service_integral > 0 && $store->service_id){ if($balance_service_integral > 0 && $store->service_id){
app(ScoreService::class)->createScore(order_id: $order->id, member_id: $store->service_id, amount: $balance_service_integral, type: 'service_income', remark: '店铺收款分仓服务费'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $order->id, member_id: $store->service_id, amount: $balance_service_integral, type: 'service_income', account_type: 'payment', remark: '店铺收款分仓服务费');
} }
//推广人员服务费 //推广人员服务费
...@@ -57,7 +57,7 @@ class PayBlance implements ShouldQueue{ ...@@ -57,7 +57,7 @@ class PayBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $order->id, member_id: $invite->uid, type: 'income', account_type: 'payment', amount: $balance_service_amount, remark: '店铺收款兼职代理服务费'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $order->id, member_id: $invite->uid, type: 'income', account_type: 'payment', amount: $balance_service_amount, remark: '店铺收款兼职代理服务费');
} }
if($balance_service_integral > 0){ if($balance_service_integral > 0){
app(ScoreService::class)->createScore(order_id: $order->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', remark: '店铺收款兼职代理服务费'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $order->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', account_type: 'payment', remark: '店铺收款兼职代理服务费');
} }
}else if($invite->level->name == 'signings'){ }else if($invite->level->name == 'signings'){
// 签约代理 // 签约代理
...@@ -67,13 +67,13 @@ class PayBlance implements ShouldQueue{ ...@@ -67,13 +67,13 @@ class PayBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $store->id, order_id: $order->id, member_id: $invite->uid, type: 'income', account_type: 'payment', amount: $balance_service_amount, remark: '店铺收款签约代理服务费'); app(AccountService::class)->createAccount(store_id: $store->id, order_id: $order->id, member_id: $invite->uid, type: 'income', account_type: 'payment', amount: $balance_service_amount, remark: '店铺收款签约代理服务费');
} }
if($balance_service_integral > 0){ if($balance_service_integral > 0){
app(ScoreService::class)->createScore(order_id: $order->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', remark: '店铺收款签约代理服务费'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $order->id, member_id: $invite->uid, amount: $balance_service_integral, type: 'income', account_type: 'payment', remark: '店铺收款签约代理服务费');
} }
} }
} }
}else{ }else{
$amount = $item->amount; //店主收入计算 $amount = $order->amount; //店主收入计算
$integral = $item->integral; //店主收入计算 $integral = $order->integral; //店主收入计算
} }
//店主收入 //店主收入
...@@ -81,7 +81,7 @@ class PayBlance implements ShouldQueue{ ...@@ -81,7 +81,7 @@ class PayBlance implements ShouldQueue{
app(AccountService::class)->createAccount(store_id: $order->store_id, order_id: $order->id, member_id: $store->member_id, type: 'income', account_type: 'payment', amount: $amount, remark: '店铺内客户支付'); app(AccountService::class)->createAccount(store_id: $order->store_id, order_id: $order->id, member_id: $store->member_id, type: 'income', account_type: 'payment', amount: $amount, remark: '店铺内客户支付');
} }
if($order->integral > 0){ if($order->integral > 0){
app(ScoreService::class)->createScore(order_id: $order->id, member_id: $store->member_id, amount: $integral, type: 'income', remark: '店铺内客户支付'); app(ScoreService::class)->createScore(store_id: $store->id, order_id: $order->id, member_id: $store->member_id, amount: $integral, type: 'income', account_type: 'payment', remark: '店铺内客户支付');
} }
} }
} }
\ No newline at end of file
...@@ -95,18 +95,21 @@ class PaymentService { ...@@ -95,18 +95,21 @@ class PaymentService {
} }
public function paySuccess($order_no, $payment_no){ public function paySuccess($order_no, $payment_no){
$payment = Payment::with(['member'])->where($order_no, $order_no)->first(); $payment = Payment::where('order_no', $order_no)->first();
if($payment && $payment->status == 0){ if($payment && $payment->status == 0){
$res = app(\Modules\Wechat\Services\PayService::class)->orderQuery($order_no);
if(isset($res['trade_state']) && $res['trade_state'] == 'SUCCESS'){
$payment->payment_status = 1; $payment->payment_status = 1;
$payment->payment_time = date('Y-m-d H:i:s'); $payment->payment_time = date('Y-m-d H:i:s');
$payment->payment_sn = $payment_no; $payment->payment_sn = $payment_no;
$payment->save(); $payment->save();
app(ShippingService::class)->pushShipping($order_no, $payment->member_id, '店铺内付款支付'); // app(ShippingService::class)->pushShipping($order_no, $payment->member_id, '店铺内付款支付');
\Modules\Store\Events\PaySuccess::dispatch($payment); \Modules\Store\Events\PaySuccess::dispatch($payment);
} }
} }
}
public function userTransfer($request){ public function userTransfer($request){
$request->validate([ $request->validate([
...@@ -166,33 +169,41 @@ class PaymentService { ...@@ -166,33 +169,41 @@ class PaymentService {
break; break;
case 'score': case 'score':
app(ScoreService::class)->createScore( app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0, order_id: 0,
member_id: auth('api')->user()['uid'], member_id: auth('api')->user()['uid'],
amount: $amount, amount: $amount,
type: 'transfer', type: 'transfer',
account_type: 'member',
remark: '用户转账扣除' remark: '用户转账扣除'
); );
app(ScoreService::class)->createScore( app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0, order_id: 0,
member_id: $uid, member_id: $uid,
amount: $amount, amount: $amount,
type: 'income', type: 'income',
account_type: 'member',
remark: '用户转账' remark: '用户转账'
); );
break; break;
default: default:
app(ScoreService::class)->createScore( app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0, order_id: 0,
member_id: auth('api')->user()['uid'], member_id: auth('api')->user()['uid'],
amount: $amount, amount: $amount,
type: 'transfer', type: 'transfer',
account_type: 'member',
remark: '用户转账扣除' remark: '用户转账扣除'
); );
app(ScoreService::class)->createScore( app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0, order_id: 0,
member_id: $uid, member_id: $uid,
amount: $amount, amount: $amount,
type: 'income', type: 'income',
account_type: 'member',
remark: '用户转账' remark: '用户转账'
); );
break; break;
...@@ -261,17 +272,21 @@ class PaymentService { ...@@ -261,17 +272,21 @@ class PaymentService {
break; break;
case 'score': case 'score':
app(ScoreService::class)->createScore( app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0, order_id: 0,
member_id: auth('api')->user()['uid'], member_id: auth('api')->user()['uid'],
amount: $amount, amount: $amount,
type: 'transfer', type: 'transfer',
account_type: 'receive',
remark: '店铺转账扣除' remark: '店铺转账扣除'
); );
app(ScoreService::class)->createScore( app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0, order_id: 0,
member_id: $service_id, member_id: $service_id,
amount: $amount, amount: $amount,
type: 'service_income', type: 'service_income',
account_type: 'receive',
remark: '店铺转账' remark: '店铺转账'
); );
break; break;
......
<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2024 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace Modules\Wechat\Listeners;
use Modules\Store\Events\PaySuccess;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Modules\Wechat\Services\ShippingService;
class StorePaymentSuccess implements ShouldQueue{
/**
* 任务应该被处理的时间(秒)。
*
* @var int
*/
public $delay = 60;
public function handle(PaySuccess $event){
$payment = $event->payment;
app(ShippingService::class)->pushShipping($payment->order_no, $payment->member_id, $payment->payment_remark, 3);
return true;
}
}
\ No newline at end of file
...@@ -30,6 +30,9 @@ class EventServiceProvider extends ServiceProvider ...@@ -30,6 +30,9 @@ class EventServiceProvider extends ServiceProvider
'Modules\Order\Events\OrderTake' => [ 'Modules\Order\Events\OrderTake' => [
'Modules\Wechat\Listeners\OrderTakePush', 'Modules\Wechat\Listeners\OrderTakePush',
], ],
'Modules\Store\Events\PaySuccess' => [
'Modules\Wechat\Listeners\StorePaymentSuccess',
],
]; ];
/** /**
......
...@@ -112,4 +112,19 @@ class PayService { ...@@ -112,4 +112,19 @@ class PayService {
// throw new \Exception($response->getContent(), $response->getStatusCode()); // throw new \Exception($response->getContent(), $response->getStatusCode());
// } // }
} }
public function orderQuery($order_no){
$config = Config::get('wechat.miniapp');
$app = new Application($config);
$api = $app->getClient();
$response = $api->get("v3/pay/transactions/out-trade-no/{$order_no}", [
'query' => [
'mchid' => $config['mch_id'],
]
]);
return $response->toArray();
}
} }
\ No newline at end of file
...@@ -10,9 +10,6 @@ use Illuminate\Support\Facades\Route; ...@@ -10,9 +10,6 @@ use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request; use Illuminate\Http\Request;
Route::get('/', function (Request $request) { Route::get('/', function (Request $request) {
// $order = \Modules\Order\Models\Order::where('id', 21)->first();
// $item = $order->detail()->first();
if (Route::has('home')){ if (Route::has('home')){
return redirect()->route('home', $request->all()); return redirect()->route('home', $request->all());
}else{ }else{
......
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