You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.3 KiB
PHP
104 lines
3.3 KiB
PHP
<?php
|
|
namespace Base\Service;
|
|
|
|
class MendService
|
|
{
|
|
public static $statusList = [
|
|
0 => '处理中',
|
|
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;
|
|
}
|
|
|
|
} |