From ad57a58001a768b77c7de01943035f86c5ec3d0e Mon Sep 17 00:00:00 2001 From: chenbo <709206448@qq.com> Date: Sat, 20 Jan 2024 16:34:12 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E7=94=A8=E6=88=B7=E6=8E=A8=E5=B9=BF?= =?UTF-8?q?=E5=88=86=E6=B6=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/ShopCallController.php | 114 ++++++++++++---------- app/common/logic/ShopRequestLogic.php | 13 +++ 2 files changed, 77 insertions(+), 50 deletions(-) diff --git a/app/api/controller/ShopCallController.php b/app/api/controller/ShopCallController.php index da1a361c..d097d8b3 100644 --- a/app/api/controller/ShopCallController.php +++ b/app/api/controller/ShopCallController.php @@ -3,6 +3,7 @@ namespace app\api\controller; use app\adminapi\logic\user\UserLogic; +use app\common\logic\ShopRequestLogic; use think\exception\ValidateException; /** @@ -11,7 +12,7 @@ use think\exception\ValidateException; class ShopCallController extends BaseApiController { public array $notNeedLogin = ['user_first_order_share_profit', 'user_order_share_profit']; - + public string $apiSecret = ''; public function initialize() { @@ -30,14 +31,16 @@ class ShopCallController extends BaseApiController } $timestamp = $params['timestamp']; $iv = substr(md5($this->apiSecret.$timestamp), 5, 16); - $secretData = encrypt($params['data'], $this->apiSecret, $iv); - $requestDatas = decrypt($secretData, $this->apiSecret, $iv); +// $secretData = encrypt($params['data'], $this->apiSecret, $iv); halt($secretData); + $requestDatas = decrypt($params['data'], $this->apiSecret, $iv); + if (null === $requestDatas) { return $this->fail('非法访问,解析失败'); } $inviteCode = $requestDatas['promotion_code']; // 推广码 $orderMoney= $requestDatas['order_money']; // 订单金额 - $orderNo= $requestDatas['order_no']; // 订单金额 + $orderNo = $requestDatas['order_no']; // 订单金额 + $orderId = $requestDatas['order_id']; // 订单id // 推广人 $userSelf = UserLogic::getUserByInviteCode($inviteCode); @@ -45,9 +48,7 @@ class ShopCallController extends BaseApiController return $this->fail('推广人不存在'); } - // 推广人用户角色 - - // 小队/小区队长 + // 推广人角色 - 小队/小区队长 if (in_array($userSelf['group_id'] , [2, 18])) { //村/社区合伙人 @@ -64,11 +65,18 @@ class ShopCallController extends BaseApiController // 首单金额记录 UserLogic::firstOrderLog([$userSelf['id'], $villageUser['id'], $streetUser['id']], $orderMoney, $orderNo); - return $this->success('成功', [ - ['user_id' => $userSelf['id'], 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], - ['user_id' => $villageUser['id'], 'account' => $villageUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], - ['user_id' => $streetUser['id'], 'account' => $streetUser['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], - ]); + $request['user'] = [ + ['type' => 1, 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], + ['type' => 2, 'account' => $villageUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], + ['type' => 3, 'account' => $streetUser['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], + ]; + $request['order_id'] = $orderId; + $timestamp = time(); + $iv1 = substr(md5($this->apiSecret.$timestamp), 5, 16); + $encryptStr = encrypt($request, $this->apiSecret, $iv1); + + // 通知商城 + $res = ShopRequestLogic::userProfitNotice(['data' => $encryptStr, 'timestamp' => $timestamp]); } // 村/社区合伙人 @@ -87,11 +95,18 @@ class ShopCallController extends BaseApiController // 首单金额记录 UserLogic::firstOrderLog([$userSelf['id'], $bridgeUser['id'], $streetUser['id']], $orderMoney, $orderNo); - return $this->success('成功', [ - ['user_id' => $bridgeUser['id'], 'account' => $bridgeUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], - ['user_id' => $userSelf['id'], 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], - ['user_id' => $streetUser['id'], 'account' => $streetUser['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], - ]); + $request['user'] = [ + ['type' => 1, 'account' => $bridgeUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], + ['type' => 2, 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], + ['type' => 3, 'account' => $streetUser['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], + ]; + $request['order_id'] = $orderId; + $timestamp = time(); + $iv1 = substr(md5($this->apiSecret.$timestamp), 5, 16); + $encryptStr = encrypt($request, $this->apiSecret, $iv1); + + // 通知商城 + $res = ShopRequestLogic::userProfitNotice(['data' => $encryptStr, 'timestamp' => $timestamp]); } // 镇/街道合伙人 @@ -110,12 +125,22 @@ class ShopCallController extends BaseApiController // 首单金额记录 UserLogic::firstOrderLog([$userSelf['id'], $villageUser['id'], $userSelf['id']], $orderMoney, $orderNo); - return $this->success('成功', [ - ['user_id' => $bridgeUser['id'], 'account' => $bridgeUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], - ['user_id' => $villageUser['id'], 'account' => $villageUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], - ['user_id' => $userSelf['id'], 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], - ]); + $request['user'] = [ + ['type' => 1, 'account' => $bridgeUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], + ['type' => 2, 'account' => $villageUser['account'], 'user_profit' => bcmul($orderMoney, 0.03, 2)], + ['type' => 3, 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], + ]; + $request['order_id'] = $orderId; + $timestamp = time(); + $iv1 = substr(md5($this->apiSecret.$timestamp), 5, 16); + $encryptStr = encrypt($request, $this->apiSecret, $iv1); + + // 通知商城 + $res = ShopRequestLogic::userProfitNotice(['data' => $encryptStr, 'timestamp' => $timestamp]); } + + + return $this->success('成功'); } /** @@ -127,47 +152,36 @@ class ShopCallController extends BaseApiController $params = $this->request->param(); $timestamp = $params['timestamp']; $iv = substr(md5($this->apiSecret.$timestamp), 5, 16); - $secretData = encrypt($params['data'], $this->apiSecret, $iv); - $requestDatas = decrypt($secretData, $this->apiSecret, $iv); + $requestDatas = decrypt($params['data'], $this->apiSecret, $iv); if (null === $requestDatas) { return $this->fail('非法访问,解析失败'); } - $inviteCode = $requestDatas['promotion_code']; // 推广码 + $streetCode = $requestDatas['street_code']; // 镇街地区码 $orderMoney = $requestDatas['order_money']; // 订单金额 分 $orderNo = $requestDatas['order_no']; // 订单金额 + $orderId = $requestDatas['order_id']; // 订单id - // 推广人 - $userSelf = UserLogic::getUserByInviteCode($inviteCode); + // 镇合伙人 + $userSelf = UserLogic::getUser(['street'=>$streetCode, 'group_id'=>15]); if (empty($userSelf)) { - return $this->fail('推广人不存在'); + return $this->fail('镇合伙人不存在'); } $proportion = 0.01; // 比例 - // 镇/街道合伙人 - if ($userSelf['group_id'] == 15) { - // 计算分润 - UserLogic::userProfit($userSelf, $orderMoney, $proportion, $orderNo); - } - // 小队/小区队长 - if (in_array($userSelf['group_id'] , [2, 18])) { - //镇/街道合伙人 - $where1 = ['group_id' => 15, 'street'=>$userSelf['street']]; - $streetUser = UserLogic::getUser($where1); - // 计算分润 - UserLogic::userProfit($streetUser, $orderMoney, 0.01, $orderNo); - } + // 计算分润 + UserLogic::userProfit($userSelf, $orderMoney, $proportion, $orderNo); - // 村/社区合伙人 - if ($userSelf['group_id'] == 3) { - //镇/街道合伙人 - $where = ['group_id' => 15, 'village'=>$userSelf['village']]; - $streetUser = UserLogic::getUser($where); - - // 计算分润 - UserLogic::userProfit($streetUser, $orderMoney, 0.01, $orderNo); - } + // 通知商城 + $request['user'] = [ + ['type' => 3, 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, 0.01, 2)], + ]; + $request['order_id'] = $orderId; + $timestamp = time(); + $iv1 = substr(md5($this->apiSecret.$timestamp), 5, 16); + $encryptStr = encrypt($request, $this->apiSecret, $iv1); + $res = ShopRequestLogic::userProfitNotice(['data' => $encryptStr, 'timestamp' => $timestamp]); return $this->success('成功', ['user_id' => $userSelf['id'], 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, $proportion, 2)]); } diff --git a/app/common/logic/ShopRequestLogic.php b/app/common/logic/ShopRequestLogic.php index b20e309e..53f8200f 100644 --- a/app/common/logic/ShopRequestLogic.php +++ b/app/common/logic/ShopRequestLogic.php @@ -244,4 +244,17 @@ class ShopRequestLogic extends BaseLogic return false; } } + + public static function userProfitNotice($param) + { + try { + $requestResponse = HttpClient::create()->request('POST', env('url.shop_prefix'). '/api/open/activityCommission', [ + 'body' => $param + ]); + return json_decode($requestResponse->getContent(), true); + } catch (Exception $e) { + self::setError($e->getMessage()); + return false; + } + } } \ No newline at end of file