Subscribe.php 4.7 KB

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