public static function addressQue($uid,$bargain_id){
//查询砍价商品ID
$bargainData = Storebargain::where('id',$bargain_id)->field('price,num,bargain_min_price,bargain_max_price')->find()->toArray();
//赋值
list($price,$num,$bargain_min_price) = array_values($bargainData);
//计算帮砍得价格
if (!is_numeric($num) || $num != (int)$num || $num <= 0) {
return fail('400', 'uid参数错误');
}
if ($num > 1) {
//初次砍价为总金额的97%
$bar = $price * 0.97;
$bar = sprintf("%.2f", $bar);
}
$time = time();
$data = [
'uid' => $uid,
'bargain_id' => $bargain_id,
'bargain_price_min' => $bargain_min_price,
'bargain_price' => $price,
'price' => $bar,
'status' => 1,
'num' => 5,
'add_time' => $time,
'is_del' => 0
];
$bargainRes = StoreBargainUser::insert($data);
if (!$bargainRes){
return fail(500,'砍价失败','');
}
//获取用户参与砍价的信息
$bargain_user_id = StoreBargainUser::where('uid',$uid)->where('bargain_id',$bargain_id)->field('id')->find()->toArray();
$bargainHelpData = [
'uid' => $uid,
'bargain_id' => $bargain_id,
'bargain_user_id' => $bargain_user_id['id'],
'price' => $bar,
'add_time' => $time
];
$bargain_help_data = StoreBargainUserHelp::insert($bargainHelpData);
if (!$bargain_help_data){
return fail(500,'砍价失败','');
}
$bargainData = StoreBargainUser::with(['Users','Storebargain'])->where('uid',$uid)->where('bargain_id',$bargain_id)->find()->toArray();
return success(200,"您为自己砍掉".$bar."元,"."商品现在的价格为:".sprintf("%.2f",$price - $bar)."元,赶紧分享好友帮砍!",$bargainData);
}
/**
* 好友帮砍页面
* @param $uid
* @param $bargain_user_id
* @return \think\response\Json
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function FriendsHackingPage($uid,$bargain_user_id){
//商品信息
$bargainShop = StoreBargainUser::with(['Storebargain'])->where('uid',$uid)->where('id',$bargain_user_id)->find();
//帮砍信息
$record = StoreBargainUserHelp::with(['User'])->where('bargain_user_id',$bargain_user_id)->where('bargain_id',$bargainShop['Storebargain']['id'])->select();
$price = 0;
foreach ($record as $val){
$price = $price + $val['price'];
}
//砍掉的价钱
$price = sprintf("%.2f", $price);
//剩余百分比
$percentage = sprintf("%.2f", 100 - ($price/$bargainShop['Storebargain']['price'])*100);
$data = ['price' => $price,'percentage' => $percentage,'bargainShop' => $bargainShop,'record' => $record];
return $data;
}
/**
* 好友帮砍
* @param $uid
* @param $bargain_user_id
* @return string|\think\response\Json
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function BargainHelp($uid,$bargain_user_id){
//判断用户是否帮忙砍过
$bargainHelpData = StoreBargainUserHelp::where('uid',$uid)->where('bargain_user_id',$bargain_user_id)->find();
if($bargainHelpData){
return fail( 500, '您的助力次数已达上限','');
}
$bargainFirstData = StoreBargainUserHelp::with(['Storebargain','StoreBargainUser'])->where('bargain_user_id',$bargain_user_id)->order('price','asc')->find()->toArray();
$dataAll = StoreBargainUserHelp::where('bargain_user_id',$bargain_user_id)->field('price')->select()->toArray();
//已砍掉的价格
$pricecon = 0;
foreach ($dataAll as $val){
$pricecon = $pricecon + $val['price'];
}
//继续砍价的价格
$price = $bargainFirstData['Storebargain']['price'] - $pricecon;
//判断砍价商品状态
$state = StoreBargainUser::where('id',$bargain_user_id)->find()->toArray();
if ($state['status'] == 3){
return success(200,'该砍价商品已砍价成功','');
}elseif ($state['status'] == 2){
return success(200,'参与活动失败','');
}
$bargain_min_price = $bargainFirstData['Storebargain']['bargain_min_price'];
$bargain_max_price = $bargainFirstData['Storebargain']['bargain_max_price'];
$num = $bargainFirstData['StoreBargainUser']['num'];
if (!is_numeric($num) || $num != (int)$num || $num < 0) {
return fail('400', '砍价次数参数错误');
}
$bar = self::ACE($num,$bargain_min_price,$bargain_max_price,$price,$bargain_user_id);
$data = [
'uid' => $uid,
'bargain_id' => $bargainFirstData['bargain_id'],
'bargain_user_id' => $bargain_user_id,
'price' => $bar,
'add_time' => time()
];
$res = StoreBargainUserHelp::insert($data);
if (!$res){
return fail(500,'帮砍失败','');
}
//修改砍价次数
StoreBargainUser::where('id',$bargain_user_id)->update(['num' => $num - 1]);
$bargainFirstData = StoreBargainUserHelp::with(['Storebargain','StoreBargainUser'])->where('bargain_user_id',$bargain_user_id)->where('uid',$uid)->find();
return success(200,'帮砍成功',$bargainFirstData);
}
/**
* 砍价完成页面
* @param $uid
* @param $bargain_user_id
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function SuccessfulBargaining($uid,$bargain_user_id){
//商品信息
$bargainShop = StoreBargainUser::with(['Storebargain'])->where('uid',$uid)->where('id',$bargain_user_id)->find()->toArray();
$bargainShopData = Storebargain::select();
$user = User::where('uid',$uid)->find()->toArray();
//生成订单
$data = [
'order_id' => rand(10000,99999).time(),
'uid' => $uid,
'real_name' => $user['real_name'],
'user_phone' => $user['phone'],
'user_address' => $user['addres'],
'pay_type' => 1,
'total_price' => 0,
'add_time' => time(),
'status' => 0,
'mark' => '砍价',
'unique' => rand(10000,99999),
'cost' => $bargainShop['price']
];
StoreOrder::insert($data);
return ['bargainShop' => $bargainShop,'bargainShopData' => $bargainShopData];
}
/**
* @param $num
* @param $bargain_min_price
* @param $bargain_max_price
* @param $price
* @param $bargain_user_id
* @return string|void
*/
public static function ACE($num,$bargain_min_price,$bargain_max_price,$price,$bargain_user_id){
if($num > 1){
if ($price < $bargain_min_price || $price > $bargain_min_price && $price < $bargain_max_price){
StoreBargainUser::where('id',$bargain_user_id)->update(['status' => 3]);
return $bar = sprintf("%.2f",$price);
}elseif($price > $bargain_max_price){
return $bar = sprintf("%.2f",rand($bargain_min_price * 100, $bargain_max_price * 100) / 100);
}
}elseif ($num == 1){
if ($price < $bargain_min_price || $price > $bargain_min_price && $price < $bargain_max_price){
StoreBargainUser::where('id',$bargain_user_id)->update(['status' => 3]);
return $bar = sprintf("%.2f",$price);
}else{
StoreBargainUser::where('id',$bargain_user_id)->update(['status' => 3]);
return $bar = sprintf("%.2f",rand($bargain_min_price * 100, $bargain_max_price * 100) / 100);
}
}
}
商品砍价功能实现
最新推荐文章于 2023-11-06 14:20:46 发布