Commit b7fa07b3 authored by yinxiaoling's avatar yinxiaoling

策略添加接口

parent 3a7c2dba
......@@ -111,6 +111,18 @@ trait Tool
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;
use Illuminate\Support\Facades\Validator;
use App\Http\Controllers\Tool;
use App\Service\StrategyService;
use App\models\StrategySet;
//use App\Http\Requests\StrategySetCreateRequest;
class StrategySetController extends Controller
......@@ -21,7 +22,7 @@ class StrategySetController extends Controller
public function store(Request $request,StrategyService $StrategyService){
$validator = Validator::make($request->all(), [
'name' => 'required|max:30',
'strategy_name' => 'required|max:30',
'user_sn' => 'required',
'call_number' => 'required',
'day_type' => 'required',
......@@ -30,10 +31,12 @@ class StrategySetController extends Controller
'project_sn' => 'required'
]);
/* if ($validator->fails()) {
if ($validator->fails()) {
return $this->errorWithInfo('表单验证失败', 401);
} */
}
$params = $request->all();
$successTotal = $failTotal = 0;
$failDataFile = '';
if (isset($params['upload'])){ //excel文件上传
$excelData = $StrategyService->validUploadExcel($request,'upload',8388608); //限制最大上传文件8M
if (isset($excelData['code'])){
......@@ -41,9 +44,29 @@ class StrategySetController extends Controller
}
//验证excel数据格式及不合格数据原因
$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;
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';
......
......@@ -4,9 +4,9 @@ namespace App\models;
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';
......
......@@ -4,7 +4,7 @@ namespace App\models;
use Illuminate\Database\Eloquent\Model;
class strategyTask extends Model
class StrategyTask extends Model
{
protected $fillable = ['phone','call_date','call_time','parent_sn','project_sn'];
......
......@@ -3,6 +3,7 @@ namespace App\Service;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Log;
use App\models\StrategyExcel;
class StrategyService
{
......@@ -51,9 +52,9 @@ class StrategyService
return ['msg'=>'excel处理失败', 'code'=>401];
}
//判断excel数据问题,$day_type//外呼日期类型 0每天 1日期前一天和当天 1需要验证值班日期必填
public function validExcelData($data,$day_type){
public function validExcelData($successData,$day_type){
$failData = [];
foreach ($data as $k=>$v){
foreach ($successData as $k=>$v){
$dataLab = 1;
if (strlen($v[0]) > 20){ //姓名最大20个字符,中文处理,放入失败数据中
array_push($v, "姓名过长");
......@@ -78,33 +79,33 @@ class StrategyService
$dataLab = 0;
}else{
$v[2] = date('Y-m-d',$unixTime); //处理存储db的日期格式(2020-05-13)
$data[$k] = $v;
$successData[$k] = $v;
}
}
}
if ($dataLab == 0){
unset($data[$k]);
unset($successData[$k]);
}
}
$failTotal = count($failData);
$successTotal = count($data);
$successTotal = count($successData);
$failDataFile = '';
if ($failTotal > 0){//把导出错误数据存入excel表格中供下载
$failDataTitle = ['姓名','*手机号码','值班日期','失败原因'];
array_unshift($failData, $failDataTitle);
$failExcelName = "导入失败数据_".date('YmdHis');
dump($failExcelName);
//dump($failExcelName);
$failFile = $this->storeExcelStyle($failExcelName, $failData,'','import');
$failDataFile = storage_path('export').'\\'.$failExcelName.'.xlsx';
if ($failFile){
$failDataFile = storage_path('export').'\\'.$failExcelName.'.xlsx';
}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
}
}
//添加策略处理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
if(!Schema::hasTable($tableName)){
Schema::create($tableName, function (Blueprint $table){
$table->increments('id');
$table->char('strategy_sn',100); //sn编号
$table->uuid('strategy_sn'); //sn编号
$table->char('strategy_name',50); //策略名称
$table->char('user_sn',100); //用户sn
$table->char('user_name',50); //用户名
......@@ -26,14 +26,13 @@ class DatabaseSeeder extends Seeder
$table->char('parent_sn',50); //主账号名
$table->char('project_sn',100); //项目sn
$table->integer('day_type')->default(0); //外呼日期类型 0每天 1日期前一天和当天
$table->integer('frequency_type')->default(1);//外呼频率类型 (1 一天一次 2 一天两次)
$table->unsignedSmallInteger('day_type')->default(0); //外呼日期类型 0每天 1日期前一天和当天
$table->unsignedSmallInteger('frequency_type')->default(1);//外呼频率类型 (1 一天一次 2 一天两次)
$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('latest_total')->default(0);//最新一次导入excel号码数量
$table->char('call_time_set',50); //呼叫设置时间点,两个用#号分割
$table->timestamp('updated_at')->nullable();
$table->timestamp('created_at')->nullable();
});
//加索引
......@@ -54,7 +53,8 @@ class DatabaseSeeder extends Seeder
$table->char('strategy_sn',100); //sn编号
$table->char('name',50)->nullable(); //姓名
$table->date('duty_date')->nullable(); //值班日期
$table->integer('phone'); //手机号
$table->unsignedBigInteger('phone'); //手机号
$table->timestamp('updated_at')->nullable();
$table->timestamp('created_at')->nullable();
});
//加索引
......@@ -69,15 +69,15 @@ class DatabaseSeeder extends Seeder
$table->increments('id');
$table->char('name',50)->nullable(); //sn编号
$table->date('duty_date')->nullable(); //值班日期(年月日)
$table->integer('phone'); //手机号
$table->unsignedBigInteger('phone'); //手机号
$table->char('call_number',50); //主叫号码
$table->date('call_date'); //外呼时间(年月日)
$table->time('call_time'); //外呼时间(时分秒)
$table->char('parent_sn',50); //主账号名
$table->char('project_sn',100); //项目sn
$table->integer('is_created')->default(0);//是否新建任务(0未建 1已建)
$table->integer('created_fail_number')->default(0);//任务创建失败尝试次数
$table->unsignedSmallInteger('is_created')->default(0);//是否新建任务(0未建 1已建)
$table->unsignedSmallInteger('created_fail_number')->default(0);//任务创建失败尝试次数
$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