ZskkBaseModel.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. abstract class ZskkBaseModel extends Model
  5. {
  6. /**
  7. * @var string 自动写入时间戳
  8. */
  9. protected $autoWriteTimestamp = 'datetime';
  10. /**
  11. * @var array 需要加密的字段
  12. */
  13. protected array $decrypts = [];
  14. /**
  15. * @var array 需要解密的字段
  16. */
  17. protected array $encrypts = [];
  18. /**
  19. * @var array 需要模糊的字段
  20. */
  21. protected array $blurs = [];
  22. /**
  23. * @var array 模糊方法配置
  24. */
  25. protected array $blur_funs = [];
  26. /**
  27. * 通过修改器 设置数据对象值
  28. *
  29. * @param string $name 属性名
  30. * @param mixed $value 属性值
  31. * @param array $data 数据
  32. *
  33. * @return void
  34. */
  35. public function setAttr(string $name, $value, array $data = []): void
  36. {
  37. $needEncrypt = in_array($name, $this->encrypts);
  38. if($needEncrypt) {
  39. $value = $this->encrypt($value, $name);
  40. }
  41. parent::setAttr($name, $value, $data);
  42. }
  43. /**
  44. * 获取器 获取数据对象的值
  45. *
  46. * @param string $name 名称
  47. *
  48. * @throws InvalidArgumentException
  49. *
  50. * @return mixed
  51. */
  52. public function getAttr(string $name)
  53. {
  54. $value = parent::getAttr($name);
  55. $needDecrypt = in_array($name, $this->decrypts);
  56. if($needDecrypt) {
  57. $value = $this->decrypt($value, $name);
  58. }
  59. $needBlur = in_array($name, $this->blurs);
  60. if($needBlur && $value) {
  61. $value = $this->blur($value, $name);
  62. }
  63. return $value;
  64. }
  65. /**
  66. * 解密
  67. */
  68. protected abstract function decrypt($val, $name);
  69. /**
  70. * 模糊
  71. */
  72. protected abstract function blur($val, $name);
  73. /**
  74. * 加密
  75. */
  76. protected abstract function encrypt($val, $name);
  77. }