MemberLevelService.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\service\admin\member;
  12. use app\model\member\MemberLevel;
  13. use app\service\core\member\CoreMemberLevelService;
  14. use app\service\core\member\CoreMemberService;
  15. use core\base\BaseAdminService;
  16. use core\exception\CommonException;
  17. use think\db\exception\DataNotFoundException;
  18. use think\db\exception\DbException;
  19. use think\db\exception\ModelNotFoundException;
  20. use think\Response;
  21. /**
  22. * 会员等级
  23. * Class MemberLabelService
  24. * @package app\service\admin\member
  25. */
  26. class MemberLevelService extends BaseAdminService
  27. {
  28. public function __construct()
  29. {
  30. parent::__construct();
  31. $this->model = new MemberLevel();
  32. }
  33. /**
  34. * 获取会员等级分页列表
  35. * @param array $where
  36. * @param string $order
  37. * @return array
  38. */
  39. public function getPage(array $where = [], string $order = 'growth asc')
  40. {
  41. $field = 'level_id,site_id,level_name,growth,remark,create_time,update_time,level_benefits,level_gifts';
  42. $search_model = $this->model->where([ [ 'site_id', '=', $this->site_id ] ])->withSearch([ 'level_name' ], $where)->field($field)->append([ "member_num" ])->order($order);
  43. return $this->pageQuery($search_model, function ($item) {
  44. if (!empty($item['level_benefits'])) $item['level_benefits'] = CoreMemberService::getBenefitsContent($item['site_id'], $item['level_benefits']);
  45. if (!empty($item['level_gifts'])) $item['level_gifts'] = CoreMemberService::getGiftContent($item['site_id'], $item['level_gifts']);
  46. });
  47. }
  48. /**
  49. * 获取会员等级列表
  50. * @param array $where
  51. * @param string $field
  52. * @return array
  53. */
  54. public function getList(array $where = [], $field = 'level_id,site_id,level_name,growth,remark,create_time,update_time,level_benefits,level_gifts')
  55. {
  56. $order = 'growth asc';
  57. return $this->model->where([['site_id', '=', $this->site_id]])->withSearch([ "level_name" ], $where)->field($field)->order($order)->select()->toArray();
  58. }
  59. /**
  60. * 获取会员等级信息
  61. * @param int $level_id
  62. * @return array
  63. */
  64. public function getInfo(int $level_id)
  65. {
  66. $field = 'level_id,site_id,level_name,growth,remark,create_time,update_time,level_benefits,level_gifts';
  67. return $this->model->field($field)->where([ [ 'level_id', '=', $level_id ], [ 'site_id', '=', $this->site_id ] ])->findOrEmpty()->toArray();
  68. }
  69. /**
  70. * 获取等级
  71. * @return array
  72. * @throws DataNotFoundException
  73. * @throws DbException
  74. * @throws ModelNotFoundException
  75. */
  76. public function getAll()
  77. {
  78. return ( new CoreMemberLevelService() )->getAll();
  79. }
  80. /**
  81. * 添加会员等级
  82. * @param array $data
  83. * @return mixed
  84. */
  85. public function add(array $data)
  86. {
  87. $count = $this->model->where([ ['site_id', '=', $this->site_id ] ])->count();
  88. if ($count >= 10) throw new CommonException('MEMBER_LEVEL_MAX');
  89. $data[ 'site_id' ] = $this->site_id;
  90. $res = $this->model->create($data);
  91. ( new CoreMemberLevelService() )->clearCache($this->site_id);
  92. return $res->level_id;
  93. }
  94. /**
  95. * 会员等级编辑
  96. * @param int $level_id
  97. * @param array $data
  98. * @return true
  99. */
  100. public function edit(int $level_id, array $data)
  101. {
  102. $data[ 'update_time' ] = time();
  103. $this->model->update($data, [ [ 'level_id', '=', $level_id ], [ 'site_id', '=', $this->site_id ] ]);
  104. ( new CoreMemberLevelService() )->clearCache($this->site_id);
  105. return true;
  106. }
  107. /**
  108. * 删除会员等级
  109. * @param int $level_id
  110. * @return bool
  111. */
  112. public function del(int $level_id)
  113. {
  114. $level = $this->model->where([ [ 'level_id', '=', $level_id ], [ 'site_id', '=', $this->site_id ] ])->append(['member_num'])->findOrEmpty();
  115. if ($level['member_num'] > 0) throw new CommonException('LEVEL_NOT_ALLOWED_DELETE');
  116. $level->delete();
  117. ( new CoreMemberLevelService() )->clearCache($this->site_id);
  118. return true;
  119. }
  120. }