RichTextModel.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: weifeng
  5. * Date: 2021-04-19
  6. * Time: 17:28
  7. *
  8. * .--, .--,
  9. * ( ( \.---./ ) )
  10. * '.__/o o\__.'
  11. * {= ^ =}
  12. * > - <
  13. * / \
  14. * // \\
  15. * //| . |\\
  16. * "'\ /'"_.-~^`'-.
  17. * \ _ /--' `
  18. * ___)( )(___
  19. * (((__) (__))) 梦之所想,心之所向.
  20. */
  21. namespace app\common\models;
  22. class RichTextModel extends BaseModel
  23. {
  24. public $table = 'yz_rich_text';
  25. public $guarded = [''];
  26. public $timestamps = true;
  27. public $defaultGroup = 'shop';
  28. public function getValue($uniqueAccountId, $key, $default = null)
  29. {
  30. list($group, $groupKey) = $this->parseKey($key);
  31. $settingGroupItems = $this->getItems($uniqueAccountId, $group);
  32. $value = array_get($settingGroupItems, $groupKey, $default);
  33. return $value;
  34. }
  35. public function setValue($uniqueAccountId, $key, $value = null)
  36. {
  37. list($group, $groupKey) = $this->parseKey($key);
  38. $result = $this->saveData($uniqueAccountId, $groupKey, $value, $group);
  39. return $result;
  40. }
  41. protected function parseKey($key)
  42. {
  43. $explodedGroup = explode('.', $key);
  44. if (count($explodedGroup) > 1) {
  45. $group = array_shift($explodedGroup);
  46. $groupKey = implode('.', $explodedGroup);
  47. } else {
  48. $group = $this->defaultGroup;
  49. $groupKey = $explodedGroup[0];
  50. }
  51. return [$group, $groupKey];
  52. }
  53. protected function getItems($uniqueAccountId, $group)
  54. {
  55. $items = [];
  56. $data = self::where(['uniacid'=>$uniqueAccountId,'group'=>$group])->get()->toArray();
  57. foreach ($data as $value) {
  58. $items[$value['key']] = $value['value'];
  59. }
  60. return $items;
  61. }
  62. protected function saveData($uniqueAccountId, $key, $value, $group)
  63. {
  64. $model = self::where(['key'=>$key,'uniacid'=>$uniqueAccountId,'group'=>$group])->first();
  65. if (!$model) {
  66. $data = [
  67. 'uniacid' => $uniqueAccountId,
  68. 'key' => $key,
  69. 'value' => $value,
  70. 'group' => $group,
  71. 'created_at' => time(),
  72. ];
  73. return self::create($data);
  74. } else {
  75. $model->value = $value;
  76. return $model->save();
  77. }
  78. }
  79. }