Manage.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. namespace factory\Lib;
  3. use Dever;
  4. class Manage
  5. {
  6. /**
  7. * 更新信息
  8. *
  9. * @return mixed
  10. */
  11. public function infoUpdate($id, $name, $data)
  12. {
  13. $update = array();
  14. $area = Dever::param('area', $data);
  15. if ($area) {
  16. $temp = is_string($area) ? explode(',', $area) : $area;
  17. $update['province'] = $temp[0];
  18. $update['city'] = $temp[1];
  19. }
  20. $map = Dever::param('map', $data);
  21. if ($map) {
  22. $temp = is_string($map) ? explode(',', $map) : $map;
  23. $update['lng'] = $temp[1];
  24. $update['lat'] = $temp[2];
  25. }
  26. $goods = Dever::param('goods', $data);
  27. if ($goods) {
  28. $goods = Dever::json_decode($goods);
  29. if ($goods) {
  30. foreach ($goods as $k1 => $v1) {
  31. if ($v1['value']) {
  32. foreach ($v1['value'] as $k => $v) {
  33. if ($v['state'] == 1) {
  34. $w = array();
  35. $w['goods_id'] = $v['id'];
  36. $w['factory_id'] = $id;
  37. $info = Dever::db('factory/goods')->one($w);
  38. $w['category_id'] = $v1['id'];
  39. if (!$info) {
  40. Dever::db('factory/goods')->insert($w);
  41. } else {
  42. $w['where_id'] = $info['id'];
  43. $w['state'] = 1;
  44. Dever::db('factory/goods')->update($w);
  45. }
  46. } else {
  47. unset($goods[$k1]['value'][$k]);
  48. }
  49. }
  50. }
  51. }
  52. $update['goods'] = Dever::json_encode($goods);
  53. }
  54. }
  55. if (isset($update) && $update) {
  56. $update['where_id'] = $id;
  57. Dever::db('factory/info')->update($update);
  58. }
  59. }
  60. /**
  61. * 更新商品信息
  62. *
  63. * @return mixed
  64. */
  65. public function goodsUpdate($id, $name, $data)
  66. {
  67. $update = array();
  68. $state = Dever::param('state', $data);
  69. if ($state) {
  70. Dever::config('base')->after = true;
  71. $info = Dever::db('factory/goods')->one($id);
  72. $factory_id = $info['factory_id'];
  73. $factory = Dever::db('factory/info')->one($factory_id);
  74. if ($factory && $factory['goods']) {
  75. $goods = Dever::json_decode($factory['goods']);
  76. if (isset($goods['level_' . $info['category_id']]['value']['id_' . $info['goods_id']])) {
  77. if ($state == 2) {
  78. unset($goods['level_' . $info['category_id']]['value']['id_' . $info['goods_id']]);
  79. }
  80. if (count($goods['level_' . $info['category_id']]['value']) <= 0) {
  81. unset($goods['level_' . $info['category_id']]);
  82. }
  83. } elseif ($state == 1) {
  84. $goods_info = Dever::db('goods/info')->one($info['goods_id']);
  85. $cate = Dever::load('category/api')->string($info['category_id']);
  86. $goods['level_' . $info['category_id']]['id'] = $info['category_id'];
  87. $goods['level_' . $info['category_id']]['name'] = $cate;
  88. $goods['level_' . $info['category_id']]['value']['id_' . $info['goods_id']] = array
  89. (
  90. 'id' => $info['goods_id'],
  91. 'name' => $goods_info['name'],
  92. 'state' => 1,
  93. );
  94. }
  95. $set['goods'] = Dever::json_encode($goods);
  96. $set['where_id'] = $factory_id;
  97. Dever::db('factory/info')->update($set);
  98. }
  99. }
  100. }
  101. public function skuConfig()
  102. {
  103. $data['action'] = Dever::url('factory/lib/manage.skuUp');
  104. $data['goods_id'] = Dever::input('search_option_goods_id');
  105. $data['factory_id'] = Dever::input('search_option_factory_id');
  106. return $data;
  107. }
  108. public function skuUp_api()
  109. {
  110. $goods_id = Dever::input('goods_id');
  111. $factory_id = Dever::input('factory_id');
  112. $key = Dever::input('key');
  113. $p_price = Dever::input('p_price');
  114. if ($key == -1) {
  115. $data = array();
  116. $data['factory_id'] = $factory_id;
  117. $data['goods_id'] = $goods_id;
  118. $data['sku_id'] = -1;
  119. $factory_info = Dever::db('factory/goods_sku')->one($data);
  120. $data['p_price'] = $p_price;
  121. if (!$factory_info) {
  122. Dever::db('factory/goods_sku')->insert($data);
  123. } else {
  124. $data['where_id'] = $factory_info['id'];
  125. Dever::db('factory/goods_sku')->update($data);
  126. }
  127. $where['factory_id'] = $factory_id;
  128. $where['goods_id'] = $goods_id;
  129. $info = Dever::db('factory/goods')->one($where);
  130. if ($info) {
  131. Dever::db('factory/goods')->update(array('id' => $info['id'], 'p_price' => $p_price));
  132. }
  133. } elseif ($key) {
  134. foreach ($key as $k => $v) {
  135. if (isset($p_price[$k]) && $p_price[$k]) {
  136. $sku = Dever::db('goods/info_sku')->one(array('key' => $v));
  137. $data = array();
  138. $data['factory_id'] = $factory_id;
  139. $data['goods_id'] = $goods_id;
  140. $data['sku_id'] = $sku['id'];
  141. $factory_info = Dever::db('factory/goods_sku')->one($data);
  142. $data['p_price'] = $p_price[$k];
  143. if (!$factory_info) {
  144. Dever::db('factory/goods_sku')->insert($data);
  145. } else {
  146. $data['where_id'] = $factory_info['id'];
  147. Dever::db('factory/goods_sku')->update($data);
  148. }
  149. }
  150. }
  151. }
  152. Dever::out('yes');
  153. }
  154. public function skuInput()
  155. {
  156. $goods_id = Dever::input('search_option_goods_id');
  157. $factory_id = Dever::input('search_option_factory_id');
  158. $sku = Dever::db('goods/info_sku')->getData(array('info_id' => $goods_id));
  159. $sku_value = Dever::db('factory/goods_sku')->getData(array('goods_id' => $goods_id, 'factory_id' => $factory_id));
  160. $info = Dever::db('goods/info')->one($goods_id);
  161. $info = \Goods\Lib\Info::init(-1)->info($info, 'list_reorder');
  162. if (!isset($info['sell_attr'])) {
  163. $html = '<input type="hidden" name="goods_id" value="'.$goods_id.'"/><input type="hidden" name="factory_id" value="'.$factory_id.'"/><input type="hidden" name="key" value="-1"/>';
  164. $p_price = '';
  165. if (isset($sku_value[-1])) {
  166. $p_price = $sku_value[-1]['p_price'];
  167. }
  168. $html .= '<div classs="layui-col-lg6"><div><label style="font-size:14px;font-weight:bold;" class="">出厂价</label></div><div><input type="text" class="layui-input update_value form-control layui-input" name="p_price" id="p_price" autocomplete="new-password" placeholder="" value="'.$p_price.'"></div></div>';
  169. } else {
  170. $html = '请先选择属性';
  171. if ($info['sell_attr']) {
  172. $head = '<thead><tr>';
  173. $body = '<tbody>';
  174. $option = array();
  175. foreach ($info['sell_attr'] as $k => $v) {
  176. $head .= '<th>'.$v['name'].'</th>';
  177. if (isset($v['option_sku'])) {
  178. $option[$k] = $v['option_sku'];
  179. }
  180. }
  181. $head .= '<th>出厂价</th>';
  182. $head .= '</tr></thead>';
  183. if ($option) {
  184. $option = Dever::cartesian($option);
  185. foreach ($option as $k => $v) {
  186. $body .= '<tr data-row="' .($k+1). '">';
  187. $key = $id = array();
  188. foreach ($v['name'] as $k1 => $v1) {
  189. $rows = 1;
  190. $body .= '<td width="50" rowspan="'.$rows.'">'.$v1.'</td>';
  191. $id[] = array
  192. (
  193. 'id' => $v['id'][$k1],
  194. 'attr_id' => $v['info_id'][$k1],
  195. );
  196. $key[] = $v['info_id'][$k1] . '-' . $v['id'][$k1];
  197. }
  198. $key = implode('_', $key);
  199. $p_price = '';
  200. if (isset($sku[$key]) && isset($sku_value[$sku[$key]['id']])) {
  201. $p_price = $sku_value[$sku[$key]['id']]['p_price'];
  202. }
  203. $body .= '<td width="30"><input type="text" class="layui-input" name="p_price['.$k.']" value="'.$p_price.'"/></td>';
  204. $body .= '<input type="hidden" name="key['.$k.']" value="'.$key.'"/>';
  205. $body .= '</tr>';
  206. }
  207. }
  208. $body .= '<input type="hidden" name="goods_id" value="'.$goods_id.'"/><input type="hidden" name="factory_id" value="'.$factory_id.'"/></tbody>';
  209. $html = $head . $body;
  210. }
  211. }
  212. return $html;
  213. }
  214. }