Просмотр исходного кода

分红-增加限制分配条件,并增加记录日志

sunxbiao месяцев назад: 6
Родитель
Сommit
18f423c94b

+ 43 - 22
app/controller/api/store/merchant/TaskPartnerProfits.php

@@ -94,7 +94,7 @@ class TaskPartnerProfits
94 94
      */
95 95
     public function getOrderUidListByTime($startTime, $endTime, array $removeUserIdList = []): array
96 96
     {
97
-        $uidList = [];
97
+        $orderUidMap = [];
98 98
         try {
99 99
             // 本地订单
100 100
             $storeOrder = Db::name("store_order")
@@ -103,22 +103,28 @@ class TaskPartnerProfits
103 103
                 ->whereIn('status', [0, 1, 2, 3])
104 104
                 ->whereBetween("pay_time", [$startTime, $endTime])
105 105
                 ->whereNotNull("pay_time") // 排除 pay_time 为 NULL 的订单
106
-                ->field('mer_id, status, pay_time, total_price, uid')
106
+                ->field('mer_id, status, pay_time, total_price, uid, order_id, order_sn')
107 107
                 ->select()
108 108
                 ->toArray();
109
-            $storeOrderUidList = array_column($storeOrder, 'uid');
110
-            $uidList = array_merge($uidList, $storeOrderUidList);
109
+            foreach ($storeOrder as $order) {
110
+                $orderUidMap[$order['uid']][] = ['orderTable' => 'store_order', 'orderId' => $order['order_id'], 'orderSn' => $order['order_sn']];
111
+            }
112
+            // $storeOrderUidList = array_column($storeOrder, 'uid');
113
+            // $uidList = array_merge($uidList, $storeOrderUidList);
111 114
 
112 115
             // 话费订单 order_huafei
113 116
             $orderHuafei = Db::name("order_huafei")
114 117
                 ->whereNotIn('uid', $removeUserIdList)
115 118
                 ->where('status', '<>', 0) // 只要不是待支付的 即算是有效活跃度
116 119
                 ->whereBetween("finish_time", [$startTime, $endTime])
117
-                ->field('order_huafei_id, uid, status, finish_time, amount_price')
120
+                ->field('order_huafei_id, uid, status, finish_time, amount_price, order_sn')
118 121
                 ->select()
119 122
                 ->toArray();
120
-            $orderHuafeiUidList = array_column($orderHuafei, 'uid');
121
-            $uidList = array_merge($uidList, $orderHuafeiUidList);
123
+            foreach ($orderHuafei as $order) {
124
+                $orderUidMap[$order['uid']][] = ['orderTable' => 'order_huafei', 'orderId' => $order['order_huafei_id'], 'orderSn' => $order['order_sn']];
125
+            }
126
+            // $orderHuafeiUidList = array_column($orderHuafei, 'uid');
127
+            // $uidList = array_merge($uidList, $orderHuafeiUidList);
122 128
 
123 129
             // 三方订单
124 130
             // 京东
@@ -126,41 +132,53 @@ class TaskPartnerProfits
126 132
                 ->whereNotIn('uid', $removeUserIdList)
127 133
                 ->where('status', '<>', 15) // 只要不是待支付的 即算是有效活跃度
128 134
                 ->whereBetween("create_time", [$startTime, $endTime])
129
-                ->field('order_jd_id, uid, status, create_time, price')
135
+                ->field('order_jd_id, uid, status, create_time, price, order_sn')
130 136
                 ->select()
131 137
                 ->toArray();
132
-            $orderJdUidList = array_column($orderJd, 'uid');
133
-            $uidList = array_merge($uidList, $orderJdUidList);
138
+            foreach ($orderJd as $order) {
139
+                $orderUidMap[$order['uid']][] = ['orderTable' => 'order_jd', 'orderId' => $order['order_jd_id'], 'orderSn' => $order['order_sn']];
140
+            }
141
+            // $orderJdUidList = array_column($orderJd, 'uid');
142
+            // $uidList = array_merge($uidList, $orderJdUidList);
134 143
             // 淘宝
135 144
             $orderTb = Db::name("order_tb")
136 145
                 ->whereNotIn('uid', $removeUserIdList)
137 146
                 // ->where('status', '<>', 15) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
138 147
                 ->whereBetween("create_time", [$startTime, $endTime])
139
-                ->field('order_tb_id, uid, tk_status, create_time, pay_price')
148
+                ->field('order_tb_id, uid, tk_status, create_time, pay_price, order_sn')
140 149
                 ->select()
141 150
                 ->toArray();
142
-            $orderTbUidList = array_column($orderTb, 'uid');
143
-            $uidList = array_merge($uidList, $orderTbUidList);
151
+            foreach ($orderTb as $order) {
152
+                $orderUidMap[$order['uid']][] = ['orderTable' => 'order_tb', 'orderId' => $order['order_tb_id'], 'orderSn' => $order['order_sn']];
153
+            }
154
+            // $orderTbUidList = array_column($orderTb, 'uid');
155
+            // $uidList = array_merge($uidList, $orderTbUidList);
144 156
             // 拼多多
145 157
             $orderPdd = Db::name("order_pdd")
146 158
                 ->whereNotIn('uid', $removeUserIdList)
147 159
                 ->where('pin_order_status', '<>', -1) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
148 160
                 ->whereBetween("group_time", [strtotime($startTime), strtotime($endTime)])
149
-                ->field('order_pdd_id, uid, pin_order_status, create_time, pay_money')
161
+                ->field('order_pdd_id, uid, pin_order_status, create_time, pay_money, order_sn')
150 162
                 ->select()
151 163
                 ->toArray();
152
-            $orderPddUidList = array_column($orderPdd, 'uid');
153
-            $uidList = array_merge($uidList, $orderPddUidList);
164
+            foreach ($orderPdd as $order) {
165
+                $orderUidMap[$order['uid']][] = ['orderTable' => 'order_pdd', 'orderId' => $order['order_pdd_id'], 'orderSn' => $order['order_sn']];
166
+            }
167
+            // $orderPddUidList = array_column($orderPdd, 'uid');
168
+            // $uidList = array_merge($uidList, $orderPddUidList);
154 169
             // 唯品会
155 170
             $orderVip = Db::name("order_vip")
156 171
                 ->whereNotIn('uid', $removeUserIdList)
157 172
                 ->where('status', '<>', 0) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
158 173
                 ->whereBetween("order_time", [strtotime($startTime), strtotime($endTime)])
159
-                ->field('order_vip_id, uid, status, order_time, pay_money')
174
+                ->field('order_vip_id, uid, status, order_time, pay_money, order_sn')
160 175
                 ->select()
161 176
                 ->toArray();
162
-            $orderVipUidList = array_column($orderVip, 'uid');
163
-            $uidList = array_merge($uidList, $orderVipUidList);
177
+            foreach ($orderVip as $order) {
178
+                $orderUidMap[$order['uid']][] = ['orderTable' => 'order_vip', 'orderId' => $order['order_vip_id'], 'orderSn' => $order['order_sn']];
179
+            }
180
+            // $orderVipUidList = array_column($orderVip, 'uid');
181
+            // $uidList = array_merge($uidList, $orderVipUidList);
164 182
         } catch (DataNotFoundException|ModelNotFoundException|DbException $e) {
165 183
             Log::error('分红-获取下单用户列表失败:' . json_encode([
166 184
                     'error_message' => $e->getMessage(),
@@ -171,7 +189,7 @@ class TaskPartnerProfits
171 189
                     'trace' => $e->getTraceAsString()
172 190
                 ], JSON_UNESCAPED_UNICODE));
173 191
         }
174
-        return $uidList;
192
+        return $orderUidMap;
175 193
     }
