MemberSignService.php 4.4 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\MemberSign;
  13. use app\service\core\member\CoreMemberService;
  14. use app\service\core\sys\CoreConfigService;
  15. use core\base\BaseAdminService;
  16. use core\dict\DictLoader;
  17. /**
  18. * 会员签到服务层
  19. */
  20. class MemberSignService extends BaseAdminService
  21. {
  22. public function __construct()
  23. {
  24. parent::__construct();
  25. $this->model = new MemberSign();
  26. }
  27. /**
  28. * 会员签到记录
  29. * @param array $where
  30. * @return array
  31. */
  32. public function getPage(array $where = [])
  33. {
  34. $member_where = [];
  35. if(!empty($where['keywords']))
  36. {
  37. $member_where = [['member.member_no|member.nickname|member.mobile', 'like', '%'.$where['keywords'].'%']];
  38. }
  39. $field = 'sign_id, member_sign.site_id, member_sign.member_id, days, day_award, continue_award, continue_tag, member_sign.create_time, is_sign';
  40. $search_model = $this->model->withSearch(['create_time'],$where)->where($member_where)->where([['member_sign.site_id', '=', $this->site_id]])->withJoin(["member" => ['member_no', 'mobile', 'nickname', 'headimg']])->field($field)->append(['is_sign_name'])->order('member_sign.create_time desc');
  41. return $this->pageQuery($search_model, function ($item, $key) {
  42. $item = $this->makeUp($item);
  43. });
  44. }
  45. /**
  46. * 会员签到详情
  47. * @param int $sign_id
  48. * @return array
  49. */
  50. public function getInfo(int $sign_id)
  51. {
  52. $field = 'sign_id, site_id, member_id, days, day_award, continue_award, continue_tag, create_time, is_sign';
  53. return $this->model->where([['sign_id', '=', $sign_id], ['site_id', '=', $this->site_id]])->field($field)->append(['is_sign_name'])->findOrEmpty()->toArray();
  54. }
  55. /**
  56. * 设置签到设置
  57. * @param array $value
  58. * @return bool
  59. */
  60. public function setSign(array $value)
  61. {
  62. $data = [
  63. 'is_use' => $value[ 'is_use' ], //是否开启
  64. 'sign_period' => $value[ 'sign_period' ], // 签到周期
  65. 'day_award' => $value[ 'day_award' ], // 日签奖励
  66. 'continue_award' => $value[ 'continue_award' ], // 连签奖励
  67. 'rule_explain' => $value[ 'rule_explain' ] // 规则说明
  68. ];
  69. return ( new CoreConfigService() )->setConfig($this->request->defaultSiteId(), 'SIGN_CONFIG', $data);
  70. }
  71. /**
  72. * 获取签到设置
  73. */
  74. public function getSign()
  75. {
  76. $info = ( new CoreConfigService() )->getConfig($this->request->defaultSiteId(), 'SIGN_CONFIG');
  77. if (empty($info)) {
  78. $info = [];
  79. $info[ 'value' ] = [
  80. 'is_use' => 0,
  81. 'sign_period' => '',
  82. 'day_award' => '',
  83. 'continue_award' => [],
  84. 'rule_explain' => ''
  85. ];
  86. }
  87. return $info[ 'value' ];
  88. }
  89. /**
  90. * 获取签到礼包字典
  91. * @return array|null
  92. */
  93. public function getMemberSignGiftDict() {
  94. return (new DictLoader("MemberGift"))->load();
  95. }
  96. /**
  97. * 获取签到礼包内容
  98. * @param array $gifts
  99. * @return array|null
  100. */
  101. public function getMemberSignGiftsContent(array $gifts) {
  102. return (new CoreMemberService())->getGiftContent($this->site_id, $gifts);
  103. }
  104. /**
  105. * 组合整理数据
  106. * @param $data
  107. */
  108. public function makeUp($data){
  109. //日签奖励
  110. if(!empty($data['day_award'])){
  111. $data['day_award'] = $this->getMemberSignGiftsContent($data['day_award']);
  112. }
  113. //连签奖励
  114. if(!empty($data['continue_award'])){
  115. $gift = $data['continue_award'];
  116. unset($gift['continue_sign'], $gift['continue_tag'], $gift['receive_limit'], $gift['receive_num']);
  117. $data['continue_award'] = $this->getMemberSignGiftsContent($gift);
  118. }
  119. return $data;
  120. }
  121. }