PtItemClass.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. namespace biz\item\classes;
  3. use biz\base\classes\BaseClass;
  4. use bizGhs\product\classes\ProductClass;
  5. use common\components\imgUtil;
  6. use bizGhs\item\classes\ItemClass;
  7. use common\components\stringUtil;
  8. use common\components\util;
  9. class PtItemClass extends BaseClass
  10. {
  11. public static $baseFile = '\biz\item\models\PtItem';
  12. //列表数据
  13. public static function getItemList($where, $showSelect = false, $mainId = '')
  14. {
  15. $data = self::getList('*', $where, 'inTurn DESC');
  16. $list = $data['list'];
  17. //$sjItemIds = [];
  18. $sjItems = [];
  19. if ($showSelect && $mainId) {
  20. $sjItemIds = ProductClass::getAllByCondition($where = ['mainId' => $mainId], null, "*");
  21. foreach ($sjItemIds as $item) {
  22. $sjItems[$item['itemId']] = ['ghsItemId' => $item['id'], 'delStatus' => $item['delStatus']];
  23. }
  24. //$sjItemIds = array_column($sjItemIds, 'itemId');
  25. //$sjItemIds = array_unique($sjItemIds);
  26. }
  27. $classIds = array_column($list, "classId");
  28. $classNameMap = PtItemClassClass::getNameMap($classIds);
  29. if ($list) {
  30. foreach ($list as $k => $v) {
  31. $shortCover = $v['cover'] ?? '';
  32. $cover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
  33. $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
  34. $list[$k]['cover'] = $cover;
  35. $list[$k]['bigCover'] = $bigCover;
  36. $list[$k]['className'] = $classNameMap[$v['classId']] ?? '';
  37. if ($showSelect) {
  38. //1未选 2已选
  39. //$select = in_array($v['id'], $sjItemIds) ? 2 : 1;
  40. $list[$k]['select'] = key_exists($v['id'], $sjItems) ? 2 : 1;
  41. //0显示(未删除) 1不显示(删除)
  42. $list[$k]['is_delete'] = isset($sjItems[$v['id']]['delStatus']) ? ($sjItems[$v['id']]['delStatus'] == 1 ? 1 : 0) : 0;
  43. $list[$k]['ghs_item_id'] = $sjItems[$v['id']]['ghsItemId'] ?? 0;
  44. }
  45. }
  46. }
  47. $data['list'] = $list;
  48. return $data;
  49. }
  50. //先写死,之后查表
  51. public static function getUnitName($unit)
  52. {
  53. $map = [
  54. 1 => '扎',
  55. 2 => '支',
  56. ];
  57. return $map[$unit] ?? '支';
  58. }
  59. //新增花材
  60. public static function addItem($data)
  61. {
  62. $classId = $data['classId'] ?? 0;
  63. $stockWarning = $data['stockWarning'] ?? false;
  64. $py = isset($data['py']) && !empty($data['py']) ? $data['py'] : stringUtil::py($data['name']);
  65. $data['py'] = $py;
  66. $name = $data['name'] ?? false;
  67. $data['alias'] = $data['alias'] ?? '';
  68. $data['cover'] = $data['cover'] ?? '';
  69. $ratio = $data['ratio'] ?? 0;
  70. $weight = $data['weight'] ?? false;
  71. $data['bigUnit'] = $data['bigUnit'] ?? '扎';
  72. $data['smallUnit'] = $data['smallUnit'] ?? '支';
  73. if (preg_match("/^[1-9][0-9]*$/", $data['ratio']) == false || $data['ratio'] <= 0) {
  74. util::fail('比例请填写整数,并且大于0');
  75. }
  76. $data['skAddPrice'] = 5;
  77. $data['addPrice'] = 4;
  78. $data['hjAddPrice'] = 3;
  79. $data['zsAddPrice'] = 2;
  80. if (!$classId) {
  81. util::fail("请选择分类");
  82. }
  83. if ($stockWarning === false) {
  84. util::fail("请输入库存预警值");
  85. }
  86. if ($name === false) {
  87. util::fail("请输入花材名称");
  88. }
  89. if ($ratio === false) {
  90. util::fail("请输入花材比例");
  91. }
  92. if ($weight === false) {
  93. util::fail("请输入花材重量");
  94. }
  95. $existItemClass = PtItemClassClass::exists(['id' => $classId]);
  96. if (!$existItemClass) {
  97. util::fail("花材分类不存在");
  98. }
  99. return self::add($data);
  100. }
  101. //修改花材信息
  102. public static function updateItem($data, $sync = false)
  103. {
  104. $id = $data['id'] ?? 0;
  105. $syncCover = false;
  106. $model = self::getById($id);
  107. if (!$model) {
  108. util::fail("该花材不存在");
  109. }
  110. $upData = [];
  111. if (isset($data['name'])) {
  112. if (empty($data['name'])) {
  113. util::fail("请输入花材名称");
  114. }
  115. $upData['name'] = $data['name'];
  116. }
  117. if (isset($data['py'])) {
  118. if (empty($data['py'])) {
  119. util::fail("请输入花材拼音");
  120. }
  121. $upData['py'] = $data['py'];
  122. }
  123. if (isset($data['cover'])) {
  124. if (empty($data['cover'])) {
  125. util::fail("请输入花材图片");
  126. }
  127. $upData['cover'] = $data['cover'];
  128. $syncCover = true;
  129. }
  130. if (isset($data['alias'])) {
  131. if (empty($data['alias'])) {
  132. util::fail("请输入花材别名");
  133. }
  134. $upData['alias'] = $data['alias'];
  135. }
  136. if (isset($data['cost'])) {
  137. if (empty($data['cost'])) {
  138. util::fail("请输入花材成本价");
  139. }
  140. $upData['cost'] = $data['cost'];
  141. }
  142. if (isset($data['ratio'])) {
  143. if (empty($data['ratio'])) {
  144. util::fail("请输入花材比例");
  145. }
  146. if (preg_match("/^[1-9][0-9]*$/", $data['ratio']) == false || $data['ratio'] <= 0) {
  147. util::fail('比例请填写整数,并且大于0');
  148. }
  149. $upData['ratio'] = $data['ratio'];
  150. }
  151. if (isset($data['weight'])) {
  152. if (empty($data['weight'])) {
  153. util::fail("请输入花材重量");
  154. }
  155. $upData['weight'] = $data['weight'];
  156. }
  157. if (isset($data['addPrice'])) {
  158. if (empty($data['addPrice'])) {
  159. util::fail("请输入花材价加");
  160. }
  161. $upData['addPrice'] = $data['addPrice'];
  162. }
  163. if (isset($data['stockWarning'])) {
  164. if (empty($data['stockWarning'])) {
  165. util::fail("请输入花材库存预警");
  166. }
  167. $upData['stockWarning'] = $data['stockWarning'];
  168. }
  169. if (isset($data['bigUnit'])) {
  170. if (empty($data['bigUnit'])) {
  171. util::fail("请输入花材大单位");
  172. }
  173. $upData['bigUnit'] = $data['bigUnit'];
  174. }
  175. if (isset($data['smallUnit'])) {
  176. if (empty($data['smallUnit'])) {
  177. util::fail("请输入花材小单位");
  178. }
  179. $upData['smallUnit'] = $data['smallUnit'];
  180. }
  181. if (isset($data['classId'])) {
  182. if (empty($data['classId'])) {
  183. util::fail("请选择花材分类");
  184. }
  185. $upData['classId'] = $data['classId'];
  186. }
  187. unset($data['id']);
  188. if (empty($upData)) {
  189. util::fail("参数错误");
  190. }
  191. self::updateById($id, $upData);
  192. if ($sync) {
  193. //同步各个商户的Item todo
  194. if ($syncCover) {
  195. $newCover = $upData['cover'];
  196. $syncData['cover'] = $newCover;
  197. ProductClass::updateByCondition(['itemId' => $id], $syncData);
  198. }
  199. }
  200. }
  201. //获取详情 ssh 2021.4.11
  202. public static function getItemInfo($id)
  203. {
  204. $info = self::getById($id);
  205. if (empty($info)) {
  206. return $info;
  207. }
  208. $list = self::groupInfo([$info]);
  209. return current($list);
  210. }
  211. public static function groupInfo($list)
  212. {
  213. if (empty($list)) {
  214. return $list;
  215. }
  216. foreach ($list as $key => $val) {
  217. $list[$key]['coverUrl'] = imgUtil::groupImg($val['cover']);
  218. }
  219. return $list;
  220. }
  221. }