WokerTask/app/api/controller/ShopCallController.php

174 lines
6.8 KiB
PHP
Raw Normal View History

2023-12-27 14:06:33 +08:00
<?php
namespace app\api\controller;
2024-01-19 14:35:51 +08:00
use app\adminapi\logic\user\UserLogic;
2024-01-20 11:42:46 +08:00
use think\exception\ValidateException;
2023-12-27 14:06:33 +08:00
/**
* 商城主动调用接口类
*/
class ShopCallController extends BaseApiController
{
2024-01-19 14:35:51 +08:00
public array $notNeedLogin = ['user_first_order_share_profit', 'user_order_share_profit'];
2024-01-20 11:42:46 +08:00
public function initialize()
{
parent::initialize();
$this->apiSecret = config('project.shop_api_secret');
}
2024-01-19 14:35:51 +08:00
/**
* 用户首单分润
* 镇三级分润
*/
public function user_first_order_share_profit()
{
2024-01-20 11:42:46 +08:00
$params = $this->request->param();
if (!isset($params['data']) || !isset($params['timestamp'])) {
return $this->fail('未传入参数');
}
$timestamp = $params['timestamp'];
$iv = substr(md5($this->apiSecret.$timestamp), 5, 16);
$secretData = encrypt($params['data'], $this->apiSecret, $iv);
$requestDatas = decrypt($secretData, $this->apiSecret, $iv);
if (null === $requestDatas) {
return $this->fail('非法访问,解析失败');
}
$inviteCode = $requestDatas['promotion_code']; // 推广码
$orderMoney= $requestDatas['order_money']; // 订单金额
$orderNo= $requestDatas['order_no']; // 订单金额
2023-12-27 14:06:33 +08:00
2024-01-19 14:35:51 +08:00
// 推广人
$userSelf = UserLogic::getUserByInviteCode($inviteCode);
if (empty($userSelf)) {
return $this->fail('推广人不存在');
}
// 推广人用户角色
// 小队/小区队长
if (in_array($userSelf['group_id'] , [2, 18])) {
//村/社区合伙人
$where = ['group_id' => 3, 'village'=>$userSelf['village']];
$villageUser = UserLogic::getUser($where);
//镇/街道合伙人
$where1 = ['group_id' => 15, 'street'=>$userSelf['street']];
$streetUser = UserLogic::getUser($where1);
// 计算分润
2024-01-20 11:42:46 +08:00
UserLogic::shareProfit($userSelf, $villageUser, $streetUser, $orderMoney, $orderNo);
// 首单金额记录
UserLogic::firstOrderLog([$userSelf['id'], $villageUser['id'], $streetUser['id']], $orderMoney, $orderNo);
2024-01-19 14:35:51 +08:00
return $this->success('成功', [
2024-01-20 11:42:46 +08:00
['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)],
2024-01-19 14:35:51 +08:00
]);
}
// 村/社区合伙人
if ($userSelf['group_id'] == 3) {
// 查下级 小队
$where = ['group_id' => [2, 18], 'village'=>$userSelf['village']];
$bridgeUser = UserLogic::getUser($where);
//镇/街道合伙人
$where = ['group_id' => 15, 'village'=>$userSelf['village']];
$streetUser = UserLogic::getUser($where);
// 计算分润
2024-01-20 11:42:46 +08:00
UserLogic::shareProfit($bridgeUser, $userSelf, $streetUser, $orderMoney);
// 首单金额记录
UserLogic::firstOrderLog([$userSelf['id'], $bridgeUser['id'], $streetUser['id']], $orderMoney, $orderNo);
2024-01-19 14:35:51 +08:00
return $this->success('成功', [
2024-01-20 11:42:46 +08:00
['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)],
2024-01-19 14:35:51 +08:00
]);
}
// 镇/街道合伙人
if ($userSelf['group_id'] == 15) {
// 查下级村
$where = ['group_id' => 3, 'village'=>$userSelf['village']];
$villageUser = UserLogic::getUser($where);
//和小队
$where = ['group_id' => [2, 18], 'village'=>$userSelf['village']];
$bridgeUser = UserLogic::getUser($where);
// 计算分润
2024-01-20 11:42:46 +08:00
UserLogic::shareProfit($bridgeUser, $villageUser, $userSelf, $orderMoney);
// 首单金额记录
UserLogic::firstOrderLog([$userSelf['id'], $villageUser['id'], $userSelf['id']], $orderMoney, $orderNo);
2024-01-19 14:35:51 +08:00
return $this->success('成功', [
2024-01-20 11:42:46 +08:00
['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)],
2024-01-19 14:35:51 +08:00
]);
}
}
/**
* 用户订单分润
* 镇合伙人
*/
public function user_order_share_profit()
{
2024-01-20 11:42:46 +08:00
$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);
if (null === $requestDatas) {
return $this->fail('非法访问,解析失败');
}
$inviteCode = $requestDatas['promotion_code']; // 推广码
$orderMoney = $requestDatas['order_money']; // 订单金额 分
$orderNo = $requestDatas['order_no']; // 订单金额
2024-01-19 14:35:51 +08:00
// 推广人
$userSelf = UserLogic::getUserByInviteCode($inviteCode);
if (empty($userSelf)) {
return $this->fail('推广人不存在');
}
$proportion = 0.01; // 比例
// 镇/街道合伙人
if ($userSelf['group_id'] == 15) {
// 计算分润
2024-01-20 11:42:46 +08:00
UserLogic::userProfit($userSelf, $orderMoney, $proportion, $orderNo);
2024-01-19 14:35:51 +08:00
}
// 小队/小区队长
if (in_array($userSelf['group_id'] , [2, 18])) {
//镇/街道合伙人
$where1 = ['group_id' => 15, 'street'=>$userSelf['street']];
$streetUser = UserLogic::getUser($where1);
// 计算分润
2024-01-20 11:42:46 +08:00
UserLogic::userProfit($streetUser, $orderMoney, 0.01, $orderNo);
2024-01-19 14:35:51 +08:00
}
// 村/社区合伙人
if ($userSelf['group_id'] == 3) {
//镇/街道合伙人
$where = ['group_id' => 15, 'village'=>$userSelf['village']];
$streetUser = UserLogic::getUser($where);
// 计算分润
2024-01-20 11:42:46 +08:00
UserLogic::userProfit($streetUser, $orderMoney, 0.01, $orderNo);
2024-01-19 14:35:51 +08:00
}
2024-01-20 11:42:46 +08:00
return $this->success('成功', ['user_id' => $userSelf['id'], 'account' => $userSelf['account'], 'user_profit' => bcmul($orderMoney, $proportion, 2)]);
2024-01-19 14:35:51 +08:00
}
2023-12-27 14:06:33 +08:00
}