MsActivity.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\api\controller;
  13. use app\common\model\ms\MsActivity as MsActivityModel;
  14. use app\common\model\ms\MsActivityGood as MsActivityGoodModel;
  15. use app\common\model\ms\MsActivityImage as MsActivityImageModel;
  16. use app\common\service\Export as ExportService;
  17. use think\facade\Validate;
  18. use app\api\model\Goods as GoodsModel;
  19. use app\common\model\GoodsSku;
  20. use app\common\library\helper;
  21. use app\api\service\User as UserService;
  22. use app\common\model\User;
  23. use think\facade\Db;
  24. use app\common\model\Order;
  25. use app\api\model\subscribe\WechatSub;
  26. /**
  27. * 活动中心 ▸ 秒杀
  28. * Class Files
  29. * @package app\store\controller
  30. */
  31. class MsActivity extends Controller
  32. {
  33. public function info(int $id = 0){
  34. // $userId = UserService::getCurrentLoginUserId(false);
  35. $user = UserService::getCurrentLoginUser(false);
  36. $userId = $user->user_id??0;
  37. //把结束的放前面
  38. 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]);
  39. $activity = MsActivityModel::where("id",$id)->with(['goods','imageshare'])->where('audit_status',1)->find();
  40. $now = Date("Y-m-d H:i:s",time());
  41. $share_image = $activity->imageshare['ali_url']??'';
  42. $activity->share_image = $share_image;
  43. unset($activity->imageshare);
  44. if(empty($activity)){
  45. return $this->renderError("活动不存在");
  46. }
  47. if(!($now>$activity->start_time&&$now<$activity->end_time)){
  48. return $this->renderError("活动已结束");
  49. }
  50. $list = MsActivityImageModel::where('ms_activity_id',$id)->field('goods_id,image_id')->select();
  51. $image_array = [];
  52. foreach($list as $row){
  53. $image_array[$row->goods_id] = $row->image;
  54. }
  55. foreach($activity['goods'] as &$r){
  56. $r['image'] = $image_array[$r['goods_id']]??'';
  57. }
  58. // $data['activity'] = $activity;
  59. // $data['image'] = $list;
  60. return $this->renderSuccess(compact('activity'));
  61. }
  62. //商品
  63. public function goods($goods_id,$low_price){
  64. $user = UserService::getCurrentLoginUser();
  65. $goodsModel = new GoodsModel;
  66. $goodsInfo = $goodsModel->getDetails($goods_id, $user,0, 0);
  67. $goods['goods_id'] = $goodsInfo['goods_id'];
  68. $goods['goods_name'] = $goodsInfo['goods_name']??'';
  69. $goods['goods_price'] = $goodsInfo['goods_price_min'];
  70. $goods['low_price'] = $low_price;
  71. $goods['line_price'] = $goodsInfo['line_price_min'];
  72. $goods['goods_image'] =$goodsInfo['goods_image'];
  73. return $goods;
  74. }
  75. // //发起接口
  76. // public function join(int $activity_id=0){
  77. // $activity = KjActivityModel::where("id",$activity_id)->find();
  78. // if(!isset($activity->status)||$activity->status!=1){
  79. // return $this->renderError("活动已结束");
  80. // }
  81. // $activity_id = $activity->id;
  82. // $goods =
  83. // $userId = UserService::getCurrentLoginUserId();
  84. // $filter['activity_id'] = $activity_id;
  85. // $filter['user_id'] = $userId;
  86. // $fq_count = KjActivityJoinModel::where($filter)->count();
  87. // if($fq_count>=$activity->fq_count){
  88. // return $this->renderError("你发起的砍价次数超过系统设置");
  89. // }
  90. // $join = KjActivityJoinModel::where($filter)->find();
  91. // if($join&&$join->status==0){
  92. // return $this->renderError("你有一个正在进行中的砍价");
  93. // }
  94. // if($join&&$join->is_pay==0&&$join->order_id>0){
  95. // return $this->renderError("你有一个待支付订单");
  96. // }
  97. // else{
  98. // $kjgoods = KjActivityGoodModel::where('activity_id',$activity_id)->find();
  99. // if(empty($kjgoods)){
  100. // return $this->renderError("缺少砍价商品 信息");
  101. // }
  102. // $goods_id = $kjgoods['goods_id'];
  103. // $goods = GoodsModel::where("goods_id",$goods_id)->find();
  104. // $data['activity_id'] = $activity->id;
  105. // $data['user_id'] = $userId;
  106. // $data['goods_id'] = $kjgoods['goods_id'];
  107. // $data['goods_name'] = $goods['goods_name']??'';
  108. // $data['goods_price'] = $goods['goods_price_min'];
  109. // $data['goods_sku_id'] = $kjgoods['goods_sku_id'];
  110. // $data['goods_sku_no'] = $kjgoods['goods_sku_no'];
  111. // $data['low_price'] = $kjgoods['low_price'];
  112. // $data['line_price'] = $goods['line_price_min'];
  113. // $data['help_kj_up_cnt'] =$kjgoods['help_kj_up_cnt'];
  114. // $data['end_time'] = Date("Y-m-d H:i:s",time()+$activity->expire_hour*60*60);
  115. // $self_kj_price =helper::bcsub(($goods['goods_price_min'] - $kjgoods['low_price'])*($activity->self_kj_percent/100),0,2);
  116. // $data['kj_price'] = helper::bcsub($goods['goods_price_min'] - $self_kj_price,0,2);
  117. // $num = $kjgoods['help_kj_up_cnt'];
  118. // $a_price = ($data['kj_price'] - $kjgoods['low_price'])*100;//保存可砍价格
  119. // if($a_price<=0){
  120. // return $this->renderError("发起砍价异常");
  121. // }
  122. // // 单位为分
  123. // $res = $this->create_rand_array($num,$a_price);
  124. // $data['remark_json'] = json_encode($res);
  125. // $join = new KjActivityJoinModel;
  126. // $join->save($data);
  127. // unset($data);
  128. // }
  129. // $join = KjActivityJoinModel::where($filter)->order('id','desc')->find();
  130. // $data['join'] = $join;
  131. // return $this->renderSuccess(compact('data'));
  132. // }
  133. // public function helpinfo(int $join_id){
  134. // $userId = UserService::getCurrentLoginUserId();
  135. // $filter['id'] = $join_id;
  136. // $join = KjActivityJoinModel::where($filter)->with(['help'])->find();
  137. // $now = Date("Y-m-d H:i:s",time());
  138. // if($join&&$now>$join->end_time){
  139. // $join->status=1;
  140. // $join->save();
  141. // }
  142. // if(empty($join)){
  143. // return $this->renderError("找不到信息");
  144. // }
  145. // $myjoin = KjActivityJoinModel::where("user_id",$userId)->find();
  146. // $one = KjActivityHelpModel::where("user_id",$userId)->where('join_id',$join_id)->find();
  147. // $activity = KjActivityModel::where("id",$join->activity_id)->find();
  148. // $kjgoods = KjActivityGoodModel::where('activity_id',$activity->id)->find();
  149. // if(empty($kjgoods)){
  150. // return $this->renderError("缺少砍价商品信息");
  151. // }
  152. // $goods_id = $kjgoods['goods_id'];
  153. // $data['activity'] = $activity;
  154. // $data['my_help'] = $one;
  155. // $data['is_join'] = $myjoin?true:false;
  156. // $data['join'] = $join;
  157. // $data['goods'] = $this->goods($goods_id,$kjgoods['low_price']);
  158. // return $this->renderSuccess(compact('data'));
  159. // }
  160. // //推送砍价结果
  161. // public function push($user_id,$activity_id,$join_id){
  162. // $kjgoods = KjActivityGoodModel::where('activity_id',$activity_id)->find();
  163. // $goods_name = '';
  164. // $goods_id = $kjgoods['goods_id']??0;
  165. // if($goods_id>0){
  166. // $goods_name = GoodsModel::where('goods_id',$goods_id)->value("goods_name");
  167. // }
  168. // $template_type = 'kj_finish';
  169. // $sub = new WechatSub($template_type);
  170. // $page = 'pages/activity/pages/bargain/index/index?activity_id='.$activity_id."&join_id=".$join_id;
  171. // $data= ['thing1'=>["value"=>$goods_name],'thing3'=>["value"=>"活动已结束,去看看活动结果"]];
  172. // $res = $sub->pushSub($user_id,$page,$data);
  173. // return $res;
  174. // }
  175. // //觉得价格美丽,不砍价了
  176. // public function stopkj($join_id){
  177. // $userId = UserService::getCurrentLoginUserId();
  178. // $filter['id'] = $join_id;
  179. // $join = KjActivityJoinModel::where($filter)->with(['help'])->find();
  180. // if(empty($join)){
  181. // return $this->renderError("找不到信息");
  182. // }
  183. // if($join->user_id!=$userId){
  184. // return $this->renderError("信息出错了");
  185. // }
  186. // $activity = KjActivityModel::where("id",$join->activity_id)->find();
  187. // if($activity->kj_type==2){
  188. // if($join->kj_price>$join->low_price){
  189. // return $this->renderError("必须砍到底价才行");
  190. // }
  191. // }
  192. // if($join->status==1){
  193. // return $this->renderError("请不要重复操作");
  194. // }
  195. // $join->status = 1;
  196. // $join->save();
  197. // return $this->renderSuccess();
  198. // }
  199. // //帮砍价
  200. // public function help(int $join_id){
  201. // $userId = UserService::getCurrentLoginUserId();
  202. // $filter['id'] = $join_id;
  203. // $join = KjActivityJoinModel::where($filter)->find();
  204. // if(empty($join)){
  205. // return $this->renderError("找不到信息");
  206. // }
  207. // Db::startTrans();
  208. // $activity = KjActivityModel::where("id",$join->activity_id)->lock("for update")->find();
  209. // $today = Date("Y-m-d",time())." 00:00:00";
  210. // $count = KjActivityHelpModel::where("user_id",$userId)->where("create_time",'>',$today)->where('activity_id',$join->activity_id)->count();
  211. // if($count>=$activity['limit_kj_day_cnt']){
  212. // return $this->renderError("同一用户每日最多可帮助".$activity['limit_kj_day_cnt']."位好友砍价");
  213. // }
  214. // $one = KjActivityHelpModel::where("user_id",$userId)->where('join_id',$join_id)->find();
  215. // if($one){
  216. // return $this->renderError("你已经帮砍过价了");
  217. // }
  218. // if($join['user_id']==$userId){
  219. // return $this->renderError("自己不能帮自己砍价");
  220. // }
  221. // if($join['status']==1){
  222. // return $this->renderError("砍价已结束");
  223. // }
  224. // $now = Date("Y-m-d H:i:s",time());
  225. // if($now>$join['end_time']){
  226. // return $this->renderError("砍价已过期");
  227. // }
  228. // if($join['help_cnt']>=$join['help_kj_up_cnt']){
  229. // return $this->renderError("帮砍价人数已到上限");
  230. // }
  231. // if($join['low_price']>=$join['kj_price']){
  232. // return $this->renderError("已经砍到底价了");
  233. // }
  234. // $remarkJson = $join['remark_json'];
  235. // $arr = json_decode($remarkJson,true);
  236. // $help_price = array_shift($arr);
  237. // $help_price = helper::bcsub($help_price/100,0,2);
  238. // if($join['low_price']>$join['kj_price'] - $help_price){
  239. // $help_price = $join['kj_price'] - $join['low_price'];
  240. // }
  241. // //如果是最后一个了
  242. // if($join->help_kj_up_cnt==$join->help_cnt+1){
  243. // $help_price = $join['kj_price'] - $join['low_price'];
  244. // }
  245. // $help_price = helper::bcsub($help_price,0,2);
  246. // if($help_price<=0){
  247. // return $this->renderError("砍价出错了");
  248. // }
  249. // $data['activity_id'] = $join['activity_id'];
  250. // $data['join_id'] = $join['id'];
  251. // $data['user_id'] = $userId;
  252. // $data['help_price'] = $help_price;
  253. // $help = new KjActivityHelpModel;
  254. // $help->save($data);
  255. // $join->remark_json = json_encode($arr);
  256. // $join->help_cnt = $join['help_cnt'] + 1;
  257. // $join->kj_price = $join['kj_price'] - $help_price;
  258. // // 砍到底了
  259. // if(($join['kj_price'] - $help_price)==$join['low_price']){
  260. // $join->status = 1;
  261. // }
  262. // //砍价人数到上限了
  263. // if($join->help_kj_up_cnt==$join->help_cnt){
  264. // $join->status = 1;
  265. // }
  266. // $join->save();
  267. // Db::commit();
  268. // if($join->status==1){
  269. // //砍价完成
  270. // $this->push($join->user_id,$join->activity_id,$join->id);
  271. // }
  272. // return $this->renderSuccess(compact('data'));
  273. // }
  274. // public function test(){
  275. // // $money = $_GET['money']??100;
  276. // // $num = $_GET['num']??10;
  277. // // $arr = $this->create_rand_array($num,$money);
  278. // // return $this->renderSuccess(compact('arr'));
  279. // // $res = array_sum($arr);
  280. // // var_dump($arr);
  281. // // var_dump($res);
  282. // $res = $this->push(228882,95,113);
  283. // var_dump($res);
  284. // }
  285. // //生成随机数
  286. // public function create_rand_array($n, $max = 100){
  287. // if ($n <= 1) {
  288. // return [$max];
  289. // }
  290. // $array = $zero = $normal = [];
  291. // for ($i = 1; $i <= $n; $i++) {
  292. // $array[] = mt_rand(0, 100);
  293. // }
  294. // $k = $max / array_sum($array); //求出放大系数k
  295. // foreach ($array as $key => $val) {
  296. // $value = floor($val * $k); //直接保留整数,以保证下一步的和肯定<100
  297. // if ($value < 1) {
  298. // $zero[] = $value;
  299. // } else {
  300. // $normal[] = $value;
  301. // }
  302. // }
  303. // $sum = array_sum($normal);
  304. // $diff = $max - $sum; //这个值肯定<100
  305. // if (!empty($zero)) { //如果有为0的值
  306. // $count = count($zero);
  307. // foreach ($zero as $z) {
  308. // $normal[] = $diff / $count;
  309. // }
  310. // } else { //随机分配给一个人
  311. // $key = array_rand($normal);
  312. // $normal[$key] = $normal[$key] + $diff;
  313. // }
  314. // unset($array, $zero, $sum, $diff);
  315. // return $normal;
  316. // }
  317. }