WIN-2308041133\Administrator 12 시간 전
부모
커밋
ee6ea0f874
2개의 변경된 파일97개의 추가작업 그리고 1개의 파일을 삭제
  1. 96 0
      app/common/repositories/user/AwardIntegralPriceRepository.php
  2. 1 1
      app/controller/admin/system/config/ConfigOthers.php

+ 96 - 0
app/common/repositories/user/AwardIntegralPriceRepository.php

@@ -157,7 +157,103 @@ class AwardIntegralPriceRepository extends BaseRepository
 
         return true;
     }
+//    订单上涨10%就进行一次分红
+    public static function orderIntegralUp($price){ //传入当天价格
+        $order_lst = StoreOrder::where('paid',1)->where('is_del',0)->where('is_system_del',0)->where('status','=',0)->select();  //获取所有有效订单
+        try {
+            foreach ($order_lst as $item){
+                $user = User::where('uid',$item['uid'])->where('status',1)->find();
+                if ($user) {
+//                    订单购买当天价格
+                    list($startOfDay, $endOfDay) = self::getStartAndEndOfDay($item['pay_time']);
+                    $order_price = AwardIntegralPrice::where('add_time','>',$startOfDay)->where('add_time','<',$endOfDay)->value('price'); //购买当时价格
+                    $points_up_num = bcadd($item['points_up_num'],1,0); //订单触发次数+1
+                    $up_radio = bcmul($points_up_num, 0.1, 2); //触发需要增长的比例
+                    $up_num= bcadd(1,$up_radio,2);  //比例加+1   1+10%
+                    $up_price = bcmul($order_price,$up_num ,8);  //购买时积分价格乘以比例得到增长的价格
+                    if($price>$up_price){  //如果当天价格超过触发增长价格
+//                            订单触发分红,计算该订单的分红额度
+                        $range = bcmul($item['pay_price'],0.8,2);
+                        $down_range = bcmul($range,0.1,2);  //要扣除的10%额度 这分钱要加到奖金里
+                        if ($item['product_type'] == 1) {
+//                            $mark = '节能油';
+//                            $range_type = 'energy_saving_oil';
+//                            $integral_type = 'spread_oil_integral';
+                            //            发放分红积分
+                            $number2 = systemConfig('award_integral_ordinary', 6);
+                        } elseif ($item['product_type'] == 0) {
+//                            $mark = '普通';
+//                            $range_type = 'ordinary';
+//                            $integral_type = 'ordinary_integral';
+                            $number2 = systemConfig('award_integral_ordinary', 6);
+                        } elseif ($item['product_type'] == 2) {
+//                            $mark = '礼包';
+//                            $range_type = 'award_gift_pack';
+//                            $integral_type = 'spread_pack_integral';
+                            $number2 = systemConfig('award_integral_gift_pack', 1);
+                        }
+                        $number2 = bcmul($number2, 0.01, 2);
+                        $order_award_range = bcmul($item['pay_price'], $number2, 2);
+                        $award_integral = bcdiv($order_award_range, $order_price, 2);  //订单除以积分价格得到分红积分
+                        $award_integral= bcmul($award_integral,0.1,2); //要扣除的10%积分
+
+                        $make = app()->make(UserBillRepository::class);
+                        $userRepository = app()->make(UserRepository::class);
+                        $make->decBill($item['uid'], 'award_range', 'extract_award', [
+                            'link_id' => $item['order_id'],
+                            'status' => 1,
+                            'title' => '获取分红利润扣除分红额度',
+                            'number' => $down_range,
+                            'mark' => $user['nickname'] . '获取订单分红利润,减少分红额度',
+                            'balance' => bcsub($user['award_range'], $down_range, 2)
+                        ]);
+                        $userRepository->decField($item['uid'], 'award_range', $down_range);
+
+                        $make->decBill($item['uid'], 'award_integral', 'extract_award', [
+                            'link_id' => $item['order_id'],
+                            'status' => 1,
+                            'title' => '获取分红利润扣除分红积分',
+                            'number' => $award_integral,
+                            'mark' => $user['nickname'] . '获取订单分红利润,减少分红积分',
+                            'balance' => bcsub($user['award_integral'], $award_integral, 2)
+                        ]);
+                        $userRepository->decField($item['uid'], 'award_integral', $award_integral);
+
+                        $make->incBill($item['uid'], 'brokerage', 'order_one', [
+                            'link_id' => $item['order_id'],
+                            'status' => 1,
+                            'title' => '获取分红利润',
+                            'number' => $down_range,
+                            'mark' =>  $user['nickname'] . '获取订单分红利润',
+                            'balance' => 0
+                        ]);
+                        $userRepository->incBrokerage($item['uid'], $down_range);
+//                        $userRepository->incField($item['uid'], 'brokerage_price', $all_price);
+                    }
+                }
+            }
+        } catch (\Exception $e) {
+            @file_put_contents('quanju4.txt', $e->getMessage() . "-计算订单价格增长报错内容\r\n", 8);
+            @file_put_contents('quanju4.txt', $e->getFile() . "-文件\r\n", 8);
+            @file_put_contents('quanju4.txt', $e->getLine() . "-位置\r\n", 8);
+        }
 
+        return true;
+    }
+    public static function getStartAndEndOfDay($dateTimeString) {
+        // 将日期时间字符串转换为日期时间对象
+        $date = new \DateTime($dateTimeString);
+
+        // 设置时间为当天的0点0分0秒
+        $date->setTime(0, 0, 0);
+        $startOfDay = $date->getTimestamp();
+
+        // 设置时间为当天的23点59分59秒
+        $date->setTime(23, 59, 59);
+        $endOfDay = $date->getTimestamp();
+
+        return [$startOfDay, $endOfDay];
+    }
     public function setPrice($day, $price, $commission, $achievement, $num, $add_price)
     {
         $add_time = time();

+ 1 - 1
app/controller/admin/system/config/ConfigOthers.php

@@ -91,7 +91,7 @@ class ConfigOthers extends BaseController
         if ($data['promoter_type'] == 3 && (!ctype_digit((string)$data['promoter_low_money']) || $data['promoter_low_money'] <= 0))
             return app('json')->fail('满额分销最低金额必须大于0');
         if ($data['award_ordinary'] < 0)
-            return app('json')->fail('节能油和普通商品赠送分红额度消费金额不能小于0');
+            return app('json')->fail('节能油和普通商品赠送分红额度倍数不能小于0');
         if ($data['award_gift_pack'] < 0)
             return app('json')->fail('礼包商品赠送分红额度消费金额不能小于0');
         if ($data['award_integral_ordinary'] < 0)