|
@@ -0,0 +1,195 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
|
|
+ *
|
|
|
+ * https://www.mall4j.com/
|
|
|
+ *
|
|
|
+ * 未经允许,不可做商业用途!
|
|
|
+ *
|
|
|
+ * 版权所有,侵权必究!
|
|
|
+ */
|
|
|
+
|
|
|
+package com.qs.mp.web.controller.api.common;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.qs.mp.admin.domain.Ticket;
|
|
|
+import com.qs.mp.admin.domain.TicketAwardsPrize;
|
|
|
+import com.qs.mp.admin.domain.TicketBox;
|
|
|
+import com.qs.mp.admin.domain.param.TicketBoxParam;
|
|
|
+import com.qs.mp.admin.domain.param.TicketParam;
|
|
|
+import com.qs.mp.admin.domain.vo.TicketBoxListVO;
|
|
|
+import com.qs.mp.admin.domain.vo.TicketBoxVO;
|
|
|
+import com.qs.mp.admin.domain.vo.TicketVO;
|
|
|
+import com.qs.mp.admin.service.ITicketAwardsPrizeService;
|
|
|
+import com.qs.mp.admin.service.ITicketBoxService;
|
|
|
+import com.qs.mp.admin.service.ITicketService;
|
|
|
+import com.qs.mp.common.core.domain.AjaxResult;
|
|
|
+import com.qs.mp.common.core.page.TableDataInfo;
|
|
|
+import com.qs.mp.common.enums.ErrorCodeEnum;
|
|
|
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
|
|
|
+import com.qs.mp.common.enums.TicketStatusEnum;
|
|
|
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
|
|
|
+import com.qs.mp.common.utils.StringUtils;
|
|
|
+import com.qs.mp.user.domain.UserTicketOrder;
|
|
|
+import com.qs.mp.user.domain.UserTicketOrderItem;
|
|
|
+import com.qs.mp.user.service.IUserTicketOrderItemService;
|
|
|
+import com.qs.mp.user.service.IUserTicketOrderService;
|
|
|
+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 java.util.List;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import ma.glasnost.orika.MapperFacade;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/api/v1/mp/user")
|
|
|
+@Api(tags = "渠道盲票商城接口")
|
|
|
+@AllArgsConstructor
|
|
|
+public class UserTicketController extends BaseApiController {
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketBoxService ticketBoxService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketAwardsPrizeService ticketAwardsPrizeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketService ticketService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserTicketOrderItemService userTicketOrderItemService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MapperFacade mapperFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 盲票进货列表
|
|
|
+ */
|
|
|
+ @PostMapping("/mall/ticket/list")
|
|
|
+ @ApiOperation(value = "盲票组列表" , notes = "获取所有盲票信息")
|
|
|
+ public TableDataInfo list(@RequestBody TicketBoxParam param) {
|
|
|
+ // TODO 根据标签过滤
|
|
|
+ startPage();
|
|
|
+ List<TicketBox> ticketBoxes = ticketBoxService.list(
|
|
|
+ new LambdaQueryWrapper<TicketBox>().eq(TicketBox::getType, param.getType())
|
|
|
+ .eq(null != param.getCategoryId() && 0 != param.getCategoryId(), TicketBox::getCategoryId, param.getCategoryId())
|
|
|
+ .eq(TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON));
|
|
|
+ List<TicketBoxListVO> ticketBoxListVOList = mapperFacade.mapAsList(ticketBoxes, TicketBoxListVO.class);
|
|
|
+ TableDataInfo rspData = getDataTable(ticketBoxes);
|
|
|
+ rspData.setRows(ticketBoxListVOList);
|
|
|
+ return rspData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查看盲票详情
|
|
|
+ */
|
|
|
+ @PostMapping("/mall/ticket/detail")
|
|
|
+ @ApiOperation(value = "查看盲票详情" , notes = "根据盲票组ID,获取盲票信息")
|
|
|
+ public AjaxResult getInfo(@RequestBody TicketBoxParam param) {
|
|
|
+ if (StringUtils.isBlank(param.getBoxId())) {
|
|
|
+ return AjaxResult.error("参数异常,盲票组ID缺失");
|
|
|
+ }
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
|
|
|
+ TicketBoxVO ticketBoxVO = mapperFacade.map(ticketBox, TicketBoxVO.class);
|
|
|
+ ticketBoxVO.setPrizeList(ticketAwardsPrizeService.listPrizeVO(new QueryWrapper<TicketAwardsPrize>()
|
|
|
+ .eq("t1.box_id", ticketBox.getBoxId()).orderByAsc("t1.sort").orderByDesc("t2.value")));
|
|
|
+ return AjaxResult.success(ticketBoxVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 扫码查看盲票幸运数字
|
|
|
+ */
|
|
|
+ @PostMapping("/ticket/queryLuckyNum")
|
|
|
+ @ApiOperation(value = "查看盲票幸运数字" , notes = "根据盲票组ID,获取盲票幸运数字")
|
|
|
+ public AjaxResult queryLuckyNum(@RequestBody TicketParam param) {
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
+ if (StringUtils.isBlank(param.getTicketId())) {
|
|
|
+ return AjaxResult.error("参数异常,盲票ID缺失");
|
|
|
+ }
|
|
|
+
|
|
|
+ Ticket ticket = ticketService.getById(param.getTicketId());
|
|
|
+ if (null == ticket) {
|
|
|
+ return AjaxResult.error("参数异常,盲票不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ticket.getStatus() == TicketStatusEnum.CASHED) {
|
|
|
+ return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1017);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已付款的盲票,需要校验当前用户是否有权限查看
|
|
|
+ if (ticket.getStatus() == TicketStatusEnum.ACTIVATED) {
|
|
|
+ List<UserTicketOrderItem> itemList = userTicketOrderItemService.list(new QueryWrapper<UserTicketOrderItem>().eq("t1.ticket_id", param.getTicketId())
|
|
|
+ .eq("t1.userId", userId).eq("t2.status", UserTicketOrderStatusEnum.FINISHED));
|
|
|
+ if (CollectionUtils.isEmpty(itemList)) {
|
|
|
+ return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1018);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
|
|
|
+
|
|
|
+ TicketVO ticketVO = new TicketVO();
|
|
|
+ ticketVO.setPrizeList(ticketAwardsPrizeService.listPrizeVO(new QueryWrapper<TicketAwardsPrize>()
|
|
|
+ .eq("t1.box_id", ticketBox.getBoxId()).orderByAsc("t1.sort").orderByDesc("t2.value")));
|
|
|
+ ticketVO.setTicketId(ticket.getTicketId());
|
|
|
+ ticketVO.setBoxId(ticket.getBoxId());
|
|
|
+ ticketVO.setTitle(ticketBox.getTitle());
|
|
|
+ ticketVO.setSerialNo(ticket.getSerialNo());
|
|
|
+ ticketVO.setFacePrice(ticket.getFacePrice());
|
|
|
+ ticketVO.setSalePrice(ticketBox.getSalePrice());
|
|
|
+ ticketVO.setPlainLuckyNum(ticket.getPlainLuckyNum());
|
|
|
+ ticketVO.setStatus(ticket.getStatus().getValue());
|
|
|
+
|
|
|
+ return AjaxResult.success(ticketVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查看能兑奖的奖品
|
|
|
+ */
|
|
|
+ @PostMapping("/ticket/queryHitPrizeList")
|
|
|
+ @ApiOperation(value = "查看兑奖奖品" , notes = "根据盲票ID,查看兑奖奖品")
|
|
|
+ public AjaxResult queryHitPrizeList(@RequestBody TicketParam param) {
|
|
|
+ if (StringUtils.isBlank(param.getTicketId())) {
|
|
|
+ return AjaxResult.error("参数异常,盲票ID缺失");
|
|
|
+ }
|
|
|
+
|
|
|
+ Ticket ticket = ticketService.getById(param.getTicketId());
|
|
|
+ if (null == ticket) {
|
|
|
+ return AjaxResult.error("参数异常,盲票不存在");
|
|
|
+ }
|
|
|
+ if (ticket.getStatus() == TicketStatusEnum.CASHED) {
|
|
|
+ return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1017);
|
|
|
+ }
|
|
|
+ if (ticket.getStatus() != TicketStatusEnum.ACTIVATED) {
|
|
|
+ return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1019);
|
|
|
+ }
|
|
|
+
|
|
|
+// UserTicketOrder ticketOrder =
|
|
|
+
|
|
|
+ TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
|
|
|
+
|
|
|
+ TicketVO ticketVO = new TicketVO();
|
|
|
+ ticketVO.setPrizeList(ticketAwardsPrizeService.listPrizeVO(new QueryWrapper<TicketAwardsPrize>()
|
|
|
+ .eq("t1.box_id", ticketBox.getBoxId()).orderByAsc("t1.sort").orderByDesc("t2.value")));
|
|
|
+ ticketVO.setTicketId(ticket.getTicketId());
|
|
|
+ ticketVO.setBoxId(ticket.getBoxId());
|
|
|
+ ticketVO.setTitle(ticketBox.getTitle());
|
|
|
+ ticketVO.setSerialNo(ticket.getSerialNo());
|
|
|
+ ticketVO.setFacePrice(ticket.getFacePrice());
|
|
|
+ ticketVO.setSalePrice(ticketBox.getSalePrice());
|
|
|
+ ticketVO.setPlainLuckyNum(ticket.getPlainLuckyNum());
|
|
|
+ ticketVO.setStatus(ticket.getStatus().getValue());
|
|
|
+
|
|
|
+ return AjaxResult.success(ticketVO);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|