176 194
 
177 195
     public function getRedEnvelopeByTime($startTime, $endTime, $removeUserIdList = [])
@@ -415,8 +433,8 @@ class TaskPartnerProfits
415 433
 
416 434
         // 6、记录日志
417 435
         // 获取周期内所有符合条件的订单
418
-        $feeUids = $this->getOrderUidListByTime($startTime, $endTime, $removeUserIdList);
419
-
436
+        $orderUidMap = $this->getOrderUidListByTime($startTime, $endTime, $removeUserIdList);
437
+        $feeUids = array_keys($orderUidMap);
420 438
 
421 439
         // 7、执行分红
422 440
         $testRecord = [];
@@ -479,6 +497,9 @@ class TaskPartnerProfits
479 497
                     continue;
480 498
                 }
481 499
                 $dividendLogEntity->setArrivalPoint(bcadd($dividendLogEntity->getArrivalPoint() ?: '0.00', $allAward, 2));
500
+                $arrivalInfo = $dividendLogEntity->getArrivalInfo() ?: [];
501
+                $arrivalInfo[$v] = $orderUidMap[$v];
502
+                $dividendLogEntity->setArrivalInfo($arrivalInfo);
482 503
 
483 504
                 if ($isTest == 0) {
484 505
                     $userdatassss = db::name("old_user_jbp")->where("id", $v)->find();

+ 25 - 0
app/entity/data/dividend/DividendLogEntity.php

@@ -17,6 +17,7 @@ class DividendLogEntity extends DataEntity
17 17
     public $expected = null;
18 18
     public $feeWaiverUids = null;  // 免分配人员ID集合(可能由于业绩不达标)
19 19
     public $arrivalPoint = null;  // 到账金额
20
+    public $arrivalInfo = null;  // 到账金额
20 21
     public $result = null;  // 实际分配结果
21 22
     public $isTest = null;  // 是否为测试数据
22 23
     public $remark = null;  // 备注
@@ -229,6 +230,30 @@ class DividendLogEntity extends DataEntity
229 230
     /**
230 231
      * @return mixed
231 232
      */
233
+    public function getArrivalInfo()
234
+    {
235
+        if (is_string($this->arrivalInfo)) {
236
+            return json_decode($this->arrivalInfo, true);
237
+        }
238
+        return $this->arrivalInfo;
239
+    }
240
+
241
+    /**
242
+     * @param mixed $arrivalInfo
243
+     * @return DividendLogEntity
244
+     */
245
+    public function setArrivalInfo($arrivalInfo): DividendLogEntity
246
+    {
247
+        if (is_array($arrivalInfo)) {
248
+            $arrivalInfo = json_encode($arrivalInfo);
249
+        }
250
+        $this->arrivalInfo = $arrivalInfo;
251
+        return $this;
252
+    }
253
+
254
+    /**
255
+     * @return mixed
256
+     */
232 257
     public function getResult()
233 258
     {
234 259
         return $this->result;