Commit b7fa07b3 authored by yinxiaoling's avatar yinxiaoling

策略添加接口

parent 3a7c2dba
...@@ -111,6 +111,18 @@ trait Tool ...@@ -111,6 +111,18 @@ trait Tool
return $data; return $data;
} }
function uidd($prefix=''){
if (function_exists('com_create_guid')){
return com_create_guid();
}else{
$chars = md5(uniqid(mt_rand(), true));
$uuid = substr($chars,0,8);
$uuid .= substr($chars,8,4);
$uuid .= substr($chars,12,4);
$uuid .= substr($chars,16,4);
$uuid .= substr($chars,20,12);
return $prefix . $uuid;
}
}
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ use Illuminate\Foundation\Validation\ValidatesRequests; ...@@ -8,6 +8,7 @@ use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use App\Http\Controllers\Tool; use App\Http\Controllers\Tool;
use App\Service\StrategyService; use App\Service\StrategyService;
use App\models\StrategySet;
//use App\Http\Requests\StrategySetCreateRequest; //use App\Http\Requests\StrategySetCreateRequest;
class StrategySetController extends Controller class StrategySetController extends Controller
...@@ -21,7 +22,7 @@ class StrategySetController extends Controller ...@@ -21,7 +22,7 @@ class StrategySetController extends Controller
public function store(Request $request,StrategyService $StrategyService){ public function store(Request $request,StrategyService $StrategyService){
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'name' => 'required|max:30', 'strategy_name' => 'required|max:30',
'user_sn' => 'required', 'user_sn' => 'required',
'call_number' => 'required', 'call_number' => 'required',
'day_type' => 'required', 'day_type' => 'required',
...@@ -30,10 +31,12 @@ class StrategySetController extends Controller ...@@ -30,10 +31,12 @@ class StrategySetController extends Controller
'project_sn' => 'required' 'project_sn' => 'required'
]); ]);
/* if ($validator->fails()) { if ($validator->fails()) {
return $this->errorWithInfo('表单验证失败', 401); return $this->errorWithInfo('表单验证失败', 401);
} */ }
$params = $request->all(); $params = $request->all();
$successTotal = $failTotal = 0;
$failDataFile = '';
if (isset($params['upload'])){ //excel文件上传 if (isset($params['upload'])){ //excel文件上传
$excelData = $StrategyService->validUploadExcel($request,'upload',8388608); //限制最大上传文件8M $excelData = $StrategyService->validUploadExcel($request,'upload',8388608); //限制最大上传文件8M
if (isset($excelData['code'])){ if (isset($excelData['code'])){
...@@ -41,9 +44,29 @@ class StrategySetController extends Controller ...@@ -41,9 +44,29 @@ class StrategySetController extends Controller
} }
//验证excel数据格式及不合格数据原因 //验证excel数据格式及不合格数据原因
$excelDataValid = $StrategyService->validExcelData($excelData, $params['day_type']); $excelDataValid = $StrategyService->validExcelData($excelData, $params['day_type']);
extract($excelDataValid);
unset($params['upload']);
} }
dd($excelDataValid);
dd('策略添加'); if (isset($successTotal) && $successTotal > 0){
$params['latest_total'] = $successTotal;
$params['total'] = $successTotal;
}
$strategySn = $this->uidd();
$params['strategy_sn'] = $strategySn;
$params['user_name'] = 'yxl002';
$params['parent_sn'] = 'ljs';
$StrategySet = new StrategySet($params);
$setReturn = $StrategySet->save();
if ($setReturn){ //策略保存成功,处理excel数据
if (isset($successTotal) && $successTotal > 0){
$StrategyService->insertStrategyExcel($strategySn, $successData);
}
}
//返回成功数、失败数、失败导出文件
$returnArr = compact('successTotal','failTotal','failDataFile');
return $this->successWithInfo(['data'=>$returnArr]);
} }
......
...@@ -4,9 +4,9 @@ namespace App\models; ...@@ -4,9 +4,9 @@ namespace App\models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class strategyExcel extends Model class StrategyExcel extends Model
{ {
protected $fillable = ['strategy_sn','phone']; protected $fillable = ['strategy_sn','phone','name','duty_date'];
protected $table = 'strategy_excel'; protected $table = 'strategy_excel';
......
...@@ -4,9 +4,9 @@ namespace App\models; ...@@ -4,9 +4,9 @@ namespace App\models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class strategySet extends Model class StrategySet extends Model
{ {
protected $fillable = ['strategy_sn','strategy_name','user_sn','user_name','parent_sn','project_sn','day_type','frequency_type','call_time_set']; protected $fillable = ['call_number','strategy_sn','strategy_name','user_sn','user_name','parent_sn','project_sn','day_type','frequency_type','call_time_set'];
protected $table = 'strategy_set'; protected $table = 'strategy_set';
......
...@@ -4,7 +4,7 @@ namespace App\models; ...@@ -4,7 +4,7 @@ namespace App\models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class strategyTask extends Model class StrategyTask extends Model
{ {
protected $fillable = ['phone','call_date','call_time','parent_sn','project_sn']; protected $fillable = ['phone','call_date','call_time','parent_sn','project_sn'];
......
...@@ -3,6 +3,7 @@ namespace App\Service; ...@@ -3,6 +3,7 @@ namespace App\Service;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use App\models\StrategyExcel;
class StrategyService class StrategyService
{ {
...@@ -51,9 +52,9 @@ class StrategyService ...@@ -51,9 +52,9 @@ class StrategyService
return ['msg'=>'excel处理失败', 'code'=>401]; return ['msg'=>'excel处理失败', 'code'=>401];
} }
//判断excel数据问题,$day_type//外呼日期类型 0每天 1日期前一天和当天 1需要验证值班日期必填 //判断excel数据问题,$day_type//外呼日期类型 0每天 1日期前一天和当天 1需要验证值班日期必填
public function validExcelData($data,$day_type){ public function validExcelData($successData,$day_type){
$failData = []; $failData = [];
foreach ($data as $k=>$v){ foreach ($successData as $k=>$v){
$dataLab = 1; $dataLab = 1;
if (strlen($v[0]) > 20){ //姓名最大20个字符,中文处理,放入失败数据中 if (strlen($v[0]) > 20){ //姓名最大20个字符,中文处理,放入失败数据中
array_push($v, "姓名过长"); array_push($v, "姓名过长");
...@@ -78,33 +79,33 @@ class StrategyService ...@@ -78,33 +79,33 @@ class StrategyService
$dataLab = 0; $dataLab = 0;
}else{ }else{
$v[2] = date('Y-m-d',$unixTime); //处理存储db的日期格式(2020-05-13) $v[2] = date('Y-m-d',$unixTime); //处理存储db的日期格式(2020-05-13)
$data[$k] = $v; $successData[$k] = $v;
} }
} }
} }
if ($dataLab == 0){ if ($dataLab == 0){
unset($data[$k]); unset($successData[$k]);
} }
} }
$failTotal = count($failData); $failTotal = count($failData);
$successTotal = count($data); $successTotal = count($successData);
$failDataFile = ''; $failDataFile = '';
if ($failTotal > 0){//把导出错误数据存入excel表格中供下载 if ($failTotal > 0){//把导出错误数据存入excel表格中供下载
$failDataTitle = ['姓名','*手机号码','值班日期','失败原因']; $failDataTitle = ['姓名','*手机号码','值班日期','失败原因'];
array_unshift($failData, $failDataTitle); array_unshift($failData, $failDataTitle);
$failExcelName = "导入失败数据_".date('YmdHis'); $failExcelName = "导入失败数据_".date('YmdHis');
dump($failExcelName); //dump($failExcelName);
$failFile = $this->storeExcelStyle($failExcelName, $failData,'','import'); $failFile = $this->storeExcelStyle($failExcelName, $failData,'','import');
$failDataFile = storage_path('export').'\\'.$failExcelName.'.xlsx';
if ($failFile){ if ($failFile){
$failDataFile = storage_path('export').'\\'.$failExcelName.'.xlsx';
}else{ //失败数据写入失败 }else{ //失败数据写入失败
dd('失败数据写入失败'); Log::channel('api')->error('错误文件excel写入失败');
} }
} }
return compact('data','failData','failTotal','successTotal','failDataFile'); return compact('successData','failData','failTotal','successTotal','failDataFile');
} }
...@@ -156,5 +157,27 @@ class StrategyService ...@@ -156,5 +157,27 @@ class StrategyService
} }
} }
//添加策略处理excel数据入库
public function insertStrategyExcel($strategySn,$data){
if (count($data) > 0){
$insertData = [];
$now = date('Y-m-d H:i:s');
foreach ($data as $k=>$v){
$insertTemp = [];
$insertTemp['strategy_sn'] = $strategySn;
$insertTemp['name'] = $v[0] == null ? '' : $v[0];
$insertTemp['phone'] = (int)$v[1];
$insertTemp['duty_date'] = $v[2] == null ? '' : $v[2];
$insertTemp['created_at'] = $now;
$insertTemp['updated_at'] = $now;
$insertData[] = $insertTemp;
}
//dd($insertData);
return StrategyExcel::insert($insertData);
}
}
} }
...@@ -18,7 +18,7 @@ class DatabaseSeeder extends Seeder ...@@ -18,7 +18,7 @@ class DatabaseSeeder extends Seeder
if(!Schema::hasTable($tableName)){ if(!Schema::hasTable($tableName)){
Schema::create($tableName, function (Blueprint $table){ Schema::create($tableName, function (Blueprint $table){
$table->increments('id'); $table->increments('id');
$table->char('strategy_sn',100); //sn编号 $table->uuid('strategy_sn'); //sn编号
$table->char('strategy_name',50); //策略名称 $table->char('strategy_name',50); //策略名称
$table->char('user_sn',100); //用户sn $table->char('user_sn',100); //用户sn
$table->char('user_name',50); //用户名 $table->char('user_name',50); //用户名
...@@ -26,14 +26,13 @@ class DatabaseSeeder extends Seeder ...@@ -26,14 +26,13 @@ class DatabaseSeeder extends Seeder
$table->char('parent_sn',50); //主账号名 $table->char('parent_sn',50); //主账号名
$table->char('project_sn',100); //项目sn $table->char('project_sn',100); //项目sn
$table->integer('day_type')->default(0); //外呼日期类型 0每天 1日期前一天和当天 $table->unsignedSmallInteger('day_type')->default(0); //外呼日期类型 0每天 1日期前一天和当天
$table->integer('frequency_type')->default(1);//外呼频率类型 (1 一天一次 2 一天两次) $table->unsignedSmallInteger('frequency_type')->default(1);//外呼频率类型 (1 一天一次 2 一天两次)
$table->char('call_time_set',50); //呼叫设置时间点,两个用#号分割 $table->char('call_time_set',50); //呼叫设置时间点,两个用#号分割
$table->integer('disabled')->default(1);//是否不可用 0启用 1停用 $table->unsignedSmallInteger('disabled')->default(1);//是否不可用 0启用 1停用
$table->integer('total')->default(0);//excel导入号码总数量 $table->integer('total')->default(0);//excel导入号码总数量
$table->integer('latest_total')->default(0);//最新一次导入excel号码数量 $table->integer('latest_total')->default(0);//最新一次导入excel号码数量
$table->char('call_time_set',50); //呼叫设置时间点,两个用#号分割 $table->timestamp('updated_at')->nullable();
$table->timestamp('created_at')->nullable(); $table->timestamp('created_at')->nullable();
}); });
//加索引 //加索引
...@@ -54,7 +53,8 @@ class DatabaseSeeder extends Seeder ...@@ -54,7 +53,8 @@ class DatabaseSeeder extends Seeder
$table->char('strategy_sn',100); //sn编号 $table->char('strategy_sn',100); //sn编号
$table->char('name',50)->nullable(); //姓名 $table->char('name',50)->nullable(); //姓名
$table->date('duty_date')->nullable(); //值班日期 $table->date('duty_date')->nullable(); //值班日期
$table->integer('phone'); //手机号 $table->unsignedBigInteger('phone'); //手机号
$table->timestamp('updated_at')->nullable();
$table->timestamp('created_at')->nullable(); $table->timestamp('created_at')->nullable();
}); });
//加索引 //加索引
...@@ -69,15 +69,15 @@ class DatabaseSeeder extends Seeder ...@@ -69,15 +69,15 @@ class DatabaseSeeder extends Seeder
$table->increments('id'); $table->increments('id');
$table->char('name',50)->nullable(); //sn编号 $table->char('name',50)->nullable(); //sn编号
$table->date('duty_date')->nullable(); //值班日期(年月日) $table->date('duty_date')->nullable(); //值班日期(年月日)
$table->integer('phone'); //手机号 $table->unsignedBigInteger('phone'); //手机号
$table->char('call_number',50); //主叫号码 $table->char('call_number',50); //主叫号码
$table->date('call_date'); //外呼时间(年月日) $table->date('call_date'); //外呼时间(年月日)
$table->time('call_time'); //外呼时间(时分秒) $table->time('call_time'); //外呼时间(时分秒)
$table->char('parent_sn',50); //主账号名 $table->char('parent_sn',50); //主账号名
$table->char('project_sn',100); //项目sn $table->char('project_sn',100); //项目sn
$table->integer('is_created')->default(0);//是否新建任务(0未建 1已建) $table->unsignedSmallInteger('is_created')->default(0);//是否新建任务(0未建 1已建)
$table->integer('created_fail_number')->default(0);//任务创建失败尝试次数 $table->unsignedSmallInteger('created_fail_number')->default(0);//任务创建失败尝试次数
$table->timestamp('created_at')->nullable(); $table->timestamp('created_at')->nullable();
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment