ItemClass.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?php
  2. namespace bizGhs\item\classes;
  3. use biz\item\classes\PtItemCatClass;
  4. use biz\item\classes\PtItemCatRelateClass;
  5. use biz\item\classes\PtItemClass;
  6. use biz\item\classes\PtItemClassClass;
  7. use bizGhs\base\classes\BaseClass;
  8. use bizGhs\product\classes\ProductClass;
  9. use common\components\imgUtil;
  10. use common\services\xhItemService;
  11. class ItemClass extends BaseClass
  12. {
  13. public static $baseFile = '\bizGhs\item\models\Item';
  14. //初始化花材 lqh 2021.4.12 modify ssh 20210711
  15. public static function initItem($mainId)
  16. {
  17. $ptClass = PtItemCatClass::getAllList("*", ['type' => 0], 'inTurn desc');
  18. if (empty($ptClass)) {
  19. return false;
  20. }
  21. $hasClassIds = array_column($ptClass, 'id');
  22. $relate = PtItemCatRelateClass::getAllByCondition(['catId' => ['in', $hasClassIds]], null, '*');
  23. $relateInfo = [];
  24. $hasItemIds = [];
  25. if (!empty($relate)) {
  26. foreach ($relate as $key => $val) {
  27. $catId = $val['catId'] ?? 0;
  28. $itemId = $val['itemId'] ?? 0;
  29. $relateInfo[$catId][] = $itemId;
  30. $hasItemIds[] = $itemId;
  31. }
  32. $hasItemIds = array_unique(array_filter($hasItemIds));
  33. }
  34. $itemInfo = PtItemClass::getAllByCondition(['id' => ['in', $hasItemIds]], null, '*', 'id');
  35. foreach ($ptClass as $v) {
  36. $classId = $v['id'];
  37. $className = $v['name'];
  38. $inTurn = $v['inTurn'];
  39. $classData = [
  40. 'mainId' => $mainId,
  41. 'name' => $className,
  42. 'inTurn' => $inTurn,
  43. ];
  44. //初始化花材分类
  45. $addClassRespond = ItemClassClass::add($classData);
  46. $ghsClassId = $addClassRespond['id'];
  47. if (isset($relateInfo[$classId]) == false) {
  48. continue;
  49. }
  50. $itemAddData = [];
  51. $productAddData = [];
  52. foreach ($relateInfo[$classId] as $currentId) {
  53. if (isset($itemInfo[$currentId]) == false) {
  54. continue;
  55. }
  56. $currentItem = $itemInfo[$currentId] ?? [];
  57. unset($currentItem['addTime']);
  58. unset($currentItem['updateTime']);
  59. $itemData = $currentItem;
  60. $itemData['classId'] = $ghsClassId;
  61. $itemData['itemId'] = $currentItem['id'];
  62. unset($itemData['id']);
  63. $itemData['rank'] = 'A';
  64. $itemAddData[] = $itemData;
  65. $productData = $currentItem;
  66. $productData['mainId'] = $mainId;
  67. $productData['itemId'] = $currentItem['id'];
  68. $productData['classId'] = $ghsClassId;
  69. unset($productData['id']);
  70. $productData['rank'] = 'B';
  71. $productData['price'] = bcadd($currentItem['cost'], $currentItem['addPrice'], 2);
  72. //花材默认是下架状态
  73. $productData['status'] = 2;
  74. $productData['property'] = 1;
  75. $productAddData[] = $productData;
  76. }
  77. if (empty($itemAddData)) {
  78. continue;
  79. }
  80. ProductClass::batchAdd($productAddData);
  81. }
  82. //增加默认分类
  83. $classData = ['mainId' => $mainId, 'name' => '默认分类', 'inTurn' => -1, 'isDefault' => 1,];
  84. ItemClassClass::add($classData);
  85. }
  86. //从首店复制花材和分类 ssh 20220522
  87. public static function copyItem($oldMainId, $newMainId)
  88. {
  89. $classList = ItemClassClass::getAllByCondition(['mainId' => $oldMainId], null, '*');
  90. $classMap = [];
  91. if (!empty($classList)) {
  92. foreach ($classList as $class) {
  93. $preId = $class['id'] ?? 0;
  94. $class['mainId'] = $newMainId;
  95. $class['shopId'] = 0;
  96. unset($class['addTime']);
  97. unset($class['updateTime']);
  98. unset($class['id']);
  99. $ret = ItemClassClass::add($class, true);
  100. $newId = $ret->id ?? 0;
  101. $classMap[$preId] = $newId;
  102. }
  103. }
  104. $itemList = self::getAllByCondition(['mainId' => $oldMainId], null, '*');
  105. if (!empty($itemList)) {
  106. foreach ($itemList as $item) {
  107. unset($item['stock']);
  108. unset($item['addTime']);
  109. unset($item['updateTime']);
  110. unset($item['id']);
  111. $preId = $item['classId'] ?? 0;
  112. $newId = $classMap[$preId] ?? 0;
  113. $item['classId'] = $newId;
  114. $item['mainId'] = $newMainId;
  115. $item['shopId'] = 0;
  116. self::add($item);
  117. }
  118. }
  119. }
  120. public static function getShowList($where)
  121. {
  122. $level = 0;
  123. $list = self::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], "*");
  124. if (empty($list)) {
  125. return $list;
  126. }
  127. $list = ProductClass::groupProductInfo($list, $level);
  128. $data = [];
  129. $data[ItemClassClass::TJ_CLASS_ID] = [];
  130. foreach ($list as $it) {
  131. $classId = $it['classId'] ?? 0;
  132. $data[$classId][] = $it;
  133. if (isset($it['discountPrice']) && $it['discountPrice'] > 0) {
  134. $data[ItemClassClass::TJ_CLASS_ID][] = $it;
  135. }
  136. }
  137. return $data;
  138. }
  139. //列表数据
  140. public static function getGhsItemList($where)
  141. {
  142. $data = self::getList('*', $where, 'addTime DESC');
  143. $list = isset($data['list']) && !empty($data['list']) ? $data['list'] : [];
  144. if (empty($list)) {
  145. return $data;
  146. }
  147. foreach ($list as $k => $v) {
  148. $list[$k]['itemName'] = $list[$k]['name'] ?? '';
  149. $cover = $list[$k]['cover'] ?? '';
  150. $list[$k]['cover'] = imgUtil::groupImg($cover);
  151. }
  152. $data['list'] = $list;
  153. if (isset($where['classId'])) {
  154. $class = ItemClassClass::getById($where['classId']);
  155. $data['className'] = $class['name'] ?? '';
  156. }
  157. return $data;
  158. }
  159. //批量新增花材(初始化使用)
  160. public static function batchAddGhsItem($data)
  161. {
  162. return true;
  163. }
  164. //修改花材的信息(库存预警、每扎加价、每扎重量)
  165. public static function updateGshItem($id, $stockWarning, $addPrice, $weight, $cost)
  166. {
  167. $data['stockWarning'] = $stockWarning;
  168. $data['addPrice'] = $addPrice;
  169. $data['weight'] = $weight;
  170. $data['cost'] = $cost;
  171. self::updateById($id, $data);
  172. return true;
  173. }
  174. //删除花材
  175. public static function deleteGhsItem($id)
  176. {
  177. self::deleteById($id);
  178. return true;
  179. }
  180. //根据花材分类ID,获取itemIds
  181. public static function getItemIdsByClassId($sjId, $classId)
  182. {
  183. $where = [
  184. 'classId' => $classId,
  185. 'sjId' => $sjId,
  186. ];
  187. $data = self::getAllList("itemId", $where);
  188. if ($data) {
  189. $data = array_column($data, 'itemId');
  190. }
  191. return $data;
  192. }
  193. //获取当前供货商下的所有item
  194. public static function getGhsItemAll($sjId, $select = "*")
  195. {
  196. $where = [
  197. 'sjId' => $sjId
  198. ];
  199. $data = self::getAllList($select, $where);
  200. return $data;
  201. }
  202. //根据拼音名称,获取itemIds
  203. public static function getItemIdsByPyName($pyName)
  204. {
  205. //统一转小写
  206. $pyName = strtolower($pyName);
  207. $where = ['py' => $pyName];
  208. $data = xhItemService::getAllByCondition($where, null, 'id');
  209. if ($data) {
  210. $data = array_column($data, 'id');
  211. }
  212. return $data;
  213. }
  214. //获取某个花材的信息 lqh 2021.1.28
  215. public static function getItemData($itemId, $sjId)
  216. {
  217. return self::getByCondition(['itemId' => $itemId, 'sjId' => $sjId]);
  218. }
  219. //修改某个花材的成本价(采购之后要用到) lqh 2021.1.28 (废弃不用,更新product)
  220. public static function changeCost($itemId, $sjId, $cost)
  221. {
  222. return self::updateByCondition(['itemId' => $itemId, 'sjId' => $sjId], ['cost' => $cost]);
  223. }
  224. //获取itemId=>classId
  225. public static function getItemIdClassIdMap($sjId)
  226. {
  227. $map = [];
  228. $itemData = self::getGhsItemAll($sjId, "itemId,classId");
  229. foreach ($itemData as $v) {
  230. $map[$v['itemId']] = $v['classId'];
  231. }
  232. return $map;
  233. }
  234. }