|
@@ -0,0 +1,235 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
|
|
+ *
|
|
|
+ * https://www.mall4j.com/
|
|
|
+ *
|
|
|
+ * 未经允许,不可做商业用途!
|
|
|
+ *
|
|
|
+ * 版权所有,侵权必究!
|
|
|
+ */
|
|
|
+
|
|
|
+package com.qs.mp.web.controller.api.user;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+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.TicketListVO;
|
|
|
+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.channel.domain.Channel;
|
|
|
+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.PrizeStorageStatusEnum;
|
|
|
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
|
|
|
+import com.qs.mp.common.enums.TicketStatusEnum;
|
|
|
+import com.qs.mp.common.enums.UserCouponStatusEnum;
|
|
|
+import com.qs.mp.common.utils.StringUtils;
|
|
|
+import com.qs.mp.user.domain.UserCoin;
|
|
|
+import com.qs.mp.user.domain.UserCoupon;
|
|
|
+import com.qs.mp.user.domain.UserPrizeStorage;
|
|
|
+import com.qs.mp.user.domain.UserTicketOrderItem;
|
|
|
+import com.qs.mp.user.service.IUserCoinService;
|
|
|
+import com.qs.mp.user.service.IUserHitPrizeService;
|
|
|
+import com.qs.mp.user.service.IUserPrizeStorageService;
|
|
|
+import com.qs.mp.user.service.IUserTicketOrderItemService;
|
|
|
+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 java.util.Map;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import ma.glasnost.orika.MapperFacade;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+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 UserMineController extends BaseApiController {
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketBoxService ticketBoxService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketAwardsPrizeService ticketAwardsPrizeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ITicketService ticketService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserTicketOrderItemService userTicketOrderItemService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserHitPrizeService userHitPrizeService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserPrizeStorageService userPrizeStorageService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserCoinService userCoinService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MapperFacade mapperFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我的票包
|
|
|
+ */
|
|
|
+ @PostMapping("/mine/ticket/list")
|
|
|
+ @ApiOperation(value = "我的盲票列表" , notes = "获取我的盲票列表")
|
|
|
+ public TableDataInfo listTicket(@RequestBody Ticket param) {
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
+ startPage();
|
|
|
+ List<TicketListVO> ticketListVOS = userTicketOrderItemService.listMyTicketVO(userId, param.getStatus());
|
|
|
+ return getDataTable(ticketListVOS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我的优惠券
|
|
|
+ */
|
|
|
+ @PostMapping("/mine/coupon/list")
|
|
|
+ @ApiOperation(value = "我的优惠券列表" , notes = "获取我的优惠券列表")
|
|
|
+ public TableDataInfo listCoupon(@RequestBody UserCoupon param) {
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
+ startPage();
|
|
|
+// List<TicketListVO> ticketListVOS = userTicketOrderItemService.listMyTicketVO(userId, param.getStatus());
|
|
|
+ return getDataTable(null);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 我的
|
|
|
+ */
|
|
|
+ @PostMapping("/mine/init")
|
|
|
+ @ApiOperation(value = "查看我的" , notes = "查看我的")
|
|
|
+ public AjaxResult getInfo(@RequestBody JSONObject param) {
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
+ Map<String, Object> storageMap = userPrizeStorageService.getMap(new QueryWrapper<UserPrizeStorage>()
|
|
|
+ .select("IFNULL(goods_num,0) as total")
|
|
|
+ .eq("userId", userId).eq("status", PrizeStorageStatusEnum.NOT_DISTRIBUTED));
|
|
|
+ JSONObject result = new JSONObject();
|
|
|
+ result.put("prizeNum", Integer.valueOf(String.valueOf(storageMap.get("total"))));
|
|
|
+
|
|
|
+ int ticketNum = userTicketOrderItemService.countMyTicket(userId, TicketStatusEnum.ACTIVATED);
|
|
|
+ result.put("ticketNum", ticketNum);
|
|
|
+
|
|
|
+ UserCoin userCoin = userCoinService.getById(userId);
|
|
|
+ result.put("coinNum", null != userCoin ? userCoin.getCoin() : 0);
|
|
|
+ return AjaxResult.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 扫码查看盲票幸运数字
|
|
|
+ */
|
|
|
+ @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) {
|
|
|
+ UserTicketOrderItem orderItem = userTicketOrderItemService.queryFinishedOrderItem(userId, param.getTicketId());
|
|
|
+ if (null == orderItem) {
|
|
|
+ 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) {
|
|
|
+ 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) {
|
|
|
+ return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1019);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<TicketAwardsPrize> ticketAwardsPrizes = userHitPrizeService.listPrize(ticket, userId);
|
|
|
+ return AjaxResult.success(ticketAwardsPrizes);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 兑奖
|
|
|
+ */
|
|
|
+ @PostMapping("/ticket/cashPrize")
|
|
|
+ @ApiOperation(value = "兑奖" , notes = "选择奖品兑奖")
|
|
|
+ public AjaxResult cashPrize(@RequestBody TicketParam param) {
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
+ if (StringUtils.isBlank(param.getTicketId()) || StringUtils.isBlank(param.getAwardsId())
|
|
|
+ || StringUtils.isBlank(param.getPrizeId())) {
|
|
|
+ return AjaxResult.error("参数缺失");
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ userHitPrizeService.cashPrize(ticket, userId, param.getAwardsId(), param.getPrizeId());
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|