Files
Smart-Farm/app/shop/model/IntegralLog.php
2025-12-22 14:32:54 +08:00

512 lines
10 KiB
PHP

<?php
namespace app\shop\model;
use app\BaseModel;
use app\massage\model\User;
use longbingcore\wxcore\PushMsgModel;
use think\facade\Db;
class IntegralLog extends BaseModel
{
//会员积分表
protected $name = 'lbfarm_v2_integral_log';
protected $append = [
'create_time_text'
];
/**
* @author chenniang
* @DataTime: 2021-11-04 13:57
* @功能说明:
*/
public function getCreateTimeTextAttr($value,$data){
if(!empty($data['create_time'])){
return date('Y-m-d H:i:s',$data['create_time']);
}
}
/**
* @author chenniang
* @DataTime: 2020-07-15 09:49
* @功能说明:添加
*/
public function integralAdd($data){
$data['create_time'] = time();
$data['update_time'] = time();
$res = $this->insert($data);
return $res;
}
/**
* @author chenniang
* @DataTime: 2020-07-16 16:35
* @功能说明:列表
*/
public function integralList($dis,$page){
$data = $this->where($dis)->order(['update_time desc','id desc'])->paginate($page)->toArray();
if(!empty($data['data'])){
foreach ($data['data'] as &$v){
if($v['controller_type']==0){
$v['controller_name'] = '系统核算';
$icon = $v['integral_add']>0?'+':'-';
$integral_add = $v['integral_add']>0?$v['integral_add']:$v['integral_add']*-1;
$text = $v['integral_add']>0?'增加积分':'使用积分';
$boj = $this->returnObj($v['type']);
$refund = $v['refund']==1?'(已退款)':'';
$v['text'] = $boj.$text.$icon.$integral_add.',现积分 '.$v['integral_after'].$refund;
$v['type_text'] = $boj;
}
}
}
return $data;
}
/**
* @author chenniang
* @DataTime: 2020-09-14 15:17
* @功能说明:返回一个对象
*/
public function returnObj($type){
switch ($type){
//加
case 1:
return '购买商城商品';
break;
//购买储值套餐赠送
case 2:
return '购买储值套餐';
break;
case 3://
return '购买商城商品';
break;
case 4:
return '购买土地产品';
break;
case 5:
return '购买认养产品';
break;
case 6://售后
return '商城商品退款';
break;
case 7://售后
return '购买养殖产品';
break;
case 8:
return '购买认养配送';
break;
case 9:
return '购买土地配送';
break;
case 10:
return '签到';
break;
case 11://消耗
return '抽奖';
break;
case 12:
return '后台充值';
break;
case 13:
return '后台扣除';
break;
case 14:
return '抽奖获取';
break;
default:
return '消费';
break;
}
}
/**
* @author chenniang
* @DataTime: 2020-04-26 17:08
* @功能说明:详情
*/
public function integralInfo($dis){
$data = $this->where($dis)->find();
return !empty($data)?$data->toArray():[];
}
/**
* @author chenniang
* @DataTime: 2020-04-26 17:13
* @功能说明:编辑
*/
public function integralUpdate($dis,$data){
$data['update_time'] = time();
$res = $this->where($dis)->update($data);
return $res;
}
/**
* @author chenniang
* @DataTime: 2022-08-24 10:49
* @功能说明:发送积分消息
*/
public function sendMsg($data,$user_id,$integral,$type){
if(in_array($type,[1,3,4,5,10,11])){
$data['integral'] = abs($integral);
$data['user_id'] = $user_id;
//消费获取的积分
if(in_array($type,[1,2,4,5])){
$s_type = 10;
}elseif (in_array($type,[3])){
//消费消耗的积分
$s_type = 11;
}elseif (in_array($type,[11])){
//抽奖消耗
$s_type = 12;
}elseif (in_array($type,[10])){
//签到获取积分
$s_type = 13;
}
$info_model = new PushMsgModel($data['uniacid']);
$info_model->sendMsg($data,$s_type);
}
return true;
}
/**
* @author chenniang
* @DataTime: 2020-07-31 10:28
* @功能说明:增加用户积分
*/
public function integralUserAdd($user_id,$integral,$uniacid,$status = 2,$type=0,$order_id=0,$time=0,$data=[]){
// if(!in_array($type,[5,6,7,8])){
// //积分倍率
// $arr = $this->pointDouble($user_id,$integral);
//
// $integral = $arr['integral'];
// //查询单日获取积分是否超限
// $integral = $this->dayGetIntegral($user_id,$integral,$uniacid);
// }
$time = !empty($time)?$time:time();
if(!empty($integral)&&$integral!='0.00'){
//发送消息
$this->sendMsg($data,$user_id,$integral,$type);
$member_model = new \app\farm\model\User();
$member_info = $member_model->dataInfo(['id'=>$user_id]);
$insert = [
'uniacid' => $uniacid,
'user_id' => $user_id,
'integral_add' => $integral,
'integral_before'=> $member_info['integral'],
'integral_after' => $member_info['integral']+$integral,
'status' => $status,
'type' => $type,
'order_id' => $order_id,
'double' => !empty($arr['double'])?$arr['double']:1,
'create_time' => $time,
'update_time' => $time,
];
$res = $this->insert($insert);
if($res==0){
return false;
}
$res = $member_model->dataUpdate(['id'=>$user_id],['integral'=>$insert['integral_after']]);
if($res==0){
return false;
}
}
return true;
}
/**\
* @author chenniang
* @DataTime: 2021-11-12 17:31
* @功能说明:积分倍率
*/
public function pointDouble($user_id,$integral){
$arr['double'] = 1;
$arr['integral'] = $integral;
if($integral<0){
return $arr;
}
$user_model = new User();
$member_level = $user_model->where(['id'=>$user_id])->value('member_level');
if(empty($member_level)){
return $arr;
}
$level_model = new Level();
$level = $level_model->levelInfo(['id'=>$member_level]);
if(empty($level)){
return $arr;
}
if(empty($level['integral_switch'])){
return $arr;
}
$arr['double'] = $level['integral'];
$arr['integral'] = floor($level['integral']*$integral);
return $arr;
}
/**
* @author chenniang
* @DataTime: 2021-11-12 14:05
* @功能说明:单天获得积分
*/
public function dayGetIntegral($user_id,$integral,$uniacid){
$config_model = new Config();
$config = $config_model->configInfo(['uniacid'=>$uniacid]);
if($config['integral_limit']==0){
return $integral;
}
$dis[] = ['user_id','=',$user_id];
$dis[] = ['integral_add','>',0];
$dis[] = ['type','not in',[5,6,7]];
//单日获取积分
$integral_day = $this->where($dis)->whereDay('create_time')->sum('integral_add');
//单日可获取最大积分
$integral_day_max = $config['integral_day_max'];
$point = $integral_day_max-$integral_day;
if($point<=0){
return 0;
}
$point = $point-$integral>0?$integral:$point;
return $point;
}
/**
* @author chenniang
* @DataTime: 2020-08-04 10:21
* @功能说明:每日领取的积分
*/
public function dayIntegral($user_id,$uniacid){
$config_model = new Config();
$config = $config_model->configInfo(['uniacid'=>$uniacid]);
if($config['integral_limit']==1){
$dis = [
'user_id' => $user_id,
'refund' => 0,
'type' => 1
];
$integral = $this->where($dis)->where('status','>',0)->whereDay('create_time')->sum('integral_add');
$re_integral = $config['integral_day_max'] - $integral;
$re_integral = $re_integral>0?$re_integral:0;
return intval($re_integral);
}
return true;
}
/**
* @author chenniang
* @DataTime: 2020-08-04 11:07
* @功能说明:给用户加积分
*/
public function incUserIntegral($order_id,$user_id,$uniacid){
$dis = [
'order_id' => $order_id,
'status' => 1
];
$info = $this->where($dis)->select()->toArray();
$member_model = new Member();
if(!empty($info)){
foreach ($info as $value){
$integral = $value['integral_add'];
$member_info = $member_model->getMemberInfo(['user_id'=>$user_id,'uniacid'=>$uniacid]);
$update = [
//修改状态
'status' => 2,
//当前
'integral_before' => intval($member_info['integral']),
//修改后对
'integral_after' => intval($member_info['integral']+$integral),
];
$this->integralUpdate(['id'=>$value['id']],$update);
if(is_numeric($integral)&&$integral>0){
$dis = [
'user_id' => $user_id
];
$member_model->incDecGrowth($dis,$integral,'integral');
}
}
}
return true;
}
}