|
|
@@ -12,6 +12,7 @@ namespace app\controller\api\v1;
|
|
|
|
|
|
|
|
|
use app\jobs\integral\IntegralJob;
|
|
|
+use app\model\order\StoreOrder;
|
|
|
use app\model\user\UserIntegral;
|
|
|
use app\services\activity\combination\StorePinkServices;
|
|
|
use app\services\diy\DiyServices;
|
|
|
@@ -61,17 +62,100 @@ class PublicController extends BaseController
|
|
|
public function test()
|
|
|
{
|
|
|
$list = UserIntegral::where('add_time', 'between', [1705766400, 1705852800])->where('extract_sun_real', null)->where('type', 0)
|
|
|
- ->whereNotLike('mark', '%加速%')->select();
|
|
|
+ ->group('link_id')->field('link_id,count(id)')->select();
|
|
|
var_dump($list);
|
|
|
- $list2 = UserIntegral::where('add_time', 'between', [1705766400, 1705852800])->where('extract_sun_real', null)->where('type', 0)
|
|
|
- ->whereLike('mark', '%加速%')->select();
|
|
|
- var_dump($list2);
|
|
|
- $list3 = UserIntegral::where('add_time', 'between', [1705766400, 1705852800])->where('extract_sun_real', null)->where('type', 1)
|
|
|
- ->whereLike('mark', '%推荐%')->select();
|
|
|
- var_dump($list3);
|
|
|
- $list4 = UserIntegral::where('add_time', 'between', [1705766400, 1705852800])->where('extract_sun_real', null)->where('type', 1)
|
|
|
- ->whereLike('mark', '%级差%')->select();
|
|
|
- var_dump($list4);
|
|
|
+
|
|
|
+ $this->dealOrderIntegral(StoreOrder::get(383));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public function dealOrderIntegral($order, $price)
|
|
|
+ {
|
|
|
+ /** @var UserAwardIntegralServices $awardIntegralService */
|
|
|
+ $awardIntegralService = app()->make(UserAwardIntegralServices::class);
|
|
|
+ /** @var UserServices $userService */
|
|
|
+ $userService = app()->make(UserServices::class);
|
|
|
+ /** @var UserLevelServices $levelServices */
|
|
|
+ $levelServices = app()->make(UserLevelServices::class);
|
|
|
+ $user = $userService->getUserInfo($order['uid']);
|
|
|
+ $integral_price = $price;
|
|
|
+ $total_price = $order['total_price'];
|
|
|
+ return $awardIntegralService->transaction(function () use ($award_price, $levelServices, $awardIntegralService, $userService, $user, $integral_price, $total_price, $order) {
|
|
|
+ try {
|
|
|
+ //添加静态积分
|
|
|
+ $static_integral_ratio = sys_config('static_integral_ratio', 0);
|
|
|
+ $give_static_integral = bcdiv(bcmul($total_price, $static_integral_ratio), 100, 2);
|
|
|
+// if ($give_static_integral > 0) {
|
|
|
+ $rate = sys_config('static_integral_rate', 3);
|
|
|
+ $extract_sum = bcmul($total_price, $rate, 2);
|
|
|
+ $mark = '购买商品,获得消费分';
|
|
|
+
|
|
|
+ var_dump($order['id']);
|
|
|
+ var_dump($give_static_integral);
|
|
|
+ var_dump($extract_sum);
|
|
|
+ var_dump($mark);
|
|
|
+// $awardIntegralService->incIntegral($order['uid'], $integral_price, $give_static_integral, $total_price, 0, $extract_sum, $order['id'], $mark);
|
|
|
+// }
|
|
|
+ //TODO 加动态积分
|
|
|
+ //推荐奖
|
|
|
+ $rate = sys_config('action_integral_rate', 3);
|
|
|
+ $spread = $userService->getUserInfo($user['spread_uid']);
|
|
|
+ if ($spread) {
|
|
|
+ if ($awardIntegralService->getPaySum($spread['uid']) >= 1000) {
|
|
|
+ $award_ratio = sys_config('recommend_integral', 0);
|
|
|
+ $give_action_integral = bcdiv(bcmul($total_price, $award_ratio), 100, 2);
|
|
|
+ if ($give_action_integral > 0) {
|
|
|
+ $extract_sum = bcmul($give_action_integral, $rate, 2);
|
|
|
+ $mark = '推荐用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得推荐积分';
|
|
|
+ var_dump($give_action_integral);
|
|
|
+ var_dump($extract_sum);
|
|
|
+ var_dump($mark);
|
|
|
+// $awardIntegralService->incIntegral($spread['uid'], $integral_price, $give_action_integral, $total_price, 1, $extract_sum, $order['id'], $mark);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($awardIntegralService->getPaySum($spread['uid']) > 0) {
|
|
|
+ $award_ratio = sys_config('recommend_speed_integral', 0);
|
|
|
+ $give_action_integral = bcdiv(bcmul($total_price, $award_ratio), 100, 2);
|
|
|
+ if ($give_action_integral > 0) {
|
|
|
+ $first = $awardIntegralService->getFirstStaticIntegral($spread['uid']);
|
|
|
+ $mark = ',推荐用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得加速积分';
|
|
|
+// $awardIntegralService->incUpdateIntegral($first['id'], $integral_price, $give_action_integral, $mark);
|
|
|
+ var_dump($give_action_integral);
|
|
|
+ var_dump($extract_sum);
|
|
|
+ var_dump($mark);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+// $levelServices->detection((int)$user['uid']);
|
|
|
+ $pass = [$user['uid']];
|
|
|
+ $send = 0;
|
|
|
+ while ($spread && !in_array($spread['uid'], $pass)) {
|
|
|
+ //先发奖,再结算等级
|
|
|
+ $level = $levelServices->getUserLevel($spread['uid']);
|
|
|
+ $ratio = $level['levelInfo']['group_award'] ?? 0;
|
|
|
+ $give_action_integral = bcdiv(bcmul($total_price, $ratio), 100, 2);
|
|
|
+ if ($give_action_integral > $send) {
|
|
|
+ $real_send = bcsub($give_action_integral, $send, 2);
|
|
|
+// if ($awardIntegralService->getHourExtractPaySum($spread['uid'], 24) > 0) {
|
|
|
+ $extract_sum = bcmul($real_send, $rate, 2);
|
|
|
+ $mark = '团队用户' . $user['nickname'] . "({$user['uid']})" . '购买商品,获得团队级差积分';
|
|
|
+// $awardIntegralService->incIntegral($spread['uid'], $integral_price, $real_send, $total_price, 1, $extract_sum, $order['id'], $mark);
|
|
|
+// }
|
|
|
+ var_dump($give_action_integral);
|
|
|
+ var_dump($extract_sum);
|
|
|
+ var_dump($mark);
|
|
|
+ $send = $give_action_integral;
|
|
|
+ }
|
|
|
+ $levelServices->detection((int)$spread['uid']);
|
|
|
+ $pass[] = $spread['uid'];
|
|
|
+ $spread = $userService->getUserInfo($spread['spread_uid']);
|
|
|
+ }
|
|
|
+// $this->autoExtract($awardIntegralService->getPrice());
|
|
|
+ return false;
|
|
|
+ } catch (\Throwable $e) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
}
|
|
|
|