Sfoglia il codice sorgente

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

sunxbiao 6 mesi fa
parent
commit
18f423c94b

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

@@ -94,7 +94,7 @@ class TaskPartnerProfits
94
      */
94
      */
95
     public function getOrderUidListByTime($startTime, $endTime, array $removeUserIdList = []): array
95
     public function getOrderUidListByTime($startTime, $endTime, array $removeUserIdList = []): array
96
     {
96
     {
97
-        $uidList = [];
97
+        $orderUidMap = [];
98
         try {
98
         try {
99
             // 本地订单
99
             // 本地订单
100
             $storeOrder = Db::name("store_order")
100
             $storeOrder = Db::name("store_order")
@@ -103,22 +103,28 @@ class TaskPartnerProfits
103
                 ->whereIn('status', [0, 1, 2, 3])
103
                 ->whereIn('status', [0, 1, 2, 3])
104
                 ->whereBetween("pay_time", [$startTime, $endTime])
104
                 ->whereBetween("pay_time", [$startTime, $endTime])
105
                 ->whereNotNull("pay_time") // 排除 pay_time 为 NULL 的订单
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
                 ->select()
107
                 ->select()
108
                 ->toArray();
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
             // 话费订单 order_huafei
115
             // 话费订单 order_huafei
113
             $orderHuafei = Db::name("order_huafei")
116
             $orderHuafei = Db::name("order_huafei")
114
                 ->whereNotIn('uid', $removeUserIdList)
117
                 ->whereNotIn('uid', $removeUserIdList)
115
                 ->where('status', '<>', 0) // 只要不是待支付的 即算是有效活跃度
118
                 ->where('status', '<>', 0) // 只要不是待支付的 即算是有效活跃度
116
                 ->whereBetween("finish_time", [$startTime, $endTime])
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
                 ->select()
121
                 ->select()
119
                 ->toArray();
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
                 ->whereNotIn('uid', $removeUserIdList)
132
                 ->whereNotIn('uid', $removeUserIdList)
127
                 ->where('status', '<>', 15) // 只要不是待支付的 即算是有效活跃度
133
                 ->where('status', '<>', 15) // 只要不是待支付的 即算是有效活跃度
128
                 ->whereBetween("create_time", [$startTime, $endTime])
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
                 ->select()
136
                 ->select()
131
                 ->toArray();
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
             $orderTb = Db::name("order_tb")
144
             $orderTb = Db::name("order_tb")
136
                 ->whereNotIn('uid', $removeUserIdList)
145
                 ->whereNotIn('uid', $removeUserIdList)
137
                 // ->where('status', '<>', 15) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
146
                 // ->where('status', '<>', 15) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
138
                 ->whereBetween("create_time", [$startTime, $endTime])
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
                 ->select()
149
                 ->select()
141
                 ->toArray();
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
             $orderPdd = Db::name("order_pdd")
157
             $orderPdd = Db::name("order_pdd")
146
                 ->whereNotIn('uid', $removeUserIdList)
158
                 ->whereNotIn('uid', $removeUserIdList)
147
                 ->where('pin_order_status', '<>', -1) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
159
                 ->where('pin_order_status', '<>', -1) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
148
                 ->whereBetween("group_time", [strtotime($startTime), strtotime($endTime)])
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
                 ->select()
162
                 ->select()
151
                 ->toArray();
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
             $orderVip = Db::name("order_vip")
170
             $orderVip = Db::name("order_vip")
156
                 ->whereNotIn('uid', $removeUserIdList)
171
                 ->whereNotIn('uid', $removeUserIdList)
157
                 ->where('status', '<>', 0) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
172
                 ->where('status', '<>', 0) // 只要不是待支付的 即算是有效活跃度 不能明确状态信息
158
                 ->whereBetween("order_time", [strtotime($startTime), strtotime($endTime)])
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
                 ->select()
175
                 ->select()
161
                 ->toArray();
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
         } catch (DataNotFoundException|ModelNotFoundException|DbException $e) {
182
         } catch (DataNotFoundException|ModelNotFoundException|DbException $e) {
165
             Log::error('分红-获取下单用户列表失败:' . json_encode([
183
             Log::error('分红-获取下单用户列表失败:' . json_encode([
166
                     'error_message' => $e->getMessage(),
184
                     'error_message' => $e->getMessage(),
@@ -171,7 +189,7 @@ class TaskPartnerProfits
171
                     'trace' => $e->getTraceAsString()
189
                     'trace' => $e->getTraceAsString()
172
                 ], JSON_UNESCAPED_UNICODE));
190
                 ], JSON_UNESCAPED_UNICODE));
173
         }
191
         }
174
-        return $uidList;
192
+        return $orderUidMap;
175
     }
193
     }
176
 
194
 
177
     public function getRedEnvelopeByTime($startTime, $endTime, $removeUserIdList = [])
195
     public function getRedEnvelopeByTime($startTime, $endTime, $removeUserIdList = [])
@@ -415,8 +433,8 @@ class TaskPartnerProfits
415
 
433
 
416
         // 6、记录日志
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
         // 7、执行分红
439
         // 7、执行分红
422
         $testRecord = [];
440
         $testRecord = [];
@@ -479,6 +497,9 @@ class TaskPartnerProfits
479
                     continue;
497
                     continue;
480
                 }
498
                 }
481
                 $dividendLogEntity->setArrivalPoint(bcadd($dividendLogEntity->getArrivalPoint() ?: '0.00', $allAward, 2));
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
                 if ($isTest == 0) {
504
                 if ($isTest == 0) {
484
                     $userdatassss = db::name("old_user_jbp")->where("id", $v)->find();
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
     public $expected = null;
17
     public $expected = null;
18
     public $feeWaiverUids = null;  // 免分配人员ID集合(可能由于业绩不达标)
18
     public $feeWaiverUids = null;  // 免分配人员ID集合(可能由于业绩不达标)
19
     public $arrivalPoint = null;  // 到账金额
19
     public $arrivalPoint = null;  // 到账金额
20
+    public $arrivalInfo = null;  // 到账金额
20
     public $result = null;  // 实际分配结果
21
     public $result = null;  // 实际分配结果
21
     public $isTest = null;  // 是否为测试数据
22
     public $isTest = null;  // 是否为测试数据
22
     public $remark = null;  // 备注
23
     public $remark = null;  // 备注
@@ -229,6 +230,30 @@ class DividendLogEntity extends DataEntity
229
     /**
230
     /**
230
      * @return mixed
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
     public function getResult()
257
     public function getResult()
233
     {
258
     {
234
         return $this->result;
259
         return $this->result;