Commit 778bd761 authored by wuxiaoli's avatar wuxiaoli

合并第三方公司修复代码

parent 8009ebed
......@@ -38,7 +38,7 @@ class GoodsBlance implements ShouldQueue{
}
// 积分商品
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){
......
......@@ -41,7 +41,7 @@ class Score extends BaseController{
*/
public function add(Request $request, ScoreService $service){
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) {
$this->data['code'] = 0;
$this->data['message'] = $e->getMessage();
......
......@@ -21,6 +21,6 @@ class OrderRefundListener implements ShouldQueue{
$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 {
*/
public function createAccount($store_id, $order_id, $member_id, $type, $account_type = 'order', $amount = 0, $remark = ''){
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){
return $account;
}
......@@ -134,6 +134,7 @@ class AccountService {
'order_id' => $order_id,
'member_id' => $member_id,
'type' => $type,
'account_type' => $account_type,
'amount' => $amount,
'bf_amount' => $bf_amount,
'af_amount' => $af_amount,
......
......@@ -93,9 +93,9 @@ class ScoreService {
* @param MemberService $service
* @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){
$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){
return $score;
}
......@@ -110,10 +110,11 @@ class ScoreService {
$bf_amount = $member['score'] ? $member['score'] : 0;
$data = [
'store_id' => 0,
'store_id' => $store_id,
'order_id' => $order_id,
'member_id' => $member_id,
'type' => $type,
'account_type' => $account_type,
'amount' => $amount,
'bf_amount' => $bf_amount,
'af_amount' => $af_amount,
......
......@@ -77,6 +77,7 @@ return new class extends Migration {
$table->unsignedBigInteger('order_id')->comment('订单ID');
$table->unsignedBigInteger('store_id')->comment('店铺ID');
$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('bf_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{
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){
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{
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){
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'){
// 签约代理
......@@ -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: '签约代理服务费');
}
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{
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){
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 {
$order->detail()->with(['goods', 'sku'])->get()->each(function($item) use ($order, $itemCount) {
// 积分商品积分扣除
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){
$item->status = 3;
......
......@@ -21,7 +21,7 @@ class PayBlance implements ShouldQueue{
* Handle the event.
*/
public function handle(PaySuccess $event){
$order = $event->order;
$order = $event->payment;
$store = $order->store()->first();
......@@ -31,11 +31,11 @@ class PayBlance implements ShouldQueue{
$invite = null;
}
if($store->balance_rate > 0){
$balance_amount = bcmul($item->amount, bcdiv($store->balance_rate, 100, 2), 2);
$balance_integral = bcmul($item->integral, bcdiv($store->balance_rate, 100, 2), 2);
$balance_amount = bcmul($order->amount, 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); //店主收入计算
$integral = bcsub($item->integral, $balance_integral, 2); //店主收入计算
$amount = bcsub($order->amount, $balance_amount, 2); //店主收入计算
$integral = bcsub($order->integral, $balance_integral, 2); //店主收入计算
// 分仓服务费
$balance_service_amount = bcmul($balance_amount, bcdiv($store->balance_service_rate, 100, 2), 2);
......@@ -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: '店铺收款分仓服务费');
}
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{
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){
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'){
// 签约代理
......@@ -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: '店铺收款签约代理服务费');
}
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{
$amount = $item->amount; //店主收入计算
$integral = $item->integral; //店主收入计算
$amount = $order->amount; //店主收入计算
$integral = $order->integral; //店主收入计算
}
//店主收入
......@@ -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: '店铺内客户支付');
}
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 {
}
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){
$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_time = date('Y-m-d H:i:s');
$payment->payment_sn = $payment_no;
$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);
}
}
}
public function userTransfer($request){
$request->validate([
......@@ -166,33 +169,41 @@ class PaymentService {
break;
case 'score':
app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0,
member_id: auth('api')->user()['uid'],
amount: $amount,
type: 'transfer',
account_type: 'member',
remark: '用户转账扣除'
);
app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0,
member_id: $uid,
amount: $amount,
type: 'income',
account_type: 'member',
remark: '用户转账'
);
break;
default:
app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0,
member_id: auth('api')->user()['uid'],
amount: $amount,
type: 'transfer',
account_type: 'member',
remark: '用户转账扣除'
);
app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0,
member_id: $uid,
amount: $amount,
type: 'income',
account_type: 'member',
remark: '用户转账'
);
break;
......@@ -261,17 +272,21 @@ class PaymentService {
break;
case 'score':
app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0,
member_id: auth('api')->user()['uid'],
amount: $amount,
type: 'transfer',
account_type: 'receive',
remark: '店铺转账扣除'
);
app(ScoreService::class)->createScore(
store_id: 0,
order_id: 0,
member_id: $service_id,
amount: $amount,
type: 'service_income',
account_type: 'receive',
remark: '店铺转账'
);
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
'Modules\Order\Events\OrderTake' => [
'Modules\Wechat\Listeners\OrderTakePush',
],
'Modules\Store\Events\PaySuccess' => [
'Modules\Wechat\Listeners\StorePaymentSuccess',
],
];
/**
......
......@@ -112,4 +112,19 @@ class PayService {
// 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;
use Illuminate\Http\Request;
Route::get('/', function (Request $request) {
// $order = \Modules\Order\Models\Order::where('id', 21)->first();
// $item = $order->detail()->first();
if (Route::has('home')){
return redirect()->route('home', $request->all());
}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