198 lines
6.7 KiB
PHP
198 lines
6.7 KiB
PHP
<?php
|
||
// +------------------------------------------------+
|
||
// |http://www.cjango.com |
|
||
// +------------------------------------------------+
|
||
// | 修复BUG不是一朝一夕的事情,等我喝醉了再说吧! |
|
||
// +------------------------------------------------+
|
||
// | Author: 小陈叔叔 <Jason.Chen> |
|
||
// +------------------------------------------------+
|
||
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;
|
||
}
|
||
}
|