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);
 | |
|     }
 | |
| 
 | |
| 
 | |
| } |