企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 积分过期使用方法 ``` // 使用积分 function usePoint($relation_guid,$pay_point){ if(intval($pay_point)<0) return ['code'=>201,'msg'=>'使用积分不能为负']; # 获取用户可用积分(id,可用积分数) $where = "status=1 and point>0 and relation_guid='$relation_guid'"; $change_point = \think\Db::name('point_change') ->where($where) ->order('id ASC') ->field('id,(point-use_point) as remain_point') ->select(); if(!$change_point) return ['code'=>201,'msg'=>'暂无可用积分']; # end-获取用户可用积分(id,可用积分数) # 得到此次兑换需要的id值 $sum_point = 0; $idA = []; foreach ($change_point as $k=>$v){ $sum_point += $v['remain_point']; $idA[] = $v['id']; if($sum_point>=$pay_point){ $sum_point; break; } } if($sum_point<$pay_point) return ['code'=>202,'msg'=>'您的积分不够啦']; # end-得到此次兑换需要的id值 # 改变积分变化表中的‘status’值 && 'use_point'积分值 if($sum_point==$pay_point){ $idA = array_chunk($idA,300); // 控制IN子查询传入的参数数量,减轻数据库压力 foreach ($idA as $v){ $idS = implode(',',$v); \think\Db::name('point_change')->where("id in ($idS)")->update(['status'=>2]); } return 1; }else{ # 剩余积分总和大于需支付积分 $end_id = array_pop($idA); // 删除最后一个数组 并获取最后一个数组的值 $remain_point = $sum_point-$pay_point; // 数组最后一位剩余积分 = 总积分 - 支付积分 $endPoint = \think\Db::name('point_change')->where('id',$end_id)->value('point'); $use_point = $endPoint-$remain_point; // 计算已使用积分 if (!$idA) return \think\Db::name('point_change')->where('id',$end_id)->update(['use_point'=>$use_point]); # 控制IN子查询传入的参数数量,减轻数据库压力 $idA = array_chunk($idA,300); foreach ($idA as $v){ $idS = implode(',',$v); \think\Db::name('point_change')->where("id in ($idS)")->update(['status'=>2]); } # end-控制IN子查询传入的参数数量,减轻数据库压力 return \think\Db::name('point_change')->where('id',$end_id)->update(['use_point'=>$use_point]); } # end-改变积分变化表中的‘status’值 && 'use_point'积分值 } ```