## 積分過期使用方法
```
// 使用積分
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'積分值
}
```