model = new MemberSign(); } /** * 会员签到记录 * @param array $where * @return array */ public function getPage(array $where = []) { $member_where = []; if(!empty($where['keywords'])) { $member_where = [['member.member_no|member.nickname|member.mobile', 'like', '%'.$where['keywords'].'%']]; } $field = 'sign_id, member_sign.site_id, member_sign.member_id, days, day_award, continue_award, continue_tag, member_sign.create_time, is_sign'; $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'); return $this->pageQuery($search_model, function ($item, $key) { $item = $this->makeUp($item); }); } /** * 会员签到详情 * @param int $sign_id * @return array */ public function getInfo(int $sign_id) { $field = 'sign_id, site_id, member_id, days, day_award, continue_award, continue_tag, create_time, is_sign'; return $this->model->where([['sign_id', '=', $sign_id], ['site_id', '=', $this->site_id]])->field($field)->append(['is_sign_name'])->findOrEmpty()->toArray(); } /** * 设置签到设置 * @param array $value * @return bool */ public function setSign(array $value) { $data = [ 'is_use' => $value[ 'is_use' ], //是否开启 'sign_period' => $value[ 'sign_period' ], // 签到周期 'day_award' => $value[ 'day_award' ], // 日签奖励 'continue_award' => $value[ 'continue_award' ], // 连签奖励 'rule_explain' => $value[ 'rule_explain' ] // 规则说明 ]; return ( new CoreConfigService() )->setConfig($this->request->defaultSiteId(), 'SIGN_CONFIG', $data); } /** * 获取签到设置 */ public function getSign() { $info = ( new CoreConfigService() )->getConfig($this->request->defaultSiteId(), 'SIGN_CONFIG'); if (empty($info)) { $info = []; $info[ 'value' ] = [ 'is_use' => 0, 'sign_period' => '', 'day_award' => '', 'continue_award' => [], 'rule_explain' => '' ]; } return $info[ 'value' ]; } /** * 获取签到礼包字典 * @return array|null */ public function getMemberSignGiftDict() { return (new DictLoader("MemberGift"))->load(); } /** * 获取签到礼包内容 * @param array $gifts * @return array|null */ public function getMemberSignGiftsContent(array $gifts) { return (new CoreMemberService())->getGiftContent($this->site_id, $gifts); } /** * 组合整理数据 * @param $data */ public function makeUp($data){ //日签奖励 if(!empty($data['day_award'])){ $data['day_award'] = $this->getMemberSignGiftsContent($data['day_award']); } //连签奖励 if(!empty($data['continue_award'])){ $gift = $data['continue_award']; unset($gift['continue_sign'], $gift['continue_tag'], $gift['receive_limit'], $gift['receive_num']); $data['continue_award'] = $this->getMemberSignGiftsContent($gift); } return $data; } }