代码提交
This commit is contained in:
@@ -288,7 +288,7 @@ class UserController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果不是预期的格式,返回原始数据
|
// 如果不是预期的格式,返回原始数据
|
||||||
return !empty($isJson) ? json_encode(['code' => 500,'data' => $response]) : errorJson('无需验证码');
|
return !empty($isJson) ? json_encode(['code' => 200,'msg' => '无需验证码','data' => ['verifyCodeImage' => '', 'verifySessionId' => '']]) : successJson(['verifyCodeImage' => '', 'verifySessionId' => ''],'无需验证码');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$msg = '获取验证码失败'. $e->getMessage();
|
$msg = '获取验证码失败'. $e->getMessage();
|
||||||
return !empty($isJson) ? json_encode(['code' => 400,'msg' => $msg]) : errorJson($msg);
|
return !empty($isJson) ? json_encode(['code' => 400,'msg' => $msg]) : errorJson($msg);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class PostCreateAddFriendPlanV1Controller extends BaseController
|
|||||||
return ResponseHelper::error('场景ID不能为空', 400);
|
return ResponseHelper::error('场景ID不能为空', 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($params['deveiceGroups'])) {
|
if (empty($params['deviceGroups'])) {
|
||||||
return ResponseHelper::error('请选择设备', 400);
|
return ResponseHelper::error('请选择设备', 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ class PostCreateAddFriendPlanV1Controller extends BaseController
|
|||||||
'customTags' => $params['customTags'] ?? [],
|
'customTags' => $params['customTags'] ?? [],
|
||||||
];
|
];
|
||||||
$reqConf = [
|
$reqConf = [
|
||||||
'device' => $params['deveiceGroups'] ?? [],
|
'device' => $params['deviceGroups'] ?? [],
|
||||||
'remarkType' => $params['remarkType'] ?? '',
|
'remarkType' => $params['remarkType'] ?? '',
|
||||||
'greeting' => $params['greeting'] ?? '',
|
'greeting' => $params['greeting'] ?? '',
|
||||||
'addFriendInterval' => $params['addFriendInterval'] ?? '',
|
'addFriendInterval' => $params['addFriendInterval'] ?? '',
|
||||||
@@ -138,9 +138,9 @@ class PostCreateAddFriendPlanV1Controller extends BaseController
|
|||||||
|
|
||||||
//订单
|
//订单
|
||||||
if ($params['sceneId'] == 2) {
|
if ($params['sceneId'] == 2) {
|
||||||
if (!empty($params['orderTableFile'])) {
|
if (!empty($params['orderFileUrl'])) {
|
||||||
// 先下载到本地临时文件,再分析,最后删除
|
// 先下载到本地临时文件,再分析,最后删除
|
||||||
$originPath = $params['orderTableFile'];
|
$originPath = $params['orderFileUrl'];
|
||||||
$tmpFile = tempnam(sys_get_temp_dir(), 'order_');
|
$tmpFile = tempnam(sys_get_temp_dir(), 'order_');
|
||||||
// 判断是否为远程文件
|
// 判断是否为远程文件
|
||||||
if (preg_match('/^https?:\/\//i', $originPath)) {
|
if (preg_match('/^https?:\/\//i', $originPath)) {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class PostUpdateAddFriendPlanV1Controller extends BaseController
|
|||||||
return ResponseHelper::error('场景ID不能为空', 400);
|
return ResponseHelper::error('场景ID不能为空', 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($params['deveiceGroups'])) {
|
if (empty($params['deviceGroups'])) {
|
||||||
return ResponseHelper::error('请选择设备', 400);
|
return ResponseHelper::error('请选择设备', 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ class PostUpdateAddFriendPlanV1Controller extends BaseController
|
|||||||
'customTags' => $params['customTags'] ?? [],
|
'customTags' => $params['customTags'] ?? [],
|
||||||
];
|
];
|
||||||
$reqConf = [
|
$reqConf = [
|
||||||
'device' => $params['deveiceGroups'] ?? [],
|
'device' => $params['deviceGroups'] ?? [],
|
||||||
'remarkType' => $params['remarkType'] ?? '',
|
'remarkType' => $params['remarkType'] ?? '',
|
||||||
'greeting' => $params['greeting'] ?? '',
|
'greeting' => $params['greeting'] ?? '',
|
||||||
'addFriendInterval' => $params['addFriendInterval'] ?? '',
|
'addFriendInterval' => $params['addFriendInterval'] ?? '',
|
||||||
@@ -76,7 +76,7 @@ class PostUpdateAddFriendPlanV1Controller extends BaseController
|
|||||||
$sceneConf['messagePlans'],
|
$sceneConf['messagePlans'],
|
||||||
$sceneConf['scenarioTags'],
|
$sceneConf['scenarioTags'],
|
||||||
$sceneConf['customTags'],
|
$sceneConf['customTags'],
|
||||||
$sceneConf['deveiceGroups'],
|
$sceneConf['deviceGroups'],
|
||||||
$sceneConf['orderTableFileName'],
|
$sceneConf['orderTableFileName'],
|
||||||
$sceneConf['userInfo'],
|
$sceneConf['userInfo'],
|
||||||
$sceneConf['textUrl'],
|
$sceneConf['textUrl'],
|
||||||
@@ -113,9 +113,9 @@ class PostUpdateAddFriendPlanV1Controller extends BaseController
|
|||||||
|
|
||||||
//订单
|
//订单
|
||||||
if ($params['sceneId'] == 2) {
|
if ($params['sceneId'] == 2) {
|
||||||
if (!empty($params['orderTableFile'])) {
|
if (!empty($params['orderFileUrl'])) {
|
||||||
// 先下载到本地临时文件,再分析,最后删除
|
// 先下载到本地临时文件,再分析,最后删除
|
||||||
$originPath = $params['orderTableFile'];
|
$originPath = $params['orderFileUrl'];
|
||||||
$tmpFile = tempnam(sys_get_temp_dir(), 'order_');
|
$tmpFile = tempnam(sys_get_temp_dir(), 'order_');
|
||||||
// 判断是否为远程文件
|
// 判断是否为远程文件
|
||||||
if (preg_match('/^https?:\/\//i', $originPath)) {
|
if (preg_match('/^https?:\/\//i', $originPath)) {
|
||||||
|
|||||||
@@ -181,7 +181,6 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
$data['lastMsgTime'] = '';
|
$data['lastMsgTime'] = '';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//来源
|
//来源
|
||||||
$source = Db::name('traffic_source')->alias('ts')
|
$source = Db::name('traffic_source')->alias('ts')
|
||||||
->field(['wa.nickname', 'wa.avatar', 'wa.gender', 'wa.phone', 'wa.wechatId', 'wa.alias',
|
->field(['wa.nickname', 'wa.avatar', 'wa.gender', 'wa.phone', 'wa.wechatId', 'wa.alias',
|
||||||
@@ -277,7 +276,6 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$data['total'] = $total;
|
$data['total'] = $total;
|
||||||
$data['rmm'] = [
|
$data['rmm'] = [
|
||||||
'r' => 0,
|
'r' => 0,
|
||||||
@@ -397,19 +395,26 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function addPackage()
|
public function addPackage()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$type = $this->request->param('type', '');
|
||||||
$addPackageId = $this->request->param('addPackageId', '');
|
$addPackageId = $this->request->param('addPackageId', '');
|
||||||
$packageName = $this->request->param('packageName', '');
|
$packageName = $this->request->param('packageName', '');
|
||||||
$userIds = $this->request->param('userIds', []);
|
$userIds = $this->request->param('userIds', []);
|
||||||
|
$tableFile = $this->request->param('tableFile', '');
|
||||||
|
|
||||||
|
|
||||||
$companyId = $this->getUserInfo('companyId');
|
$companyId = $this->getUserInfo('companyId');
|
||||||
$userId = $this->getUserInfo('id');
|
$userId = $this->getUserInfo('id');
|
||||||
if (empty($addPackageId) && empty($packageName)) {
|
if (empty($addPackageId) && empty($packageName)) {
|
||||||
return ResponseHelper::error('存储的流量池不能为空');
|
return ResponseHelper::error('存储的流量池不能为空');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($type)) {
|
||||||
|
return ResponseHelper::error('请选择类型');
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($addPackageId)) {
|
if (!empty($addPackageId)) {
|
||||||
$package = Db::name('traffic_source_package')
|
$package = Db::name('traffic_source_package')
|
||||||
->where(['id' => $addPackageId, 'isDel' => 0])
|
->where(['id' => $addPackageId, 'isDel' => 0])
|
||||||
@@ -440,7 +445,15 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!empty($userIds)){
|
if ($type == 1) {
|
||||||
|
$result = $this->getPoolListByCompanyId($this->makeWhere(), false);
|
||||||
|
$result = json_decode($result, true);
|
||||||
|
$result = array_column($result['list'], 'identifier');
|
||||||
|
} elseif ($type == 2) {
|
||||||
|
if (empty($packageId)) {
|
||||||
|
return ResponseHelper::error('选择的用户');
|
||||||
|
}
|
||||||
|
//================== 表格数据处理 ==================
|
||||||
if (!is_array($userIds)) {
|
if (!is_array($userIds)) {
|
||||||
return ResponseHelper::error('选择的用户类型错误');
|
return ResponseHelper::error('选择的用户类型错误');
|
||||||
}
|
}
|
||||||
@@ -451,13 +464,80 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
->group('tp.identifier')
|
->group('tp.identifier')
|
||||||
->column('tc.identifier');
|
->column('tc.identifier');
|
||||||
} else {
|
} else {
|
||||||
$result = $this->getPoolListByCompanyId($this->makeWhere(),false);
|
/*if (empty($tableFile)){
|
||||||
$result = json_decode($result, true);
|
return ResponseHelper::error('请上传用户文件');
|
||||||
$result = array_column($result['list'],'identifier');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 先下载到本地临时文件,再分析,最后删除
|
||||||
|
$originPath = $tableFile;
|
||||||
|
$tmpFile = tempnam(sys_get_temp_dir(), 'user_');
|
||||||
|
// 判断是否为远程文件
|
||||||
|
if (preg_match('/^https?:\/\//i', $originPath)) {
|
||||||
|
// 远程URL,下载到本地
|
||||||
|
$fileContent = file_get_contents($originPath);
|
||||||
|
if ($fileContent === false) {
|
||||||
|
exit('远程文件下载失败: ' . $originPath);
|
||||||
|
}
|
||||||
|
file_put_contents($tmpFile, $fileContent);
|
||||||
|
} else {
|
||||||
|
// 本地文件,直接copy
|
||||||
|
if (!file_exists($originPath)) {
|
||||||
|
exit('文件不存在: ' . $originPath);
|
||||||
|
}
|
||||||
|
copy($originPath, $tmpFile);
|
||||||
|
}
|
||||||
|
// 解析临时文件
|
||||||
|
$ext = strtolower(pathinfo($originPath, PATHINFO_EXTENSION));
|
||||||
|
$rows = [];
|
||||||
|
if (in_array($ext, ['xls', 'xlsx'])) {
|
||||||
|
// 直接用composer自动加载的PHPExcel
|
||||||
|
$excel = \PHPExcel_IOFactory::load($tmpFile);
|
||||||
|
$sheet = $excel->getActiveSheet();
|
||||||
|
$data = $sheet->toArray();
|
||||||
|
if (count($data) > 1) {
|
||||||
|
array_shift($data); // 去掉表头
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($data as $cols) {
|
||||||
|
$rows[] = [
|
||||||
|
'name' => isset($cols[0]) ? trim($cols[0]) : '',
|
||||||
|
'phone' => isset($cols[1]) ? trim($cols[1]) : '',
|
||||||
|
'source' => isset($cols[2]) ? trim($cols[2]) : '',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} elseif ($ext === 'csv') {
|
||||||
|
$content = file_get_contents($tmpFile);
|
||||||
|
$lines = preg_split('/\r\n|\r|\n/', $content);
|
||||||
|
if (count($lines) > 1) {
|
||||||
|
array_shift($lines); // 去掉表头
|
||||||
|
foreach ($lines as $line) {
|
||||||
|
if (trim($line) === '') continue;
|
||||||
|
$cols = str_getcsv($line);
|
||||||
|
if (count($cols) >= 6) {
|
||||||
|
$rows[] = [
|
||||||
|
'name' => isset($cols[0]) ? trim($cols[0]) : '',
|
||||||
|
'phone' => isset($cols[1]) ? trim($cols[1]) : '',
|
||||||
|
'source' => isset($cols[2]) ? trim($cols[2]) : '',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unlink($tmpFile);
|
||||||
|
exit('暂不支持的文件类型: ' . $ext);
|
||||||
|
}
|
||||||
|
// 删除临时文件
|
||||||
|
unlink($tmpFile);*/
|
||||||
|
//================== 表格数据处理 ==================
|
||||||
|
}
|
||||||
|
|
||||||
|
$rows = [
|
||||||
|
['name' => '张三', 'phone' => '18883458888', 'source' => '234'],
|
||||||
|
['name' => '李四', 'phone' => '18878988889', 'source' => '456'],
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
if (in_array($type, [1, 2])) {
|
||||||
// 1000条为一组进行批量处理
|
// 1000条为一组进行批量处理
|
||||||
$batchSize = 1000;
|
$batchSize = 1000;
|
||||||
$totalRows = count($result);
|
$totalRows = count($result);
|
||||||
@@ -466,7 +546,6 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
$batchRows = array_slice($result, $i, $batchSize);
|
$batchRows = array_slice($result, $i, $batchSize);
|
||||||
if (!empty($batchRows)) {
|
if (!empty($batchRows)) {
|
||||||
// 2. 批量查询已存在的手机
|
// 2. 批量查询已存在的手机
|
||||||
$existingPhones = [];
|
|
||||||
$existing = Db::name('traffic_source_package_item')
|
$existing = Db::name('traffic_source_package_item')
|
||||||
->where(['companyId' => $companyId, 'packageId' => $packageId])
|
->where(['companyId' => $companyId, 'packageId' => $packageId])
|
||||||
->whereIn('identifier', $batchRows)
|
->whereIn('identifier', $batchRows)
|
||||||
@@ -491,6 +570,89 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// 1000条为一组进行批量处理
|
||||||
|
$batchSize = 1000;
|
||||||
|
$totalRows = count($rows);
|
||||||
|
|
||||||
|
try {
|
||||||
|
for ($i = 0; $i < $totalRows; $i += $batchSize) {
|
||||||
|
Db::startTrans();
|
||||||
|
$batchRows = array_slice($rows, $i, $batchSize);
|
||||||
|
if (!empty($batchRows)) {
|
||||||
|
$identifiers = array_column($batchRows, 'phone');
|
||||||
|
//流量池处理
|
||||||
|
$existing = Db::name('traffic_pool')
|
||||||
|
->whereIn('identifier', $identifiers)
|
||||||
|
->column('identifier');
|
||||||
|
|
||||||
|
$newData = [];
|
||||||
|
foreach ($batchRows as $row) {
|
||||||
|
if (!in_array($row['phone'], $existing)) {
|
||||||
|
$newData[] = [
|
||||||
|
'identifier' => $row['phone'],
|
||||||
|
'mobile' => $row['phone'],
|
||||||
|
'createTime' => time(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($newData)) {
|
||||||
|
Db::name('traffic_pool')->insertAll($newData);
|
||||||
|
}
|
||||||
|
|
||||||
|
//流量池来源处理
|
||||||
|
$newData2 = [];
|
||||||
|
$existing2 = Db::name('traffic_source')
|
||||||
|
->where(['companyId' => $companyId])
|
||||||
|
->whereIn('identifier', $identifiers)
|
||||||
|
->column('identifier');
|
||||||
|
foreach ($batchRows as $row) {
|
||||||
|
if (!in_array($row['phone'], $existing2)) {
|
||||||
|
$newData2[] = [
|
||||||
|
'type' => 0,
|
||||||
|
'name' => $row['name'],
|
||||||
|
'identifier' => $row['phone'],
|
||||||
|
'fromd' => $row['source'],
|
||||||
|
'companyId' => $companyId,
|
||||||
|
'createTime' => time(),
|
||||||
|
'updateTime' => time(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($newData2)) {
|
||||||
|
Db::name('traffic_source')->insertAll($newData2);
|
||||||
|
}
|
||||||
|
|
||||||
|
//流量池包数据处理
|
||||||
|
$newData3 = [];
|
||||||
|
$existing3 = Db::name('traffic_source_package_item')
|
||||||
|
->where(['companyId' => $companyId, 'packageId' => $packageId])
|
||||||
|
->whereIn('identifier', $identifiers)
|
||||||
|
->field('identifier')
|
||||||
|
->select();
|
||||||
|
foreach ($batchRows as $row) {
|
||||||
|
if (!in_array($row['phone'], $existing3)) {
|
||||||
|
$newData3[] = [
|
||||||
|
'packageId' => $packageId,
|
||||||
|
'companyId' => $companyId,
|
||||||
|
'identifier' => $row['phone'],
|
||||||
|
'createTime' => time(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($newData3)) {
|
||||||
|
Db::name('traffic_source_package_item')->insertAll($newData3);
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return ResponseHelper::success('添加成功');
|
return ResponseHelper::success('添加成功');
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return ResponseHelper::error($e->getMessage(), $e->getCode());
|
return ResponseHelper::error($e->getMessage(), $e->getCode());
|
||||||
@@ -523,6 +685,4 @@ class GetPotentialListWithInCompanyV1Controller extends BaseController
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -292,7 +292,7 @@ class CreateCompanyController extends BaseController
|
|||||||
$this->createFuncUsers($params);
|
$this->createFuncUsers($params);
|
||||||
Db::commit();
|
Db::commit();
|
||||||
|
|
||||||
// 设置部门权限
|
// 设置部门权限 ?????
|
||||||
$this->setDepartmentPrivileges($params);
|
$this->setDepartmentPrivileges($params);
|
||||||
|
|
||||||
return ResponseHelper::success();
|
return ResponseHelper::success();
|
||||||
|
|||||||
Reference in New Issue
Block a user