'处理中', 1 => '处理成功', 2 => '处理失败', ]; public function getStatusText($status) { return self::$statusList[$status] ?? '未知'; } public function addMendTask($params, $permPromote = null, $handlePromote = null) { $userId = $params['user_id'] ?? 0; $orderTime = $params['order_time'] ?? ''; $toPromoteId = $params['promote_id_to'] ?? ''; $allowOverWeek = $params['allow_over_week'] ?? 0; $promoteService = new PromoteService(); if ($toPromoteId == -1) { $toPromoteId = 0; } if ($toPromoteId === '') { throw new \Exception('请选择需要变更的渠道'); } $user = M('user', 'tab_')->where(['id' => $userId])->find(); if (!$user) { throw new \Exception('用户不存在'); } if ($user['promote_id'] == $toPromoteId) { throw new \Exception('没有变更数据'); } if ($orderTime == '') { throw new \Exception('没有订单日期'); } if (strtotime($orderTime) > time()) { throw new \Exception('订单时间不能大于今天'); } if ($permPromote) { $levelColumn = 'level'. $permPromote['level'] . '_id'; $promote = M('promote', 'tab_')->where(['id' => $user['promote_id']])->where([$levelColumn => $permPromote['id']])->find(); if (!$promote) { throw new \Exception('所属推广员异常'); } } if (!$allowOverWeek && !$this->checkOrderTime(strtotime($orderTime))) { throw new \Exception('仅能补链本周数据,请重新选择补链时间'); } if (!$this->checkPromote(strtotime($orderTime), $user['account'])) { throw new \Exception('在订单日期内含有多个推广员,无法补链'); } $data = [ 'from_promote_id' => $user['promote_id'], 'to_promote_id' => $toPromoteId, 'order_time' => $orderTime, 'type' => 2, 'shift_ids' => [$userId], 'creator_type' => $handlePromote ? 1 : 0, 'creator_id' => $handlePromote ? $handlePromote['id'] : $_SESSION["onethink_admin"]["user_auth"]["uid"] ]; if(!empty($params['remark'])){ $data['remark'] = $params['remark']; } $result = $promoteService->addShiftTask($data); if (!$result['status']) { throw new \Exception($result['msg']); } } private function checkOrderTime($orderTime) { $sdefaultDate = date('Y-m-d'); $first = 1; //周一开始 $w = date('w',strtotime($sdefaultDate)); $checktime = strtotime("$sdefaultDate -" . ($w ? $w - $first : 6) .' days'); //本周开始时间 if($orderTime >= $checktime){ //在本周允许换绑 return true; } return false; } private function checkPromote($orderTime, $account) { $res = M('Spend','tab_')->field('promote_id')->where(['pay_time' => array('EGT', $orderTime), 'user_account' => $account])->group('promote_id')->select(); if(count($res) > 1) { return false; } return true; } }