Subscribe.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace app\api\controller;
  3. use app\api\controller\Base;
  4. use think\Db;
  5. use hg\apidoc\annotation as Apidoc;
  6. /**
  7. * @Apidoc\Title("申购模块")
  8. */
  9. class Subscribe extends Base
  10. {
  11. public function initialize()
  12. {
  13. parent::initialize();
  14. parent::checkLogin();
  15. }
  16. /**
  17. * @Apidoc\Title("获取商品导入模板地址")
  18. * @Apidoc\Desc("获取审批流程")
  19. * @Apidoc\Method("GET")
  20. * @Apidoc\Author("HG")
  21. * @Apidoc\Tag("")
  22. * @Apidoc\Returned("", type="string", desc="模板链接地址")
  23. */
  24. public function template_url()
  25. {
  26. $url = 'https://'.$_SERVER['HTTP_HOST'].'/template.xlsx';
  27. $this->success('获取成功',$url);
  28. }
  29. /**
  30. * @Apidoc\Title("获取商品导入后的商品信息")
  31. * @Apidoc\Desc("获取审批流程")
  32. * @Apidoc\Method("GET")
  33. * @Apidoc\Author("HG")
  34. * @Apidoc\Tag("")
  35. * @Apidoc\Query("url", type="string", desc="导入文件上传后的路径")
  36. * @Apidoc\Returned("", type="string", desc="模板链接地址")
  37. */
  38. public function goods_info()
  39. {
  40. $url = input('url');
  41. if(empty($url)){
  42. $this->error('参数错误');
  43. }
  44. $file_name = explode('/',$url);
  45. $import_path = $_SERVER['DOCUMENT_ROOT'].'/upload/excel/'.end($file_name);
  46. $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
  47. $objExcel = $objReader->load($import_path);
  48. $list = $objExcel->getActiveSheet()->toArray();
  49. if(empty($list)){
  50. $this->error('暂无数据');
  51. }
  52. $data = array();
  53. foreach ($list as $k=>$v){
  54. if($k > 0 && $v[0]){
  55. //判断分类是否有
  56. $old_cate_one_id = $cate_one_id = Db::name('goods_cate')->where('title',$v[1])->where('level',1)->value('id');
  57. $old_cate_two_id = $cate_two_id = Db::name('goods_cate')->where('title',$v[2])->where('level',2)->value('id');
  58. if(empty($cate_one_id)){
  59. Db::name('goods_cate')->insert(array('title'=>$v[1]));
  60. $cate_one_id = Db::name('goods_cate')->getLastInsID();
  61. Db::name('goods_cate')->insert(array('title'=>$v[2],'level'=>2,'pid'=>$cate_one_id));
  62. $cate_two_id = Db::name('goods_cate')->getLastInsID();
  63. }
  64. if(empty($cate_two_id)){
  65. Db::name('goods_cate')->insert(array('title'=>$v[2],'level'=>2,'pid'=>$cate_one_id));
  66. $cate_two_id = Db::name('goods_cate')->getLastInsID();
  67. }
  68. $goods_id = Db::name('store_goods')->where('name',$v[4])->value('id');
  69. if(empty($old_cate_one_id) || empty($old_cate_two_id) || empty($goods_id)){
  70. Db::name('store_goods')->insert(array('name'=>$v[4],'brand'=>$v[3],'first_classify'=>$cate_one_id,'second_classify'=>$cate_two_id,'user_id'=>$this->user_id));
  71. $goods_id = Db::name('store_goods')->getLastInsID();
  72. }
  73. $specification_name_arr = explode(',',$v[5]);
  74. $specification_value_arr = explode(',',$v[6]);
  75. if(count($specification_name_arr) != count($specification_value_arr)){
  76. $this->error('规格信息有误');
  77. }
  78. $specification = '';
  79. foreach ($specification_name_arr as $sk=>$sv){
  80. if($sk == 0){
  81. $specification = $sv.':'.$specification_value_arr[$sk];
  82. }else{
  83. $specification .= ','.$sv.':'.$specification_value_arr[$sk];
  84. }
  85. //保存规格键值
  86. $spec_id = Db::name('goods_spec')->where('goods_id',$goods_id)->where('spec_name',$sv)->where('spec_value',$specification_value_arr[$sk])->value('id');
  87. if(empty($spec_id)){
  88. Db::name('goods_spec')->insert(array('goods_id'=>$goods_id,'spec_name'=>$sv,'spec_value'=>$specification_value_arr[$sk]));
  89. }
  90. }
  91. $goods_item_id = Db::name('store_goods_item')->where('goods_id',$goods_id)->where('goods_spec',$specification)->value('id');
  92. if(empty($goods_item_id)){
  93. Db::name('store_goods_item')->insert(array('goods_id'=>$goods_id, 'goods_spec'=>$specification, 'goods_no'=>$v[0]));
  94. $goods_item_id = Db::name('store_goods_item')->getLastInsID();
  95. }
  96. $data[] = array('name'=>$v[4],'specification'=>$specification,'num'=>$v[7],'price'=>$v[8],'goods_item_id'=>$goods_item_id);
  97. }
  98. }
  99. $this->success('导入成功',$data);
  100. }
  101. }