Import.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. namespace app\job;
  3. use think\queue\Job;
  4. use think\facade\Log;
  5. use think\facade\Db;
  6. use app\common\api\ChuanglanSmsApi;
  7. class Import{
  8. public function fire(Job $job, $data) {
  9. if ($this->deal($data)) {
  10. Log::info(json_encode($data));
  11. $job->delete();
  12. return true;
  13. }
  14. Log::error(json_encode($data));
  15. if ($job->attempts() >= 3) {
  16. $job->delete();
  17. return false;
  18. }
  19. $job->release(10); //10秒后重试
  20. }
  21. /**
  22. * 处理业务逻辑
  23. * @param type $data
  24. * @return bool
  25. */
  26. public function deal($data): bool {
  27. $res = Db::table("new_talent_zhiren")->where('id',$data['id'])->findOrEmpty();
  28. if($res){
  29. if($res['task_status'] != -1){
  30. return false;
  31. }
  32. $datas = getExcelDatas($res['task_file']);
  33. $datas = array_slice($datas, 1); //去标题
  34. $inserts = [];
  35. $street = Db::table("sys_dict")->where("pid",1655)->column("code","name");
  36. while ($row = array_shift($datas)) {
  37. $msg = [];
  38. $item = [];
  39. $cols = count($row);
  40. $item['data'] = 1;
  41. for ($i = 0; $i < $cols; $i++) {
  42. switch ($i){
  43. case 0:
  44. if(!in_array($row[$i],['企业用户','民办非企业','事业单位'])){
  45. if($row[$i] == '事业单位'){
  46. $item['special'] = 1;
  47. }else{
  48. $item['special'] = 0;
  49. }
  50. }else{
  51. array_push($msg,"导入的机构类型不正确");
  52. }
  53. break;
  54. case 1:
  55. if(empty($row[$i])){
  56. array_push($msg,"机构名称不能为空");
  57. }else{
  58. $info = Db::table("un_enterprise")->where('name',$row[$i])->findOrEmpty();
  59. if($info){
  60. array_push($msg,"机构名称已存在,请检查");
  61. }else{
  62. $isMatched = preg_match('/^[\x{4e00}-\x{9fa5}\(\)()\da-zA-Z&]{2,50}$/u', $row[$i], $matches);
  63. if($isMatched){
  64. $item['name'] = $row[$i];
  65. }else{
  66. array_push($msg,"机构名称只能是中文或数字");
  67. }
  68. }
  69. }
  70. break;
  71. case 2:
  72. $info = Db::table("un_enterprise")->where('idCard',$row[$i])->findOrEmpty();
  73. if($info){
  74. array_push($msg,"机构代码已存在,请检查");
  75. }else{
  76. $item['idCard'] = $row[$i];
  77. }
  78. break;
  79. case 3:
  80. $item['agentName'] = $row[$i];
  81. break;
  82. case 4:
  83. $item['agentPhone'] = $row[$i];
  84. break;
  85. case 5:
  86. $item['street'] = array_key_exists($row[$i],$street) ? $street[$row[$i]] : '00000';
  87. break;
  88. case 6:
  89. $item['address'] = $row[$i];
  90. break;
  91. case 7:
  92. $item['ephone'] = $row[$i];
  93. break;
  94. case 8:
  95. $item['bankCard'] = $row[$i];
  96. break;
  97. case 9:
  98. $item['bank'] = $row[$i];
  99. break;
  100. case 10:
  101. $item['bankNetwork'] = $row[$i];
  102. break;
  103. }
  104. }
  105. if(count($msg) >= 1){
  106. }
  107. $companyIds = [];
  108. $new = [];
  109. $new["companyIds"] = $companyIds ? implode(",", $companyIds) : null;
  110. $new["createTime"] = date("Y-m-d H:i:s");
  111. $inserts[] = $new;
  112. }
  113. }else{
  114. return false;
  115. }
  116. }
  117. }