|
|
|
@ -18,6 +18,8 @@ use App\Service\DeviceServiceInterface; |
|
|
|
use App\Service\FeiePrintServiceInterface; |
|
|
|
use App\Service\MiniprogramServiceInterface; |
|
|
|
use App\Service\MqttServiceInterface; |
|
|
|
use App\Service\OrderServiceInterface; |
|
|
|
use App\Service\SeparateAccountsServiceInterface; |
|
|
|
use App\Service\UserServiceInterface; |
|
|
|
use EasyWeChat\Factory; |
|
|
|
use Hyperf\DbConnection\Db; |
|
|
|
@ -68,6 +70,18 @@ class NotifyController extends BaseController |
|
|
|
*/ |
|
|
|
protected $couponRebateService; |
|
|
|
|
|
|
|
/** |
|
|
|
* @Inject |
|
|
|
* @var OrderServiceInterface |
|
|
|
*/ |
|
|
|
protected $orderService; |
|
|
|
|
|
|
|
/** |
|
|
|
* @Inject |
|
|
|
* @var SeparateAccountsServiceInterface |
|
|
|
*/ |
|
|
|
protected $separateAccountsService; |
|
|
|
|
|
|
|
public function wxminiOnline() |
|
|
|
{ |
|
|
|
|
|
|
|
@ -122,65 +136,68 @@ class NotifyController extends BaseController |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
// 修改订单、子订单状态
|
|
|
|
$currentTime = time(); |
|
|
|
$orderMain->state = OrderMain::ORDER_STATE_UNTAKE; |
|
|
|
$orderMain->time_pay = $currentTime; |
|
|
|
$orderMain->pay_time = date('Y-m-d H:i:s', $currentTime); |
|
|
|
$orderMain->save(); |
|
|
|
|
|
|
|
$upOrder = Order::query() |
|
|
|
->where(['order_main_id' => $orderMain->id]) |
|
|
|
->update(['state' => OrderMain::ORDER_STATE_UNTAKE, 'pay_time' => $orderMain->pay_time]); |
|
|
|
|
|
|
|
// 更新商户销量
|
|
|
|
$upStoreScore = Store::query() |
|
|
|
->whereIn('id', explode(',', $orderMain->store_ids)) |
|
|
|
->update(['score' => Db::raw('score+1')]); |
|
|
|
|
|
|
|
// 更新商品库存和销量
|
|
|
|
$orders = Order::query()->select(['id', 'money', 'user_id', 'store_id', 'pay_time']) |
|
|
|
->where(['order_main_id' => $orderMain->id]) |
|
|
|
->get() |
|
|
|
->toArray(); |
|
|
|
$orderGoods = OrderGoods::query()->select(['good_id AS id', 'number', 'combination_id']) |
|
|
|
->whereIn('order_id', array_values(array_column($orders, 'id'))) |
|
|
|
->get() |
|
|
|
->toArray(); |
|
|
|
foreach ($orderGoods as $key => &$goodsItem) { |
|
|
|
|
|
|
|
$goods = Goods::find($goodsItem['id']); |
|
|
|
|
|
|
|
// 库存处理,有规格
|
|
|
|
if ($goodsItem['combination_id']) { |
|
|
|
$combination = SpecCombination::find($goodsItem['combination_id']); |
|
|
|
$combination->number = $combination->number - $goodsItem['number']; |
|
|
|
$combination->save(); |
|
|
|
} else { |
|
|
|
$goods->inventory = $goods->inventory - $goodsItem['number']; |
|
|
|
} |
|
|
|
|
|
|
|
$goods->sales = $goods->sales - $goodsItem['number']; |
|
|
|
$goods->save(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 月销流水
|
|
|
|
$statistics = []; |
|
|
|
foreach ($orders as $key => &$order) { |
|
|
|
$statistics[] = [ |
|
|
|
'money' => $order['money'], |
|
|
|
'user_id' => $order['user_id'], |
|
|
|
'store_id' => $order['store_id'], |
|
|
|
'market_id' => $orderMain->market_id, |
|
|
|
'order_id' => $order['id'], |
|
|
|
'createtime' => strtotime($order['pay_time']), |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
if (is_array($statistics) && !empty($statistics)) { |
|
|
|
$inSalesStatistics = OrderSalesStatistic::query()->insert($statistics); |
|
|
|
} |
|
|
|
$this->orderService->onlinePaid($message['out_trade_no']); |
|
|
|
$this->separateAccountsService->orderOnlinePaid($message['out_trade_no']); |
|
|
|
|
|
|
|
// // 修改订单、子订单状态
|
|
|
|
// $currentTime = time();
|
|
|
|
// $orderMain->state = OrderMain::ORDER_STATE_UNTAKE;
|
|
|
|
// $orderMain->time_pay = $currentTime;
|
|
|
|
// $orderMain->pay_time = date('Y-m-d H:i:s', $currentTime);
|
|
|
|
// $orderMain->save();
|
|
|
|
//
|
|
|
|
// $upOrder = Order::query()
|
|
|
|
// ->where(['order_main_id' => $orderMain->id])
|
|
|
|
// ->update(['state' => OrderMain::ORDER_STATE_UNTAKE, 'pay_time' => $orderMain->pay_time]);
|
|
|
|
//
|
|
|
|
// // 更新商户销量
|
|
|
|
// $upStoreScore = Store::query()
|
|
|
|
// ->whereIn('id', explode(',', $orderMain->store_ids))
|
|
|
|
// ->update(['score' => Db::raw('score+1')]);
|
|
|
|
//
|
|
|
|
// // 更新商品库存和销量
|
|
|
|
// $orders = Order::query()->select(['id', 'money', 'user_id', 'store_id', 'pay_time'])
|
|
|
|
// ->where(['order_main_id' => $orderMain->id])
|
|
|
|
// ->get()
|
|
|
|
// ->toArray();
|
|
|
|
// $orderGoods = OrderGoods::query()->select(['good_id AS id', 'number', 'combination_id'])
|
|
|
|
// ->whereIn('order_id', array_values(array_column($orders, 'id')))
|
|
|
|
// ->get()
|
|
|
|
// ->toArray();
|
|
|
|
// foreach ($orderGoods as $key => &$goodsItem) {
|
|
|
|
//
|
|
|
|
// $goods = Goods::find($goodsItem['id']);
|
|
|
|
//
|
|
|
|
// // 库存处理,有规格
|
|
|
|
// if ($goodsItem['combination_id']) {
|
|
|
|
// $combination = SpecCombination::find($goodsItem['combination_id']);
|
|
|
|
// $combination->number = $combination->number - $goodsItem['number'];
|
|
|
|
// $combination->save();
|
|
|
|
// } else {
|
|
|
|
// $goods->inventory = $goods->inventory - $goodsItem['number'];
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// $goods->sales = $goods->sales - $goodsItem['number'];
|
|
|
|
// $goods->save();
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// // 月销流水
|
|
|
|
// $statistics = [];
|
|
|
|
// foreach ($orders as $key => &$order) {
|
|
|
|
// $statistics[] = [
|
|
|
|
// 'money' => $order['money'],
|
|
|
|
// 'user_id' => $order['user_id'],
|
|
|
|
// 'store_id' => $order['store_id'],
|
|
|
|
// 'market_id' => $orderMain->market_id,
|
|
|
|
// 'order_id' => $order['id'],
|
|
|
|
// 'createtime' => strtotime($order['pay_time']),
|
|
|
|
// ];
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if (is_array($statistics) && !empty($statistics)) {
|
|
|
|
// $inSalesStatistics = OrderSalesStatistic::query()->insert($statistics);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 优惠券返券
|
|
|
|
$this->couponRebateService->couponRebateInTask($orderMain->id); |
|
|
|
@ -192,7 +209,7 @@ class NotifyController extends BaseController |
|
|
|
// 公众号模板消息
|
|
|
|
$res = $this->miniprogramService->sendTemMsgForOnlineOrder($orderMain->id); |
|
|
|
|
|
|
|
// 打印订单,自动打印 TODO 后续优化调用逻辑
|
|
|
|
// 打印订单,自动打印
|
|
|
|
$res = $this->feiePrintService->feiePrint($orderMain->global_order_id); |
|
|
|
|
|
|
|
Db::commit(); |
|
|
|
@ -271,94 +288,97 @@ class NotifyController extends BaseController |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
// 修改订单、子订单状态
|
|
|
|
$currentTime = time(); |
|
|
|
$orderMain->state = OrderMain::ORDER_STATE_UNTAKE; |
|
|
|
$orderMain->dm_state = OrderMain::ORDER_STATE_UNTAKE; |
|
|
|
$orderMain->time_pay = $currentTime; |
|
|
|
$orderMain->pay_time = date('Y-m-d H:i:s', $currentTime); |
|
|
|
$orderMain->save(); |
|
|
|
|
|
|
|
$upOrder = Order::query() |
|
|
|
->where(['order_main_id' => $orderMain->id]) |
|
|
|
->update([ |
|
|
|
'state' => OrderMain::ORDER_STATE_UNTAKE, |
|
|
|
'dm_state' => OrderMain::ORDER_STATE_UNTAKE, |
|
|
|
'pay_time' => date('Y-m-d H:i:s', $currentTime) |
|
|
|
]); |
|
|
|
|
|
|
|
// 查询子订单,当面付目前实际上只有一个子订单
|
|
|
|
$orders = Order::query()->select(['id', 'money', 'user_id', 'store_id', 'pay_time']) |
|
|
|
->where(['order_main_id' => $orderMain->id]) |
|
|
|
->get() |
|
|
|
->toArray(); |
|
|
|
|
|
|
|
// 商户钱包、流水资金、奖励、发布模板消息处理
|
|
|
|
foreach ($orders as $key => $orderItem) { |
|
|
|
|
|
|
|
$recordBase = [ |
|
|
|
'user_id' => $orderItem['user_id'], |
|
|
|
'order_id' => $orderItem['id'], |
|
|
|
'store_id' => $orderItem['store_id'], |
|
|
|
'type' => 1, |
|
|
|
'time' => date('Y-m-d H:i:s', $currentTime), |
|
|
|
'add_time' => $currentTime, |
|
|
|
]; |
|
|
|
|
|
|
|
// 钱包
|
|
|
|
$store = Store::find($orderItem['store_id']); |
|
|
|
$store->store_wallet = bcadd($store->store_wallet, $orderItem['money'], 2); |
|
|
|
$store->save(); |
|
|
|
|
|
|
|
// 流水
|
|
|
|
$record = [ |
|
|
|
'money' => $orderItem['money'], |
|
|
|
'note' => '当面付订单收入', |
|
|
|
'category' => 2, |
|
|
|
]; |
|
|
|
StoreAccount::query()->insert(array_merge($recordBase, $record)); |
|
|
|
|
|
|
|
// 平台新用户奖励给商户
|
|
|
|
$isStageNewUser = $this->userService->isPlatformNewUser($orderItem['user_id'], $orderMain->id); |
|
|
|
$needAward = false; |
|
|
|
$awardAmount = 0; |
|
|
|
if ($isStageNewUser) { |
|
|
|
$awardAmount = SystemConfig::query()->where(['type' => 1, 'menu_name' => 'award_new_user'])->value('value'); |
|
|
|
// 流水
|
|
|
|
$record = [ |
|
|
|
'money' => $awardAmount, |
|
|
|
'note' => '新用户下单成功,平台奖励', |
|
|
|
'category' => 3, |
|
|
|
]; |
|
|
|
$needAward = true; |
|
|
|
} else { |
|
|
|
$isStoreFirstOrderToday = $this->userService->isStoreFirstOrderToday($orderItem['user_id'],$orderItem['store_id'],$orderItem['id'], self::AWARD_LIMIT_AMOUNT); |
|
|
|
if ($isStoreFirstOrderToday && $orderItem['money'] >= self::AWARD_LIMIT_AMOUNT) { |
|
|
|
$awardAmount = SystemConfig::query()->where(['type' => 1, 'menu_name' => 'award_each_order'])->value('value'); |
|
|
|
// 流水
|
|
|
|
$record = [ |
|
|
|
'money' => $awardAmount, |
|
|
|
'note' => '用户下单成功,平台奖励', |
|
|
|
'category' => 4, |
|
|
|
]; |
|
|
|
$needAward = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if ($needAward && $awardAmount) { |
|
|
|
// 奖励钱包
|
|
|
|
$store->refresh(); |
|
|
|
$store->award_money = bcadd($store->award_money, $awardAmount, 2); |
|
|
|
$store->save(); |
|
|
|
|
|
|
|
// 流水
|
|
|
|
StoreAccount::query()->insert(array_merge($recordBase, $record)); |
|
|
|
|
|
|
|
// 发布公众号消息
|
|
|
|
$openid = Users::query()->where(['id' => $store['user_id']])->value('openid'); |
|
|
|
$res = $this->miniprogramService->sendTemMsgForAward($record['money'], $record['note'], $openid, $recordBase['time']); |
|
|
|
} |
|
|
|
} |
|
|
|
$orderPaid = $this->orderService->offlinePaid($message['out_trade_no']); |
|
|
|
$separate = $this->separateAccountsService->orderOfflinePaid($message['out_trade_no']); |
|
|
|
|
|
|
|
// // 修改订单、子订单状态
|
|
|
|
// $currentTime = time();
|
|
|
|
// $orderMain->state = OrderMain::ORDER_STATE_UNTAKE;
|
|
|
|
// $orderMain->dm_state = OrderMain::ORDER_STATE_UNTAKE;
|
|
|
|
// $orderMain->time_pay = $currentTime;
|
|
|
|
// $orderMain->pay_time = date('Y-m-d H:i:s', $currentTime);
|
|
|
|
// $orderMain->save();
|
|
|
|
//
|
|
|
|
// $upOrder = Order::query()
|
|
|
|
// ->where(['order_main_id' => $orderMain->id])
|
|
|
|
// ->update([
|
|
|
|
// 'state' => OrderMain::ORDER_STATE_UNTAKE,
|
|
|
|
// 'dm_state' => OrderMain::ORDER_STATE_UNTAKE,
|
|
|
|
// 'pay_time' => date('Y-m-d H:i:s', $currentTime)
|
|
|
|
// ]);
|
|
|
|
|
|
|
|
// // 查询子订单,当面付目前实际上只有一个子订单
|
|
|
|
// $orders = Order::query()->select(['id', 'money', 'user_id', 'store_id', 'pay_time'])
|
|
|
|
// ->where(['order_main_id' => $orderMain->id])
|
|
|
|
// ->get()
|
|
|
|
// ->toArray();
|
|
|
|
//
|
|
|
|
// // 商户钱包、流水资金、奖励、发布模板消息处理
|
|
|
|
// foreach ($orders as $key => $orderItem) {
|
|
|
|
//
|
|
|
|
// $recordBase = [
|
|
|
|
// 'user_id' => $orderItem['user_id'],
|
|
|
|
// 'order_id' => $orderItem['id'],
|
|
|
|
// 'store_id' => $orderItem['store_id'],
|
|
|
|
// 'type' => 1,
|
|
|
|
// 'time' => date('Y-m-d H:i:s', $currentTime),
|
|
|
|
// 'add_time' => $currentTime,
|
|
|
|
// ];
|
|
|
|
//
|
|
|
|
// // 钱包
|
|
|
|
// $store = Store::find($orderItem['store_id']);
|
|
|
|
// $store->store_wallet = bcadd($store->store_wallet, $orderItem['money'], 2);
|
|
|
|
// $store->save();
|
|
|
|
//
|
|
|
|
// // 流水
|
|
|
|
// $record = [
|
|
|
|
// 'money' => $orderItem['money'],
|
|
|
|
// 'note' => '当面付订单收入',
|
|
|
|
// 'category' => 2,
|
|
|
|
// ];
|
|
|
|
// StoreAccount::query()->insert(array_merge($recordBase, $record));
|
|
|
|
//
|
|
|
|
// // 平台新用户奖励给商户
|
|
|
|
// $isStageNewUser = $this->userService->isPlatformNewUser($orderItem['user_id'], $orderMain->id);
|
|
|
|
// $needAward = false;
|
|
|
|
// $awardAmount = 0;
|
|
|
|
// if ($isStageNewUser) {
|
|
|
|
// $awardAmount = SystemConfig::query()->where(['type' => 1, 'menu_name' => 'award_new_user'])->value('value');
|
|
|
|
// // 流水
|
|
|
|
// $record = [
|
|
|
|
// 'money' => $awardAmount,
|
|
|
|
// 'note' => '新用户下单成功,平台奖励',
|
|
|
|
// 'category' => 3,
|
|
|
|
// ];
|
|
|
|
// $needAward = true;
|
|
|
|
// } else {
|
|
|
|
// $isStoreFirstOrderToday = $this->userService->isStoreFirstOrderToday($orderItem['user_id'],$orderItem['store_id'],$orderItem['id'], self::AWARD_LIMIT_AMOUNT);
|
|
|
|
// if ($isStoreFirstOrderToday && $orderItem['money'] >= self::AWARD_LIMIT_AMOUNT) {
|
|
|
|
// $awardAmount = SystemConfig::query()->where(['type' => 1, 'menu_name' => 'award_each_order'])->value('value');
|
|
|
|
// // 流水
|
|
|
|
// $record = [
|
|
|
|
// 'money' => $awardAmount,
|
|
|
|
// 'note' => '用户下单成功,平台奖励',
|
|
|
|
// 'category' => 4,
|
|
|
|
// ];
|
|
|
|
// $needAward = true;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if ($needAward && $awardAmount) {
|
|
|
|
// // 奖励钱包
|
|
|
|
// $store->refresh();
|
|
|
|
// $store->award_money = bcadd($store->award_money, $awardAmount, 2);
|
|
|
|
// $store->save();
|
|
|
|
//
|
|
|
|
// // 流水
|
|
|
|
// StoreAccount::query()->insert(array_merge($recordBase, $record));
|
|
|
|
//
|
|
|
|
// // 发布公众号消息
|
|
|
|
// $openid = Users::query()->where(['id' => $store['user_id']])->value('openid');
|
|
|
|
// $res = $this->miniprogramService->sendTemMsgForAward($record['money'], $record['note'], $openid, $recordBase['time']);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 喇叭通知,兼容旧音响,MQTT+IOT
|
|
|
|
$res = $this->mqttSpeakerService->speakToStore($orderMain->id); |
|
|
|
|