查询和添加砍价活动
<?php
declare (strict_types = 1);
namespace app\home\controller;
use app\home\model\BarGoods;
use app\home\model\BarRecord;
use app\model\Renting;
use service\JsonService;
use think\facade\Db;
use think\facade\Validate;
use think\Request;
use tools\upload\Upload;
class Bargain
{
/**
* 显示资源列表
* @return \think\Response
*/
public function index()
{
$data = BarGoods::paginate(5);
return view('',compact('data'));
}
/**
* 显示创建资源表单页.
*
* @return \think\Response
*/
public function create()
{
return view();
}
public function upFile(Request $request) {
$file = $request->file('file');
$img = Upload::upload($file);
$path = Upload::qiniu($img);
if ($path) {
return JsonService::success('ok',$path);
}
return JsonService::fail('上传失败');
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
$params = input();
$model = BarGoods::create($params);
if ($model) return JsonService::success('砍价商品添加成功',$params);
return JsonService::fail('添加失败');
}
/**
* @param $total string 砍价金额
* @param $num int 砍价次数
* @param $min float 最低可砍
* @param $max float 最高可砍
* @param int $level 成级
* @return string
*/
public function bar($total,$num,$min,$max,$level=0 )
{
if ($num > 1) {
$safe_total = ($total - ($num - 1) * $min) / ($num - 1);//随机安全上限
if ($min < $safe_total) {
//总价为最低价时,算出来的随机上限有可能会比最低价还低
$bar = mt_rand((int)$min * 100, (int)$max * 100) / 100;
}
if ($bar > $total ) {
return $this->bar($total,$num, $min,$max,$level + 1);
}
// 保留两位小数
return $bar = sprintf("%.2f", $bar); //砍掉的金额
}
}
public function firstBar($uid,$bar_id){
$bar_goods = BarGoods::where('id',$bar_id)
->field('bar_price,bar_num,bar_min_price,bar_max_price')->find()->toArray();
list($bar_price,$bar_num,$bar_min_price,$bar_max_price) = array_values($bar_goods);
$bar = $this->bar($bar_price,$bar_num,$bar_min_price,$bar_max_price); //砍价金额
$data = [
'uid'=> $uid,
'bar_id' =>$bar_id,
'bar_uid' =>$uid,
'bar_price' => $bar,
'old_price'=> $bar_price-$bar,
'old_num' => $bar_num-1
];
return $model = BarRecord::create($data);
}
public function lastBar($uid,$bar_id,$bar_uid){
$where = [
'uid'=>$uid,
'bar_id' =>$bar_id
];
$BarRecord = BarRecord::where($where)->order('old_price',