MedicalCareProductAttr.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace app\admin\model;
  3. use support\Db;
  4. use support\Model;
  5. /**
  6. * 医疗产品属性设置
  7. * Class Users
  8. * @package app\admin\model
  9. */
  10. class MedicalCareProductAttr extends Model
  11. {
  12. /**
  13. * The table associated with the model.
  14. *
  15. * @var string
  16. */
  17. protected $table = 'medical_care_product_attr';
  18. public $timestamps = false;
  19. /**
  20. * Notes:获取产品列表
  21. * @param string $keywords
  22. * @param int $page
  23. * @param int $limit
  24. * @return array
  25. * User: QJF
  26. * Date: 2022/9/26
  27. */
  28. public static function getProductAttrList(int $page, int $limit,$keywords)
  29. {
  30. $list = static::select('*')
  31. ->orderBy('attr_create_time','DESC')
  32. ->forPage($page, $limit)
  33. ->get();
  34. $count = static::when($keywords != '', function ($query) use ($keywords){
  35. $query->where('product_name', 'like', '%' . $keywords . '%');
  36. })->count();
  37. return [$list, $count];
  38. }
  39. //关联产品规格值
  40. public function Values(){
  41. return $this->hasMany(MedicalCareProductAttrValue::class,'attr_value_product_attr_id','attr_id');
  42. }
  43. //插入规格
  44. public static function insertProductAttr($sku,$result,$type){
  45. if (!empty($sku)) {
  46. foreach ($sku['specTable'] as $k => $v) {
  47. $data = array();
  48. $join_sku_type = '';
  49. if(!empty($v['data'] )){
  50. foreach ($v['data'] as $value){
  51. $join_sku_type .= $value['value_name'] . ',';
  52. }
  53. }
  54. $data['attr_value_product_id'] = $result;
  55. $data['attr_value_sku'] = rtrim($join_sku_type, ',');//sku_type组合
  56. $data['attr_value_stock'] = $v['attr_value_stock'];//库存
  57. $data['attr_value_sales'] = $v['attr_value_sales'];//销量
  58. $data['attr_value_image'] = isset($v['picArr'][0]['url']) ? $v['picArr'][0]['url'] : '';//规格图片地址
  59. $data['attr_value_cost'] = $v['attr_value_cost'];//成本价
  60. $data['attr_value_ot_price'] = $v['attr_value_ot_price'];//原价
  61. $data['attr_value_price'] = $v['attr_value_price'];//售价
  62. $data['attr_value_title'] = $v['attr_value_title'];//预约描述
  63. $data['attr_value_index'] = $v['attr_value_index'];//预约指标
  64. $data['attr_value_index_msg'] = $v['attr_value_index_msg'];//预约指标意义
  65. //$data['attr_value_use'] = ($v['attr_value_use'] ? 1 : 0);//是否启用 1启用 0否
  66. $data['attr_value_use'] = 1;//是否启用 1启用 0否
  67. $data['attr_value_type'] = $type;//类型 0普通产品 1预约产品
  68. MedicalCareProductAttrValue::insert($data);
  69. }
  70. }
  71. $sku_type = $sku['specData'];
  72. if (!empty($sku_type)){
  73. foreach ($sku_type as $key => $val){
  74. $data = array();
  75. $data['attr_name'] = $val['text'];//类别名称
  76. $sku_type_value = array_column($val['values'], 'text');
  77. $data['attr_values'] = implode('-!-', $sku_type_value);//类别值
  78. $data['attr_product_id'] = $result;
  79. $data['attr_type'] = $type;
  80. MedicalCareProductAttr::insert($data);
  81. }
  82. }
  83. }
  84. //删除原来规格
  85. public static function insertProductAttrDel($product_id)
  86. {
  87. //删除规格详情
  88. $where = [];
  89. $where['attr_value_product_id'] = $product_id;
  90. MedicalCareProductAttrValue::where($where)->delete();
  91. //删除规格分类
  92. $where1 = [];
  93. $where1['attr_product_id'] = $product_id;
  94. MedicalCareProductAttr::where($where1)->delete();
  95. }
  96. }