|
@@ -0,0 +1,91 @@
|
|
|
|
+package com.qs.mp.web.controller.api.user;
|
|
|
|
+
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
|
+import com.qs.mp.admin.domain.Marketing;
|
|
|
|
+import com.qs.mp.admin.service.IMarketingService;
|
|
|
|
+import com.qs.mp.common.core.domain.AjaxResult;
|
|
|
|
+import com.qs.mp.common.core.page.TableDataInfo;
|
|
|
|
+import com.qs.mp.common.enums.MarketingStatusEnum;
|
|
|
|
+import com.qs.mp.common.utils.DateUtils;
|
|
|
|
+import com.qs.mp.user.domain.MarketingHitPrize;
|
|
|
|
+import com.qs.mp.user.domain.param.UserMarketingQueryParam;
|
|
|
|
+import com.qs.mp.user.domain.vo.UserMarketingListVO;
|
|
|
|
+import com.qs.mp.user.service.IMarketingHitPrizeService;
|
|
|
|
+import com.qs.mp.utils.SecurityUtils;
|
|
|
|
+import com.qs.mp.web.controller.common.BaseApiController;
|
|
|
|
+import io.swagger.annotations.Api;
|
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
|
+import io.swagger.annotations.ApiResponse;
|
|
|
|
+import io.swagger.annotations.ApiResponses;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @author Cup
|
|
|
|
+ * @date 2022/5/17
|
|
|
|
+ */
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/api/v1/mp/user/marketing")
|
|
|
|
+@Api(tags = "营销活动相关接口")
|
|
|
|
+public class MarketingController extends BaseApiController {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IMarketingService marketingService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IMarketingHitPrizeService marketingHitPrizeService;
|
|
|
|
+
|
|
|
|
+ @PostMapping("list")
|
|
|
|
+ @ApiOperation("获取营销活动列表")
|
|
|
|
+ @ApiResponses(
|
|
|
|
+ @ApiResponse(code = 200, message = "成功", response = UserMarketingListVO.class)
|
|
|
|
+ )
|
|
|
|
+ public TableDataInfo list(@Validated @RequestBody UserMarketingQueryParam userMarketingQueryParam) {
|
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
|
+
|
|
|
|
+ startPage();
|
|
|
|
+ LambdaQueryWrapper<Marketing> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(Marketing::getIsOn, MarketingStatusEnum.ON.getValue());
|
|
|
|
+ queryWrapper.eq(Marketing::getTriggerStatus, userMarketingQueryParam.getTriggerStatus());
|
|
|
|
+ if (userMarketingQueryParam.getTriggerStatus() == 0) {
|
|
|
|
+ // 已开启的列表
|
|
|
|
+ Date now = DateUtils.getNowDate();
|
|
|
|
+ // 结束时间大于当前时间的
|
|
|
|
+ queryWrapper.gt(Marketing::getEndTime, now);
|
|
|
|
+ queryWrapper.orderByAsc(Marketing::getStartTime);
|
|
|
|
+ queryWrapper.orderByAsc(Marketing::getEndTime);
|
|
|
|
+ }else if(userMarketingQueryParam.getTriggerStatus() == 1) {
|
|
|
|
+ // 开奖的排序
|
|
|
|
+ queryWrapper.orderByDesc(Marketing::getEndTime);
|
|
|
|
+ }
|
|
|
|
+ List<UserMarketingListVO> userMarketingListVOList = new ArrayList<>();
|
|
|
|
+ List<Marketing> list = marketingService.list(queryWrapper);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
|
+ userMarketingListVOList = list.stream().map(marketing -> {
|
|
|
|
+ UserMarketingListVO userMarketingListVO = new UserMarketingListVO();
|
|
|
|
+ BeanUtils.copyProperties(marketing, userMarketingListVO);
|
|
|
|
+ if (userMarketingQueryParam.getTriggerStatus() == 1) {
|
|
|
|
+ int count = marketingHitPrizeService.count(new LambdaQueryWrapper<MarketingHitPrize>()
|
|
|
|
+ .eq(MarketingHitPrize::getMarketingId, marketing.getId())
|
|
|
|
+ .eq(MarketingHitPrize::getUserId, userId));
|
|
|
|
+ userMarketingListVO.setIsHit(count);
|
|
|
|
+ }
|
|
|
|
+ return userMarketingListVO;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return getDataTable(userMarketingListVOList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|