| // +------------------------------------------------+ namespace app\common\service; use app\common\model\Member as MemberModel; use app\common\model\MemberInfo as MemberInfoModel; use app\common\model\Score as ScoreModel; use app\common\model\ScoreRules as ScoreRulesModel; use app\common\model\VipOrder as VipOrderModel; use tools\Time; class Score extends _Init { /** * 注册赠送积分 * @param [type] $uid [description] * @param [type] $remark [description] * @return [type] [description] */ public static function register($uid) { $ruleInfo = self::getRule('register'); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); if ($ruleInfo->status == 1) { self::addScore($ruleInfo, $MemberInfo, '注册赠送'); } } /** * 设置信息 * @param [type] $uid [description] * @param [type] $name [description] * @return [type] [description] */ public static function setting($uid, $name) { $title = [ 'headimgurl' => '头像', 'nickname' => '姓名', 'wechat' => '微信', 'qq' => 'qq', 'email' => '邮箱', 'qrcode' => '微信二维码', 'position' => '职位', 'city' => '所在城市', 'openid' => '绑定微信', ]; $ruleInfo = self::getRule('setting'); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); if ($ruleInfo->status == 1) { self::addScore($ruleInfo, $MemberInfo, '设置 ' . $title[$name] . ' 获取'); } } /** * 邀请/采集文章 * @param [type] $uid [description] * @param [type] $name [description] */ public static function addArticle($uid, $name) { $ruleInfo = self::getRule($name); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); $count = ScoreModel::where('create_time', 'between', Time::day())->where('rule_id', $ruleInfo->id)->count(); $str = $name == 'add' ? '添加文章' : '采集文章'; if ($ruleInfo->status == 1 && $count < $ruleInfo->times) { self::addScore($ruleInfo, $MemberInfo, $str . '获取'); } } /** * 邀请好友 * @param [type] $uid [description] * @return [type] [description] */ public static function invite($uid) { $ruleInfo = self::getRule('invite'); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); if (!$MemberInfo) { die(); } $count = ScoreModel::where('create_time', 'between', Time::day())->where('rule_id', $ruleInfo->id)->count(); if ($ruleInfo->status == 1 && $count < $ruleInfo->times) { self::addScore($ruleInfo, $MemberInfo, '邀请好友获取 '); } } /** * 开通vip * @param [type] $uid [description] * @return [type] [description] */ public static function vip($uid) { $ruleInfo = self::getRule('vip'); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); if ($ruleInfo->status == 1) { self::addScore($ruleInfo, $MemberInfo, '开通vip 获取'); } } /** * 积分兑换vip * @param [type] $uid [description] * @return [type] [description] */ public static function buyVip($uid, $orderid) { $ruleInfo = self::getRule('buy_vip'); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); if (empty($ruleInfo) || $ruleInfo->status != 1) { return '兑换功能已经关闭'; } else if ($MemberInfo->score < $ruleInfo->score) { return '您的积分不够兑换,兑换一年Vip需要 ' . $ruleInfo->score . ' 积分'; } else { $order = VipOrderModel::where('orderid', $orderid)->find(); $order->save(['status' => 20, 'money' => $ruleInfo->score, 'model' => 'score']); $res = self::addScore($ruleInfo, $MemberInfo, '积分兑换一年vip 使用', false); if ($res == 1) { $rule = ScoreRulesModel::where('model', 'vip')->find(); self::addScore($rule, $MemberInfo, '开通vip获取'); $time = ($MemberInfo->is_vip == 1) ? $MemberInfo->vip_end_time : time(); $res = $MemberInfo->save(['is_vip' => 1, 'vip_time' => $time + 31536000]); return $res; } else { return '兑换失败'; } } } /** * 分享文章 * @param [type] $uid [description] * @return [type] [description] */ public static function share($uid) { $ruleInfo = self::getRule('share'); $MemberInfo = MemberInfoModel::where('uid', $uid)->find(); $count = ScoreModel::where('create_time', 'between', Time::day())->where('rule_id', $ruleInfo->id)->count(); if ($ruleInfo->status == 1 && $count < $ruleInfo->times) { self::addScore($ruleInfo, $MemberInfo, '分享文章获取 '); } } /** * 获取规则信息 * @param [type] $model [description] * @return [type] [description] */ public static function getRule($model) { return ScoreRulesModel::where('model', $model)->find(); } /** * 增加积分 * @param [type] $uid [description] * @param [type] $ruleInfo [description] */ public static function addScore($ruleInfo, $MemberInfo, $remark, $add = true) { $data = [ 'uid' => $MemberInfo->uid, 'rule_id' => $ruleInfo->id, 'score' => $ruleInfo->score, 'remark' => $remark . $ruleInfo->score . ' 积分', ]; ScoreModel::create($data); //增加积分 if ($add) { $res = $MemberInfo->setInc('score', $ruleInfo->score); } else { $res = $MemberInfo->setDec('score', $ruleInfo->score); } $Member = MemberModel::get($MemberInfo->uid); $openid = $Member->openid; if (!empty($openid)) { if ($ruleInfo->model == 'buy_vip') { Message::openvip($MemberInfo); } Message::addScoreMessage($ruleInfo, $MemberInfo, $remark); } return $res; } }