package com.hollywood.applet.controller;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hollywood.applet.query.TPopularActivityQuery;
import com.hollywood.applet.service.TPopularActivityService;
import com.hollywood.applet.service.TPopularActivityUserService;
import com.hollywood.applet.utils.LoginInfoUtil;
import com.hollywood.applet.vo.TPopularActivityVO;
import com.hollywood.common.basic.ApiResult;
import com.hollywood.common.basic.PageInfo;
import com.hollywood.common.model.TOrder;
import com.hollywood.common.model.TPopularActivity;
import com.hollywood.common.model.TPopularActivityUser;
import com.hollywood.common.security.JwtTokenUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.token.TokenService;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 热门活动 前端控制器
*
*
* @author xiaochen
* @since 2024-02-29
*/
@RestController
@RequestMapping("/tPopularActivity")
@Api(tags = "热门活动")
public class TPopularActivityController {
@Autowired
private TPopularActivityService popularActivityService;
@Autowired
private TPopularActivityUserService activityUserService;
@Autowired
private LoginInfoUtil loginInfoUtil;
// @ApiOperation(value = "查询")
// @GetMapping("/list")
// public ApiResult> getConfigById(@RequestParam int pageNum,
// @RequestParam int pageSize, String name,String cityCode)
// {
// PageInfo pageInfo = new PageInfo<>(pageNum, pageSize);
//// List popularActivityList = popularActivityService.searchByName(name,pageInfo);
// QueryWrapper tPopularActivityQueryWrapper = new QueryWrapper<>();
// tPopularActivityQueryWrapper.eq("activityStatus",2);
// tPopularActivityQueryWrapper.eq("status",1);
// if (name!=null){
// tPopularActivityQueryWrapper.like("activityName",name);
// }
// if (cityCode!=null){
// tPopularActivityQueryWrapper.eq("cityCode",cityCode);
// }
// PageInfo popularActivityList = popularActivityService.page(pageInfo,tPopularActivityQueryWrapper);
// return ApiResult.success(popularActivityList);
// }
@ApiOperation(value = "获取热门活动分页列表")
@PostMapping(value = "/pageList")
public ApiResult> pageList(@RequestBody TPopularActivityQuery query) {
Long userId = loginInfoUtil.getUserId();
List ids = new ArrayList<>();
if (query.getMine()!=null&&query.getMine()==1){
List list = activityUserService.list(Wrappers.lambdaQuery(TPopularActivityUser.class)
.eq(TPopularActivityUser::getUserId, userId));
ids = list.stream()
.map(TPopularActivityUser::getActivityId)
.collect(Collectors.toList());
if (ids.size()==0){
return ApiResult.success(new PageInfo<>());
}
}
return ApiResult.success(popularActivityService.pageList(query,ids));
}
@ApiOperation("获取排序最高的两个活动")
@GetMapping("/hottwo")
public ApiResult> getConfigById() {
List list = popularActivityService.list(Wrappers.lambdaQuery(TPopularActivity.class)
.eq(TPopularActivity::getActivityStatus, 2)
.eq(TPopularActivity::getStatus, 1)
.orderByDesc(TPopularActivity::getSortBy));
return ApiResult.success(list);
}
@ApiOperation(value = "查看热门活动详情")
@GetMapping(value = "/geTPopularActivityDetailById")
public ApiResult geTPopularActivityDetailById(@RequestParam Long id) {
Long userId = loginInfoUtil.getUserId();
TPopularActivity byId = popularActivityService.getById(id);
long count = activityUserService.count(Wrappers.lambdaQuery(TPopularActivityUser.class).eq(TPopularActivityUser::getActivityId, byId.getId()));
byId.setPeopleCounts(count);
long count1 = activityUserService.count(Wrappers.lambdaQuery(TPopularActivityUser.class).eq(TPopularActivityUser::getActivityId, byId.getId()).eq(TPopularActivityUser::getUserId,userId));
if (count1>0){
byId.setIsJoin(1);
}else {
byId.setIsJoin(0);
}
return ApiResult.success(byId);
}
@ApiOperation(value = "参加活动")
@PostMapping("/join")
public ApiResult join(Long activityId)
{
Long userId = loginInfoUtil.getUserId();
// LoginUser loginUser = tokenService.getLoginUser();
activityUserService.join(activityId, userId);
return ApiResult.success();
}
@ApiOperation(value = "取消活动")
@PostMapping("/cancel/{activityId}")
public ApiResult cancel(@PathVariable Long activityId)
{
Long userId = loginInfoUtil.getUserId();
activityUserService.remove(Wrappers.lambdaQuery(TPopularActivityUser.class).eq(TPopularActivityUser::getUserId,userId).eq(TPopularActivityUser::getActivityId,activityId));
return ApiResult.success();
}
}