CommodityBarcodeService.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Services;
  3. use App\CommodityBarcode;
  4. use Illuminate\Support\Collection;
  5. Class CommodityBarcodeService
  6. {
  7. public function getCommodities(array $codes, $owner_id){
  8. return CommodityBarcode::query()->whereHas('commodity',function ($query)use($owner_id){
  9. $query->where('owner_id',$owner_id);
  10. })->select('code','commodity_id')->whereIn('code',$codes)->get();
  11. }
  12. public function insert(array $params){
  13. return CommodityBarcode::query()->insert($params);
  14. }
  15. public function first(array $params){
  16. $query = CommodityBarcode::query();
  17. foreach ($params as $column => $value){
  18. $query->where($column,$value);
  19. }
  20. return $query->first();
  21. }
  22. public function get(array $params){
  23. $query = CommodityBarcode::query()->select('commodity_id','code');
  24. foreach ($params as $column => $values){
  25. if (is_array($values)) $query->whereIn($column,$values);
  26. else $query->where($column,$values);
  27. }
  28. return $query->get();
  29. }
  30. public function firstOrCreate(array $params, array $value = null)
  31. {
  32. if (!$value)$value = $params;
  33. return CommodityBarcode::query()->firstOrCreate($params,$value);
  34. }
  35. public function create(array $params)
  36. {
  37. return CommodityBarcode::query()->create($params);
  38. }
  39. /**
  40. * @param array $commoditiesAndBarcodesPacks 格式:[['commodity_id'=>id, barcodes=[str,str,str]], [......]]
  41. * @return bool
  42. */
  43. public function insertMany_onCommodities(array $commoditiesAndBarcodesPacks)
  44. {
  45. $commodityBarcodes=[];
  46. foreach ($commoditiesAndBarcodesPacks as $commoditiesAndBarcodesPack){
  47. $commodity_id=$commoditiesAndBarcodesPack['commodity_id'];
  48. $barcodes=$commoditiesAndBarcodesPack['barcodes'];
  49. foreach ($barcodes as $barcode){
  50. $commodityBarcodes[]=[
  51. 'commodity_id'=>$commodity_id,
  52. 'code'=>$barcode,
  53. ];
  54. }
  55. }
  56. if(empty($commodityBarcodes))return false;
  57. return CommodityBarcode::query()->insert($commodityBarcodes);
  58. }
  59. public function destroyCollections(Collection $commodityBarcodes)
  60. {
  61. $ids=$commodityBarcodes->map(function($commodityBarcode){
  62. return $commodityBarcode['id'];
  63. });
  64. return CommodityBarcode::destroy($ids);
  65. }
  66. }