212 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			212 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | 
 | ||
|  | namespace app\admin\logic\sign_daily; | ||
|  | 
 | ||
|  | 
 | ||
|  | use app\common\basics\Logic; | ||
|  | use app\common\model\sign_daily\SignDaily; | ||
|  | use app\common\model\sign_daily\UserSign; | ||
|  | use app\common\server\ConfigServer; | ||
|  | use app\common\server\UrlServer; | ||
|  | 
 | ||
|  | /** | ||
|  |  * 签到逻辑 | ||
|  |  * Class SignDailyLogic | ||
|  |  * @package app\admin\logic\sign_daily | ||
|  |  */ | ||
|  | class SignDailyLogic extends Logic | ||
|  | { | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 连续签到列表 | ||
|  |      * @return array | ||
|  |      * @throws \think\db\exception\DataNotFoundException | ||
|  |      * @throws \think\db\exception\DbException | ||
|  |      * @throws \think\db\exception\ModelNotFoundException | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:30 | ||
|  |      */ | ||
|  |     public static function lists() | ||
|  |     { | ||
|  |         $where[] = ['type', '=', 2]; | ||
|  |         $where[] = ['del', '=', 0]; | ||
|  |         $count = SignDaily::where($where)->count(); | ||
|  |         $lists = SignDaily::where($where)->select(); | ||
|  |         foreach ($lists as $key => $sign) { | ||
|  |             $tips = ''; | ||
|  |             if (1 == $sign['integral_status'] && $sign['integral'] > 0) { | ||
|  |                 $tips .= '赠送' . $sign['integral'] . '积分;'; | ||
|  |             } | ||
|  |             if (1 == $sign['growth_status'] && $sign['growth'] > 0) { | ||
|  |                 $tips .= '赠送' . $sign['growth'] . '成长值;'; | ||
|  |             } | ||
|  |             $lists[$key]['award_tips'] = $tips; | ||
|  |         } | ||
|  |         return ['count' => $count, 'lists' => $lists]; | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 签到记录 | ||
|  |      * @param $get | ||
|  |      * @return array | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:31 | ||
|  |      */ | ||
|  |     public static function record($get) | ||
|  |     { | ||
|  |         $where = []; | ||
|  |         $where[] = ['us.del', '=', 0]; | ||
|  |         $where[] = ['u.del', '=', 0]; | ||
|  |         if (isset($get['keyword']) && $get['keyword']) { | ||
|  |             $where[] = [$get['type'], 'like', '%' . $get['keyword'] . '%']; | ||
|  |         } | ||
|  | 
 | ||
|  |         $field = 'us.user_id,nickname,avatar,mobile,sex,u.create_time ,days,integral,growth, | ||
|  |             continuous_integral, continuous_growth,sign_time,mobile,us.sign_time'; | ||
|  | 
 | ||
|  |         $count = UserSign::alias('us') | ||
|  |             ->join('user u', 'u.id = us.user_id') | ||
|  |             ->where($where) | ||
|  |             ->count(); | ||
|  | 
 | ||
|  |         $lists = UserSign::alias('us') | ||
|  |             ->join('user u', 'u.id = us.user_id') | ||
|  |             ->where($where) | ||
|  |             ->field($field) | ||
|  |             ->order('us.id desc') | ||
|  |             ->page($get['page'], $get['limit']) | ||
|  |             ->select(); | ||
|  | 
 | ||
|  |         foreach ($lists as &$item) { | ||
|  |             $item['sign_time'] = date('Y-m-d H:i:s', $item['sign_time']); | ||
|  |             $item['avatar'] = UrlServer::getFileUrl($item['avatar']); | ||
|  |         } | ||
|  |         return ['count' => $count, 'lists' => $lists]; | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 获取每日签到规则 | ||
|  |      * @return array | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:31 | ||
|  |      */ | ||
|  |     public static function getSignRule() | ||
|  |     { | ||
|  |         $data = SignDaily::where(['type' => 1])->findOrEmpty(); | ||
|  |         $config = [ | ||
|  |             'instructions' => ConfigServer::get('sign_rule', 'instructions'), | ||
|  |             'dailySign' => $data | ||
|  |         ]; | ||
|  |         return $config; | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 设置每日签到规则 | ||
|  |      * @param $post | ||
|  |      * @return bool | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:31 | ||
|  |      */ | ||
|  |     public static function setSignRule($post) | ||
|  |     { | ||
|  |         try { | ||
|  |             $rule = SignDaily::where(['del' => 0, 'type' => 1])->findOrEmpty(); | ||
|  | 
 | ||
|  |             $data = [ | ||
|  |                 'integral' => empty($post['integral']) ? 0 : $post['integral'], | ||
|  |                 'growth' => empty($post['growth']) ? 0 : $post['growth'], | ||
|  |                 'integral_status' => $post['integral_status'], | ||
|  |                 'growth_status' => $post['growth_status'], | ||
|  |             ]; | ||
|  | 
 | ||
|  |             if ($rule->isEmpty()) { | ||
|  |                 $data['type'] = 1; | ||
|  |                 $data['days'] = 0; | ||
|  |                 SignDaily::create($data); | ||
|  |             } else { | ||
|  |                 SignDaily::update($data, ['id' => $rule['id']]); | ||
|  |             } | ||
|  | 
 | ||
|  |             ConfigServer::set('sign_rule', 'instructions', $post['instructions']); | ||
|  | 
 | ||
|  |             return true; | ||
|  |         } catch (\Exception $e) { | ||
|  |             self::$error = $e->getMessage(); | ||
|  |             return false; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 添加连续签到奖励 | ||
|  |      * @param $post | ||
|  |      * @return SignDaily|\think\Model | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:31 | ||
|  |      */ | ||
|  |     public static function add($post) | ||
|  |     { | ||
|  |         return SignDaily::create( | ||
|  |             [ | ||
|  |                 'type' => '2', | ||
|  |                 'days' => $post['days'], | ||
|  |                 'integral' => $post['integral'], | ||
|  |                 'integral_status' => $post['integral_status'], | ||
|  |                 'growth' => $post['growth'], | ||
|  |                 'growth_status' => $post['growth_status'], | ||
|  |             ] | ||
|  |         ); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 编辑连续签到奖励 | ||
|  |      * @param $post | ||
|  |      * @return SignDaily | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:31 | ||
|  |      */ | ||
|  |     public static function edit($post) | ||
|  |     { | ||
|  |         return SignDaily::update([ | ||
|  |             'id' => $post['id'], | ||
|  |             'days' => $post['days'], | ||
|  |             'integral' => $post['integral'], | ||
|  |             'integral_status' => $post['integral_status'], | ||
|  |             'growth' => $post['growth'], | ||
|  |             'growth_status' => $post['growth_status'], | ||
|  |         ]); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 删除连续签到奖励 | ||
|  |      * @param $id | ||
|  |      * @return SignDaily | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:32 | ||
|  |      */ | ||
|  |     public static function del($id) | ||
|  |     { | ||
|  |         return SignDaily::update(['del' => 1, 'id' => $id]); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @notes 获取连续签到奖励详情 | ||
|  |      * @param $id | ||
|  |      * @return array|\think\Model | ||
|  |      * @author 段誉 | ||
|  |      * @date 2022/2/17 14:32 | ||
|  |      */ | ||
|  |     public static function getSignDaily($id) | ||
|  |     { | ||
|  |         return SignDaily::findOrEmpty($id); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | } |