// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\api\controller; use app\common\model\ms\MsActivity as MsActivityModel; use app\common\model\ms\MsActivityGood as MsActivityGoodModel; use app\common\model\ms\MsActivityImage as MsActivityImageModel; use app\common\service\Export as ExportService; use think\facade\Validate; use app\api\model\Goods as GoodsModel; use app\common\model\GoodsSku; use app\common\library\helper; use app\api\service\User as UserService; use app\common\model\User; use think\facade\Db; use app\common\model\Order; use app\api\model\subscribe\WechatSub; /** * 活动中心 ▸ 秒杀 * Class Files * @package app\store\controller */ class MsActivity extends Controller { public function info(int $id = 0){ // $userId = UserService::getCurrentLoginUserId(false); $user = UserService::getCurrentLoginUser(false); $userId = $user->user_id??0; //把结束的放前面 MsActivityGoodModel::where("ms_activity_id",$id)->where('end_time','<',Date("Y-m-d H:i:s",time()))->where('is_end',0)->update(["is_end"=>1]); $activity = MsActivityModel::where("id",$id)->with(['goods','imageshare'])->where('audit_status',1)->find(); $now = Date("Y-m-d H:i:s",time()); $share_image = $activity->imageshare['ali_url']??''; $activity->share_image = $share_image; unset($activity->imageshare); if(empty($activity)){ return $this->renderError("活动不存在"); } if(!($now>$activity->start_time&&$now<$activity->end_time)){ return $this->renderError("活动已结束"); } $list = MsActivityImageModel::where('ms_activity_id',$id)->field('goods_id,image_id')->select(); $image_array = []; foreach($list as $row){ $image_array[$row->goods_id] = $row->image; } foreach($activity['goods'] as &$r){ $r['image'] = $image_array[$r['goods_id']]??''; } // $data['activity'] = $activity; // $data['image'] = $list; return $this->renderSuccess(compact('activity')); } //商品 public function goods($goods_id,$low_price){ $user = UserService::getCurrentLoginUser(); $goodsModel = new GoodsModel; $goodsInfo = $goodsModel->getDetails($goods_id, $user,0, 0); $goods['goods_id'] = $goodsInfo['goods_id']; $goods['goods_name'] = $goodsInfo['goods_name']??''; $goods['goods_price'] = $goodsInfo['goods_price_min']; $goods['low_price'] = $low_price; $goods['line_price'] = $goodsInfo['line_price_min']; $goods['goods_image'] =$goodsInfo['goods_image']; return $goods; } // //发起接口 // public function join(int $activity_id=0){ // $activity = KjActivityModel::where("id",$activity_id)->find(); // if(!isset($activity->status)||$activity->status!=1){ // return $this->renderError("活动已结束"); // } // $activity_id = $activity->id; // $goods = // $userId = UserService::getCurrentLoginUserId(); // $filter['activity_id'] = $activity_id; // $filter['user_id'] = $userId; // $fq_count = KjActivityJoinModel::where($filter)->count(); // if($fq_count>=$activity->fq_count){ // return $this->renderError("你发起的砍价次数超过系统设置"); // } // $join = KjActivityJoinModel::where($filter)->find(); // if($join&&$join->status==0){ // return $this->renderError("你有一个正在进行中的砍价"); // } // if($join&&$join->is_pay==0&&$join->order_id>0){ // return $this->renderError("你有一个待支付订单"); // } // else{ // $kjgoods = KjActivityGoodModel::where('activity_id',$activity_id)->find(); // if(empty($kjgoods)){ // return $this->renderError("缺少砍价商品 信息"); // } // $goods_id = $kjgoods['goods_id']; // $goods = GoodsModel::where("goods_id",$goods_id)->find(); // $data['activity_id'] = $activity->id; // $data['user_id'] = $userId; // $data['goods_id'] = $kjgoods['goods_id']; // $data['goods_name'] = $goods['goods_name']??''; // $data['goods_price'] = $goods['goods_price_min']; // $data['goods_sku_id'] = $kjgoods['goods_sku_id']; // $data['goods_sku_no'] = $kjgoods['goods_sku_no']; // $data['low_price'] = $kjgoods['low_price']; // $data['line_price'] = $goods['line_price_min']; // $data['help_kj_up_cnt'] =$kjgoods['help_kj_up_cnt']; // $data['end_time'] = Date("Y-m-d H:i:s",time()+$activity->expire_hour*60*60); // $self_kj_price =helper::bcsub(($goods['goods_price_min'] - $kjgoods['low_price'])*($activity->self_kj_percent/100),0,2); // $data['kj_price'] = helper::bcsub($goods['goods_price_min'] - $self_kj_price,0,2); // $num = $kjgoods['help_kj_up_cnt']; // $a_price = ($data['kj_price'] - $kjgoods['low_price'])*100;//保存可砍价格 // if($a_price<=0){ // return $this->renderError("发起砍价异常"); // } // // 单位为分 // $res = $this->create_rand_array($num,$a_price); // $data['remark_json'] = json_encode($res); // $join = new KjActivityJoinModel; // $join->save($data); // unset($data); // } // $join = KjActivityJoinModel::where($filter)->order('id','desc')->find(); // $data['join'] = $join; // return $this->renderSuccess(compact('data')); // } // public function helpinfo(int $join_id){ // $userId = UserService::getCurrentLoginUserId(); // $filter['id'] = $join_id; // $join = KjActivityJoinModel::where($filter)->with(['help'])->find(); // $now = Date("Y-m-d H:i:s",time()); // if($join&&$now>$join->end_time){ // $join->status=1; // $join->save(); // } // if(empty($join)){ // return $this->renderError("找不到信息"); // } // $myjoin = KjActivityJoinModel::where("user_id",$userId)->find(); // $one = KjActivityHelpModel::where("user_id",$userId)->where('join_id',$join_id)->find(); // $activity = KjActivityModel::where("id",$join->activity_id)->find(); // $kjgoods = KjActivityGoodModel::where('activity_id',$activity->id)->find(); // if(empty($kjgoods)){ // return $this->renderError("缺少砍价商品信息"); // } // $goods_id = $kjgoods['goods_id']; // $data['activity'] = $activity; // $data['my_help'] = $one; // $data['is_join'] = $myjoin?true:false; // $data['join'] = $join; // $data['goods'] = $this->goods($goods_id,$kjgoods['low_price']); // return $this->renderSuccess(compact('data')); // } // //推送砍价结果 // public function push($user_id,$activity_id,$join_id){ // $kjgoods = KjActivityGoodModel::where('activity_id',$activity_id)->find(); // $goods_name = ''; // $goods_id = $kjgoods['goods_id']??0; // if($goods_id>0){ // $goods_name = GoodsModel::where('goods_id',$goods_id)->value("goods_name"); // } // $template_type = 'kj_finish'; // $sub = new WechatSub($template_type); // $page = 'pages/activity/pages/bargain/index/index?activity_id='.$activity_id."&join_id=".$join_id; // $data= ['thing1'=>["value"=>$goods_name],'thing3'=>["value"=>"活动已结束,去看看活动结果"]]; // $res = $sub->pushSub($user_id,$page,$data); // return $res; // } // //觉得价格美丽,不砍价了 // public function stopkj($join_id){ // $userId = UserService::getCurrentLoginUserId(); // $filter['id'] = $join_id; // $join = KjActivityJoinModel::where($filter)->with(['help'])->find(); // if(empty($join)){ // return $this->renderError("找不到信息"); // } // if($join->user_id!=$userId){ // return $this->renderError("信息出错了"); // } // $activity = KjActivityModel::where("id",$join->activity_id)->find(); // if($activity->kj_type==2){ // if($join->kj_price>$join->low_price){ // return $this->renderError("必须砍到底价才行"); // } // } // if($join->status==1){ // return $this->renderError("请不要重复操作"); // } // $join->status = 1; // $join->save(); // return $this->renderSuccess(); // } // //帮砍价 // public function help(int $join_id){ // $userId = UserService::getCurrentLoginUserId(); // $filter['id'] = $join_id; // $join = KjActivityJoinModel::where($filter)->find(); // if(empty($join)){ // return $this->renderError("找不到信息"); // } // Db::startTrans(); // $activity = KjActivityModel::where("id",$join->activity_id)->lock("for update")->find(); // $today = Date("Y-m-d",time())." 00:00:00"; // $count = KjActivityHelpModel::where("user_id",$userId)->where("create_time",'>',$today)->where('activity_id',$join->activity_id)->count(); // if($count>=$activity['limit_kj_day_cnt']){ // return $this->renderError("同一用户每日最多可帮助".$activity['limit_kj_day_cnt']."位好友砍价"); // } // $one = KjActivityHelpModel::where("user_id",$userId)->where('join_id',$join_id)->find(); // if($one){ // return $this->renderError("你已经帮砍过价了"); // } // if($join['user_id']==$userId){ // return $this->renderError("自己不能帮自己砍价"); // } // if($join['status']==1){ // return $this->renderError("砍价已结束"); // } // $now = Date("Y-m-d H:i:s",time()); // if($now>$join['end_time']){ // return $this->renderError("砍价已过期"); // } // if($join['help_cnt']>=$join['help_kj_up_cnt']){ // return $this->renderError("帮砍价人数已到上限"); // } // if($join['low_price']>=$join['kj_price']){ // return $this->renderError("已经砍到底价了"); // } // $remarkJson = $join['remark_json']; // $arr = json_decode($remarkJson,true); // $help_price = array_shift($arr); // $help_price = helper::bcsub($help_price/100,0,2); // if($join['low_price']>$join['kj_price'] - $help_price){ // $help_price = $join['kj_price'] - $join['low_price']; // } // //如果是最后一个了 // if($join->help_kj_up_cnt==$join->help_cnt+1){ // $help_price = $join['kj_price'] - $join['low_price']; // } // $help_price = helper::bcsub($help_price,0,2); // if($help_price<=0){ // return $this->renderError("砍价出错了"); // } // $data['activity_id'] = $join['activity_id']; // $data['join_id'] = $join['id']; // $data['user_id'] = $userId; // $data['help_price'] = $help_price; // $help = new KjActivityHelpModel; // $help->save($data); // $join->remark_json = json_encode($arr); // $join->help_cnt = $join['help_cnt'] + 1; // $join->kj_price = $join['kj_price'] - $help_price; // // 砍到底了 // if(($join['kj_price'] - $help_price)==$join['low_price']){ // $join->status = 1; // } // //砍价人数到上限了 // if($join->help_kj_up_cnt==$join->help_cnt){ // $join->status = 1; // } // $join->save(); // Db::commit(); // if($join->status==1){ // //砍价完成 // $this->push($join->user_id,$join->activity_id,$join->id); // } // return $this->renderSuccess(compact('data')); // } // public function test(){ // // $money = $_GET['money']??100; // // $num = $_GET['num']??10; // // $arr = $this->create_rand_array($num,$money); // // return $this->renderSuccess(compact('arr')); // // $res = array_sum($arr); // // var_dump($arr); // // var_dump($res); // $res = $this->push(228882,95,113); // var_dump($res); // } // //生成随机数 // public function create_rand_array($n, $max = 100){ // if ($n <= 1) { // return [$max]; // } // $array = $zero = $normal = []; // for ($i = 1; $i <= $n; $i++) { // $array[] = mt_rand(0, 100); // } // $k = $max / array_sum($array); //求出放大系数k // foreach ($array as $key => $val) { // $value = floor($val * $k); //直接保留整数,以保证下一步的和肯定<100 // if ($value < 1) { // $zero[] = $value; // } else { // $normal[] = $value; // } // } // $sum = array_sum($normal); // $diff = $max - $sum; //这个值肯定<100 // if (!empty($zero)) { //如果有为0的值 // $count = count($zero); // foreach ($zero as $z) { // $normal[] = $diff / $count; // } // } else { //随机分配给一个人 // $key = array_rand($normal); // $normal[$key] = $normal[$key] + $diff; // } // unset($array, $zero, $sum, $diff); // return $normal; // } }