105 lines
3.8 KiB
PHP
105 lines
3.8 KiB
PHP
<?php
|
|
/** ZJMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2022-2032 四川正今科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.zjphp.com
|
|
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
|
|
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布传播。
|
|
* 唯一发布渠道官方颁发授权证书,无纸质授权凭证书视为侵权行为。
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\article\model;
|
|
|
|
use app\model\member\MemberAccount as MemberAccountModel;
|
|
use app\model\NewBaseModel;
|
|
use app\model\newModel\Config;
|
|
|
|
class ArticleShareRewardRecord extends NewBaseModel{
|
|
|
|
protected $pk = 'id';
|
|
protected $autoWriteTimestamp = false; // 开启自动时间戳
|
|
protected $deleteTime = false; // 软删除字段
|
|
|
|
|
|
/**
|
|
* Common: 判断:分享用户是否已经领取当前用户的文章分享奖励
|
|
* Author: wu-hui
|
|
* Time: 2022/12/09 14:21
|
|
* @param $articleId
|
|
* @param $memberId
|
|
* @param $sourceMember
|
|
* @return bool
|
|
*/
|
|
public function isReceive($articleId,$memberId,$sourceMember){
|
|
$id = (int)$this->where('article_id',$articleId)
|
|
->where('member_id',$memberId)
|
|
->where('hierarchy',0)
|
|
->where('reward_member_id',$sourceMember)
|
|
->value('id');
|
|
|
|
return $id > 0;
|
|
}
|
|
/**
|
|
* Common: 领取分享奖励
|
|
* Author: wu-hui
|
|
* Time: 2022/12/09 15:09
|
|
* @param $articleId
|
|
* @param $member_id
|
|
* @param $sourceMember
|
|
* @param $integral
|
|
* @param int $hierarchy
|
|
* @return array
|
|
*/
|
|
public function shareReward($articleId,$member_id,$sourceMember,$integral,$hierarchy = 0){
|
|
$this->startTrans();
|
|
try{
|
|
if($member_id == $sourceMember) return $this->error('','领取失败,同一个用户!');
|
|
// 判断:今天是否进行达标
|
|
$set = (new Config())->getConfigInfo('ARTICLE_SETTING');
|
|
$maxIntegral = (float)$set['max_integral'];
|
|
if($maxIntegral > 0){
|
|
// 今天已经获取的数量
|
|
[$startTime,$endTime] = getTimeStamp('today');
|
|
$toDayIntegral = (float)$this
|
|
->where('reward_member_id',$sourceMember)
|
|
->where('create_time','>=',$startTime)
|
|
->where('create_time','<',$endTime)
|
|
->sum('integral');
|
|
if($toDayIntegral >= $maxIntegral) {
|
|
return $this->error('','超出领取限制');
|
|
}
|
|
else {
|
|
$surplus = (float)($maxIntegral - $toDayIntegral);// 今日剩余可以获取的奖励积分
|
|
$integral = $surplus >= $integral ? $integral : $surplus;
|
|
}
|
|
}
|
|
// 添加奖励记录
|
|
$data = [
|
|
'site_id' => $this->site_id,
|
|
'article_id' => $articleId,
|
|
'member_id' => $member_id,
|
|
'hierarchy' => $hierarchy,
|
|
'reward_member_id' => $sourceMember,
|
|
'create_time' => time(),
|
|
'integral' => $integral,
|
|
];
|
|
$this->insert($data);
|
|
// 奖励发放
|
|
$remark = '文章分享奖励';
|
|
(new MemberAccountModel())->addMemberAccount($this->site_id, $sourceMember, 'point', $integral, 'share_article', 0, $remark);
|
|
|
|
$this->commit();
|
|
return $this->success();
|
|
}catch(\Exception $e){
|
|
$this->rollback();
|
|
return $this->error('',$e->getMessage());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} |