From c5433e351e7af61b51ea2a0f1ac10a4c4cc9528b Mon Sep 17 00:00:00 2001 From: lanzu_qinsheng <334039090@qq.com> Date: Fri, 11 Sep 2020 19:13:32 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=95=86=E5=93=81=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/JsonRpc/OrderService.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/JsonRpc/OrderService.php b/app/JsonRpc/OrderService.php index 295122e..8dc28a1 100644 --- a/app/JsonRpc/OrderService.php +++ b/app/JsonRpc/OrderService.php @@ -185,8 +185,6 @@ class OrderService implements OrderServiceInterface } } - - var_dump('ordergoods', $orderGoods); $totalAmount = $orderMain->total_money; // 订单可退款金额,总订单金额不含配送费和服务费 $preRefundAmount = 0; // 预退款金额 $refundAmount = 0; // 实际退款金额 @@ -216,9 +214,6 @@ class OrderService implements OrderServiceInterface ]); throw new ErrorCodeException(ErrorCode::ORDER_REFUND_FAIL); } - - var_dump($orderMain->money, $preRefundAmount, $refundAmount); - // 开始退款 $config = config('wxpay'); $app = Factory::payment($config); From 5ddcd97a1da7f03af00b8bac0e20e7765baaeb1f Mon Sep 17 00:00:00 2001 From: weigang Date: Sat, 12 Sep 2020 11:35:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=80=80=E6=AC=BE=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E3=80=81badge=E3=80=81=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=B8=85=E9=99=A4badge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/SsdbKeys.php | 10 - app/Controller/TestController.php | 5 - app/Controller/v3/HomeController.php | 29 ++- app/Controller/v3/NotifyController.php | 33 ++-- app/JsonRpc/OrderService.php | 38 +++- app/Model/v3/FinancialRecord.php | 4 +- .../v3/Implementations/BadgeService.php | 171 ++++++++++++++++++ .../FinancialRecordService.php | 49 ++++- .../v3/Implementations/OrderListService.php | 28 +-- .../Implementations/OrderOfflineService.php | 2 +- .../v3/Implementations/OrderOnlineService.php | 39 ++-- .../v3/Interfaces/BadgeServiceInterface.php | 64 +++++++ .../FinancialRecordServiceInterface.php | 23 ++- .../OrderOfflineServiceInterface.php | 2 +- config/autoload/dependencies.php | 1 + 15 files changed, 399 insertions(+), 99 deletions(-) create mode 100644 app/Service/v3/Implementations/BadgeService.php create mode 100644 app/Service/v3/Interfaces/BadgeServiceInterface.php diff --git a/app/Constants/v3/SsdbKeys.php b/app/Constants/v3/SsdbKeys.php index e6f6eca..137c8f4 100644 --- a/app/Constants/v3/SsdbKeys.php +++ b/app/Constants/v3/SsdbKeys.php @@ -25,16 +25,6 @@ class SsdbKeys extends AbstractConstants */ const STORE_MONTH_SALES = 'store_m_sales_'; - /** - * @Message("用户新订单统计") - */ - const USER_ORDER_BADGE = 'user_order_badge_'; - - /** - * @Message("店铺新订单统计") - */ - const STORE_ORDER_BADGE = 'store_order_badge_'; - /** * @Message("收藏店铺") */ diff --git a/app/Controller/TestController.php b/app/Controller/TestController.php index 7542347..cbacb97 100644 --- a/app/Controller/TestController.php +++ b/app/Controller/TestController.php @@ -238,11 +238,6 @@ class TestController extends AbstractController $res = $this->financialService->userByOLOrderRefund($orderMain->user_id, $orderMain->global_order_id, $orderMain->money); var_dump('financialService', $res); - // 记录badge - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); - $res = $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'refund', 1); - var_dump('$ssdb', $res); - } public function index2(RequestInterface $request) diff --git a/app/Controller/v3/HomeController.php b/app/Controller/v3/HomeController.php index ce46208..0fa5ed9 100644 --- a/app/Controller/v3/HomeController.php +++ b/app/Controller/v3/HomeController.php @@ -13,6 +13,7 @@ use App\Model\v3\FinancialRecord; use App\Request\v3\StoreIndexRequest; use App\Request\v3\UserIndexRequest; use App\Service\v3\Interfaces\ActivityServiceInterface; +use App\Service\v3\Interfaces\BadgeServiceInterface; use App\Service\v3\Interfaces\BannerServiceInterface; use App\Service\v3\Interfaces\CategoryServiceInterface; use App\Service\v3\Interfaces\CollectStoreServiceInterface; @@ -26,6 +27,7 @@ use App\Service\v3\Interfaces\UserCenterBlockServiceInterface; use App\Service\v3\Interfaces\UserInfoServiceInterface; use App\TaskWorker\SSDBTask; use Hyperf\Di\Annotation\Inject; +use Hyperf\Redis\Redis; use Hyperf\Utils\ApplicationContext; use Psr\Http\Message\ResponseInterface; @@ -102,6 +104,13 @@ class HomeController extends BaseController * @var RevenueListServiceInterface */ protected $revenueListService; + + /** + * @Inject + * @var BadgeServiceInterface + */ + protected $badgeService; + /** * 小程序首页,根据market_id * 1.banner数据 @@ -109,7 +118,6 @@ class HomeController extends BaseController * 3.活动数据(秒杀、团购、新品、无) * 4.tabs数据 */ - public function appletIndex() { $marketId = $this->request->input('market_id', -1); @@ -171,17 +179,7 @@ class HomeController extends BaseController $data['user']['coupon_count'] = $this->couponService->countAvailableByUser($params['user_id']); $data['user']['role'] = $roles; - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); - $data['badge'] = [ - 'unpaid' => 0, - 'receiving' => 0, - 'completed' => 0, - 'refund' => 0, - ]; - $badge = $ssdb->exec('hgetall', SsdbKeys::USER_ORDER_BADGE.$params['user_id']); - if (!empty($badge)) { - $data['badge'] = array_merge($data['badge'], $badge); - } + $data['badge'] = $this->badgeService->allByUserOrder($params['user_id']); $data['block'] = $this->userCenterBlockService->all($roles); @@ -245,12 +243,7 @@ class HomeController extends BaseController $data['new_user']['all']++; } - $data['badge'] = [ - 'unpaid' => 0, - 'receiving' => 0, - 'completed' => 0, - 'refund' => 0, - ]; + $data['badge'] = $this->badgeService->allByStoreOrder($params['store_id']); return $this->success($data); } diff --git a/app/Controller/v3/NotifyController.php b/app/Controller/v3/NotifyController.php index 5461b72..126564b 100644 --- a/app/Controller/v3/NotifyController.php +++ b/app/Controller/v3/NotifyController.php @@ -6,11 +6,11 @@ use App\Constants\v3\LogLabel; use App\Constants\v3\OrderState; use App\Constants\v3\OrderType; use App\Constants\v3\Payment; -use App\Constants\v3\SsdbKeys; use App\Controller\BaseController; use App\Model\v3\Order; use App\Model\v3\OrderGoods; use App\Model\v3\OrderMain; +use App\Service\v3\Interfaces\BadgeServiceInterface; use App\Service\v3\Interfaces\CouponRebateServiceInterface; use App\Service\v3\Interfaces\CouponServiceInterface; use App\Service\v3\Interfaces\DeviceServiceInterface; @@ -22,15 +22,12 @@ use App\Service\v3\Interfaces\MqttServiceInterface; use App\Service\v3\Interfaces\OrderOfflineServiceInterface; use App\Service\v3\Interfaces\OrderOnlineServiceInterface; use App\Service\v3\Interfaces\SeparateAccountsServiceInterface; -use App\Service\v3\Interfaces\UserServiceInterface; -use App\TaskWorker\SSDBTask; use EasyWeChat\Factory; use Hyperf\DbConnection\Db; use Hyperf\Guzzle\CoroutineHandler; use Exception; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpMessage\Stream\SwooleStream; -use Hyperf\Utils\ApplicationContext; use Symfony\Component\HttpFoundation\Request; class NotifyController extends BaseController @@ -60,12 +57,6 @@ class NotifyController extends BaseController */ protected $feiePrintService; - /** - * @Inject - * @var UserServiceInterface - */ - protected $userService; - /** * @Inject * @var CouponRebateServiceInterface @@ -102,6 +93,12 @@ class NotifyController extends BaseController */ protected $financialService; + /** + * @Inject + * @var BadgeServiceInterface + */ + protected $badgeService; + /** * @Inject * @var GoodsActivityServiceInterface @@ -176,6 +173,10 @@ class NotifyController extends BaseController $res = $this->feiePrintService->feiePrint($orderMain->global_order_id); Db::commit(); + + // 记录badge + $orderChildIds = Order::query()->where(['order_main_id' => $orderMain->global_order_id])->pluck('store_id'); + $this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::PAID); return true; } catch (Exception $e) { @@ -252,7 +253,7 @@ class NotifyController extends BaseController return true; } - $orderPaid = $this->orderOfflineService->doPaid($orderMain->global_order_id); + $orderPaid = $this->orderOfflineService->doByPaid($orderMain->global_order_id); $separate = $this->separateAccountsService->orderOfflinePaid($orderMain->global_order_id); // 喇叭通知,兼容旧音响,MQTT+IOT @@ -308,12 +309,12 @@ class NotifyController extends BaseController if ( empty($message) || $message['return_code'] != 'SUCCESS' - || !isset($message['result_code']) - || $message['result_code'] != 'SUCCESS' + || !isset($reqInfo['refund_status']) + || $reqInfo['refund_status'] != 'SUCCESS' ) { $this->log->event( LogLabel::ORDER_REFUND_NOTIFY_LOG, - $message + array_merge($message, $reqInfo) ); Db::rollBack(); return $fail('Unknown error but FAIL'); @@ -359,8 +360,8 @@ class NotifyController extends BaseController Db::commit(); // 记录badge - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); - $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'refund', 1); + $orderChildIds = array_values(array_column($orderChildren, 'store_id')); + $this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::REFUNDED); return true; } catch (Exception $e) { diff --git a/app/JsonRpc/OrderService.php b/app/JsonRpc/OrderService.php index 295122e..2e3fa60 100644 --- a/app/JsonRpc/OrderService.php +++ b/app/JsonRpc/OrderService.php @@ -10,6 +10,7 @@ use App\Exception\ErrorCodeException; use App\Model\v3\Order; use App\Model\v3\OrderGoods; use App\Model\v3\OrderMain; +use App\Service\v3\Interfaces\FinancialRecordServiceInterface; use App\Service\v3\Interfaces\OrderOnlineServiceInterface; use App\Service\v3\Interfaces\SeparateAccountsServiceInterface; use EasyWeChat\Factory; @@ -44,6 +45,12 @@ class OrderService implements OrderServiceInterface */ protected $separateAccountsService; + /** + * @Inject + * @var FinancialRecordServiceInterface + */ + protected $financialRecordService; + /** * 订单完成 * @param $global_order_id @@ -119,7 +126,7 @@ class OrderService implements OrderServiceInterface * @param $order_child_id *主订单ID, * @param $order_goods_id *订单商品ID * @param $note - * @throws InvalidConfigException + * @return array */ public function onlineSingleRefund($user_id, $note, $global_order_id, $order_child_id=null, $order_goods_id=null) { @@ -160,7 +167,7 @@ class OrderService implements OrderServiceInterface // 子订单 $orderChild = null; if ($order_child_id) { - $orderChild = Order::query()->where(['order_main_id' => $orderMain->global_order_id, 'id' => $order_child_id])->first(); + $orderChild = Order::query()->with('store:user_id')->where(['order_main_id' => $orderMain->global_order_id, 'id' => $order_child_id])->first(); } // 订单商品 @@ -186,7 +193,6 @@ class OrderService implements OrderServiceInterface } - var_dump('ordergoods', $orderGoods); $totalAmount = $orderMain->total_money; // 订单可退款金额,总订单金额不含配送费和服务费 $preRefundAmount = 0; // 预退款金额 $refundAmount = 0; // 实际退款金额 @@ -217,8 +223,6 @@ class OrderService implements OrderServiceInterface throw new ErrorCodeException(ErrorCode::ORDER_REFUND_FAIL); } - var_dump($orderMain->money, $preRefundAmount, $refundAmount); - // 开始退款 $config = config('wxpay'); $app = Factory::payment($config); @@ -278,15 +282,33 @@ class OrderService implements OrderServiceInterface $orderChild->refund_note = $note; $orderChild->refund_time = $currentTime; $orderChild->save(); - } - - if ($refundType == 'goods') { + } elseif ($refundType == 'goods') { $orderGoods->status = 3; $orderGoods->refund_note = $note; $orderGoods->refund_time = $currentTime; $orderGoods->save(); } + // 处理用户和商户流水 + if ($refundType == 'main') { # 整单退的话还得处理所有子订单的商户 + + $orderChildren = Order::query()->with('store:user_id')->where(['order_main_id' => $orderMain->global_order_id])->get(); + foreach ($orderChildren as $key => &$order) { + // 占订单金额的比例 + $rate = bcdiv($order->money, $totalAmount, 6); + // 计算优惠券所占金额 + $couponMoney = bcmul($orderMain->coupon_money, $rate, 6); + // 计算本次退款实际退款金额 + $refundStoreAmount = bcsub($order->money, $couponMoney, 2); + $this->financialRecordService->storeRefundDirect($order->store->user_id, $order->id, $refundStoreAmount); + } + + } elseif ($refundType == 'sub') { # 退子订单或者退单品的话,商户只有一个 + $this->financialRecordService->storeRefundDirect($orderChild->store->user_id, $orderChild->id, $refundAmount); + } + + $this->financialRecordService->userRefundDirect($orderMain->user_id, $orderMain->global_order_id, $refundAmount); + Db::commit(); return [ "status" => 200, diff --git a/app/Model/v3/FinancialRecord.php b/app/Model/v3/FinancialRecord.php index 98ac1e2..08d2570 100644 --- a/app/Model/v3/FinancialRecord.php +++ b/app/Model/v3/FinancialRecord.php @@ -66,14 +66,16 @@ class FinancialRecord extends Model const MONEY_TYPE_MM_PLAT_NEW_STORE = 10; // 市场经理发展新商户 const MONEY_TYPE_MP_PLAT_NEW_USER = 11; // 服务商发展新用户 const MONEY_TYPE_MP_PLAT_NEW_STORE = 12; // 服务商发展新商户 - const MONEY_TYPE_MP_OL_ORDER = 13; // 服务商线上订单分账(线上订单完成) + const MONEY_TYPE_USER_OL_ORDER_DIRECT_REFUND = 14; // 用户订单退款(直接退) + const MONEY_TYPE_MP_OL_ORDER = 13; // 服务商线上订单分账(线上订单完成) const MONEY_TYPE_USER_OFL_ORDER = 100; // 用户线下支付订单 const MONEY_TYPE_USER_OL_ORDER = 101; // 用户线上支付订单 const MONEY_TYPE_MP_WITHDRAW = 102; // 服务商提现类型 const MONEY_TYPE_MM_WITHDRAW = 103; // 市场经理提现类型 const MONEY_TYPE_CS_WITHDRAW = 104; // 社区提现类型 const MONEY_TYPE_STORE_WITHDRAW = 105; // 商户提现类型 + const MONEY_TYPE_STORE_OL_ORDER_DIRECT_REFUND = 106; // 商户订单退款(直接退) /** * 状态 diff --git a/app/Service/v3/Implementations/BadgeService.php b/app/Service/v3/Implementations/BadgeService.php new file mode 100644 index 0000000..8cd2f87 --- /dev/null +++ b/app/Service/v3/Implementations/BadgeService.php @@ -0,0 +1,171 @@ +sAddUserOrder('unpaid', $userId, $globalOrderId); + break; + + case OrderState::CANCELED: # 订单取消(用户) + $this->sAddUserOrder('canceled', $userId, $globalOrderId); + + foreach ($storeIds as $key => &$storeId) { + $this->sAddStoreOrder('canceled', $storeId, $globalOrderId); + } + break; + + case OrderState::PAID: # 已付款(用户) + $this->sAddUserOrder('receiving', $userId, $globalOrderId); + + foreach ($storeIds as $key => &$storeId) { + $this->sAddStoreOrder('paid', $storeId, $globalOrderId); + } + break; + + case OrderState::REFUNDING: # 用户申请退款 + case OrderState::REFUNDED: # 后台同意退款 + case OrderState::REFUND_REFUSE: # 后台拒绝退款 + $this->sAddUserOrder('refund', $userId, $globalOrderId); + + foreach ($storeIds as $key => &$storeId) { + $this->sAddStoreOrder('refund', $storeId, $globalOrderId); + } + break; + + case OrderState::REJECTION: # 后台拒单(后台) + $this->sAddUserOrder('rejection', $userId, $globalOrderId); + + foreach ($storeIds as $key => &$storeId) { + $this->sAddStoreOrder('rejection', $storeId, $globalOrderId); + } + break; + + case OrderState::DELIVERY: # 后台接单(后台) + $this->sAddUserOrder('receiving', $userId, $globalOrderId); + + foreach ($storeIds as $key => &$storeId) { + $this->sAddStoreOrder('delivery', $storeId, $globalOrderId); + } + break; + + case OrderState::COMPLETED: # 订单完成(用户或后台操作) + case OrderState::EVALUATED: # 订单评价(用户) + $this->sAddUserOrder('finish', $userId, $globalOrderId); + + foreach ($storeIds as $key => &$storeId) { + $this->sAddStoreOrder('finish', $storeId, $globalOrderId); + } + break; + } + } + + public function allByUserOrder($userId) + { + $redis = ApplicationContext::getContainer()->get(Redis::class); + return [ + 'unpaid' => count($redis->sMembers('badge_unpaid_user_'.$userId)), + 'receiving' => count($redis->sMembers('badge_receiving_user_'.$userId)), + 'finish' => count($redis->sMembers('badge_finish_user_'.$userId)), + 'refund' => count($redis->sMembers('badge_refund_user_'.$userId)), + 'canceled' => count($redis->sMembers('badge_canceled_user_'.$userId)), + 'rejection' => count($redis->sMembers('badge_rejection_store_'.$userId)), + ]; + } + + /** + * @inheritDoc + */ + public function allByStoreOrder($storeId) + { + $redis = ApplicationContext::getContainer()->get(Redis::class); + return [ + 'paid' => count($redis->sMembers('badge_paid_store_'.$storeId)), + 'delivery' => count($redis->sMembers('badge_delivery_store_'.$storeId)), + 'finish' => count($redis->sMembers('badge_canceled_store_'.$storeId)), + 'refund' => count($redis->sMembers('badge_refund_store_'.$storeId)), + 'canceled' => count($redis->sMembers('badge_canceled_store_'.$storeId)), + 'rejection' => count($redis->sMembers('badge_rejection_store_'.$storeId)), + ]; + } + + /** + * @inheritDoc + */ + public function sAddUserOrder($badge, $userId, $globalOrderId) + { + $redis = ApplicationContext::getContainer()->get(Redis::class); + $redis->sRem('badge_unpaid_user_'.$userId, $globalOrderId); # 移除用户待付款 + $redis->sRem('badge_receiving_user_'.$userId, $globalOrderId); # 移除用户待收货 + $redis->sRem('badge_finish_user_'.$userId, $globalOrderId); # 移除用户已完成 + $redis->sRem('badge_canceled_user_'.$userId, $globalOrderId); # 移除用户已取消 + $redis->sRem('badge_refund_user_'.$userId, $globalOrderId); # 移除用户退款售后 + $redis->sRem('badge_rejection_store_', $userId, $globalOrderId); # 移除用户拒单 + $redis->sAdd('badge_'.$badge.'_user_'.$userId, $globalOrderId); # 新增用户当前状态的值 + } + + /** + * @inheritDoc + */ + public function sAddStoreOrder($badge, $storeId, $globalOrderId) + { + $redis = ApplicationContext::getContainer()->get(Redis::class); + $redis->sRem('badge_paid_store_'.$storeId, $globalOrderId); # 移除商户待接单 + $redis->sRem('badge_delivery_store_'.$storeId, $globalOrderId); # 移除商户待送达 + $redis->sRem('badge_finish_store_'.$storeId, $globalOrderId); # 移除商户已完成 + $redis->sRem('badge_canceled_store_'.$storeId, $globalOrderId); # 移除商户已取消 + $redis->sRem('badge_refund_store_'.$storeId, $globalOrderId); # 移除商户退款售后 + $redis->sRem('badge_rejection_store_', $storeId, $globalOrderId); # 移除商户拒单 + $redis->sAdd('badge_'.$badge.'_store_'.$storeId, $globalOrderId); # 新增用户当前状态的值 + } + + /** + * @inheritDoc + */ + public function clearUserOrder($userId, $badge = 'all') + { + $redis = ApplicationContext::getContainer()->get(Redis::class); + if ($badge == 'all') { + $redis->del('badge_unpaid_user_'.$userId); # 移除用户待付款 + $redis->del('badge_receiving_user_'.$userId); # 移除用户待收货 + $redis->del('badge_finish_user_'.$userId); # 移除用户已完成 + $redis->del('badge_canceled_user_'.$userId); # 移除用户已取消 + $redis->del('badge_refund_user_'.$userId); # 移除用户退款售后 + $redis->del('badge_rejection_store_', $userId); # 移除用户拒单 + } else { + $redis->del('badge_'.$badge.'_user_'.$userId); + } + } + + /** + * @inheritDoc + */ + public function clearStoreOrder($storeId, $badge = 'all') + { + $redis = ApplicationContext::getContainer()->get(Redis::class); + if ($badge == 'all') { + $redis->del('badge_paid_user_'.$storeId); # 移除商户待付款 + $redis->del('badge_delivery_user_'.$storeId); # 移除商户待收货 + $redis->del('badge_finish_user_'.$storeId); # 移除商户已完成 + $redis->del('badge_canceled_user_'.$storeId); # 移除商户已取消 + $redis->del('badge_refund_user_'.$storeId); # 移除商户退款售后 + $redis->del('badge_rejection_store_', $storeId); # 移除商户拒单 + } else { + $redis->del('badge_'.$badge.'_user_'.$storeId); + } + } +} \ No newline at end of file diff --git a/app/Service/v3/Implementations/FinancialRecordService.php b/app/Service/v3/Implementations/FinancialRecordService.php index 62be94e..be47556 100644 --- a/app/Service/v3/Implementations/FinancialRecordService.php +++ b/app/Service/v3/Implementations/FinancialRecordService.php @@ -80,7 +80,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护社区服务点余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::CS, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money, 2); @@ -108,7 +108,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护社区服务点余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::CS, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money, 2); @@ -135,7 +135,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护社区服务点余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::CS, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money,2); @@ -163,7 +163,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::STORE, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money, 2); @@ -187,7 +187,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::STORE, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money, 2); @@ -264,7 +264,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::STORE, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money, 2); @@ -288,7 +288,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); // 维护余额 $balance = UserBalance::query()->firstOrNew([ - 'user_type' => UserType::STORE, + 'user_type' => $user_type, 'source_id' => $user_id ]); $balance->balance = bcadd($balance->balance, $money, 2); @@ -351,4 +351,39 @@ class FinancialRecordService implements FinancialRecordServiceInterface $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); } + + public function storeRefundDirect( + $user_id, + $source_id, + $money, + $user_type = UserType::STORE, + $source_type = FinancialRecord::SOURCE_TYPE_ORDER, + $money_type = FinancialRecord::MONEY_TYPE_STORE_OL_ORDER_DIRECT_REFUND, + $desc = '商户线上订单退款(直接退)', + $comment = '商户线上订单退款(后台直接退)' + ) + { + $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); + // 维护余额 + $balance = UserBalance::query()->firstOrNew([ + 'user_type' => $user_type, + 'source_id' => $user_id + ]); + $balance->balance = bcadd($balance->balance, $money, 2); + $balance->save(); + } + + public function userRefundDirect( + $user_id, + $source_id, + $money, + $user_type = UserType::USER, + $source_type = FinancialRecord::SOURCE_TYPE_ORDER, + $money_type = FinancialRecord::MONEY_TYPE_USER_OL_ORDER_DIRECT_REFUND, + $desc = '用户线上订单退款(直接退)', + $comment = '用户线上订单退款(后台直接退到微信)' + ) + { + $this->recordAll($user_id, $source_id, $money, $user_type, $source_type, $money_type, $desc, $comment); + } } \ No newline at end of file diff --git a/app/Service/v3/Implementations/OrderListService.php b/app/Service/v3/Implementations/OrderListService.php index 99bae87..279c073 100644 --- a/app/Service/v3/Implementations/OrderListService.php +++ b/app/Service/v3/Implementations/OrderListService.php @@ -4,18 +4,21 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\OrderState; use App\Constants\v3\OrderType; -use App\Constants\v3\SsdbKeys; use App\Model\v3\OrderMain; use App\Model\v3\Order; -use App\Model\v3\ShoppingCart; +use App\Service\v3\Interfaces\BadgeServiceInterface; use App\Service\v3\Interfaces\OrderListServiceInterface; -use App\TaskWorker\SSDBTask; -use Hyperf\Paginator\Paginator; -use Hyperf\Utils\ApplicationContext; +use Hyperf\Di\Annotation\Inject; class OrderListService implements OrderListServiceInterface { + /** + * @Inject + * @var BadgeServiceInterface + */ + protected $badgeService; + public function do() { // TODO: Implement do() method. @@ -33,34 +36,30 @@ class OrderListService implements OrderListServiceInterface public function onlineByUser($userId, $tab, $page=1, $pagesize=10) { - // 记录badge - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); $builder = OrderMain::query() ->with(['orderGoods', 'market']) ->where(['user_id' => $userId, 'type' => OrderType::ONLINE]); switch ($tab) { case 'all': - $ssdb->exec('hclear', SsdbKeys::USER_ORDER_BADGE.$userId); break; - case 'completed': - $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'completed', 0); + case 'finish': $builder->whereIn('state', OrderState::FINISH); break; case 'unpaid': - $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'unpaid', 0); $builder->where(['state' => OrderState::UNPAID]); break; case 'receiving': $builder->whereIn('state', OrderState::RECEIVING); - $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'receiving', 0); break; case 'refund': $builder->whereIn('state', OrderState::REFUND); - $ssdb->exec('hset', SsdbKeys::USER_ORDER_BADGE.$userId, 'refund', 0); break; } + // 清除badge + $this->badgeService->clearUserOrder($userId, $tab); + $paginate = $builder->orderBy('created_at', 'desc')->paginate($pagesize); $orders = $paginate->toArray(); return ['has_more_pages' => $paginate->hasMorePages(), 'orders' => $orders['data']]; @@ -136,6 +135,9 @@ class OrderListService implements OrderListServiceInterface } $v['state_text'] = $stateTxet[$v['state']]; } + + $this->badgeService->clearStoreOrder($storeId, $tab); + return $res; } diff --git a/app/Service/v3/Implementations/OrderOfflineService.php b/app/Service/v3/Implementations/OrderOfflineService.php index 0ca4633..4fa13e3 100644 --- a/app/Service/v3/Implementations/OrderOfflineService.php +++ b/app/Service/v3/Implementations/OrderOfflineService.php @@ -107,7 +107,7 @@ class OrderOfflineService implements OrderOfflineServiceInterface // TODO: Implement undo() method. } - public function doPaid($globalOrderId) + public function doByPaid($globalOrderId) { Db::beginTransaction(); try { diff --git a/app/Service/v3/Implementations/OrderOnlineService.php b/app/Service/v3/Implementations/OrderOnlineService.php index 7ee6c7a..f497d07 100644 --- a/app/Service/v3/Implementations/OrderOnlineService.php +++ b/app/Service/v3/Implementations/OrderOnlineService.php @@ -11,7 +11,6 @@ use App\Constants\v3\Payment; use App\Constants\v3\SsdbKeys; use App\Exception\ErrorCodeException; use App\Model\v3\Coupon; -use App\Model\v3\CouponRec; use App\Model\v3\Goods; use App\Model\v3\GoodsActivity; use App\Model\v3\Order; @@ -20,7 +19,7 @@ use App\Model\v3\OrderMain; use App\Model\v3\OrderSalesStatistic; use App\Model\v3\ShoppingCart; use App\Model\v3\Store; -use App\Model\v3\UserAddress; +use App\Service\v3\Interfaces\BadgeServiceInterface; use App\Service\v3\Interfaces\CouponRecServiceInterface; use App\Service\v3\Interfaces\CouponServiceInterface; use App\Service\v3\Interfaces\GoodsActivityServiceInterface; @@ -88,6 +87,12 @@ class OrderOnlineService implements OrderOnlineServiceInterface */ protected $shopCartUpdateService; + /** + * @Inject + * @var BadgeServiceInterface + */ + protected $badgeService; + /** * 下单 * @param $marketId @@ -308,9 +313,8 @@ class OrderOnlineService implements OrderOnlineServiceInterface // 清除购物车 $this->shopCartUpdateService->doClear($userId, $marketId); - // 记录用户中心的badge - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); - $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$userId, 'unpaid', 1); + // 记录badge + $this->badgeService->doByOrder($userId, array_values(array_column($dataChildren, 'store_id')), $orderMain->global_order_id, OrderState::UNPAID); // 支付 return $this->paymentService->do($globalOrderId, $totalAmount, $userId, config('wechat.notify_url.online')); @@ -367,6 +371,11 @@ class OrderOnlineService implements OrderOnlineServiceInterface } Db::commit(); + + // 记录badge + $orderChildIds = array_values(array_column($orders, 'store_id')); + $this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::CANCELED); + return true; } catch (Exception $e) { Db::rollBack(); @@ -469,15 +478,6 @@ class OrderOnlineService implements OrderOnlineServiceInterface Db::commit(); - // 记录用户中心的badge - $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'receiving', 1); - - //记录商家中心的badge - $storeIds = array_values(array_column($orders, 'store_id')); - foreach ($storeIds as $storeId){ - $ssdb->exec('hincr', SsdbKeys::STORE_ORDER_BADGE . $storeId, 'paid', 1); - } - return true; } catch (Exception $e) { @@ -527,9 +527,10 @@ class OrderOnlineService implements OrderOnlineServiceInterface if (!$orderMain->save()) { throw new ErrorCodeException(ErrorCode::ORDER_APPLY_REFUND_FAIL); } + // 记录badge - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); - $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'refund', 1); + $orderChildIds = Order::query()->where(['order_main_id' => $orderMain->global_order_id])->pluck('store_id'); + $this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::REFUNDING); return true; } @@ -544,9 +545,11 @@ class OrderOnlineService implements OrderOnlineServiceInterface if (!$orderMain->save()) { throw new ErrorCodeException(ErrorCode::ORDER_COMPLETE_FAIL); } + // 记录badge - $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class); - $ssdb->exec('hincr', SsdbKeys::USER_ORDER_BADGE.$orderMain->user_id, 'completed', 1); + $orderChildIds = Order::query()->where(['order_main_id' => $orderMain->global_order_id])->pluck('store_id'); + $this->badgeService->doByOrder($orderMain->user_id, $orderChildIds, $orderMain->global_order_id, OrderState::COMPLETED); + return true; } diff --git a/app/Service/v3/Interfaces/BadgeServiceInterface.php b/app/Service/v3/Interfaces/BadgeServiceInterface.php new file mode 100644 index 0000000..4ada4e6 --- /dev/null +++ b/app/Service/v3/Interfaces/BadgeServiceInterface.php @@ -0,0 +1,64 @@ + \App\JsonRpc\LocationService::class, \App\Service\v3\Interfaces\OrderStatisticsServiceInterface::class => \App\Service\v3\Implementations\OrderStatisticsService::class, \App\Service\v3\Interfaces\UserRelationBindServiceInterface::class => \App\Service\v3\Implementations\UserCommunityBindService::class, + \App\Service\v3\Interfaces\BadgeServiceInterface::class => \App\Service\v3\Implementations\BadgeService::class, ]; From dae623caddef0283390ca14a776b46e28b3e65f1 Mon Sep 17 00:00:00 2001 From: weigang Date: Sat, 12 Sep 2020 14:20:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8F=90=E7=8E=B0=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E5=8F=91=E4=B8=AA=E5=B0=8F=E7=9F=AD=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Constants/v3/ErrorCode.php | 2 +- app/Constants/v3/SmsTemplateCode.php | 5 ++ app/Controller/v3/WithdrawController.php | 2 +- .../FinancialRecordService.php | 13 ++-- .../v3/Implementations/PaymentService.php | 25 ++++++- .../v3/Implementations/SmsAliSendService.php | 21 +++++- .../v3/Implementations/SmsAliService.php | 69 ------------------- .../v3/Interfaces/SmsSendServiceInterface.php | 4 +- .../v3/Interfaces/SmsServiceInterface.php | 9 --- config/autoload/dependencies.php | 2 +- 10 files changed, 59 insertions(+), 93 deletions(-) delete mode 100644 app/Service/v3/Implementations/SmsAliService.php delete mode 100644 app/Service/v3/Interfaces/SmsServiceInterface.php diff --git a/app/Constants/v3/ErrorCode.php b/app/Constants/v3/ErrorCode.php index 2529791..0c0a765 100644 --- a/app/Constants/v3/ErrorCode.php +++ b/app/Constants/v3/ErrorCode.php @@ -88,7 +88,7 @@ class ErrorCode extends AbstractConstants /************************************/ /** - * @Message("支付失败") + * @Message("提现支付失败") */ const PAYMENT_FAIL = 651; diff --git a/app/Constants/v3/SmsTemplateCode.php b/app/Constants/v3/SmsTemplateCode.php index e616f83..c8f6769 100644 --- a/app/Constants/v3/SmsTemplateCode.php +++ b/app/Constants/v3/SmsTemplateCode.php @@ -14,4 +14,9 @@ class SmsTemplateCode extends AbstractConstants * @Message("短信验证码") */ const ALI_VERIFY_CODE = 'SMS_201650612'; + + /** + * @Message("社区服务点奖励流水") + */ + const ALI_COMMUNITY_FINANCIAL = 'SMS_200690862'; } \ No newline at end of file diff --git a/app/Controller/v3/WithdrawController.php b/app/Controller/v3/WithdrawController.php index 660ce6f..689c4ae 100644 --- a/app/Controller/v3/WithdrawController.php +++ b/app/Controller/v3/WithdrawController.php @@ -194,7 +194,7 @@ class WithdrawController extends BaseController 'withdraw' => json_encode($withdraw), 'params' => json_encode(['balance' => $balance->balance, 'user_id' => $userId, 'store_id' => $storeId]), ]); - throw new ErrorCodeException(ErrorCode::STORE_WITHDRAW_FAIL, $e->getMessage()); + throw new ErrorCodeException(ErrorCode::STORE_WITHDRAW_FAIL); } } diff --git a/app/Service/v3/Implementations/FinancialRecordService.php b/app/Service/v3/Implementations/FinancialRecordService.php index be47556..d04d4a3 100644 --- a/app/Service/v3/Implementations/FinancialRecordService.php +++ b/app/Service/v3/Implementations/FinancialRecordService.php @@ -4,10 +4,9 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\UserType; use App\Model\v3\FinancialRecord; -use App\Model\v3\Store; use App\Model\v3\UserBalance; use App\Service\v3\Interfaces\FinancialRecordServiceInterface; -use App\Service\v3\Interfaces\SmsServiceInterface; +use App\Service\v3\Interfaces\SmsSendServiceInterface; use Hyperf\Di\Annotation\Inject; class FinancialRecordService implements FinancialRecordServiceInterface @@ -15,9 +14,9 @@ class FinancialRecordService implements FinancialRecordServiceInterface /** * @Inject - * @var SmsServiceInterface + * @var SmsSendServiceInterface */ - protected $smsAliService; + protected $smsAliSendService; public function ledgerAccounts($source_id, $money, $source_type, $money_type, $desc, $comment='') { @@ -87,7 +86,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $balance->save(); // 发送短信 - $this->smsAliService->sendForCommunityFinancial($user_id, $money); + $this->smsAliSendService->doCommunityFinancial($user_id, $money); } @@ -115,7 +114,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $balance->save(); // 发送短信 - $this->smsAliService->sendForCommunityFinancial($user_id, $money); + $this->smsAliSendService->doCommunityFinancial($user_id, $money); } /** @@ -142,7 +141,7 @@ class FinancialRecordService implements FinancialRecordServiceInterface $balance->save(); // 发送短信 - $this->smsAliService->sendForCommunityFinancial($user_id, $money); + $this->smsAliSendService->doCommunityFinancial($user_id, $money); } diff --git a/app/Service/v3/Implementations/PaymentService.php b/app/Service/v3/Implementations/PaymentService.php index dff2b8d..f2e37e1 100644 --- a/app/Service/v3/Implementations/PaymentService.php +++ b/app/Service/v3/Implementations/PaymentService.php @@ -13,13 +13,17 @@ use App\Model\v3\OrderMain; use App\Model\v3\User; use App\Service\v3\Interfaces\GoodsActivityServiceInterface; use App\Service\v3\Interfaces\PaymentServiceInterface; +use App\Service\v3\Interfaces\SmsSendServiceInterface; use EasyWeChat\Factory; +use EasyWeChat\Kernel\Exceptions\InvalidArgumentException; use EasyWeChat\Kernel\Exceptions\InvalidConfigException; use EasyWeChat\Kernel\Support\Collection; use GuzzleHttp\Exception\GuzzleException; use Hyperf\DbConnection\Db; use Hyperf\Guzzle\CoroutineHandler; use Hyperf\Di\Annotation\Inject; +use Hyperf\Redis\Redis; +use Hyperf\Utils\ApplicationContext; use Psr\Http\Message\ResponseInterface; use function AlibabaCloud\Client\json; @@ -31,6 +35,11 @@ class PaymentService implements PaymentServiceInterface */ protected $log; + /** + * @var SmsSendServiceInterface + */ + protected $smsAliSendService; + public function do($globalOrderId, $money, $userId, $notifyUrl) { @@ -94,7 +103,7 @@ class PaymentService implements PaymentServiceInterface } /** - * 退款的整单,允许后台操作退款 + * 退款的整单,用户申请的退款 * @param $globalOrderId * @param $userId * @return array|bool|Collection|object|ResponseInterface|string @@ -147,7 +156,10 @@ class PaymentService implements PaymentServiceInterface * @param $userName * @param string $desc * @param string $checkName + * @return bool * @throws GuzzleException + * @throws InvalidConfigException + * @throws InvalidArgumentException */ public function payToWx($money, $tradeNo, $openId, $userName, $desc = '', $checkName = 'NO_CHECK') { @@ -179,7 +191,16 @@ class PaymentService implements PaymentServiceInterface 'result' => json_encode($result), 'desc' => $desc ]); - throw new ErrorCodeException(ErrorCode::PAYMENT_FAIL, $result['err_code_des']); + throw new ErrorCodeException(ErrorCode::PAYMENT_FAIL); + + // 如果是商户余额不足等原因,要发送短信给老总 + $arr = ['NOTENOUGH','AMOUNT_LIMIT']; + if (in_array($result['error_code'], $arr)) { + $redis = ApplicationContext::getContainer()->get(Redis::class); + if (!$redis->exists('send_withdraw_refuse_reson_'.date('Ymd'))) { + $this->smsAliSendService->doWithdrawFail($result['error_code'], $result['error_code_des']); + } + } } return true; diff --git a/app/Service/v3/Implementations/SmsAliSendService.php b/app/Service/v3/Implementations/SmsAliSendService.php index 81929d1..34bc7ea 100644 --- a/app/Service/v3/Implementations/SmsAliSendService.php +++ b/app/Service/v3/Implementations/SmsAliSendService.php @@ -7,6 +7,8 @@ use AlibabaCloud\Client\Exception\ClientException; use AlibabaCloud\Client\Exception\ServerException; use App\Constants\v3\ErrorCode; use App\Exception\ErrorCodeException; +use App\Model\v3\CsInfo; +use App\Model\v3\Market; use Exception; use App\Commons\Log; use App\Constants\v3\SmsTemplateCode; @@ -22,7 +24,7 @@ class SmsAliSendService implements SmsSendServiceInterface */ protected $log; - public function do($tel, $template, $templateParams) + public function do($tel, $template, $templateParams, $signName = '') { try { @@ -41,7 +43,7 @@ class SmsAliSendService implements SmsSendServiceInterface 'query' => [ 'RegionId' => $aliSms['regionid'], 'PhoneNumbers' => $tel, - 'SignName' => $aliSms['sign_name'], + 'SignName' => $signName ?: $aliSms['sign_name'], 'TemplateCode' => $template, 'TemplateParam' => $templateParams, ], @@ -86,4 +88,19 @@ class SmsAliSendService implements SmsSendServiceInterface // TODO: Implement removeVerifyCode() method. } + public function doCommunityFinancial($userId, $money) + { + $csInfo = CsInfo::query()->where(['admin_user_id' => $userId])->first(); + $market = Market::query()->where(['id' => $csInfo->market_id])->first(); + + $params = ['user_name' => $csInfo->name, 'market_name' => $market->name, 'money' => $money]; + return $this->do($csInfo->phone, SmsTemplateCode::ALI_COMMUNITY_FINANCIAL, json_encode($params)); + } + + public function doWithdrawFail($errorCode, $errorCodeDes) + { + $params = ['code' => $errorCode]; + return $this->do(18611745705, SmsTemplateCode::ALI_VERIFY_CODE, json_encode($params)); + } + } \ No newline at end of file diff --git a/app/Service/v3/Implementations/SmsAliService.php b/app/Service/v3/Implementations/SmsAliService.php deleted file mode 100644 index 5bcc7d6..0000000 --- a/app/Service/v3/Implementations/SmsAliService.php +++ /dev/null @@ -1,69 +0,0 @@ -regionId($alisms['regionid']) - ->asDefaultClient(); - - try { - $result = AlibabaCloud::rpc() - ->product($alisms['product']) - // ->scheme('https') // https | http - ->version('2017-05-25') - ->action('SendSms') - ->method('POST') - ->host($alisms['host']) - ->options([ - 'query' => [ - 'RegionId' => $alisms['regionid'], - 'PhoneNumbers' => $phone, - 'SignName' => $signName, - 'TemplateCode' => $template, - 'TemplateParam' => $templateParams, - ], - ]) - ->request(); - return $result->toArray(); - } catch (ClientException $e) { - $this->log->event('alisms', ['alisms_error_ClientException' => $e->getErrorMessage()]); - return false; - } catch (ServerException $e) { - $this->log->event('alisms', ['alisms_error_ServerException' => $e->getErrorMessage()]); - return false; - } - } - - public function sendForCommunityFinancial($userId, $money) - { - - $csInfo = CsInfo::query()->where(['admin_user_id' => $userId])->first(); - $market = Market::query()->where(['id' => $csInfo->market_id])->first(); - - $params = ['user_name' => $csInfo->name, 'market_name' => $market->name, 'money' => $money]; - return $this->send($csInfo->phone, self::TEMPLATE_COMMUNITY_FINANCIAL, json_encode($params)); - } -} \ No newline at end of file diff --git a/app/Service/v3/Interfaces/SmsSendServiceInterface.php b/app/Service/v3/Interfaces/SmsSendServiceInterface.php index d704721..d007aa0 100644 --- a/app/Service/v3/Interfaces/SmsSendServiceInterface.php +++ b/app/Service/v3/Interfaces/SmsSendServiceInterface.php @@ -4,10 +4,12 @@ namespace App\Service\v3\Interfaces; interface SmsSendServiceInterface { - public function do($tel, $template, $templateParams); + public function do($tel, $template, $templateParams, $signName = ''); public function check(); public function undo(); public function doVerifyCode($tel, $code); public function checkVerifyCode($tel, $code); public function undoVerifyCode($tel, $code); + public function doCommunityFinancial($userId, $money); + public function doWithdrawFail($errorCode, $errorCodeDes); } \ No newline at end of file diff --git a/app/Service/v3/Interfaces/SmsServiceInterface.php b/app/Service/v3/Interfaces/SmsServiceInterface.php deleted file mode 100644 index a071c5e..0000000 --- a/app/Service/v3/Interfaces/SmsServiceInterface.php +++ /dev/null @@ -1,9 +0,0 @@ - \App\Service\v3\Implementations\SeparateAccountsService::class, \App\Service\v3\Interfaces\UserServiceInterface::class => \App\Service\v3\Implementations\UserService::class, \App\Service\v3\Interfaces\CouponRebateServiceInterface::class => \App\Service\v3\Implementations\CouponRebateService::class, - \App\Service\v3\Interfaces\SmsServiceInterface::class => \App\Service\v3\Implementations\SmsAliService::class, + \App\Service\v3\Interfaces\SmsSendServiceInterface::class => \App\Service\v3\Implementations\SmsAliSendService::class, \App\Service\v3\Interfaces\AttachmentServiceInterface::class => \App\Service\v3\Implementations\AttachmentService::class, \App\JsonRpc\PrintServiceInterface::class => \App\JsonRpc\FeieService::class, \App\JsonRpc\LocationServiceInterface::class => \App\JsonRpc\LocationService::class,