Set.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace Goods\Lib;
  3. use Dever;
  4. class Set
  5. {
  6. # 获取商品及其属性列表
  7. public function getGoodsList($id, $type, $table)
  8. {
  9. $where['status'] = 1;
  10. if ($type != 'factory_id') {
  11. //$where['price_type'] = '1,2,3';
  12. }
  13. $data = Dever::db('goods/info')->getData($where);
  14. $result = array();
  15. if ($data) {
  16. foreach ($data as $k => $v) {
  17. $sku = Dever::db('goods/info_sku')->select(array('info_id' => $v['id']));
  18. if ($sku) {
  19. $other = Dever::db($table)->find(array($type => $id, 'goods_id' => $v['id'], 'key' => -1));
  20. $result[$k]['id'] = $v['id'];
  21. $result[$k]['name'] = $v['name'];
  22. $result[$k]['price'] = $v['price'];
  23. $result[$k]['price_type'] = $v['price_type'];
  24. $result[$k]['select'] = 2;
  25. if ($type == 'factory_id') {
  26. if ($other) {
  27. $result[$k]['p_price'] = $other['p_price'];
  28. $result[$k]['select'] = $other['state'];
  29. } else {
  30. $result[$k]['p_price'] = $v['price'];
  31. }
  32. } else {
  33. if ($other) {
  34. $result[$k]['total'] = $other['total_num'] - $other['sell_num'];
  35. $result[$k]['select'] = $other['state'];
  36. } else {
  37. $result[$k]['total'] = 0;
  38. }
  39. }
  40. $result[$k]['children'] = array();
  41. $num = count($sku);
  42. if ($num == 1 && $sku[0]['key'] == -1) {
  43. $result[$k]['end'] = true;
  44. } else {
  45. foreach ($sku as $k1 => $v1) {
  46. $v1['sku_name'] = '';
  47. if ($v1['attr']) {
  48. $v1['attr'] = Dever::json_decode($v1['attr']);
  49. if ($v1['attr']) {
  50. $v1['attr'] = Dever::load('attr/api')->getInfoByJson($v1['attr']);
  51. $v1['sku_name'] = $v1['attr']['string'];
  52. }
  53. }
  54. $name = $v['name'];
  55. if ($v1['sku_name']) {
  56. $name .= '-' . $v1['sku_name'];
  57. }
  58. $children = array
  59. (
  60. 'id' => $v['id'] . '-' . $v1['id'],
  61. 'name' => $name,
  62. 'price' => $v1['price'] ? $v1['price'] : 0,
  63. 'price_type' => $v['price_type'],
  64. 'end' => true,
  65. );
  66. $other_sku = Dever::db($table)->find(array($type => $id, 'goods_id' => $v['id'], 'sku_id' => $v1['id']));
  67. $children['select'] = 2;
  68. if ($type == 'factory_id') {
  69. $children['p_price'] = $v1['price'];
  70. if ($other_sku) {
  71. $children['p_price'] = $other_sku['p_price'];
  72. $children['select'] = $other_sku['state'];
  73. }
  74. } else {
  75. $children['total'] = 0;
  76. if ($other_sku) {
  77. $children['total'] = $other_sku['total_num'] - $other_sku['sell_num'];
  78. $children['select'] = $other_sku['state'];
  79. }
  80. }
  81. $result[$k]['children'][] = $children;
  82. }
  83. }
  84. }
  85. }
  86. }
  87. return $result;
  88. }
  89. }