PtItemClass.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <?php
  2. namespace biz\item\classes;
  3. use biz\base\classes\BaseClass;
  4. use biz\cp\classes\PtCpItemClass;
  5. use bizGhs\product\classes\ProductClass;
  6. use common\components\imgUtil;
  7. use bizGhs\item\classes\ItemClass;
  8. use common\components\stringUtil;
  9. use common\components\util;
  10. class PtItemClass extends BaseClass
  11. {
  12. public static $baseFile = '\biz\item\models\PtItem';
  13. //列表数据
  14. public static function getItemList($where, $showSelect = false, $mainId = '')
  15. {
  16. $data = self::getList('*', $where, 'auth DESC,useNum DESC');
  17. $list = $data['list'];
  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. }
  25. $classIds = array_column($list, "classId");
  26. $classNameMap = PtItemClassClass::getNameMap($classIds);
  27. if (!empty($list)) {
  28. //产品相关
  29. $ids = array_column($list, 'id');
  30. $cpInfoList = [];
  31. if (!empty($ids)) {
  32. $relate = PtCpItemClass::getAllByCondition(['itemId' => ['in', $ids]], null, '*');
  33. if (!empty($relate)) {
  34. foreach ($relate as $it) {
  35. $ptItemId = $it['itemId'] ?? 0;
  36. $cpName = $it['cpName'] ?? '';
  37. $cpId = $it['cpId'] ?? 0;
  38. $auth = $it['auth'] ?? 0;
  39. $cpInfoList[$ptItemId][] = ['name' => $cpName, 'auth' => $auth, 'id' => $cpId];
  40. }
  41. }
  42. }
  43. foreach ($list as $k => $v) {
  44. $shortCover = $v['cover'] ?? '';
  45. $cover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
  46. $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
  47. $list[$k]['cover'] = $cover;
  48. $list[$k]['bigCover'] = $bigCover;
  49. $list[$k]['className'] = $classNameMap[$v['classId']] ?? '';
  50. if ($showSelect) {
  51. //1未选 2已选
  52. //$select = in_array($v['id'], $sjItemIds) ? 2 : 1;
  53. $list[$k]['select'] = key_exists($v['id'], $sjItems) ? 2 : 1;
  54. //0显示(未删除) 1不显示(删除)
  55. $list[$k]['is_delete'] = isset($sjItems[$v['id']]['delStatus']) ? ($sjItems[$v['id']]['delStatus'] == 1 ? 1 : 0) : 0;
  56. $list[$k]['ghs_item_id'] = $sjItems[$v['id']]['ghsItemId'] ?? 0;
  57. }
  58. $id = $v['id'] ?? 0;
  59. $cpList = $cpInfoList[$id] ?? [];
  60. $list[$k]['cpList'] = $cpList;
  61. }
  62. }
  63. $data['list'] = $list;
  64. return $data;
  65. }
  66. //先写死,之后查表
  67. public static function getUnitName($unit)
  68. {
  69. $map = [
  70. 1 => '扎',
  71. 2 => '支',
  72. ];
  73. return $map[$unit] ?? '支';
  74. }
  75. //新增花材
  76. public static function addItem($data)
  77. {
  78. $classId = $data['classId'] ?? 0;
  79. $stockWarning = $data['stockWarning'] ?? false;
  80. $py = stringUtil::py($data['name']);
  81. $data['py'] = $py;
  82. $name = $data['name'] ?? false;
  83. $data['alias'] = $data['alias'] ?? '';
  84. $data['cover'] = $data['cover'] ?? '';
  85. $ratio = $data['ratio'] ?? 0;
  86. $weight = $data['weight'] ?? false;
  87. $data['bigUnit'] = $data['bigUnit'] ?? '扎';
  88. $data['smallUnit'] = $data['smallUnit'] ?? '支';
  89. if (preg_match("/^[1-9][0-9]*$/", $data['ratio']) == false || $data['ratio'] <= 0) {
  90. util::fail('比例请填写整数,并且大于0');
  91. }
  92. $data['skAddPrice'] = 5;
  93. $data['addPrice'] = 4;
  94. $data['hjAddPrice'] = 3;
  95. $data['zsAddPrice'] = 2;
  96. if (!$classId) {
  97. util::fail("请选择分类");
  98. }
  99. if ($stockWarning === false) {
  100. util::fail("请输入库存预警值");
  101. }
  102. if ($name === false) {
  103. util::fail("请输入花材名称");
  104. }
  105. if ($ratio === false) {
  106. util::fail("请输入花材比例");
  107. }
  108. if ($weight === false) {
  109. util::fail("请输入花材重量");
  110. }
  111. $existItemClass = PtItemClassClass::exists(['id' => $classId]);
  112. if (!$existItemClass) {
  113. util::fail("花材分类不存在");
  114. }
  115. if (isset($data['allRank']) && $data['allRank'] == 1) {
  116. $a = $data;
  117. $a['name'] = $name . ' A级';
  118. $a['py'] = stringUtil::py($a['name']);
  119. self::add($a);
  120. $b = $data;
  121. $b['name'] = $name . ' B级';
  122. $b['py'] = stringUtil::py($b['name']);
  123. self::add($b);
  124. $c = $data;
  125. $c['name'] = $name . ' C级';
  126. $c['py'] = stringUtil::py($c['name']);
  127. self::add($c);
  128. $d = $data;
  129. $d['name'] = $name . ' D级';
  130. $d['py'] = stringUtil::py($d['name']);
  131. self::add($d);
  132. $e = $data;
  133. $e['name'] = $name . ' E级';
  134. $e['py'] = stringUtil::py($e['name']);
  135. self::add($e);
  136. $o = $data;
  137. $o['name'] = $name . ' O级';
  138. $o['py'] = stringUtil::py($o['name']);
  139. self::add($o);
  140. }
  141. return self::add($data);
  142. }
  143. //修改花材信息
  144. public static function updateItem($data)
  145. {
  146. $id = $data['id'] ?? 0;
  147. $model = self::getById($id);
  148. if (!$model) {
  149. util::fail('没有找到花材');
  150. }
  151. $upData = [];
  152. if (isset($data['name']) && !empty($data['name'])) {
  153. $upData['name'] = $data['name'];
  154. $upData['py'] = stringUtil::py($data['name']);
  155. }
  156. if (isset($data['cover']) && !empty($data['cover'])) {
  157. $upData['cover'] = $data['cover'];
  158. }
  159. if (isset($data['ratioType']) && is_numeric($data['ratioType'])) {
  160. $upData['ratioType'] = $data['ratioType'];
  161. }
  162. if (isset($data['ratio']) && !empty($data['ratio'])) {
  163. if (preg_match("/^[1-9][0-9]*$/", $data['ratio']) == false || $data['ratio'] <= 0) {
  164. util::fail('比例请填写整数,并且大于0');
  165. }
  166. $upData['ratio'] = $data['ratio'];
  167. }
  168. if (isset($data['weight']) && !empty($data['weight'])) {
  169. $upData['weight'] = $data['weight'];
  170. }
  171. if (isset($data['stockWarning']) && !empty($data['stockWarning'])) {
  172. $upData['stockWarning'] = $data['stockWarning'];
  173. }
  174. if (isset($data['bigUnit']) && !empty($data['bigUnit'])) {
  175. $upData['bigUnit'] = $data['bigUnit'];
  176. }
  177. if (isset($data['bigUnitId']) && !empty($data['bigUnitId'])) {
  178. $upData['bigUnitId'] = $data['bigUnitId'];
  179. }
  180. if (isset($data['smallUnit']) && !empty($data['smallUnit'])) {
  181. $upData['smallUnit'] = $data['smallUnit'];
  182. }
  183. if (isset($data['smallUnitId']) && !empty($data['smallUnitId'])) {
  184. $upData['smallUnitId'] = $data['smallUnitId'];
  185. }
  186. if (isset($data['classId']) && !empty($data['classId'])) {
  187. $upData['classId'] = $data['classId'];
  188. }
  189. if (isset($data['inTurn']) && !empty($data['inTurn'])) {
  190. $upData['inTurn'] = $data['inTurn'];
  191. }
  192. unset($data['id']);
  193. if (!empty($upData)) {
  194. self::updateById($id, $upData);
  195. }
  196. if (isset($data['inTurn']) && !empty($data['inTurn'])) {
  197. $relate = PtItemCatRelateClass::getByCondition(['itemId' => $id], true);
  198. if (!empty($relate)) {
  199. $relate->inTurn = $data['inTurn'];
  200. $relate->save();
  201. }
  202. }
  203. $syncData = [];
  204. if (isset($data['ratioType']) && is_numeric($data['ratioType'])) {
  205. $syncData['ratioType'] = $data['ratioType'];
  206. }
  207. if (isset($data['bigUnit']) && !empty($data['bigUnit'])) {
  208. $syncData['bigUnit'] = $data['bigUnit'];
  209. }
  210. if (isset($data['bigUnitId']) && !empty($data['bigUnitId'])) {
  211. $syncData['bigUnitId'] = $data['bigUnitId'];
  212. }
  213. if (isset($data['smallUnit']) && !empty($data['smallUnit'])) {
  214. $syncData['smallUnit'] = $data['smallUnit'];
  215. }
  216. if (isset($data['smallUnitId']) && !empty($data['smallUnitId'])) {
  217. $syncData['smallUnitId'] = $data['smallUnitId'];
  218. }
  219. if (isset($data['weight']) && !empty($data['weight'])) {
  220. $syncData['weight'] = $data['weight'];
  221. }
  222. ProductClass::updateByCondition(['itemId' => $id], $syncData);
  223. }
  224. //获取详情 ssh 2021.4.11
  225. public static function getItemInfo($id)
  226. {
  227. $info = self::getById($id);
  228. if (empty($info)) {
  229. return $info;
  230. }
  231. $list = self::groupInfo([$info]);
  232. return current($list);
  233. }
  234. public static function groupInfo($list)
  235. {
  236. if (empty($list)) {
  237. return $list;
  238. }
  239. foreach ($list as $key => $val) {
  240. $list[$key]['coverUrl'] = imgUtil::groupImg($val['cover']);
  241. }
  242. return $list;
  243. }
  244. }