橙汁先生 1 rok temu
rodzic
commit
203f1c5206

Plik diff jest za duży
+ 1814 - 0
app/controller/api/store/merchant/Taskorder.php


+ 249 - 0
app/controller/api/store/merchant/Taskorderlianc.php

@@ -0,0 +1,249 @@
1
+<?php
2
+/**
3
+ * @package merchant
4
+ * @Author: Qinii
5
+ * @Date: 2020/5/28
6
+ */
7
+namespace app\controller\api\store\merchant;
8
+
9
+use think\App;
10
+use crmeb\basic\BaseController;
11
+use app\common\repositories\system\merchant\MerchantRepository as repository;
12
+use think\facade\Db;
13
+use think\facade\Log;
14
+use function Symfony\Component\VarDumper\Dumper\esc;
15
+
16
+class Taskorderlianc extends BaseController
17
+{
18
+
19
+
20
+    public function lst2(){
21
+
22
+        echo 1423;
23
+        return;
24
+
25
+
26
+        $week_record = 7000;
27
+
28
+        $originator_award = round(($week_record * 0.05),2);
29
+
30
+
31
+        return;
32
+
33
+        $list = Db::name("user")->where("originator_id_old",">",0)->where("status",1)->field("uid,originator_id_old")->select()->toArray();
34
+        $sum_money = Db::name("old_user_lianc")->sum("number");
35
+
36
+        $lianc_list = Db::name("old_user_lianc")->order("id desc")->field("id,number,title")->select()->toArray();
37
+        $user_arr = [];
38
+
39
+        $lianc_list_arr = [];
40
+        foreach ($lianc_list as $key => $value) {
41
+            # code...
42
+            $lianc_list_arr[$value['id']] = $value;
43
+        }
44
+
45
+        foreach ($list as $key => $value) {
46
+            # code...
47
+            $user_arr[$value['originator_id_old']]['people'][] = $value['uid'];
48
+            $user_arr[$value['originator_id_old']]['money'] = $lianc_list_arr[$value['originator_id_old']]['number'];
49
+            $user_arr[$value['originator_id_old']]['title'] = $lianc_list_arr[$value['originator_id_old']]['title'];
50
+            $user_arr[$value['originator_id_old']]['id'] = $lianc_list_arr[$value['originator_id_old']]['id'];
51
+        }
52
+
53
+
54
+        //处理计算权重 和平均分配的金额
55
+        $total_num = 0;
56
+        $count_num = 0;
57
+        foreach ($user_arr as $key => $value) {
58
+            # code...
59
+            $total_num += round($value['money'] * count($value['people'])/1000,2);
60
+            $count_num += count($value['people']);
61
+        }
62
+        foreach ($user_arr as $key => $value) {
63
+            # code...
64
+            $rate  = round((  count($value['people']) * $value['money'])/$total_num,2)/1000;
65
+            $user_arr[$key]['rate'] = $rate;
66
+            $distribution_money = round($originator_award * $rate ,2);
67
+            $user_arr[$key]['distribution_money'] = $distribution_money;
68
+            $user_arr[$key]['people_award'] = round($distribution_money / count($value['people']),2);//可分配佣金
69
+        }
70
+
71
+        $count = 0;
72
+        foreach ($user_arr as $key => $value) {
73
+            $distribution_money = $value['distribution_money'];
74
+            # code...
75
+
76
+            foreach ($value['people'] as $k =>$v) {
77
+                # code...
78
+                $award = $value['people_award'];
79
+                //var_dump("uid:".$v." amount:".$award);
80
+
81
+                $res = Db::name("user")->where("uid",$v)->inc("total_amount_old",$award)->save();
82
+                Db::name("user")->where("uid",$v)->inc("amount_old",$award)->save();//不用冻结金额和提现额度来限制佣金发放
83
+
84
+                //$this->releaseTobeAmount($v,$award,$output);根据冻结金和提现额度来计算佣金的发放
85
+
86
+                if($res) {
87
+                    $$count  = $count +1;
88
+                    $this->change_user_log($v,'amount_old',1,$award,"relation_profits","联创分红入账"."-".$value['title']);
89
+                    //入账
90
+                    $week_data = [];
91
+                    $week_data['user_id'] =  $v;
92
+                    $week_data['user_lianc_id'] =  $value['id'];
93
+                    $week_data['money'] =  $award;
94
+                    $week_data['remark'] =  "联创分红入账主动执行";
95
+                    $week_data['all_record'] =  $originator_award;
96
+                    $week_data['all_amount'] =  $distribution_money;
97
+                    $week_data['create_time'] = time();
98
+                    Db::name("old_user_originator")->insert($week_data);
99
+                }else {
100
+                    // ..
101
+                }
102
+
103
+
104
+            }
105
+        }
106
+
107
+
108
+    }
109
+
110
+
111
+    //上周
112
+    public function getWeekStartEnd()
113
+    {
114
+        $now = time();
115
+        // 计算上周日 00:00 的时间戳
116
+        $last_sunday_start = strtotime('last Sunday', $now);
117
+        // 计算这周一 00:00 的时间戳
118
+        $this_monday_start = strtotime('this Monday', $last_sunday_start);
119
+        // 上周日 23:59:59 的时间戳,即这周一 00:00
120
+        $last_sunday_end = $this_monday_start - 1;
121
+        // 上周一 00:00 的时间戳,即上周日 24:00
122
+        $last_monday_start = $this_monday_start - 604800;
123
+
124
+        return [$last_monday_start, $last_sunday_end];
125
+    }
126
+
127
+
128
+    //本周
129
+    // public function getWeekStartEnd()
130
+    // {
131
+    //     $now = time();
132
+    //     // 计算本周一 00:00 的时间戳
133
+    //     $monday_start = strtotime('last Monday', $now);
134
+    //     if (date('w', $now) == 1) {
135
+    //         // 如果今天是周一,直接取今天的 00:00
136
+    //         $monday_start = strtotime('today', $now);
137
+    //     }
138
+    //     // 计算本周日 23:59:59 的时间戳
139
+    //     $sunday_end = strtotime('next Sunday', $now) + 86399;
140
+
141
+    //     return [$monday_start,$sunday_end];
142
+    // }
143
+
144
+
145
+    public function change_user_log($user_id,$type,$change_status,$money,$routine,$remark="",$is_admin=1,$appoint_money = 0)
146
+    {
147
+        $transition = [
148
+            'pv'=>1,
149
+            "gb"=>2,
150
+            "df"=>3,
151
+            "vr"=>4,
152
+            "bt"=>5,
153
+            "withdraw_quota"=>6,
154
+            "unsettled_pension"=>7,
155
+            "amount_old"=>8
156
+        ];
157
+        $routineInfo = Db::name("old_routine_log_of_key")->where("key",$routine)->find();
158
+        if(empty($routineInfo)) {
159
+            return false;
160
+        }
161
+        $key_id = isset($routineInfo['id']) ? $routineInfo['id'] : 0;
162
+
163
+        if($appoint_money > 0) {
164
+            $alter_money = $appoint_money;
165
+        }else{
166
+            //再去查询变更前的 金额
167
+            $alter_money = Db::name("user")->where('uid',$user_id)->value($type);
168
+        }
169
+        if($change_status == 1) {
170
+            //新增前
171
+            $alter_money = $alter_money-$money;
172
+        }else if($change_status == 2){
173
+            //减少前
174
+            $alter_money = $alter_money + $money;
175
+        }
176
+        if($alter_money < 0) {
177
+            $alter_money =0;
178
+        }
179
+        $inser_data = [];
180
+        $inser_data['user_id'] = $user_id;
181
+        $inser_data['type'] = $transition[$type];
182
+        $inser_data['change_status'] = $change_status;
183
+        $inser_data['money'] = $money;
184
+        $inser_data['routine_log_of_key_id'] = $key_id;
185
+        $inser_data['remark'] = $remark;
186
+        $inser_data['is_admin'] = $is_admin;
187
+        $inser_data['create_time'] = time();
188
+        $inser_data['alter_money'] = isset($alter_money) ? $alter_money : 0;
189
+        Db::name("old_user_log")->insert($inser_data);
190
+    }
191
+
192
+
193
+
194
+    /**
195
+     * 释放待发放佣金
196
+     */
197
+    public function releaseTobeAmount($user_id,$amount,$output)
198
+    {
199
+        $userInfo = Db::name("user")->find($user_id);
200
+        if(empty($userInfo)) {
201
+            return false;
202
+        }
203
+        $withdraw_quota = empty($userInfo['withdraw_quota_old']) ? 0 : $userInfo['withdraw_quota_old'];
204
+        $old_amount = empty($userInfo['tobe_amount_old']) ? 0 : $userInfo['tobe_amount_old'];
205
+        Db::name("user")->where("uid",$user_id)->save(['tobe_amount_old'=>0]);
206
+        $amount += $old_amount;
207
+        $inc_amount = 0;
208
+        $inc_tobe_amount = 0;
209
+        $dec_withdraw_quota = 0;
210
+
211
+        if(($amount - $withdraw_quota) > 0) {
212
+            $diff_money = $amount - $withdraw_quota;
213
+            $inc_amount = $withdraw_quota;
214
+            $dec_withdraw_quota = $withdraw_quota;
215
+            $inc_tobe_amount = $diff_money;
216
+        }elseif(($amount - $withdraw_quota)==0){
217
+            $inc_amount = $withdraw_quota;
218
+            $dec_withdraw_quota = $withdraw_quota;
219
+        }else {
220
+            // <0的情况
221
+            $diff_money = $withdraw_quota - $amount;
222
+            $inc_amount = $amount;
223
+            $dec_withdraw_quota = $amount;
224
+        }
225
+        if($inc_tobe_amount != 0 ) {
226
+
227
+            $res = Db::name("user")->where("uid",$user_id)->inc("tobe_amount_old",$inc_tobe_amount)->fetchSql()->inc("amount",$inc_amount)->dec("withdraw_quota_old",$dec_withdraw_quota)->save();
228
+
229
+
230
+
231
+        }else {
232
+            $res = Db::name("user")->where("uid",$user_id)->inc("amount_old",$inc_amount)->fetchSql()->dec("withdraw_quota_old",$dec_withdraw_quota)->save();
233
+
234
+        }
235
+        //记录日志 提现额度消费
236
+        if($dec_withdraw_quota > 0) {
237
+            $this->change_user_log($user_id,'withdraw_quota',2,$dec_withdraw_quota,"conversion_tobe_amount","佣金额度兑换佣金");
238
+        }
239
+    }
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+}