1
0
Files
helper/application/common/service/Score.php
2020-08-06 14:58:51 +08:00

198 lines
6.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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