admin/addon/article/model/ArticleShareRewardRecord.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());
}
}
}