ShopConfig.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. class ShopConfig extends Model
  5. {
  6. /**
  7. * 主键
  8. */
  9. protected $pk = 'code';
  10. protected $name = 'shop_config';
  11. // 自动写入时间戳字段
  12. protected $autoWriteTimestamp = 'int';
  13. // 定义时间戳字段名
  14. protected $createTime = 'createtime';
  15. protected $updateTime = 'updatetime';
  16. protected $deleteTime = false;
  17. // 追加属性
  18. protected $append = [
  19. ];
  20. /**
  21. * 修改器 数据的保存格式
  22. *
  23. * @param string|array $value
  24. * @param array $data
  25. * @return string
  26. */
  27. public function setValueAttr($value, $data)
  28. {
  29. switch ($data['type']) {
  30. case 'array':
  31. $value = is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;
  32. break;
  33. }
  34. return $value;
  35. }
  36. /**
  37. * 获取器,选项
  38. *
  39. * @param string|array $value
  40. * @param array $data
  41. * @return array
  42. */
  43. public function getStoreRangeAttr($value, $data)
  44. {
  45. return $this->attrFormatJson($value, $data, 'store_range');
  46. }
  47. /**
  48. * 获取器,返回的格式
  49. *
  50. * @param string|array $value
  51. * @param array $data
  52. * @return array
  53. */
  54. public function getValueAttr($value, $data)
  55. {
  56. $value = $value ?: ($data['value'] ?? null);
  57. switch ($data['type']) {
  58. case 'array':
  59. $value = $this->attrFormatJson($value, $data, 'value', true);
  60. break;
  61. case 'boolean':
  62. $value = intval($value) ? 1 : 0;
  63. break;
  64. case 'int':
  65. $value = intval($value);
  66. break;
  67. case 'float':
  68. $value = floatval($value);
  69. break;
  70. }
  71. return $value;
  72. }
  73. /**
  74. * 获取器格式化 json
  75. *
  76. * @param mix $value
  77. * @param array $data
  78. * @param string $field
  79. * @param bool $return_array
  80. * @return array|null
  81. */
  82. protected function attrFormatJson($value, $data, $field, $return_array = false)
  83. {
  84. $value = $value ?: ($data[$field] ?? null);
  85. $value = $value ? json_decode($value, true) : ($return_array ? [] : $value);
  86. return $value === false ? $data[$field] : $value;
  87. }
  88. }