|
|
@@ -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
|
+}
|